ubuntuusers.de

Postfix + LDAP: "Relay access denied (in reply to RCPT TO command)"

Status: Gelöst | Ubuntu-Version: Server 10.04 (Lucid Lynx)
Antworten |

freebirth_one

Avatar von freebirth_one

Anmeldungsdatum:
19. Juli 2007

Beiträge: 5051

Wohnort: Mönchengladbach

Hallo auch ☺

Ich habe hier ein merkwürdiges Verhalten beim empfangen und weiterversenden von Mails.

ICh fasse zusammen:
Wir haben hier einen Ubuntu-Server am laufen, auf dem Postfix und Dovecot sich um die Mails kümmern; dabei sind beide an LDAP angebunden. Postfix nimmt die Mails entgegen, schaut nach, ob ein entsprechnder Account vorhanden ist, und schickt das dann mittels Dovecot-Deliver an selbigen weiter. Dieser kümmert sich dann um die eingehende MAilfilterung sowie um den Zugriff per IMAP.

WIr sind dabei, Mailbox-Aliases einzuführen, um auch andere Domains als unserer eigener als Empfängeradresse akzeptieren zu können. Dafür haben wir der Variablen virtual_mailbox_aliases die entsprechenden Domains hinzugefügt, wodurch entsprechende Mails as is weiter gesendet werden, damit der sich dann darum kümmert. Das klappt soweit ganz gut.

Um flexibler zu sein wollten wir das ganze auf LDAP auslagern; Postfix bietet diese Möglichkeit ja an. DAbei verwenden wir als virtual_mailbox_aliases eine Datei mit den entsprechenden LDAP-Abfragen, welche - falls vorhanden - die entsprechende Domain zurückliefert, womit Postfix diese als ok anerkennt.

Diese Datei habe ich auch schon erfolgreich mittels postmap -n<emailadresse> ldap:/<Dateiname> getestet: es wird die Domainadresse dieser Email als MailboxALias zurück geliefert.

DAs Problem ist nur: es Funktioniert nicht, die Mail wird rejected; da die Datei mit den LDAP-Abfragen allerdings die richtige Domain zurück liefert müsste das eigentlich klappen.

HAt jemand eine Ahnung, was mir noch fehlt?

Anbei noch die notwendigen Informationen

bis dann

Freebirth One

postfix main.cf

## See /usr/share/postfix/main.cf.dist for a commented, more complete version

parent_domain_matches_subdomains = 
disable_dns_lookups = no
# Debian specific:  Specifying a file name will cause the first
# line of that file to be used as the name.  The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname
myorigin = uebergebuehr.de

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h

readme_directory = /usr/share/doc/postfix

# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/mailserver-cert.pem
smtpd_tls_key_file=/etc/ssl/private/mailserver-key.pem
smtpd_use_tls=yes
#smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
#smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.

smtpd_sasl_auth_enable = yes
smtpd_sasl_exceptions_networks = $mynetworks
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth

myhostname = uebergebuehr.de

alias_maps = ldap://etc/postfix/ldap-aliases.cf, hash:/etc/aliases, hash:/srv/mailman/conf/aliases, hash:/srv/otrs/conf/aliases 
# alias_database = hash:/etc/aliases
alias_database = ldap:/etc/postfix/ldap-aliases.cf

mydestination = 
    uebergebuehr.de,
    otrs.uebergebuehr.de,
    lists.uebergebuehr.de,
    lists.abs-bund.de,
    lists.gew-jugend-sachsen.de,
    lists.lass-sachsen.de,
    lists.wissenschaft-gew-sachsen.de,
    localhost,
    localhost.localdomain

#virtual_alias_domains = 
#    gew-jugend-sachsen.de
#
#
#virtual_alias_maps =
#    hash:/srv/mailman/conf/aliases
#    hash:/srv/otrs/conf/aliases
#
#virtual_alias_database = 
#    hash:/srv/mailman/conf/aliases,
#    hash:/srv/otrs/conf/aliases

relayhost =
###relayhost = mail.uebergebuehr.de

mynetworks = <networks>
smtp_bind_address = <address>
inet_interfaces = 127.0.0.1, <address> 
mailbox_size_limit = 0
recipient_delimiter = +
transport_maps = hash:/etc/postfix/transport

mailman_destination_recipient_limit = 1

### Virtuelle Domains für Dovecot
dovecot_destination_recipient_limit = 1
virtual_mailbox_domains = ldap:/etc/postfix/ldap-virtual-mailboxes.cf
# virtual_mailbox_domains = gew-jugend-sachsen.de
virtual_alias_maps = ldap:/etc/postfix/ldap-virtual-aliases.cf
virtual_transport = dovecot 

# Delivery done by dovecot
dovecot_destination_recipient_limit = 1
mailbox_transport = dovecot
mailbox_command = /usr/lib/dovecot/deliver
local_recipient_maps =


content_filter = smtp-amavis:[127.0.0.1]:10024

smtpd_client_restrictions    =
smtpd_helo_required          = yes

smtpd_helo_restrictions      =
#     reject_unauth_pipelining,
     permit_mynetworks,
     permit_sasl_authenticated,
     reject_unknown_hostname,
     reject_non_fqdn_hostname,
     reject_invalid_hostname,
     reject_unknown_sender_domain,
     reject_unknown_recipient_domain,
     reject_unauth_destination,
     reject_rbl_client zen.spamhaus.org,
#     reject_rbl_client opm.blitzed.org,
     reject_rbl_client list.dsbl.org,
     reject_rbl_client dul.dnsbl.sorbs.net,
     reject_rhsbl_client rhsbl.sorbs.net
     reject_rbl_client ix.dnsbl.manitu.net,
     reject_rbl_client list.dsbl.org,     
     reject_rbl_client sbl.spamhaus.org,
     reject_rbl_client whois.rfc-ignorant.org,
     reject_rbl_client relays.mail-abuse.org,
     reject_rbl_client nonconfirm.mail-abuse.org,
     reject_rbl_client dialups.mail-abuse.org,
     reject_unverified_recipient

#smtpd_sender_restrictions    =
#        check_sender_access hash:/etc/postfix/userfilter/sender-access,
#        reject_unauth_pipelining,
#        reject_unknown_sender_domain,
#        reject_unknown_hostname,
#        reject_non_fqdn_sender,
#        reject_non_fqdn_hostname,
#        reject_invalid_hostname,
#        reject_unknown_recipient_domain,
#        reject_unauth_destination,
##       permit_sasl_authenticated,
#        permit_mynetworks,
#        reject_rbl_client zen.spamhaus.org,
#        reject_rbl_client opm.blitzed.org,
#        reject_rbl_client list.dsbl.org,
#        reject_rbl_client dul.dnsbl.sorbs.net,
#        reject_rhsbl_sender rhsbl.sorbs.net

smtpd_recipient_restrictions =
       permit_sasl_authenticated
       permit_mynetworks
       reject_unauth_destination
       reject_invalid_hostname
       reject_non_fqdn_sender
       reject_unknown_sender_domain
       reject_non_fqdn_recipient
       reject_unknown_recipient_domain
       reject_rbl_client dialups.mail-abuse.org
       reject_rbl_client dynablock.sorbs.net
       reject_rbl_client dnsbl.ahbl.org
       reject_rbl_client relays.mail-abuse.org
       reject_rbl_client cbl.abuseat.org
       reject_rbl_client list.dsbl.org
       reject_rbl_client bl.spamcop.net
       reject_rbl_client zen.spamhaus.org
       reject_unverified_recipient
       permit
html_directory = /usr/share/doc/postfix/html

ldap-virtual-mailboxes.cf

version = 3
server_host = ldap://management.uebergebuehr.de:389
bind_dn = <dn>
bind_pw = <pw>
search_base = ou=organisationen,dc=uebergebuehr,dc=de
scope = sub
query_filter = (&(objectClass=JammVirtualDomain)(jvd=%d)(accountActive=TRUE)(delete=FALSE))

result_attribute = jvd

ausgabe Postmap

postmap -qfreebirth_one@gew-jugend-sachsen.de ldap:/etc/postfix/ldap-virtual-mailboxes.cf
gew-jugend-sachsen.de

Verwendete Software:

  • Ubuntu Server 9.04

  • Postfix 2.5.1

Isegrim

Avatar von Isegrim

Anmeldungsdatum:
29. Dezember 2006

Beiträge: 535

Hallo freebirth one,

ist die alias_database nicht in ein Postfix konformes Datenbankformat umgewandelt?!

Viele Grüße

xabbuh Team-Icon

Anmeldungsdatum:
25. Mai 2006

Beiträge: 6411

Hallo,

zeig mal bitte die Ausgabe von postconf -n und den zur einer entsprechenden Mail gehörenden Auszug aus dem Log.

freebirth_one

(Themenstarter)
Avatar von freebirth_one

Anmeldungsdatum:
19. Juli 2007

Beiträge: 5051

Wohnort: Mönchengladbach

@Isegrim:
Ich muss zugeben, cih verstehe die Frage jetzt nicht...Ich habe keine Alais_database, sondern eine AUsgabe eines Scriptes. Das sollte eigentlich für für die entsprechende Variable reichen. Oder verstehe ich da jetzt was falsch?

@xabbuh:
Mir viel beim durchsehen der Logs noch was auf: ich habe auch die virtual_alias_maps-Direktive aktiv (auch über ldap); und ja: die angegebene Mailadresse ist so ein Alias.

Genauer: die freebirth_one@gew-jugend-sachsen.de wird mittels der Alias-Map auf fb1@gew-jugend-sachsen.de übersetzt; diese wird dann mittels der virtual_mailbox_domains-Direktive als virtuelle Domain erkannt und an Dovecot weiter gegeben.

Funktioniert, wenn die Mailbox-Domains direkt in die Main.cf als einzelne, Kommaseparierte Einträge geschrieben werden, funktioniert nicht, wenn es die LDAP-Abfrage ist.

Sorry; hatte ich gestern vergessen zu sagen *peinlichsei*

Funktionierende Konfiguration

alias_database = ldap:/etc/postfix/ldap-aliases.cf
alias_maps = ldap://etc/postfix/ldap-aliases.cf, hash:/etc/aliases, hash:/srv/mailman/conf/aliases, hash:/srv/otrs/conf/aliases
append_dot_mydomain = no
biff = no
broken_sasl_auth_clients = yes
config_directory = /etc/postfix
content_filter = smtp-amavis:[127.0.0.1]:10024
disable_dns_lookups = no
html_directory = /usr/share/doc/postfix/html
inet_interfaces = 127.0.0.1, 194.169.222.155
local_recipient_maps = 
mailbox_command = /usr/lib/dovecot/deliver
mailbox_size_limit = 0
mailbox_transport = dovecot
mydestination = uebergebuehr.de,    otrs.uebergebuehr.de,    lists.uebergebuehr.de,    lists.abs-bund.de,    lists.gew-jugend-sachsen.de,    lists.lass-sachsen.de,    lists.wissenschaft-gew-sachsen.de,    localhost,    localhost.localdomain
myhostname = uebergebuehr.de
mynetworks = <networks>
myorigin = uebergebuehr.de
parent_domain_matches_subdomains = 
readme_directory = /usr/share/doc/postfix
recipient_delimiter = +
relayhost = 
smtp_bind_address = <address>
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
smtpd_client_restrictions = 
smtpd_helo_required = yes
smtpd_helo_restrictions = permit_mynetworks,     permit_sasl_authenticated,     reject_unknown_hostname,     reject_non_fqdn_hostname,     reject_invalid_hostname,     reject_unknown_sender_domain,     reject_unknown_recipient_domain,     reject_unauth_destination,     reject_rbl_client zen.spamhaus.org,     reject_rbl_client list.dsbl.org,     reject_rbl_client dul.dnsbl.sorbs.net,     reject_rhsbl_client rhsbl.sorbs.net     reject_rbl_client ix.dnsbl.manitu.net,     reject_rbl_client list.dsbl.org,          reject_rbl_client sbl.spamhaus.org,     reject_rbl_client whois.rfc-ignorant.org,     reject_rbl_client relays.mail-abuse.org,     reject_rbl_client nonconfirm.mail-abuse.org,     reject_rbl_client dialups.mail-abuse.org,     reject_unverified_recipient
smtpd_recipient_restrictions = permit_sasl_authenticated       permit_mynetworks       reject_unauth_destination       reject_invalid_hostname       reject_non_fqdn_sender       reject_unknown_sender_domain       reject_non_fqdn_recipient       reject_unknown_recipient_domain       reject_rbl_client dialups.mail-abuse.org       reject_rbl_client dynablock.sorbs.net       reject_rbl_client dnsbl.ahbl.org       reject_rbl_client relays.mail-abuse.org       reject_rbl_client cbl.abuseat.org       reject_rbl_client list.dsbl.org       reject_rbl_client bl.spamcop.net       reject_rbl_client zen.spamhaus.org       reject_unverified_recipient       permit
smtpd_sasl_auth_enable = yes
smtpd_sasl_exceptions_networks = $mynetworks
smtpd_sasl_path = private/auth
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_tls_cert_file = /etc/ssl/certs/mailserver-cert.pem
smtpd_tls_key_file = /etc/ssl/private/mailserver-key.pem
smtpd_use_tls = yes
transport_maps = hash:/etc/postfix/transport
virtual_alias_maps = ldap:/etc/postfix/ldap-virtual-aliases.cf
virtual_mailbox_domains = gew-jugend-sachsen.de
virtual_transport = dovecot

AUsgabe log (hoffe, das ist brauchbar; der Log war was unübersichtlich):

Dec  3 15:59:43 communication postfix/smtpd[670]: D99C51806744: client=mail-in-08.arcor-online.net[151.189.21.48]
Dec  3 15:59:43 communication postfix/cleanup[723]: D99C51806744: message-id=<op.vm47xbj1b3pzlg@smu-samsung>
Dec  3 15:59:43 communication postfix/qmgr[466]: D99C51806744: from=<freebirth_one@arcor.de>, size=1943, nrcpt=1 (queue active)
Dec  3 15:59:43 communication postfix/smtpd[670]: disconnect from mail-in-08.arcor-online.net[151.189.21.48]

...
Dec  3 15:59:47 communication postfix/smtpd[729]: connect from localhost[127.0.0.1]
Dec  3 15:59:47 communication postfix/smtpd[729]: A1A7218168D3: client=localhost[127.0.0.1]
Dec  3 15:59:47 communication postfix/cleanup[723]: A1A7218168D3: message-id=<op.vm47xbj1b3pzlg@smu-samsung>
Dec  3 15:59:47 communication postfix/qmgr[466]: A1A7218168D3: from=<sebastian.urbanneck@arcor.de>, size=2424, nrcpt=1 (queue active)
Dec  3 15:59:47 communication postfix/smtpd[729]: disconnect from localhost[127.0.0.1]
Dec  3 15:59:47 communication amavis[362]: (00362-05) Passed CLEAN, [151.189.21.48] [84.58.184.215] <freebirth_one@arcor.de> -> <fb1@gew-jugend-sachsen.de>, Message-ID: <op.vm47xbj1b3pzlg@smu-samsung>, mail_id: t33myo5AEpbt, Hits: -1.224, size: 1943, queued_as: A1A7218168D3, 3755 ms
Dec  3 15:59:47 communication postfix/smtp[724]: D99C51806744: to=<fb1@gew-jugend-sachsen.de>, orig_to=<freebirth_one@gew-jugend-sachsen.de>, relay=127.0.0.1[127.0.0.1]:10024, delay=15, delays=11/0/0/3.8, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as A1A7218168D3)
Dec  3 15:59:47 communication postfix/qmgr[466]: D99C51806744: removed
Dec  3 15:59:47 communication postfix/pipe[730]: A1A7218168D3: to=<fb1@gew-jugend-sachsen.de>, relay=dovecot, delay=0.11, delays=0/0/0/0.1, dsn=2.0.0, status=sent (delivered via dovecot service)
Dec  3 15:59:47 communication postfix/qmgr[466]: A1A7218168D3: removed

Nicht funktionierende Konfiguration:

[gleiche wie oben; ausnahme]
...
virtual_alias_maps = ldap:/etc/postfix/ldap-virtual-aliases.cf
virtual_mailbox_domains = ldap:/etc/postfix/ldap-virtual-mailboxes.cf
virtual_transport = dovecot

Log bei nicht funktionieren der Konfiguration:

...
Dec  3 16:16:53 communication postfix/smtpd[2111]: connect from mail-in-01.arcor-online.net[151.189.21.41]
Dec  3 16:16:53 communication postfix/smtpd[2111]: NOQUEUE: reject: RCPT from mail-in-01.arcor-online.net[151.189.21.41]: 554 5.7.1 <freebirth_one@gew-jugend-sachsen.de>: Relay access denied; from=<freebirth_one@arcor.de> to=<freebirth_one@gew-jugend-sachsen.de> proto=SMTP helo=<mail-in-01.arcor-online.net>
Dec  3 16:16:53 communication postfix/smtpd[2111]: disconnect from mail-in-01.arcor-online.net[151.189.21.41]
...

Inhalt der ldap-virual-aliases.cf

version = 3
server_host = ldap://management.uebergebuehr.de:389
bind_dn = <dn>
bind_pw = <password>
search_base = ou=personen,dc=uebergebuehr,dc=de
query_filter = (&(objectClass=qmailUser)(|(mailAlternateAddress=%s)(mailAlternateAddress=%u)))

result_attribute = mailForwardingAddress

xabbuh Team-Icon

Anmeldungsdatum:
25. Mai 2006

Beiträge: 6411

Da scheint aber noch mehr im Argen zu sein. Dein Postfix nimmt ja nicht mal mehr die Ersetzung von freebirth_one@gew-jugend-sachsen.de zu fb1@gew-jugend-sachsen.de vor. Spuckt Postfix beim Neustart schon irgendwelche Fehlermeldungen (im Log) aus?

freebirth_one

(Themenstarter)
Avatar von freebirth_one

Anmeldungsdatum:
19. Juli 2007

Beiträge: 5051

Wohnort: Mönchengladbach

Nicht wirklich. Das ist ja das Problem: alles zeigt ein grünes Licht an; funktionieren tuts trotzdem nicht.

Ich habe testweise mal direkt an "fb1@gew-jugend-sachsen.de" geschrieben. Fazit:es wird rejeted.

Klartext: irgendwie mag der den Inahlt der virtual_mailbox_domains-Direktive nicht.

xabbuh Team-Icon

Anmeldungsdatum:
25. Mai 2006

Beiträge: 6411

Hm... pack doch mal die IP, von der aus sich der Sender verbindet in debug_peer_list und poste anschließend das komplette Log für die abgewiesene E-Mail vom connect bis zur Ablehnung und disconnect.

freebirth_one

(Themenstarter)
Avatar von freebirth_one

Anmeldungsdatum:
19. Juli 2007

Beiträge: 5051

Wohnort: Mönchengladbach

Höh, irgendwie klappt das jetzt. Ich vermute mal ein korrupte ACL-Einstellung; habe da in den letzten Tagen viel dran rumgeschraubt (wobei noch immer nicht alles klappt; siehe hier. Danke aber auf jeden Fall für die Tipps ☺

freebirth_one

(Themenstarter)
Avatar von freebirth_one

Anmeldungsdatum:
19. Juli 2007

Beiträge: 5051

Wohnort: Mönchengladbach

*grrr* Jetzt klappts nicht mehr!

Kurze zusammen fassung:

  • sind in der Variablen virtual_mailbox_domains in der main.cf die virtuellen Domains direkt eingetrage, so funktioniert sowohl die Annahme von Mails an eine dieser Domains als auch das Mailfowarding

  • ist dieser Variablen eine externe Datei zugewiesen (egal, ob eine Plaintextdatei mit Einträgen oder ein Ldap-Search mit einer einzigen AUsgabe), so werden sowohl Mails an virtuelle Domains als auch Mails an einen Empfänger, für den ein Forward eingerichtet wurde, sofort rejected. Dabei wird nich nicht mal ein Anfrage gestartet, sondern der Anfragende Dienst mir nichts dir nichts abegwiesen.

Hab diesbezüglich auch mal an die Postfix-Mailingliste geschrieben; vielleicht wissen die ja, was da los ist.

xabbuh Team-Icon

Anmeldungsdatum:
25. Mai 2006

Beiträge: 6411

freebirth one schrieb:

  • ist dieser Variablen eine externe Datei zugewiesen (egal, ob eine Plaintextdatei mit Einträgen oder ein Ldap-Search mit einer einzigen AUsgabe), so werden sowohl Mails an virtuelle Domains als auch Mails an einen Empfänger, für den ein Forward eingerichtet wurde, sofort rejected. Dabei wird nich nicht mal ein Anfrage gestartet, sondern der Anfragende Dienst mir nichts dir nichts abegwiesen.

Zeig bitte mal, wie du das mit reinen Textdateien gemacht hast und wie dazu das Log aussah.

freebirth_one

(Themenstarter)
Avatar von freebirth_one

Anmeldungsdatum:
19. Juli 2007

Beiträge: 5051

Wohnort: Mönchengladbach

grmpf, hatte damals wohl ein anderes Problem. Jetzt klappt das sowohl mit Plaintext als auch mit einer hash:-table. Ldap immer noch nicht.

Ich verstehe das nicht: mit postmap -q <adresse> ldap:/etc/postfix/ldap-virtual-mailboxes erhalte ich eine nichtleere Ausgabe, weswegen das doch eigentlich klappen _muss_.

Warum das Forwarding auch nicht funktioniert ist mir jetzt klar: anscheinend macht der zuerst eine Abfrage auf virtuelle Domains, um dann danach auf virtuelle Akiases zu testen. Gibt es die, so wird die Mail dahin geschickt, ansonsten weiter an den virtual_ransport gegeben.

Hilft mir zwar nicht bei meinem Problem, trägt aber zu meinem Verständnis bei.

xabbuh Team-Icon

Anmeldungsdatum:
25. Mai 2006

Beiträge: 6411

Wenn ich mir deine komplette Ausgabe von postconf -n auf der Mailingliste ansehe, fehlt da auch mindestens die Konfigurations der virtual_mailbox_maps, die vorhanden sein muss, damit dein Postfix weiß, welche Adressen in den virtual_mailbox_domains existieren.

freebirth_one

(Themenstarter)
Avatar von freebirth_one

Anmeldungsdatum:
19. Juli 2007

Beiträge: 5051

Wohnort: Mönchengladbach

Habsch vor kurzem nach getragen, da mir das auch auffiel. Klappt trotzdem nicht, zumindest nicht mit Ldap.

xabbuh Team-Icon

Anmeldungsdatum:
25. Mai 2006

Beiträge: 6411

Zeig mal das aktuelle dazu passende Log. Evtl. eben auch mit der Client-IP-Adresse in debug_peer_list.

freebirth_one

(Themenstarter)
Avatar von freebirth_one

Anmeldungsdatum:
19. Juli 2007

Beiträge: 5051

Wohnort: Mönchengladbach

kann ich da auch regexp verwenden= Der sendende Server ist nämlich fast immer ein anderer (Load-Balancing), aber immer von arcor.

Antworten |