Comment puis-je suspendre temporairement la livraison du courrier vers un domaine spécifique (non local) avec Postfix?

13

En utilisant Postfix et les transports personnalisés, je peux gérer les vitesses de livraison en fonction du domaine du destinataire. (Par exemple, j'envoie au maximum un message par seconde à *@hotmail.com)

J'utilise également des règles similaires pour bloquer les mauvaises destinations (htmail.com est immédiatement bloqué, évitant ainsi de nombreuses boucles dans la file d'attente).

Cependant, je voudrais suspendre temporairement la livraison du courrier vers une destination pendant 24 ou 48 heures (les courriers à *@gmail.com sont suspendus, tout le reste est livré). Les messages seraient mis en file d'attente pendant cette période et ne seraient délivrés que lorsque je le souhaite en modifiant la configuration.

Est-ce que quelqu'un sait comment faire ça ?

Merci

Julien Tartarin
la source

Réponses:

20

Mettre les messages dans un état HOLD

/etc/postfix/main.cf:

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

/ etc / postfix / hold:

gmail.com        HOLD
blah.com         HOLD

Assurez-vous que vous exécutez postmap hash:/etc/postfix/holdchaque fois que vous mettez à jour le fichier.

Si vous souhaitez libérer tous les messages en attente, utilisez postsuper :

# postsuper -H ALL
Philip Reynolds
la source
On dirait que ça ne marche pas après tout. Le courrier est immédiatement envoyé. Peut-être parce que j'envoie du courrier depuis $ mynetworks? REJETER et JETER ne fonctionnent pas non plus, je devais y aller avec une erreur de transport:
Julien Tartarin
Ok, mon mauvais, le courrier envoyé localement avec mailx n'est pas vérifié car il n'est pas envoyé à smtpd. Fonctionne très bien :)
Julien Tartarin
2

Vous pouvez le faire avec une carte de transport :

gmail.com defer:

adaptr
la source
0

Pour suspendre un domaine spécifique:

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

Pour libérer pour un domaine spécifique:

postqueue -p | awk 'BEGIN { RS = "" } { if ($7 == "[email protected]" ) print $1 }' | tr -d '!*' | postsuper -H -
Salim Bennouri
la source
Tout simplement pas. Le 7 $ correspondra à l'adresse électronique de l'expéditeur sur la même ligne que l'ID de la file d'attente. L'adresse e-mail du destinataire est sur la ligne suivante, et elle a besoin d'une correspondance de domaine, pas d'une correspondance d'e-mail.
Antti Rytsölä du