Wie kann ich die Zustellung von E-Mails an eine bestimmte Domain (nicht lokal) mit Postfix vorübergehend aussetzen?

13

Mit Postfix und benutzerdefinierten Transporten kann ich die Zustellgeschwindigkeiten in Abhängigkeit von der Domäne des Empfängers verwalten. (Zum Beispiel sende ich maximal eine Nachricht pro Sekunde an *@hotmail.com)

Ich verwende ähnliche Regeln auch, um ungültige Ziele zu blockieren (htmail.com wird sofort blockiert, um viele Schleifen in der Warteschlange zu vermeiden).

Ich möchte jedoch die Zustellung von E-Mails an ein Ziel für 24 oder 48 Stunden vorübergehend aussetzen (E-Mails an *@gmail.com ausgesetzt, alles andere wird zugestellt). Nachrichten würden während dieser Zeit in der Warteschlange stehen und nur zugestellt werden, wenn ich die Konfiguration ändern möchte.

Weiß jemand, wie man das macht?

Vielen Dank

Julien Tartarin
quelle

Antworten:

20

Versetzen Sie Nachrichten in einen HOLD-Zustand

/etc/postfix/main.cf:

smtpd_recipient_restrictions = 
    ...
    check_recipient_access hash:/etc/postfix/hold

/ etc / postfix / hold:

gmail.com        HOLD
blah.com         HOLD

Stellen Sie sicher, dass Sie ausgeführt werden, postmap hash:/etc/postfix/holdwenn Sie die Datei aktualisieren.

Wenn Sie alle gehaltenen Nachrichten freigeben möchten, verwenden Sie postsuper :

# postsuper -H ALL
Philip Reynolds
quelle
Sieht so aus, als würde es doch nicht funktionieren. Mail wird sofort gesendet. Vielleicht, weil ich E-Mails von $ mynetworks verschicke? REJECT und DISCARD funktionieren auch nicht, ich musste mich an den Transportfehler halten:
Julien Tartarin
Ok, meine schlechte, lokal mit mailx gesendete Mail wird nicht geprüft, da sie nicht an smtpd gesendet wird. Funktioniert sehr gut :)
Julien Tartarin
2

Sie können dies mit einer Transportkarte tun :

gmail.com defer:

adaptr
quelle
0

So halten Sie eine bestimmte Domain an:

postqueue -p | awk 'BEGIN { RS = "" } { if ($7 == "[email protected]" ) print $1 }' | tr -d '!*' | postsuper -h -

So geben Sie für eine bestimmte Domain frei:

postqueue -p | awk 'BEGIN { RS = "" } { if ($7 == "[email protected]" ) print $1 }' | tr -d '!*' | postsuper -H -
Salim Bennouri
quelle
Einfach nein. Die $ 7 entsprechen der Absender-E-Mail-Adresse in derselben Zeile wie die Warteschlangen-ID. Die E-Mail-Adresse des Empfängers befindet sich in der nächsten Zeile und muss mit der Domain und nicht mit der E-Mail übereinstimmen.
Antti Rytsölä