J'ai essayé cette réponse qui résout ce problème. Mais les messages ne semblent pas être facilement modifiables dans la version que j'ai (2.11.0).
Par exemple, il n'y a pas de répertoire / var / spool / mqueue, mais, à la place, / var / spool / postfix / ...
Je veux clarifier deux choses.
- Tout d'abord, cette réponse a été appliquée à sendmail NOT postfix.
- Deuxièmement, les fichiers de file d'attente brute de manipulation directe n'étaient pas du tout pris en charge.
Donc, vous avez plusieurs options ici
1. Paramètre smtp_generic_maps
Cette réponse s'inspire de cette excellente réponse . Il réécrira automatiquement l'ancienne adresse en nouvelle adresse. Vous pouvez définir un fichier pour mapper l'ancienne adresse à la nouvelle adresse.
/etc/postfix/main.cf:
smtp_generic_maps = hash:/etc/postfix/generic
/etc/postfix/generic:
[email protected] [email protected]
N'oubliez pas de postmap /etc/postfix/generic
courirpostfix reload
- À l'envers: vous n'avez pas besoin de remettre le message en file d'attente
- Inconvénient: Postfix réécrira l' adresse de l'expéditeur et du destinataire correspondant
[email protected]
.
2. sender_canonical_address
Pour surmonter l'inconvénient de la première option, vous pouvez utiliser sender_canonical_maps
. Cette solution basée sur la suggestion de l'auteur de Postfix . Identique à la première option, vous pouvez définir un fichier pour mapper l'ancienne adresse à la nouvelle adresse.
/etc/postfix/main.cf:
sender_canonical_maps = hash:/etc/postfix/sender_canonical
/etc/postfix/sender_canonical:
[email protected] [email protected]
Exécutez postmap /etc/postfix/sender_canonical
puis exécutez postfix reload
. En raison du flux de la file d'attente postfix, vous devez remettre en file d'attente la file d'attente affectée avec la commandepostsuper -r queueid
- À l'envers: Postfix ne réécrit pas l'adresse du destinataire.
- Inconvénient: vous devez remettre en file d'attente tous les messages concernés. Mais vous pouvez requeue tout différé avec une seule commande
postsuper -r ALL deferred
3. manipulation directe de la file d'attente postfix
Il s'agit d'anciennes méthodes manuelles pour modifier la file d'attente pour un traitement avancé. Cette réponse est venue des listes de diffusion des utilisateurs de postfix
En bref
Extraire la file d'attente
# postsuper -h queueid
# postcat -qbh queueid > tempfile.eml
# vi tempfile.eml
Renvoyer la file d'attente et supprimer l'ancienne file d'attente
# sendmail -f $sender $recipient < tempfile.eml
# postsuper -d queueid
Pour la documentation de la commande ci-dessus, reportez-vous à cette page
Remarque:
solution originale issue des listes de diffusion des utilisateurs de postfix , à utiliser postcat -q queueid >tempfile
pour extraire la file d'attente. Cette commande extraira l'en-tête, le corps et les méta-informations de la file d'attente. Comme indiqué Azendale ci - dessous , sendmail
refusera d'envoyer cet e-mail mal formé en raison de méta-informations.
L'utilisation d'un -bh
paramètre en plus du q
paramètre fera filtrer postcat la sortie vers l'en-tête et le corps uniquement, sans inclure les méta-informations. Un avantage secondaire de ceci est que le fichier temporaire est au format que la plupart des clients de messagerie reconnaissent comme format .eml, vous permettant d'afficher le message résultant (modifié).
postcat -qbh queueid >tempfile
. (Avantage secondaire: il est alors au format .eml.) Si je viens de l'utiliser,-q
il ne semble rien faire lorsque je lance sendmail. Postfix version 2.8.4. Quelqu'un peut-il confirmer cela? Si oui, modifions cette réponse.qbh
pour la faire fonctionner. Ajout de l'explication dans la réponse mise à jour ... :)Grand livre. J'ai eu un problème avec un serveur de messagerie qui fonctionnait depuis quelques jours avec une mauvaise configuration et donc il y avait beaucoup de files d'attente qui devaient être renvoyées avec le nouveau destinataire. J'ai donc créé deux liners pour parcourir toutes les files d'attente:
Premier à trouver toutes les files d'attente, à les mettre en attente, à les enregistrer en tant que fichiers .eml et à les renvoyer:
Deuxième pour supprimer les files d'attente:
N'oubliez pas de vérifier qu'aucune nouvelle file d'attente n'est en attente avant d'exécuter ce dernier code. Pour ce faire, émettez ceci et recherchez les identifiants de file d'attente sans '!' à la fin:
On pouvait facilement mettre ces deux doublures en une, mais je sentais que j'avais plus de contrôle en vérifiant que les mails étaient bien reçus avant de supprimer les files d'attente.
la source