Exim Management Command List
Below are some shell commands that can be used to manage Exim and it's email queue. The commands listed below must be run as root.
Managing Exim Itself
Start/Stop/Restart Exim
/etc/init.d/exim start|stop|restart
Print what Exim is doing right now
exiwhat
Test how exim will route a given email address
exim -bt email@address.tld
Generate and display Exim stats from a logfile
eximstats /path/to/exim_mainlog
Run a pretend SMTP transaction from the command line, as if it were coming from the given IP address. This will display Exim’s checks, ACLs, and filters as they are applied. Replace x.x.x.x with the IP you want to use as the source
exim -bh x.x.x.x
Display all of Exim’s configuration settings
exim -bP
Queue Information
Print a count of messages in the queue
exim -bpc
Print a listing of the messages in the queue (time queued, size, message-id, sender, recipient)
exim -bp
Print a summary of messages in the queue (count, volume, oldest, newest, domain, and totals)
exim -bp | exiqsumm
Searching the Queue
Search the queue for messages from a specific sender
exiqgrep -f [user]@domain
Search the queue for messages for a specific recipient/domain
exiqgrep -r [user]@domain
Print just the message-id as a result of one of the above two searches
exiqgrep -i [ -r | -f ] ...
Print a count of messages matching one of the above searches
exiqgrep -c [ -r | -f ] ...
Print just the message-id of the entire queue
exiqgrep -i
Print just the message-id of frozen messages in the queue
exiqgrep -iz
Viewing Messages In The Queue
View a message's headers:
exim -Mvh <message-id>
View a message's body:
exim -Mvb <message-id>
View a message's logs:
exim -Mvl <message-id>
Queue Management
Start a queue run
exim -q -v
Start a queue run for just local deliveries
exim -ql -v
Remove a message from the queue
exim -Mrm <message-id>
Remove all messages older than X seconds from the queue(for example 5 days would be 432000 seconds)
exiqgrep -o 432000 -i | xargs -P25 exim -Mrm
Freeze all queued mail from a sender
exiqgrep -i -f email@address.tld | xargs exim -Mf
View a queued message's header
exim -Mvh <message-id>
View a queued message's body
exim -Mvb <message-id>
View a queued message's log
exim -Mvl <message-id>
Remove all messages from the queue (usually a bad idea), note the -P25 switch passed to xargs. This option tells xargs to run 25 concurrent exim removal processes.
exiqgrep -i | xargs -P25 exim -Mrm
Remove all frozen messages from the queue.
exiqgrep -iz | xargs -P25 exim -Mrm
One disadvantage of using exiqgrep and xargs is that it will not start removing messages until exiqgrep prints out it's results. One solution to this the following. The disadvantage to this method is that you will be removing ALL of the email in your queue.
cd /var/spool/exim/msglog find . -type f -exec sh -c 'exim -Mrm `echo "${0##*/}"`' {} \;