Problem mit address verification, virtual_aliases und mydestination hinter NAT

Vitali Quiering vitali at quiering.com
Mi Mär 20 16:59:03 CET 2019


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>:
> 
> 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
> --------------------------------------------
> <Mail-Anhang>

-------------- nächster Teil --------------
Ein Dateianhang mit HTML-Daten wurde abgetrennt...
URL: <https://listi.jpberlin.de/pipermail/postfixbuch-users/attachments/20190320/cce9282a/attachment-0001.html>


Mehr Informationen über die Mailingliste Postfixbuch-users