Postfix Transport für Mailboxen über Postfixadmin 2

Abstract

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.

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. September 2014