Following a complete re-installation we got a problem with the configuration: the sender address was wrong and some recipients (mail servers) rejected them.
So there is a bunch of mails stuck in the Postfix queue.
Ideally, a change of the sender address directly in the queued mails, and then flushing the queue would be optimal.
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/...
active
bounce
corrupt
defer
deferred
dev
etc
flush
hold
incoming
lib
maildrop
pid
private
public
saved
trace
usr
and the dir of interest is deferred
. I tried to modify a few files there changing the wrong domain with the correct one (and was careful to ensure only those were changed).
But then, those mails were moved to corrupt
, meaning that a simple text change doesn't seem to work (done with vi
).
Any other cleaner way to change the sender in queued mails?
Best Answer
I want to clarify two things.
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.
Don't forget to
postmap /etc/postfix/generic
and runpostfix reload
account@localdomain.example.com
.2. sender_canonical_address
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.Run
postmap /etc/postfix/sender_canonical
then runpostfix reload
. Due the flow of postfix queue, you must re-queue the affected queue with commandpostsuper -r queueid
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
In short
Extract queue
Resubmit queue and delete old queue
For documentation of above command, refer to this page
Note:
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.Using
-bh
parameter in addition ofq
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.