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/holdanlegen (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/holdhinzugefügt. Dies geht z.B. perecho "die@email.de HOLD" >> /etc/postfix/hold - Nach einem
postmap /etc/postfix/holdverbleibt nun jede E-Mail die der Benutzerdie@email.deversendet in der Postfix Queue hängen. - Am Ende der Auszeit wird die Adresse einfach aus
/etc/postfix/holdentfernt (z.B. per sed) und ein weiteres postmap ausgeführt. Anschließend können die Mails mittelspostsuper -r ALLaus der Queue entlassen werden.
Statt einer einzelnen Adresse, kann auch eine komplette Maildomain so “gesperrt” werden.