If Your Mail Doesn't Get Through
A number of features are available for troubleshooting installation problems. The first place to check is Exim's log files. On Linux systems they are normally kept in
exim -bP log_file_path
The main log lists all transactions, the reject log contains details of messages that were rejected for policy reasons, and the panic log is for messages related to configuration errors and the like.
Typical entries in the main log are shown below. Each entry in the log itself is a single line of text, starting with a date and time. They have been split into several lines here in order to fit them on the page:
2000-01-30 15:46:37 12EwYe-0004WO-00 ‹= [email protected]
H=vstout.vbrew.com [192.168.131.111] U=exim P=esmtp S=32100
2000-01-30 15:46:37 12EwYe-0004WO-00 =› jill ‹[email protected]›
D=localuser T=local_delivery
2000-01-30 15:46:37 12EwYe-0004WO-00 Completed
These entries show that a message from [email protected] to [email protected] was successfully delivered to a mailbox on the local host. Message arrivals are flagged with ‹=, and deliveries with =›.
There are two kinds of delivery errors: permanent and temporary. A permanent delivery error is recorded in a log entry like this, flagged with ' ** ':
2000-01-30 14:48:28 12EvcH-0003rC-00 ** [email protected]
R=lookuphost T=smtp: SMTP error from remote mailer after RCPT TO:
‹[email protected]›: host lager.vbrew.com [192.168.157.2]:
550 ‹[email protected]›… User unknown
After a failure like this, Exim sends a delivery failure report, often called a
Temporary errors are flagged with ' - ':
2000-01-30 12:50:50 12E9Un-0004Wq-00 - [email protected]
T=smtp defer (145): Connection timed out
This error is typical for a situation in which Exim properly recognizes that the message should be delivered to a remote host, but is not able to connect to the SMTP service on that host. The host may be down or there could be a network problem. Whenever a message is
If you are unable to locate your problem from the error message Exim generates, you may want to turn on debugging messages. You can do this using the
Compiling Exim
Exim is still under active development; the version of Exim included in Linux distributions is probably not the latest release. If you need a feature or a bugfix found in a later release, you have to obtain a copy of the source code and compile it yourself. The latest release can be found via Exim's web page at http://www.exim.org.
Linux is one of the many operating systems supported by the Exim source. To compile Exim for Linux, you should edit the
Mail Delivery Modes
As noted previously, Exim is able to deliver messages immediately or queue them for later processing. All incoming mail is stored in the
queue_only_load = 4
which causes messages to be queued if the system load exceeds 4. [117]
If your host is not permanently connected to the Internet, you may want to turn on queueing for remote addresses, while allowing Exim to perform local deliveries immediately. You can do this by setting:
queue_remote_domains = *
in the configuration file.
If you turn on any form of queuing, you have to make sure the queues are checked regularly, probably every 10 or 15 minutes. Even without any explicit queueing options, the queues need to be checked for messages that have been deferred because of temporary delivery failures. If you run Exim in daemon mode, you must add the
You can display the current mail queue by invoking Exim with the
$ mailq
2h 52K 12EwGE-0005jD-00 <[email protected]>
This shows a single message from [email protected] to two recipients sitting in the message queue. It has been successfully delivered to [email protected], but has not yet been delivered to [email protected], though it has been on the queue for two hours. The size of the message is 52K, and the ID by which Exim identifies this message is 12EwGE-0005jD-00. You can find out why the delivery is not yet complete by looking at the message's individual log file, which is kept in the
$ exim -Mvl 12EwGE-0005jD-00
2000-01-30 17:28:13 example.net [192.168.8.2]: Connection timed out
2000-01-30 17:28:13 [email protected]: remote_smtp transport deferred:
Connection timed out
Individual log files keep a copy of log entries for each message so you can easily inspect them. The same information could have been extracted from the main log file using the exigrep utility:
$ exigrep 12EwGE-0005jD-00 /var/log/exim/exim_mainlog