I tried this answer that addresses this very problem. But messages don't seem to be easily modifiable in the version I have (2.11.0).
For instance there is no /var/spool/mqueue dir, but, instead, /var/spool/postfix/...
I want to clarify two things.
- First, that answer was applied to sendmail NOT postfix.
- Second, direct-manipulating-raw-queue-files was not supported at all.
So, you have several options here
1. smtp_generic_maps parameter
This answer inspired by this excellent answer. It will rewrite old-address to new-address automatically. You can define file to maps old-address to new-address.
smtp_generic_maps = hash:/etc/postfix/generic
Don't forget to
postmap /etc/postfix/generic and run
- Upside: You doesn't need to requeue the message
- Downside: Postfix will rewriting sender and recipient address that matching
To overcome the downside of first option, you can use
sender_canonical_maps. This solution based on Postfix author suggestion. Same as first option, you can define file to maps old-address to new-address.
sender_canonical_maps = hash:/etc/postfix/sender_canonical
postmap /etc/postfix/sender_canonical then run
postfix reload. Due the flow of postfix queue, you must re-queue the affected queue with command
postsuper -r queueid
- Upside: Postfix not rewriting recipient address.
- Downside: You must requeue all affected message. But you can requeue all deferred with single command
postsuper -r ALL deferred
3. direct manipulating of postfix queue
This is manual old ways to modify queue for advanced processing. This answer came from postfix-users mailing lists
# postsuper -h queueid
# postcat -qbh queueid > tempfile.eml
# vi tempfile.eml
Resubmit queue and delete old queue
# sendmail -f $sender $recipient < tempfile.eml
# postsuper -d queueid
For documentation of above command, refer to this page
Original solution from postfix-users mailing lists, use
postcat -q queueid >tempfile to extract queue. This command will extract the header, body and meta-information of the queue. As pointed Azendale below,
sendmail will refuse to send this malformed email because of meta-information.
-bh parameter in addition of
q parameter will make postcat filter the output to header and body only, not including meta-information. A side benefit of this is the tempfile is in the format most email clients recognize as .eml format, allowing you to view the resulting (edited) message.