Problem mit address verification, virtual_aliases und mydestination hinter NAT

Klaus Tachtler klaus at tachtler.net
Fr Mär 22 04:16:13 CET 2019


Hallo Vitali,

was steht bei Dir in mydestination?

Wie sieht das komplette LOG für die Einlieferung einer E-Mail aus,  
wenn Du die Fehlermeldung
"(mail for example.com loops back to myself)" bekommst?

(Bitte cat /var/log/maillog | grep <mail-message-id>)


Grüße
Klaus.

> Hallo,
>
> ich bin nun ein klein wenig weiter.
>
> Mit proxy_interfaces habe ich Postfix abgewöhnt eine smtp Verbindung  
> zu der externen IP aufzubauen.
>
> Nun bekomme ich ein "dsn=5.4.6, status=bounced (mail for example.com  
> loops back to myself)”.
>
> Wenn ich die vielen durchforsteten Quellen richtig verstanden habe,  
> kann das nur, und ist auf keinen Fall etwas anderes als  
> mydestinations.
> Da ich die eigentlichen Domains ja nun in der MariaDB stehen habe,  
> kann ich dort ja nicht wirklich etwas anderes eintragen als  
> "$myhostname localhost”. Dennoch endet jeder Versuch in dem genannte  
> Fehler.
>
> Zwischenzeitlich habe ich in dieser Diskussion  
> <https://stackoverflow.com/questions/29432375/postfix-transport-maps-and-virtual-mailbox> gelesen, dass virtual_transport und transport_maps in gemeinsamer Verwendung problematisch sein können. Ist das die Ursache meines  
> Problems?
>
> Gruß
> Vitali
>
>> Am 20.03.2019 um 16:59 schrieb Vitali Quiering <vitali at quiering.com>:
>>
>> Hallo Klaus,
>>
>> vielen Dank. So etwas in der Art hatte ich mir schon gedacht.  
>> Leider komme ich an der Stelle überhaupt nicht weiter.
>>
>> Aktuell habe ich smtpd_recipient_restrictions so angepasst, dass  
>> Aliases mit permit_auth_destination angenommen werden sollten (so  
>> zumindest mein Verständnis), es wird dennoch ein SMTP Probe an den  
>> MX mit der öffentlichen IP gemacht was in der Fehlermeldung endet.  
>> So als würde Postfix die Settings ignorieren.
>>
>> smtpd_recipient_restrictions =  
>> permit_mynetworks,permit_sasl_authenticated,permit_auth_destination,reject_unknown_recipient_domain,reject_unverified_recipient
>>
>> Gruß
>> Vitali
>>
>>> Am 19.03.2019 um 08:58 schrieb Klaus Tachtler <klaus at tachtler.net  
>>> <mailto:klaus at tachtler.net>>:
>>>
>>> Hallo Vitali,
>>>
>>> da Dein Setup doch etwas komplexer ist, ist das ganze nicht so einfach
>>> von der Ferne aus zu beurteilen. Was mir aber aufgefallen ist, und
>>> bitte das ist nur eine sehr wage Vermutung, dass ich in Deiner
>>> Konfiguration keine virtual_transport gesehen habe.
>>>
>>> Ich habe für mich mal PosfixAdmin konfiguriert, was ebenfalls die
>>> Einträge für Domains, Mailboxen und Aliase usw. in einer Datenbank
>>> ablegt und dies für mich einmal dokumentiert.
>>>
>>> https://www.dokuwiki.tachtler.net/doku.php?id=tachtler:postfix_admin#virtual_transport  
>>> <https://www.dokuwiki.tachtler.net/doku.php?id=tachtler:postfix_admin#virtual_transport>
>>>
>>> Evtl. ist dies eine Ansatz für eine Richtung in die Du weiter  
>>> suchen kannst?
>>>
>>>
>>> Grüße
>>> Klaus.
>>>
>>>> Moin,
>>>>
>>>> ich habe hier ein Problem dem ich noch nicht auf die Schliche kommen
>>>> konnte. Vielleicht hat von euch ja jemand eine Idee.
>>>>
>>>> Beschreibung meines Setups
>>>> Wir haben in einem RZ eine große Groupware als zentrale E-Mail
>>>> Lösung mit sehr vielen Domains. Außerhalb des RZ betreiben wir eine
>>>> Menge Mailserver mit klassischem Dovecot, Postfix, AMaViS Geraffel.
>>>> Der Postfix setzt unter bestimmten Umständen den Transport in
>>>> Richtung der Groupware was überwiegend Mails für schlagende Herzen
>>>> sind. Auf den Mailservern selbst bleiben Mails liegen die bspw.
>>>> maschinell abgeholt und verarbeitet werden.
>>>>
>>>> Ich habe hierfür transport_maps genutzt.
>>>>
>>>> mysql-transport-maps.cf
>>>>> SELECT COALESCE(
>>>>>  (
>>>>>        SELECT 'dovecot' FROM virtual_users
>>>>>        LEFT JOIN virtual_domains ON virtual_users.domain_id =
>>>>> virtual_domains.id
>>>>>        WHERE concat(virtual_users.user,'@',virtual_domains.name) =
>>>>> '%s' LIMIT 1 ),
>>>>>  (
>>>>>        SELECT 'smtp' FROM virtual_aliases
>>>>>        LEFT JOIN virtual_domains ON virtual_aliases.domain_id =
>>>>> virtual_domains.id
>>>>>        WHERE
>>>>> concat(virtual_aliases.source,'@',virtual_domains.name) = '%s'
>>>>> LIMIT 1),
>>>>>  (
>>>>>        SELECT 'local' FROM virtual_domains
>>>>>        WHERE 'localhost' = (SELECT SUBSTRING_INDEX('%s','@',-1))  
>>>>> LIMIT 1),
>>>>>  (
>>>>>        SELECT 'smtp:[ip.adresse.der.groupware]:25' FROM virtual_domains
>>>>>        WHERE name = (SELECT SUBSTRING_INDEX('%s','@',-1)) LIMIT 1),
>>>>>        'smtp') AS user;
>>>>
>>>>
>>>> Das funktionierte wunderbar, bis wir einige der externen Mailserver
>>>> in unser RZ geholt haben.
>>>>
>>>> Jetzt habe ich das Problem festgestellt, dass bei einem Alias smtp
>>>> als transport verwendet wird. Eigenartigerweise wird mydestination
>>>> nicht respektiert bzw. die virtual_domains. Es wird also, um die
>>>> Adresse des Empfängers (Alias) zu überprüfen, eine SMTP Verbindung
>>>> zu der öffentlichen IP des Mailserver hergestellt die dann wieder
>>>> auf dem Mailserver selbst endet. Dies resultiert in der Meldung die
>>>> wir alle lieben “greeted me with my own hostname”.
>>>>
>>>> Auf den externen Mailserver und im RZ läuft die Version 3.1.8-0+deb9u1.
>>>>
>>>> Log des fehlgeschlagenen Versuches bei dem Server im RZ
>>>>> Mar 15 15:28:53 mx-local postfix/postscreen[112663]: CONNECT from
>>>>> [ip.adresse.des.versenders]:38170 to [10.0.0.11]:25
>>>>> Mar 15 15:28:53 mx-local postfix/postscreen[112663]: PASS OLD
>>>>> [ip.adresse.des.versenders]:38170
>>>>> Mar 15 15:28:53 mx-local postfix/smtpd[112664]: connect from
>>>>> mx.example.com[ip.adresse.des.versenders]
>>>>> Mar 15 15:28:54 mx-local postfix/smtpd[112664]: 15B023FDF5:
>>>>> client=mx.example.com[ip.adresse.des.versenders]
>>>>> Mar 15 15:28:54 mx-local postfix/cleanup[112670]: 15B023FDF5:
>>>>> message-id=<8529D5D9-70FE-41A4-9187-A2259D35269A at example.com>
>>>>> Mar 15 15:28:55 mx-local postfix/qmgr[112638]: 15B023FDF5:
>>>>> from=<user1 at example.com>, size=2351, nrcpt=1 (queue active)
>>>>> Mar 15 15:28:55 mx-local postfix/postscreen[112663]: CONNECT from
>>>>> [10.0.0.1]:36536 to [10.0.0.11]:25
>>>>> Mar 15 15:28:55 mx-local postfix/smtpd[112664]: disconnect from
>>>>> mx.example.com[ip.adresse.des.versenders] ehlo=2 starttls=1 mail=1
>>>>> rcpt=1 data=1 quit=1 commands=7
>>>>> Mar 15 15:28:55 mx-local postfix/postscreen[112663]: PASS OLD
>>>>> [10.0.0.1]:36536
>>>>> Mar 15 15:28:55 mx-local postfix/smtpd[112664]: connect from
>>>>> unknown[10.0.0.1]
>>>>> Mar 15 15:28:55 mx-local postfix/smtp[112671]: warning: host
>>>>> mx.example.net[externe.ip.des.servers]:25 greeted me with my own
>>>>> hostname mx.example.net
>>>>> Mar 15 15:28:55 mx-local postfix/smtp[112671]: warning: host
>>>>> mx.example.net[externe.ip.des.servers]:25 replied to HELO/EHLO with
>>>>> my own hostname mx.example.net
>>>>> Mar 15 15:28:55 mx-local postfix/smtp[112671]: 15B023FDF5:
>>>>> to=<user2 at example.net>,
>>>>> relay=mx.example.net[externe.ip.des.servers]:25, delay=1.8,
>>>>> delays=1.7/0.01/0.13/0, dsn=5.4.6, status=bounced (mail for
>>>>> example.net loops back to myself)
>>>>> Mar 15 15:28:55 mx-local postfix/smtpd[112664]: disconnect from
>>>>> unknown[10.0.0.1] ehlo=1 quit=1 commands=2
>>>>> Mar 15 15:28:55 mx-local postfix/cleanup[112670]: C302F3FFDA:
>>>>> message-id=<20190315142855.C302F3FFDA at mx.example.net>
>>>>> Mar 15 15:28:55 mx-local postfix/qmgr[112638]: C302F3FFDA: from=<>,
>>>>> size=4707, nrcpt=1 (queue active)
>>>>> Mar 15 15:28:55 mx-local postfix/bounce[112676]: 15B023FDF5: sender
>>>>> non-delivery notification: C302F3FFDA
>>>>> Mar 15 15:28:55 mx-local postfix/qmgr[112638]: 15B023FDF5: removed
>>>>> Mar 15 15:28:56 mx-local postfix/smtp[112671]: C302F3FFDA:
>>>>> to=<user1 at example.com>,
>>>>> relay=mx.example.com[ip.adresse.des.versenders]:25, delay=0.22,
>>>>> delays=0.01/0/0.14/0.08, dsn=2.0.0, status=sent (250 2.0.0 Ok:
>>>>> queued as E9ABCD840A5)
>>>>> Mar 15 15:28:56 mx-local postfix/qmgr[112638]: C302F3FFDA: removed
>>>>
>>>>
>>>> Log des erfolgreichen Versuches bei dem Server außerhalb des RZ
>>>>> Mar 15 15:46:05 mx postfix/postscreen[27628]: CONNECT from
>>>>> [ip.adresse.des.versenders]:37494 to [ip.adresse.des.empfaengers]:25
>>>>> Mar 15 15:46:05 mx postfix/postscreen[27628]: PASS OLD
>>>>> [ip.adresse.des.versenders]:37494
>>>>> Mar 15 15:46:05 mx postfix/smtpd[27629]: connect from
>>>>> mx.example.com[ip.adresse.des.versenders]
>>>>> Mar 15 15:46:05 mx postfix/smtpd[27629]: 9F28D5F824:
>>>>> client=mx.example.com[ip.adresse.des.versenders]
>>>>> Mar 15 15:46:05 mx postfix/cleanup[27634]: 9F28D5F824:
>>>>> message-id=<D5793ECA-36A4-43BA-B036-4C699EDAF278 at example.com>
>>>>> Mar 15 15:46:05 mx postfix/qmgr[22574]: 9F28D5F824:
>>>>> from=<user1 at example.com>, size=2390, nrcpt=1 (queue active)
>>>>> Mar 15 15:46:05 mx postfix/smtpd[27629]: disconnect from
>>>>> mx.example.com[ip.adresse.des.versenders] ehlo=2 starttls=1 mail=1
>>>>> rcpt=1 data=1 quit=1 commands=7
>>>>> Mar 15 15:46:05 mx postfix/smtpd[27638]: connect from  
>>>>> localhost[127.0.0.1]
>>>>> Mar 15 15:46:05 mx postfix/smtpd[27638]: B5D675F83B:
>>>>> client=localhost[127.0.0.1]
>>>>> Mar 15 15:46:05 mx postfix/cleanup[27634]: B5D675F83B:
>>>>> message-id=<D5793ECA-36A4-43BA-B036-4C699EDAF278 at example.com>
>>>>> Mar 15 15:46:05 mx postfix/qmgr[22574]: B5D675F83B:
>>>>> from=<user1 at example.com>, size=1497, nrcpt=1 (queue active)
>>>>> Mar 15 15:46:05 mx postfix/smtpd[27638]: disconnect from
>>>>> localhost[127.0.0.1] ehlo=1 mail=1 rcpt=1 data=1 quit=1 commands=5
>>>>> Mar 15 15:46:05 mx amavis[28645]: (28645-20) Passed CLEAN
>>>>> {RelayedOpenRelay}, [ip.adresse.des.versenders]:37494
>>>>> [ip.adresse.des.versenders] <user1 at example.com> ->
>>>>> <alias1 at example.org>, Queue-ID: 9F28D5F824, Message-ID:
>>>>> <D5793ECA-36A4-43BA-B036-4C699EDAF278 at example.com>, mail_id:
>>>>> AEkFq9VYyvTL, Hits: -, size: 1226, queued_as: B5D675F83B, 78 ms
>>>>> Mar 15 15:46:05 mx postfix/smtp[27635]: 9F28D5F824:
>>>>> to=<alias1 at example.org>, relay=127.0.0.1[127.0.0.1]:10024,
>>>>> delay=0.11, delays=0.03/0/0/0.08, dsn=2.0.0, status=sent (250 2.0.0
>>>>> from MTA(smtp:[127.0.0.1]:10025): 250 2.0.0 Ok: queued as B5D675F83B)
>>>>> Mar 15 15:46:05 mx postfix/qmgr[22574]: 9F28D5F824: removed
>>>>> Mar 15 15:46:05 mx postfix/smtp[27639]: B5D675F83B:
>>>>> to=<user2 at alias.example.org>, orig_to=<alias1 at example.org>,
>>>>> relay=alias.example.org[ip.ip.ip.ip]:25, delay=0.1,
>>>>> delays=0.01/0/0.07/0.02, dsn=2.0.0, status=sent (250 2.0.0 Ok:
>>>>> queued as CAEA45F87A)
>>>>> Mar 15 15:46:05 mx postfix/qmgr[22574]: B5D675F83B: removed
>>>>
>>>>
>>>> Zu guter Letzt noch meine postconf
>>>>> address_verify_sender = double-bounce at mx.example.net
>>>>> alias_database = hash:/etc/aliases
>>>>> alias_maps = hash:/etc/aliases
>>>>> amavisd_milter = inet:10.0.1.10:8899
>>>>> append_dot_mydomain = no
>>>>> biff = no
>>>>> bounce_queue_lifetime = 3d
>>>>> broken_sasl_auth_clients = yes
>>>>> disable_vrfy_command = yes
>>>>> dovecot_destination_recipient_limit = 1
>>>>> inet_interfaces = all
>>>>> inet_protocols = ipv4
>>>>> local_destination_concurrency_limit = 20
>>>>> mailbox_size_limit = 0
>>>>> maximal_queue_lifetime = 3d
>>>>> message_size_limit = 500000000
>>>>> milter_default_action = accept
>>>>> milter_protocol = 2
>>>>> mydestination = $myhostname, localhost.$mydomain, localhost
>>>>> myhostname = mx.example.net
>>>>> mynetworks = 127.0.0.0/8 10.0.2.10 10.0.2.1 10.0.2.2 10.0.2.3 10.0.2.4
>>>>> myorigin = /etc/mailname
>>>>> non_smtpd_milters = inet:localhost:8891
>>>>> postscreen_access_list = permit_mynetworks
>>>>> postscreen_dnsbl_action = enforce
>>>>> postscreen_dnsbl_sites = zen.spamhaus.org*3
>>>>> b.barracudacentral.org*2 bl.spamcop.net
>>>>> spam.dnsbl.sorbs.net=127.0.0.6
>>>>> postscreen_dnsbl_threshold = 3
>>>>> postscreen_greet_action = enforce
>>>>> readme_directory = no
>>>>> receive_override_options = no_address_mappings
>>>>> recipient_delimiter = +
>>>>> relayhost =
>>>>> smtp_header_checks = pcre:/etc/postfix/anonymize_headers.pcre
>>>>> smtp_mime_header_checks = pcre:/etc/postfix/anonymize_headers.pcre
>>>>> smtp_tls_security_level = may
>>>>> smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
>>>>> smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
>>>>> smtpd_client_restrictions = permit_mynetworks
>>>>> permit_sasl_authenticated reject_unauth_pipelining
>>>>> reject_rbl_client bl.spamcop.net
>>>>> smtpd_discard_ehlo_keyword_address_maps =
>>>>> cidr:/etc/postfix/esmtp_access.cidr
>>>>> smtpd_enforce_tls = yes
>>>>> smtpd_milters = inet:localhost:8891
>>>>> smtpd_recipient_restrictions =
>>>>> permit_mynetworks,permit_sasl_authenticated,reject_unknown_recipient_domain,reject_unverified_recipient
>>>>> smtpd_sasl_auth_enable = yes
>>>>> smtpd_sasl_authenticated_header = yes
>>>>> smtpd_sasl_path = private/auth
>>>>> smtpd_sasl_type = dovecot
>>>>> smtpd_tls_auth_only = yes
>>>>> smtpd_tls_cert_file = /etc/letsencrypt/live/mx.example.net/fullchain.pem
>>>>> smtpd_tls_key_file = /etc/letsencrypt/live/mx.example.net/privkey.pem
>>>>> smtpd_tls_mandatory_ciphers = high
>>>>> smtpd_tls_mandatory_exclude_ciphers = aNULL, MD5 , RC4
>>>>> smtpd_tls_mandatory_protocols = SSLv3, TLSv1
>>>>> smtpd_tls_security_level = may
>>>>> smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
>>>>> transport_maps = mysql:/etc/postfix/mysql-transport-maps.cf
>>>>> unverified_recipient_reject_code = 550
>>>>> unverified_recipient_reject_reason = 'Recipient address rejected'
>>>>> virtual_alias_maps =
>>>>> mysql:/etc/postfix/mysql-virtual-alias-maps.cf,mysql:/etc/postfix/mysql-email2email.cf
>>>>> virtual_gid_maps = static:5000
>>>>> virtual_mailbox_domains =
>>>>> mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
>>>>> virtual_uid_maps = static:5000
>>>>
>>>>
>>>> Meine Fragen
>>>> 1. Warum wird überhaupt eine smtp Verbindung aufgebaut, wenn ich die
>>>> Domain doch in den virtual_domains definiert habe?
>>>> 2. Warum verhält sich Postfix korrekt, wenn die externe IP dem
>>>> System bekannt ist?
>>>> 3. Wie kann ich virtual_aliases wieder korrekt nutzen?
>>>>
>>>> Vielen Dank für alle die bis hier gelesen haben und vorab auch
>>>> vielen Dank für eure Hilfe.
>>>>
>>>> Vitali
>>>
>>>
>>> ----- Ende der Nachricht von Vitali Quiering <vitali at quiering.com> -----
>>>
>>>
>>>
>>> --
>>>
>>> --------------------------------------------
>>> e-Mail  : klaus at tachtler.net
>>> Homepage: https://www.tachtler.net
>>> DokuWiki: https://dokuwiki.tachtler.net
>>> --------------------------------------------
>>> <Mail-Anhang>
>>


----- Ende der Nachricht von Vitali Quiering <vitali at quiering.com> -----



-- 

--------------------------------------------
e-Mail  : klaus at tachtler.net
Homepage: https://www.tachtler.net
DokuWiki: https://dokuwiki.tachtler.net
--------------------------------------------
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : nicht verfügbar
Dateityp    : application/pgp-keys
Dateigröße  : 3121 bytes
Beschreibung: Öffentlicher PGP-Schlüssel
URL         : <https://listi.jpberlin.de/pipermail/postfixbuch-users/attachments/20190322/1a984241/attachment.skr>


Mehr Informationen über die Mailingliste Postfixbuch-users