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:
account@localdomain.example.com account@example.com
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
account@localdomain.example.com
.
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:
account@localdomain.example.com account@example.com
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.