Problem mit address verification, virtual_aliases und mydestination hinter NAT
Klaus Tachtler
klaus at tachtler.net
Di Mär 19 08:58:48 CET 2019
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
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
--------------------------------------------
-------------- 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/20190319/abb0b483/attachment-0001.skr>
Mehr Informationen über die Mailingliste Postfixbuch-users