Postfix: execute commands (virtual domains)

Nach und nach stelle ich alle Maschinen von qmail auf Postfix um. Ein letztes Thema bei der Migration war die Integration von diversen Scripten beim Mail-Empfang. Zwar kann man Postfix mittels einfacher Anweisung in der /etc/aliases das Ausführen von Scripten etc. beibringen – jedoch ist es nicht so einfach wenn man mehrere Domains (Virtual Domains) auf dem Server bedienen will. Dazu ist ein klein wenig mehr Aufwand notwendig…

Zunächst wird mittels einer Postfix-Datenbank gesteuert welche Mails beim Script landen sollen:

#/etc/postfix/transportregex
/trac-project-x@example.com/         trac:project-x
/trac-project-y@example.com/         trac:project-y

Man beachte die Strings hinter dem “:”, diese werden hinterher von unserem Script-Service (hier: trac) ausgewertet. Nach dem Erstellen der Datei muss diese in eine Postfix-DB umgewandelt werden (dies ist auch nach jeder Änderung der Datei nötig):

postmap /etc/postfix/transportregex

Die soeben erstellte Datei wird jetzt in die Postfix-Konfiguration eingebunden:

#/etc/postfix/main.cf
transport_maps = regexp:/etc/postfix/transportregex, hash:/var/spool/postfix/plesk/transport

Jetzt wird noch ein neuer Postfix-Service benötigt welcher das Script ansteuert:

#/etc/postfix/master.cf
trac unix - n n - 10 pipe flags=DRhu user=nobody argv=/usr/local/bin/email2trac -p ${nexthop}

Hier wird das Script “email2trac” angesteuert, welches Mails direkt in ein Trac-Ticket umwandelt. Hier ist praktisch, dass man jetzt mittels der Variable ${nexthop} direkt das ursprüngliche Transportziel auswerten kann (siehe oben).

2 Gedanken zu „Postfix: execute commands (virtual domains)

  1. Gerd

    Postfix ist wirklich super.

    Für dein Beispiel nehme ich normal eine eigene Subdomain. Hier mein Fax-Gateway:
    main.cf: transport_maps = hash:/etc/postfix/transport
    transport: fax.it4sport.de fax:
    master.cf: fax unix – n n – – pipe flags= user=mail argv=/usr/local/sbin/faxgateway $mailbox

    Das spart mir für jede Zielnummer einen Eintrag in der transportmap zu machen.

    PS: Mein Faxgateway ist natürlich mit Source IPs und Passwort geschützt :)

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>