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.
- Die main.cf von Postfix um folgende Zeile ergänzen:
smtpd_sender_restrictions = check_sender_access hash:/etc/postfix/hold
/etc/postfix/hold
anlegen (z.B. mittels “touch”) und mittels postmap aufrufen, anschließend kann Postfix neu gestartet werden.- Zu Beginn der Auszeit wird nun per Cron die betreffende E-Mail Adresse der Datei
/etc/postfix/hold
hinzugefügt. Dies geht z.B. perecho "die@email.de HOLD" >> /etc/postfix/hold
- Nach einem
postmap /etc/postfix/hold
verbleibt nun jede E-Mail die der Benutzerdie@email.de
versendet in der Postfix Queue hängen. - 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 mittelspostsuper -r ALL
aus der Queue entlassen werden.
Statt einer einzelnen Adresse, kann auch eine komplette Maildomain so “gesperrt” werden.