Working with Exim Mail Server

Linux OS Topics
Post Reply
User avatar
Saman
Lieutenant Colonel
Lieutenant Colonel
Posts: 828
Joined: Fri Jul 31, 2009 10:32 pm
Location: Mount Lavinia

Working with Exim Mail Server

Post by Saman » Thu Oct 01, 2009 1:20 am

Exim is an open source mail transfer agent (MTA), which is a program responsible for receiving, routing, and delivering e-mail messages. MTAs receive e-mail messages and recipient addresses from local users, remote hosts and deliver the messages to their destinations.

Exim was developed in 1995, by Philip Hazel at the University of Cambridge for the use of Unix systems connected over the Internet. The software feature more straightforward configuration and task management.

Early MTAs were usually run as open relays, just routing and delivering mail without applying many rules or security controls. Exim features include user options for defence against mail bombs and unsolicited junk mail. Exim can be run on any TCP/IP network, in conjunction with any combination of host and user software, and is the default MTA included on most Linux systems.

Each mail handled by Exim will have a unique message-ID. Most commands related to managing the queue and logging use these message-ids. Exim log files are stored in /var/spool/exim/msglog and are named the same as the message-id. Files in /var/spool/exim/input are named after the message-id.

Lets use proper commands to deal with Exim.

>> Count the number of messages in the queue.
root@localhost# exim -bpc

>> Listing the messages in the queue (time queued, size, message-id, sender, recipient).
root@localhost# exim -bp

>> Print a summary of messages in the queue (count, volume, oldest, newest, domain, and totals).
root@localhost# exim -bp | exiqsumm

>> Check what Exim is doing right now.
root@localhost# exiwhat

>> Test how exim will route a given address.
root@localhost# exim -bt [email protected]

>> Display Exim's configuration settings.
root@localhost# exim -bP

>> Search the queue for messages from a specific sender.
root@localhost# exiqgrep -f [luser]@domain

>> Search the queue for messages for a specific recipient/domain.
root@localhost# exiqgrep -r [luser]@domain

>> Print messages older than the specified number of seconds. Eg: messages older than 1 hour.
root@localhost# exiqgrep -o 3600 [...]

>> Print messages younger than the specified number of seconds. Eg: messages less than an hour old.
root@localhost# exiqgrep -y 3600 [...]

>> Match the size of a message with a regex. Eg: Messages between 500-599 bytes.
root@localhost# exiqgrep -s '^5..$' [...]

>> Match only frozen messages.
root@localhost# exiqgrep -z

>> Match only frozen messages.
root@localhost# exiqgrep -x

>> Print just the message-id of the entire queue.
root@localhost# exiqgrep -i

>> Start a queue run.
root@localhost# exim -q -v

>> Start a queue run for just local deliveries.
root@localhost# exim -ql -v

>> Remove a message from the queue.
root@localhost# exim -Mrm <message-id> [ <message-id> ... ]

>> Freeze a message.
root@localhost# exim -Mf <message-id> [ <message-id> ... ]

>> Thaw a message.
root@localhost# exim -Mt <message-id> [ <message-id> ... ]

>> Deliver a message, whether it's frozen or not, whether the retry time has been reached or not.
root@localhost# exim -M <message-id> [ <message-id> ... ]

>> Deliver a message, but only if the retry time has been reached.
root@localhost# exim -Mc <message-id> [ <message-id> ... ]

>> Force a message to fail and bounce as "cancelled by administrator".
root@localhost# exim -Mg <message-id> [ <message-id> ... ]

>> Remove all frozen messages.
root@localhost# exiqgrep -z -i | xargs exim -Mrm

>> Remove all messages older than five days (86400 * 2 = 172800 seconds).
root@localhost# exiqgrep -o 172800 -i | xargs exim -Mrm

>> Freeze all queued mail from a given sender.
root@localhost# exiqgrep -i -f [email protected] | xargs exim -Mf

>> View a message's headers.
root@localhost# exim -Mvh <message-id>

>> View a message's body.
root@localhost# exim -Mvb <message-id>

>> View a message's logs.
root@localhost# exim -Mvl <message-id>

>> Add a recipient to a message.
root@localhost# exim -Mar <message-id> <address> [ <address> ... ]

>> Edit the sender of a message.
root@localhost# exim -Mes <message-id> <address>
Post Reply

Return to “Linux”