SMTP-Sinkhole mit postfix smtp-sink

Beim Testen von Applikationen oder beispielsweise Lasttests will man verhindern, dass irgendwelche Mails an Benutzer raus gehen.

Um das zu erreichen bietet postfix das kleine Tool smtp-sink an. Hier werden E-Mails vom MTA normal angenommen, aber statt tatsächlich verschickt, dann einfach in eine Datei geschrieben.

Inhalt

Lokaler Postfix Mailserver auf smtp-sink umstellen

Lokaler Postfix stoppen und vor wieder starten schützen und SMTP sink-hole starten:

postconf relayhost=
systemctl stop postfix
systemctl disable postfix
 
netstat -tunlp |grep 25
 
nohup smtp-sink -u root -d "/tmp/postfix/smtp-sink/%Y%m%d%H/%M." 127.0.0.1:25 100 &

Nun werde alle Mails, die auf localhost:25 eingereicht werden statt rausgeschickt in eine Datei in /tmp/postfix/smtp-sink/ geschrieben.

Testen kann man das folgendermassen:

telnet localhost 25
telnet gmail.com 25

Mails an eine bestimmte E-Mail Adresse umleiten

Man kann auch anstelle den Postfix mit smtp-sink zu ersetzen kann man diesen auch so umkonfigurieren, dass alle Mails die ihn erreichen an eine bestimmte E-Mail Adresse umgeleitet werden.

Dazu kann man mittels Postfix recipient_canonical_maps die Original-Mail Empfängeradresse (RCPT TO) ersetzen

/etc/postfix/recipient_canonical
/.*/    sinkhole@example.com

Danach müssen die recipient_canonical_maps noch in der main.cf aktiviert werden:

postconf -e recipient_canonical_maps=regexp:/etc/postfix/recipient_canonical

Und danach die Postfix Konfiguration neu laden

systemctl reload postfix

Testen lässt sich das wie folgt:

echo "Test" | mail -s "Sinkhole-Test" original@example.com

Danach sollte bei:

tail -f /var/log/mail.log | grep 'to=<'

Ein Log Eintrag wie dieser erscheinen:

to=<sinkhole@example.com>, orig_to=<original@example.com>

Erweiterte Lösung mit Mailpit

Wenn eine komfortablere Lösung gewünscht ist, bekommt man mit Mailpit einen kompletten sinkhole SMTP Server mit einer Weboberfläche wo man die Mails dann wie in einem Webmail Client anschauen kann.

Man kann damit entweder den Postfix ersetzen, oder es auf einem externen Server laufen lassen und via postconf relayhost=mailpit.example.com die lokalen Mails alle dort hin schicken.

Published by

Steven Varco

Steven ist ein Redhat RHCE- und Kubernetes CKA Zertifizierter Linux-Crack und ist seit über 20 Jahren sowohl beruflich wie auch privat auf Linux spezialisiert. In seinem Keller steht ein Server Rack mit diversen ESX und Linux Servern.

Schreibe einen Kommentar

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