Problem mit address verification, virtual_aliases und mydestination hinter NAT

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


Hallo Vitali,

wie schon erwähnt, ist Dein Setup nicht gerade so ganz einfach.

Ich habe das bei mir wie folgt gelöst:

transport_maps = btree:/etc/postfix/transport_maps, $relay_domains
virtual_alias_domains = btree:/etc/postfix/virtual_alias_domains

--> /etc/postfix/transport_maps ist bei mir OHNE Inhalt.
--> $relay_domains = /etc/postfix/transport_maps ist bei mir auch OHNE Inhalt.

--- Ab hier sind meine SQL-Abfragen enthalten ---

virtual_alias_maps = btree:/etc/postfix/virtual_alias_maps,  
proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf,  
proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf,  
proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf

virtual_mailbox_domains = btree:/etc/postfix/virtual_mailbox_domains,  
proxy:mysql:/etc/postfix/sql/mysql_virtual_domains_maps.cf

virtual_mailbox_maps = btree:/etc/postfix/virtual_mailbox_maps,  
proxy:mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf,  
proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf

--- Bis hier sind meine SQL-Abfragen enthalten ---

virtual_transport = lmtp:inet:[192.168.0.80]:24


Was mit BEI DIR FEHLT ist virtual_mailbox_domains und virtual_transport.

Falls Du das Buch von Peer Heinlein hast, schau Dir mal die Seiten 371 ff. an.

Meiner Meinung nach, hast Du noch eine Vermischung von klassischen  
Definitionen und virtuellen Definitionen.

p.s. Siehe auch, wie ich PostfixAdmin eingebunden habe:

https://www.dokuwiki.tachtler.net/doku.php?id=tachtler:postfix_admin


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/86949032/attachment-0001.skr>


Mehr Informationen über die Mailingliste Postfixbuch-users