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.