Im Ubuntuusers Forum bin ich heute über die Frage gestolpert, ob man innerhalb von Postfix die Zustellung von E-Mails z.B. am Wochenende zu unterbrechen. Auch wenn dem Fragesteller meine Lösung nicht ganz zugesagt hat, so fand ich die Lösung so simpel und einfach, dass ich sie auf jeden Fall einmal dokumentiert haben wollte.

Szenario: In einem fest definierten Zeitraum  (z.B. Freitags ab 17 Uhr, bis Montags um 9 Uhr) soll ein bestimmter Nutzer oder eine bestimmte Maildomain keine Mails versenden.

Lösung: Nutzung von smtpd_sender_restrictions innerhalb von Postfix um die Mails innerhalb der Queue zu behalten und die Auslieferung dadurch zu verzögern.

  1. Die main.cf von Postfix um folgende Zeile ergänzen: smtpd_sender_restrictions = check_sender_access hash:/etc/postfix/hold
  2. /etc/postfix/hold anlegen (z.B. mittels “touch”) und mittels postmap aufrufen, anschließend kann Postfix neu gestartet werden.
  3. Zu Beginn der Auszeit wird nun per Cron die betreffende E-Mail Adresse der Datei /etc/postfix/hold hinzugefügt. Dies geht z.B. per echo "die@email.de HOLD" >>  /etc/postfix/hold
  4. Nach einem postmap /etc/postfix/hold verbleibt nun jede E-Mail die der Benutzer die@email.de versendet in der Postfix Queue hängen.
  5. Am Ende der Auszeit wird die Adresse einfach aus /etc/postfix/hold entfernt (z.B. per sed) und ein weiteres postmap ausgeführt. Anschließend können die Mails mittels postsuper -r ALL aus der Queue entlassen werden.

Statt einer einzelnen Adresse, kann auch eine komplette Maildomain so “gesperrt” werden.