Postfix Transport für Mailboxen über Postfixadmin 2

In meinem Artikel Postfix Transport für Mailboxen über Postfixadmin habe ich bereits eine auf MySQL basierende Lösung vorgestellt, hier nun eine etwas elegantere Alternative.

Um das derzeit unter Postfixadmin fehlende SMTP-Transport-Feature für einzelne Mailadressen zu realisieren, kann man auch wie folgt vorgehen:

Zunächst erstellt man im Postfixadmin einen Alias wie z.B.

postmaster@beispiel.de  postmaster@beispiel.de.local

Ein .local Domain wird vom Postfixadmin akzeptiert, aber allgemein im öffentlichen Internet nicht per DNS geroutet. (.local ist eine "besondere Domain", bitte selbst nachlesen).

Um diesem SMTP-Transport noch besondere Eigenschaften zuordnen zu können, legt man in /etc/postfix/master.cf am besten einen extra SMTP-Transport an.

spezial      unix  -       -       n       -       -       smtp
            -o smtp_tls_ciphers=high
            -o smtp_tls_exclude_ciphers=RC4,MD5,AES128-SHA
            -o smtp_tls_protocols=!SSLv2
            -o smtp_fallback_relay=[1.2.3.4]:1025

Die zusätzlichen Einträge hier ermöglichen eine alternative IP-Auslieferung, beeinflussen diverse TLS-Parameter und legen einen anderen Port fest.

Empfehlenswert ist auch nur eine verschlüsselte Auslieferung zu erzwingen, etwa mit einer TLS Policy(z.B. /etc/postfix/tls_policy)

beispiel.de.local encrypt

Danach erstellt man einen Eintrag in z.B. /etc/postfix/transport

beispiel.de.local spezial:[2.3.4.5]:1025

Hier wird die primäre Auslieferungs-IP-Adresse eingepflegt.

Um nun bei der Auslieferung die Domain wieder auf ihre ursprüngliche Empfängeradresse zurückzuschreiben, benutzt man smtp_generic_maps im Regex-Format, z.B. /etc/postfix/beispiel.de.local.generic

/^(.*)@beispiel\.de\.local/ $1@beispiel.de

Dazugehörige Einträge in der /etc/postfix/main.cf könnten so aussehen:

smtp_generic_maps = regexp:/etc/postfix/beispiel.de.local.generic
transport_maps = hash:/etc/postfix/transport
smtp_tls_policy_maps = hash:/etc/postfix/tls_policy
#besondere Limits beim Ausliefern
spezial_destination_recipient_limit = 5
spezial_destination_rate_delay = 5s
spezial_destination_concurrency_failed_cohort_limit = 100
spezial_destination_concurrency_limit = 2

Achtung: Auch diese Lösung ist nur ein Workaround für den "Sonderfall Postfixadmin"!

Robert Schetterer, 04.09.2014