Zusammenspiel von Virtual Alias Map und Tranport Map

rog7993 at web.de rog7993 at web.de
Mo Dez 7 14:58:00 CET 2015


Hallo,

wir haben derzeit ein Setup, das vereinfacht dargestellt ein Mailgateway 
in der DMZ und einen Message Store im internen LAN enthält. Dem 
Mailgateway sind alle Mailadressen in einer Virtual Alias Map" bekannt. 
Darüber erfolgt ein Umschreiben des SMTP-Envelope Empfängers der Art:

  user1 at domain1.org       user1 at msgstore

Über die Transport Map erfolgt dann das Routing an den Message Store:

  msgstore                :[msgstore.domain1.org]

Die derzeitige Konfiguration findet sich am Ende dieser Mail.

Ich möchte das derart umstellen, dass der originale SMTP-Envelope 
Empfänger an den neuen Message Store durchgereicht wird. Die Migration 
wird ein paar Wochen dauern und es müssen temporär, wahrscheinlich 
dauerhaft, beide Varianten funktionieren. Mein erster Ansatz war, in der 
"transport map" einen Eintrag dieser Art zu machen:

   user2 at domain1.org      :[msgstore-neu.domain1.org]

Das funktioniert nicht, weil diese Adresse nicht in der Virtual Alias 
Map definiert ist und offenbar wird diese vor der Transport Map 
ausgewertet:

   Recipient address rejected: User unknown in virtual alias table (in
   reply to RCPT TO command)

Wenn ich die Domäne "domain1.org" aus dem Konfigurationsparameter 
"virtual_alias_domains" entferne, funktioniert dies. Es hat aber 
mindestens den Nachteil, dass das Mailgateway sich dann nicht mehr für 
diese Domäne zuständig fühlt und Mails an nichtexistente Mailadressen 
dieser Domäne an den Relayhost (ein externer Dienstleister) schickt. 
Zumindest dann, wenn alle Mailadressen einzeln in der Transport Map 
definiert (analog oben) werden. Sollte man in der Transport Map hingegen 
noch einen Catch-All Eintrag für die komplette Domäne domain1.org haben 
(stellt sich die Frage wohin?), würde das Mailgateway alle Mails dieser 
Domäne annehmen, also auch solche an nicht existente Mailadressen und 
erst der nachgelagerte Message Store verwirft diese dann, was 
hinsichtlich Backscatter-Spam nicht zu empfehlen ist.

Wie würde man das gewünschte Verhalten idealerweise erreichen?

  1. Durchreichen des SMTP-Envelope Empfängers vom Mailgateway an
     den Messagestore
  2. Das Mailgateway soll in der Lage sein, Mails an nichtexistente
     Adressen unserer Domäne, abzuweisen
  3. Das alte Routing mit Umschreiben des SMTP-Envelope Empfängers soll
     nach wie vor funktionieren.

Ahh. Ich sehe gerade in der Man-Page der transport-Table, dass man dort 
einen Error Mailer einsetzen kann. Wäre dies die Lösung für den oben 
angesprochenen Catch-All Eintrag?

Derzeite Konfiguration:

/etc/postfix/main.cf:
=====================

# postconf -nf
alias_database = hash:/etc/postfix/shared/aliases
alias_maps = hash:/etc/postfix/shared/aliases
append_dot_mydomain = no
biff = no
config_directory = /etc/postfix
delay_warning_time = 4h
inet_interfaces = x.x.x.x localhost
mailbox_size_limit = 0
message_size_limit = 102400000
mydestination = localhost
myhostname = mailgw.domain1.org
mynetworks = 127.0.0.0/8 10.0.0.0/8
myorigin = $mydomain
relayhost = mailgw.domain-ext.org
sender_dependent_default_transport_maps =
     hash:/etc/postfix/sender_dependent_default_transport
slow-smtp_destination_concurrency_limit = 1
slow-smtp_destination_rate_delay = 1
smtp_tls_CAfile = /etc/postfix/shared/certs/ca-certificates.crt
smtp_tls_loglevel = 1
smtp_tls_policy_maps = hash:/etc/postfix/shared/tls_policy
smtp_tls_security_level = may
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_banner = $myhostname ESMTP
smtpd_recipient_restrictions = permit_mynetworks
     reject_unauth_destination
smtpd_tls_CAfile = /etc/postfix/shared/certs/ca-certificates.crt
smtpd_tls_cert_file = /etc/ssl/certs/mailgw-cert.pem
smtpd_tls_key_file = /etc/ssl/private/mailgw-key.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_security_level = may
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
transport_maps = hash:/etc/postfix/shared/transport
unverified_recipient_reject_code = 550
virtual_alias_domains = domain1.org domain2.org
virtual_alias_expansion_limit = 5000
virtual_alias_maps = hash:/etc/postfix/shared/virtual


/etc/postfix/shared/virtual:
=======================

user1 at domain1.org              user1 at dovecot

/etc/postfix/shared/transport:
=======================
dovecot			       :[dovecot.domain1.org]

-- 
Viele Grüße,

Ingo



Mehr Informationen über die Mailingliste Postfixbuch-users