This post shows how to delete a single message from the exim mail queue and also how to remove all of them using the exim command line tools.
Delete a single message from the exim mail queue
Use mailq / exim -bp to show the mail queue, e.g.:
$ mailq 0m 528 1XoIxD-0001rc-8J
And then run exim -Mrm [message id] to delete the specific message:
exim -Mrm 1XoIxD-0001rc-8J
If the message is successfully deleted, you’ll see this:
Message 1XoIxD-0001rc-8J has been removed
If exim is currently processing the message, you’ll see this and it won’t be deleted:
Message 1XoIxD-0001rc-8J is locked
You either need to wait and try again later, or get the id of the process which is currently processing the message, kill it, and then run the command again (e.g. “ps ax 1XoIxD-0001rc-8J” and then “kill -9 [process id/s]). It’s probably not recommended that you kill the process.
Delete all messages in the exim mail queue
Running “exiqgrep -i” returns all the message ids for queued emails; pipe that through “exim -Mrm” and all the messages will be deleted, with the same caveat as above: if exim is currently processing a message, that one will not be deleted so you need to try again later.
exiqgrep -i | xargs exim -Mrm
And the result, if one could be removed and another one couldn’t:
Message 1XoJ1U-0001sC-ME has been removed Message 1XoJ1i-0001sQ-UJ is locked