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).