Q0001: Exim is crashing. What is wrong?
A0001: Exim should never crash. The author is always keen to know about crashes, so that they can be diagnosed and fixed. However, before you start sending me email, please check that you are running the latest release of Exim, in case the problem has already been fixed. The techniques described below can also be useful in trying to pin down exactly which circumstances caused the crash and what Exim was trying to do at the time. If the crash is reproducable (by a particular message, say) keep a copy of that message. If there is a core file (in Exim's spool directory), see if you can get any information from it.
Q0002: Exim is not working. What is wrong? How can I check what it is doing?
A0002: Exactly how is it not working? Check the more specific questions in the other sections of this FAQ. Some general techniques for debugging are:
(1) Look for information in Exim's log files. These are in the log directory in Exim's spool directory, unless you have configured a different path for them. Serious operational problems are reported in paniclog.
(2) If the problem involves the delivery of one or more messages, try forcing a delivery with the -M option and also set the -d option, to cause Exim to output debugging information. For example:
exim -d -M 0z6CXU-0005RR-00
The output is written to the standard error stream. You need to have admin privileges to use -M and -d.
(3) If the problem involves incoming SMTP mail, try using the -bh option to simulate an incoming connection from a specific host, for example:
exim -bh 10.9.8.7
This goes through the motions of an SMTP session, without actually accepting a message. Information about various policy checks is output. You will need to know how to pretend to be an SMTP client.
(4) If the problem involves lack of recognition or incorrect handling of local addresses, try using the -bt option with debugging turned on, to see how Exim is handling the address. For example,
exim -d -bt z6abc
shows you how it would handle the local part z6abc.
Q0003: What does the error Child process of address_pipe transport returned 69 from command xxx mean?
A0003: It means that when a transport called address_pipe was run to pass an email message by means of a pipe to another process running the command xxx, the return code from that command was 69, which indicates some kind of error (the success return code is 0).
The most common meaning of exit code 69 is ``unavailable'', and this often means that when Exim tried to run the command xxx, it failed. One cause of this might be incorrect permissions on the file containing the command. See also Q0026.
Q0004: My virtual domain setup isn't working. How can I debug it?
A0004: You can use an exim command with -d to get it to show you how it is processing addresses. You don't actually need to send a message; use the -bt option like this:
exim -d -bt localpart@virtualhost
This will show you which routers it is using. If the problem appears to be with the expansion of an option setting, you can use the debug_print option on a router to get Exim to output the expanded string values as it goes along.
Q0005: Why is Exim not rejecting incoming messages addressed to non-existent users at SMTP time?
A0005: This is controlled by the ACL that is run for each incoming RCPT command. It is defined by the acl_smtp_rcpt option. You can check this part of your configuration by using the -bh option to run a simulated SMTP session, during which Exim will tell you what things it is checking.
Q0006: I've put an entry for *.my.domain in a DBM lookup file, but it isn't getting recognized.
A0006: You need to request ``partial matching'' by setting the search type to partial-dbm in order for this to work.
Q0007: I've put the entry *@domain.com in a lookup database, but it isn't working. The expansion I'm using is:
${lookup{${lc:$sender_address}}dbm{/the/file} ...
A0007: As no sender address will ever be *@domain.com this will indeed have no effect as it stands. You need to tell Exim that you want it to look for defaults after the normal lookup has failed. In this case, change the search type from dbm to dbm*@. See the section on Default values in single-key lookups in the chapter entitled File and database lookups in the Exim manual.
Q0008: If I run ./exim -d -bt user@domain all seems well, but when I send a message from my User Agent, it does not arrive at its destination.
A0008: Try sending a message directly to Exim by typing this:
exim -v user@domain <some message, could be empty> .
If the message gets delivered to a remote host, but never arrives at its final destination, then the problem is at the remote host. If, however, the message gets through correctly, then the problem may be between your User Agent and Exim. Try setting Exim's log_selector option to include +arguments, to see with which arguments the UA is calling Exim.
Q0009: What does no immediate delivery: too many messages received in one SMTP connection mean?
A0009: An SMTP client may send any number of messages down a single SMTP connection to a server. Initially, an Exim server starts up a delivery process as soon as a message is received. However, in order not to start up too many processes when lots of messages are arriving (typically after a period of downtime), it stops doing immediate delivery after a certain number of messages have arrived down the same connection. The threshold is set by smtp_accept_queue_per_connection, and the default value is 10. On large systems, the value should be increased. If you are running a dial-in host and expecting to get all your mail down a single SMTP connection, then you can disable the limit altogether by setting the value to zero.
Q0010: Exim puts for <address> in the Received: headers of some, but not all, messages. Is this a bug?
A0010: No. It is deliberate. Exim inserts a ``for'' phrase only if the incoming message has precisely one recipient. If there is more than one recipient, nothing is inserted. The reason for this is that not all recipients appear in the To: or Cc: headers, and it is considered a breach of privacy to expose such recipients to the others. A common case is when a message has come from a mailing list.
Q0011: Instead of exim_dbmbuild, I'm using a homegrown program to build DBM (or cdb) files, but Exim doesn't seem to be able to use them.
A0011: Exim expects there to be a binary zero value on the end of each key used in a DBM file if you use the dbm lookup type, but not for the dbmnz lookup type or for the keys of a cdb file. Check that you haven't slipped up in this regard.
Q0012: Exim is unable to route to any remote domains. It doesn't seen to be able to access the DNS.
A0012: Try running exim -d+resolver -bt <remote address>. The -d options turns on debugging output, and the addition of +resolver will make it show the resolver queries it is building and the results of its DNS queries. If it appears unable to contact any name servers, check the contents and permissions of /etc/resolv.conf.
Q0013: What does the error message transport system_aliases: cannot find transport driver "redirect" in line 92 mean?
A0013: redirect is a router, not a transport. You have put a configuration for a router into the transports section of the configuration file.
Q0014: Exim is timing out after receiving and responding to the DATA command from one particular host, and yet the client host also claims to be timing out. This seems to affect only certain messages.
A0014: This kind of problem can have many different causes.
(1) This problem has been seen with a network that was dropping all packets over a certain size, which mean that the first part of the SMTP transaction worked, but when the body of a large message started flowing, the main data bits never got through the network. See also Q0017.
(2) This can also happen if a host has a broken TCP stack and won't reassemble fragmented datagrams.
(3) A very few ISDN lines have been seen which failed when certain data patterns were sent through them, and replacing the routers at both end of the link did not fix things. One of them was triggered by more than 4 X's in a row in the data.
Q0015: What does the message Socket bind() to port 25 for address (any) failed: address already in use mean?
A0015: You are trying to run an Exim daemon when there is one already running - or maybe some other MTA is running, or perhaps you have an SMTP line in /etc/inetd.conf which is causing inetd to listen on port 25.
Q0016: I've set verify = header_syntax in my ACL, but this causes Exim to complain about header lines like To: Work: Jim <jims@email>, Home: Bob <bobs@email> which look all right to me. Is this a bug?
A0016: No. Header lines such as From:, To:, etc., which contain addresses, are structured, and have to be in a specific format which is defined in RFC 2822. Unquoted colons are not allowed in the ``phrase'' part of an email address (they are OK in other headers such as Subject:). The correct form for that header is
To: "Work: Jim" <jims@email>, "Home: Bob" <bobs@email>
You will sometimes see unquoted colons in To: and Cc: headers, but only in connection with name lists (called ``groups''), for example:
To: My friends: X <x@y.x>, Y <y@w.z>;, My enemies: A <a@b.c>, B <b@c.d>;
Each list must be terminated by a semicolon, as shown.
Q0017: Whenever Exim tries to deliver a specific message to a particular server, it fails, giving the error Remote end closed connection after data or Broken pipe or a timeout. What's going on?
A0017: Broken pipe is the error you get on some OS when the remote host just drops the connection. The alternative is connection reset by peer. There are many potential causes. Here are some of them:
(1) There are some firewalls that fall over on binary zero characters in email. Have a look, e.g. with hexdump -c mymail | tail to see if your mail contains any binary zero characters.
(2) There are broken SMTP servers around that just drop the connection after the data has been sent if they don't like the message for some reason (e.g. it is too big) instead of sending a 5xx error code. Have you tried sending a small message to the same address?
It has been reported that some releases of Novell servers running NIMS are unable to handle lines longer than 1024 characters, and just close the connection. This is an example of this behaviour.
(3) If the problem occurs right at the start of the mail, then it could be a network problem with mishandling of large packets. Many emails are small and thus appear to propagate correctly, but big emails will generate big IP datagrams.
There have been problems when something in the middle of the network mishandles large packets due to IP tunnelling. In a tunnelled link, your IP datagrams gets wrapped in a larger datagram and sent over a network. This is how virtual private networks (VPNs), and some ISP transit circuits work. Since the datagrams going over the tunnel require a larger packet size, the tunnel needs a bigger maximum transfer unit (MTU) in the network handling the tunnelled packets. However, MTUs are often fixed, so the tunnel will try to fragment the packets.
If the systems outside the tunnel are using MTU path discovery, (most Sun Sparc Solaris machines do by default), and set the DF (don't fragment) bit because they don't send packets larger than their local MTU, then ICMP control messages will be sent by the routers at the ends of the tunnel to tell them to reduce their MTU, since the tunnel can't fragment the data, and has to throw it away. If this mechanism stops working, e.g. a firewall blocks ICMP, then your host never knows it has hit the maximum path MTU, but it has received no ACK on the packet either, so it continues to resend the same packet and the connection stalls, eventually timing out.
You can test the link using pings of large packets and see what works:
ping -s host 2048
Try reducing the MTU on the sending host:
ifconfig le0 mtu 1300
Alternatively, you can reduce the size of the buffer Exim uses for SMTP output by putting something like
DELIVER_OUT_BUFFER_SIZE=512
in your Local/Makefile and rebuilding Exim (the default is 8192). While this should not in principle have any effect on the size of packets sent, in practice it does seem to have an effect on some OS.
Q0018: Why do messages not get delivered down the same connection when I do something like: exim -v -R @aol.com? For other domains, I do this and I see the appropriate waiting for passed connections to get used messages.
A0018: Recall that Exim does not keep separate queues for each domain, but operates in a distributed fashion. Messages get into its `waiting for host x' hints database only when a delivery has been tried, and has had a temporary error. Here are some possibilities:
(1) The messages to aol.com got put in your queue, but no previous delivery attempt occured before you did the -R. This might have been because of your settings of queue_only_load, smtp_accept_queue, or any other option that caused no immediate delivery attempt on arrival. If this is the case, you can try using -qqR instead of -R.
(2) You have set connection_max_messages on the smtp transport, and that limit was reached. This would show as a sequence of messages down one connection, then another sequence down a new connection, etc.
(3) Exim tried to pass on the SMTP connection to another message, but that message was in the process of being delivered to aol.com by some other process (typically, a normal queue runner). This will break the sequence, though the other delivery should pass its connection on to other messages if there are any.
(4) The folk at aol.com changed the MX records so the host names have changed - or a new host has been added. I don't know how likely this is.
(5) Exim is not performing as it should in this regard, for some reason. Next time you have mail queued up for aol.com, try running
exim_dumpdb /var/spool/exim wait-remote_smtp
to see if those messages are listed among those waiting for the relevant aol.com hosts.
Q0019: There seems to be a problem in the string expansion code: it doesn't recognize references to headers such as ${h_to}.
A0019: The only valid syntax for header references is (for example) $h_to: because header names are permitted by RFC 2822 to contain a very wide range of characters. A colon (or white space) is required as the terminator.
Q0020: Why do connections to my machine's SMTP port take a long time to respond with the banner, when connections to other ports respond instantly? It sometimes takes 30 seconds to respond.
A0020: These kinds of delay are usually caused by some kind of network problem that affects outgoing calls made by Exim at the start of an incoming connection. Configuration options that cause outgoing calls are:
(1) rfc1413_query_hosts and rfc1413_query_timeout (for ident calls). Firewalls sometimes block ident connections so that they time out, instead of refusing them immediately. This can cause this problem. See Q5023 for a discussion of the usefulness of ident.
(2) The host_lookup option requires the remote host's name to be looked up from its IP address. Sometimes these DNS lookups time out.
You can use the -bh option to get more information about what is happening at the start of a connection. However, note that the -bh option does not provide a complete simulation. In particular, no ident checks are done, so it won't show up a delay problem that is related to (1) above.
Q0021: What does failed to create child process to send failure message mean? This is a busy mail server with smtp_accept_max set to 500, but this problem started to occur at about 300 incoming connections.
A0021: Some message delivery failed, and when Exim wanted to send a bounce message, it was unable to create a process in which to do so. Probably the limit on the maximum number of simultaneously active processes has been reached. Most OS have some means of increasing this limit, and in some operating systems there is also a limit per uid which can be varied.
Q0022: What does No transport set by system filter in a log line mean?
A0022: Your system filter contains a pipe or save or mail command, but you have not set the corresponding option which specifies which transport is to be used. You need to set whichever of system_filter_pipe_transport, system_filter_file_transport or system_filter_reply_transport is relevant.
Q0023: Why is Exim refusing to relay, saying failed to find host name from IP address when I have the sender's IP address in an ACL condition? My configuration contains this ACL statement:
accept hosts = lsearch;/etc/mail/relaydomains:192.168.96.0/24
A0023: When checking a host list, the items are tested in left-to-right order. The first item in your list is a lookup on the incoming host's name, so Exim has to determine the name from the incoming IP address in order to perform the test. If it can't find the host name, it can't do the check, so it gives up. You would have discovered what was going on if you had run a test such as
exim -bh 192.168.96.131
The solution is to put all explicit IP addresses first in the list. Alternatively, you can split the ACL statement into two like this:
accept hosts = lsearch;/etc/mail/relaydomains accept hosts = 192.168.96.0/24
If the host lookup fails, the first accept fails, but then the second one is considered.
Q0024: When I run exim -bd -q10m I get PANIC LOG: exec of exim -q failed.
A0024: This probably means that Exim doesn't know its own path so it can't re-exec itself to do the first queue run. Check the output of
exim -bP exim_path
Q0025: I can't seem to get a pipe command to run when I include a ${if expansion in it. This fails:
command = perl -T /usr/local/rt/bin/rtmux.pl \ rt-mailgate helpdesk \ ${if eq {$local_part}{rt} {correspond}{action}}
A0025: You need some internal quoting in there. Exim expands each individual argument separately. Because you have (necessarily) got spaces in your ${if item, you have to quote that argument. Try
command = perl -T /usr/local/rt/bin/rtmux.pl \ rt-mailgate helpdesk \ "${if eq {$local_part}{rt} {correspond}{action}}"
Q0026: I'm trying to get Exim to connect an alias to a pipe, but it always gives error code 69, with the comment (could mean service or program unavailable).
A0026: If your alias entry looks like this:
alias: |"/some/command some parameters"
change it to look like this:
alias: "|/some/command some parameters"
Q0027: What does the error Spool file is locked mean?
A0027: This is not an error. All it means is that when an Exim delivery process (probably started by a queue runner process) looked at a message in order to start delivering it, it found that another Exim process was already busy delivering it. On a busy system this is quite a common occurrence. If you set -skip_delivery in the log_selector option, these messages are omitted from the log.
The only time when this message might indicate a problem is if it is repeated for the same message for a very long time. That would suggest that the process that is delivering the message has somehow got stuck.
Q0028: Exim is reporting IP addresses as 0.0.0.0 or 255.255.255.255 instead of their correct values. What's going on?
A0028: You are using a version of Exim built with gcc on an IRIX box. See Q9502.
Q0029: I can't seem to figure out why PAM support doesn't work correctly.
A0029: There is a problem using PAM with shadow passwords when the calling program is not running as root. Exim is normally running as the Exim user when authenticating a remote host. See this posting for one way round the problem:
http://www.exim.org/mailman/htdig/exim-users/Week-of-Mon-20010917/030371.html
PAM 0.72 allows authorization as non-root, using setuid helper programs. Furthermore, in /etc/pam.d/exim you can explicitelly specify that this authorization (using setuid helpers) is only permitted for certain users and groups.
Q0030: I'm trying to use a query-style lookup for hosts that are allowed to relay, but it is giving really weird errors.
A0030: Does your query contain a colon character? Remember that host lists are colon-separated, so you need to double any colons in the query. This applies even if the query is defined as a macro.
Q0031: Exim is rejecting connections from hosts that have more than one IP address, for no apparent reason.
A0031: You are using Solaris 7 or earlier, and have nis dns files in /etc/nsswitch.conf. Change this to dns nis files to avoid hitting Sun bug 1154236 (a bad interaction between NIS and the DNS).
Q0032: Exim is failing to find the MySQL library, even though is it present within LD_LIBRARY_PATH. I'm getting this error:
/usr/local/bin/exim: fatal: libmysqlclient.so.6: open failed: No such file or directory
A0032: Exim is suid, and LD_LIBRARY_PATH is ignored for suid binaries on a Solaris (and other?) systems. What you should be doing is adding -R/local/lib/mysql to the same place in the compilation that you added -L/local/lib/mysql. This tells the binary where to look without needing a path variable.
Q0033: What does the error lookup of host "xx.xx.xx" failed in yyy router mean?
A0033: You configured a manualroute router to send the message to xx.xx.xx. When it tried to look up the IP address for that host, the lookup failed with a permanent error. As this is a manual routing, this is a considered to be a serious error which the postmaster needs to know about (maybe you have a typo in your file), and there is little point in keeping on trying. So it freezes the message.
(1) Don't set up routes to non-existent hosts.
(2) If you must set up routes to non-existent hosts, and don't want freezing, set the host_find_failed option on the router to do something other than freeze.
Q0034: Exim works fine on one host, but when I copied the binary to another identical host, it stopped working (it could not resolve DNS names).
A0034: Is the new host running exactly the same operating system? Most importantly, are the versions of the dynamically loaded libraries (files with names like libsocket.so.1) the same on both systems? If not, that is probably the cause of the problem. Either arrange for the libraries to be the same, or rebuild Exim from source on the new host.
Q0035: I set a hosts condition in an ACL to do a lookup in a file of IP addresses, but it doesn't work.
A0035: Did you remember to put net- at the start of the the search type? If you set something like this:
accept hosts = lsearch;/some/file
Exim searches the file for the host name, not the IP address. You need to set
accept hosts = net-lsearch;/some/file
to make it use the IP address as the key to the lookup.
Q0036: Why do I get the error Permission denied: creating lock file hitching post when Exim tries to do a local delivery?
A0036: Your configuration specifies that local mailboxes are all held in single directory, via configuration lines like these (taken from the default configuration):
local_delivery: driver = appendfile file = /var/mail/$local_part
and the permissions on the directory probably look like this:
drwxrwxr-x 3 root mail 512 Jul 9 13:48 /var/mail/
Using the default configuration, Exim runs as the local user when doing a local delivery, and it uses a lock file to prevent any other process from updating the mailbox while it is writing to it. With those permissions the delivery process, running as the user, is unable to create a lock file in the (/var/mail( directory. There are two solutions to this problem:
(1) Set the write and sticky bit permissions on the directory, so that it looks like this:
drwxrwxrwt 3 root mail 512 Jul 9 13:48 /var/mail/
The w allows any user to create new files in the directory, but the t bit means that only the creator of a file is able to remove it. This is the same setting as is normally used with the /tmp directory.
(2) Arrange to run the local_delivery transport under a specific group by changing the configuration to read
local_delivery: driver = appendfile file = /var/mail/${local_part} group = mail
The delivery process still runs under the user's uid, but with the group set to mail. The group permission on the directory allows the process to create and remove the lock file.
The choice between (1) and (2) is up to the administrator. If the second solution is used, users can empty their mailboxes by updating them, but cannot delete them.
If your problem involves mail to root, see also Q0507.
Q0037: I am experiencing mailbox locking problems with Sun's mailtool used over a network.
A0037: See Q9705 in the Sun-specific section below.
Q0038: What does the error message error in forward file (filtering not enabled): missing or malformed local part mean?
A0038: If you are trying to use an Exim filter, you have forgotten to enable the facility, which is disabled by default. In the redirect router (in the Exim run time configuration file) you need to set
allow_filter = true
to allow a .forward file to be used as an Exim filter. If you are not trying to use an Exim filter, then you have put a malformed address in the .forward file.
Q0039: I have installed Exim, but now I can't mail to root any more. Why is this?
A0039: Most people set up root as an alias for the manager of the host. If you haven't done this, Exim will attempt to deliver to root as if it were a normal user. This isn't really a good idea because the delivery process would run as root. Exim has a trigger guard in the option
never_users = root
in the default configuration file. This prevents it from running as root when doing any deliveries. If you really want to run local deliveries as root, remove this line, but it would be better to create an alias for root instead.
Q0040: How can I stop undeliverable bounce messages (e.g. to routeable, but undeliverable, spammer senders) from clogging up the queue for days?
A0040: Set ignore_bounce_errors_after to specify a (short) time to keep them for. I use 12h so that I notice them, but they go away relatively quickly.
Q0041: What does the message Unable to get root to set uid and gid for local delivery to xxx: uid=yyy euid=zzz mean?
A0041: Have you remembered to make Exim setuid root? It needs root privilege if it is to do any local deliveries, because it does them ``as the user''.
Q0042: My ISP's mail server is rejecting bounce messages from Exim, complaining that they have no sender. The SMTP trace does indeed show that the sender address is <>. Why is the Sender on the bounce message empty?
A0042: Because the RFCs say it must be. Your ISP is at fault. Send them this extract from RFC 2821 section 6.1 (Reliable Delivery and Replies by Email):
If there is a delivery failure after acceptance of a message, the receiver-SMTP MUST formulate and mail a notification message. This notification MUST be sent using a null (<>) reverse path in the envelope. The recipient of this notification MUST be the address from the envelope return path (or the Return-Path: header line). However, if this address is null (<>), the receiver-SMTP MUST NOT send a notification.
The reason that bounce messages have no sender is so that they themselves cannot provoke further bounces, as this could lead to a unending exchange of undeliverable messages.
Q0043: What does the error Unable to get interface configuration: 22 Invalid argument mean?
A0043: This is an error that occurs when Exim is trying to find out the all the IP addresses on all of the local host's interfaces. If you have lots of virtual interfaces, this can occur if there are more than around 250 of them. The solution is to set the option local_interfaces to list just those IP addresses that you want to use for making and receiving SMTP connections.
Q0044: What does the error Failed to create spool file mean?
A0044: Exim has been unable to create a file in its spool area in which to store an incoming message. This is most likely to be either a permissions problem in the file hierarchy, or a problem with the uid under which Exim is running, though it could be something more drastic such as your disc being full.
If you are running Exim with an alternate configuration file using a command such as exim -C altconfig..., remember that the use of -C takes away Exim's root privilege.
Check that you have defined the spool directory correctly by running
exim -bP spool_directory
and examining the output. Check the mode of this directory. It should look like this, assuming you are running Exim as user exim:
drwxr-x--- 6 exim exim 512 Jul 16 12:29 /var/spool/exim
If there are any subdirectories already in existence, they should have the same permissions, owner, and group. Check also that you haven't got incorrect permissions on superior directories (for example, /var/spool). Check that you have set up the Exim binary to be setuid root. It should look like this:
-rwsr-xr-x 1 root xxx 502780 Jul 16 14:16 exim
Note that it is not just the owner that must be root, but also the third permission must be s rather than x.
Q0045: I see entries in the log that mention two different IP addresses for the same connection. Why is this? For example:
H=tip-mp8-ncs-13.stanford.edu ([36.173.0.189]) [36.173.0.156]
A0045: The actual IP address from which the call came is the final one. Whenever there's something in parentheses in a host name, it is what the host quoted as the domain part of an SMTP HELO or EHLO command. So in this case, the client, despite being 36.173.0.156, issued the command
EHLO [36.173.0.189]
when it sent your server the message. This is, of course, very misleading.
Q0046: A short time after I start Exim I see a defunct zombie process. What is causing this?
A0046: Your system must be lightly loaded as far as mail is concerned. The daemon sets off a queue runner process when it is started, but it only tidies up completed child processes when it wakes up for some other reason. When there's nothing much going on, you occasionally see defunct processes like this waiting to be dealt with. This is perfectly normal.
Q0047: On a reboot, or a restart of the mail system, I see the message Mailer daemons: exim abandoned: unknown, malformed, or incomplete option -bz sendmail. What does this mean?
A0047: -bz is a Sendmail option requesting it to create a `configuration freeze file'. Exim has no such concept and so does not support the option. You probably have a line like
/usr/lib/sendmail -bz
in some start-up script (e.g. /etc/init.d/mail) immedately before
/usr/lib/sendmail -bd -q15m
The first of these lines should be commented out.
Q0048: Whenever exim restarts it takes up to 3-5 minutes to start responding on the SMTP port. Why is this?
A0048: Something else is hanging onto port 25 and not releasing it. One place to look is /etc/inetd.conf in case for any reason an SMTP stream is configured there.
Q0049: What does the log message no immediate delivery: more than 10 messages received in one connection mean?
A0049: A remote MTA sent a number of messages in a single SMTP session. Exim limits the number of immediate delivery processes it creates as a result of a single SMTP connection, in order to avoid creating a zillion processes on systems that can have many incoming connections. If you are dialing in to collect mail from your ISP, you should probably set smtp_accept_queue_per_connection to some number larger than 10, or arrange to start a queue runner for local delivery (using -ql) immediately after collecting the mail.
Q0050: I am getting complaints from a customer who uses my Exim server for relaying that they are being blocked with a Too many connections error.
A0050: See smtp_accept_max, smep_accept_max_per_host and smtp_accept_reserve.
Q0051: When I try exim -bf to test a system filter, I received the following error message: Filter error: unavailable filtering command "fail" near line 8 of filter file.
A0051: Use the -bF option to test system filters. This gives you access to the freeze and fail actions.
Q0052: What does ridiculously long message header in an error report mean?
A0052: There has to be some limit to the length of a message's header lines, because otherwise a malefactor could open an SMTP channel to your host, start a message, and then just send characters continuously until your host ran out of memory. (Exim stores all the header lines in main memory while processing a message). For this reason a limit is imposed on the total amount of memory that can be used for header lines. The default is 1MB, but this can be changed by setting HEADER_MAXSIZE in Local/Makefile before building Exim. Exceeding the limit provokes the ``ridiculous'' error message.
Q0053: Exim on my host responds to a connection with 220 *****... and won't understand EHLO commands.
A0053: This is the sign of a Cisco Pix ``Mailguard'' sitting in front of your MTA. Pix breaks ESMTP and only does SMTP. It is a nuisance when you have a secure MTA running on your box. Something like ``no fixup protocol smtp 25'' in the Pix configuration is needed.
Q0054: I'm getting an Exim configuration error unknown rewrite flag character (m) in line 386 but I haven't used any flags on my rewriting rules.
A0054: You have probably forgotten to quote a replacement string that contains white space.
Q0055: What does the error Failed to open wait-remote_smtp database: Invalid argument mean?
A0055: This is something that happens if you have existing DBM hints files when you install a new version of Exim that is compiled to use a different or upgraded DBM library. The simplest thing to try is
rm /var/spool/exim/db/*
This removes all the hints files. Exim will start afresh and build new ones. If the symptom recurs, it suggests there is some problem with your DBM library.
Q0056: We are using Exim to send mail from our web server. However, whenever a user sends an email it gets sent with the return path (envelope sender) apache@server_name.com because the PHP script is running as apache.
A0056: You need to include apache in the trusted_users configuration option. Only trusted users are permitted to specify senders when mail is passed to Exim via the command line.
Q0057: We've got people complaining about attachments that don't show up as attachments, but are included in the body of the message.
A0057: These symptoms can be seen when some software passes a CRLF line terminated message via the command line to an MTA that expects lines to be terminated by LF only, and so preserves the CRs as data. If you can identify the software that is doing this, try setting the -dropcr option on the command it uses to call Exim. Alternatively, you can set drop_cr in the configuration file, but then that will apply to all input.
Q0058: What does the error failed to open DB file /var/spool/exim/db/retry: File exists mean?
A0058: This error is most often caused when a hints file that was written with one version of the Berkeley DB library is read by another version. Sometimes this can happen if you change from a binary version of Exim to a locally compiled version. Or it can happen if you compile and install a new version of Exim after changing Berkeley DB versions. You can find out which version your Exim is using by running:
ldd /usr/sbin/exim
The solution to the problem is to delete all the files in the /var/spool/exim/db directory, and let Exim recreate them.
Q0059: When my Outlook Express 6.0 client sends a STARTTLS command to begin a TLS session, Exim doesn't seem to receive it. The Outlook log shows this:
SMTP: 14:19:27 [tx] STARTTLS SMTP: 14:19:27 [rx] 500 Unsupported command.
but the Exim debugging output shows this:
SMTP<< EHLO xxxx SMTP>> 250-yyyy Hello xxxx [nnn.nnn.nnn.nnn] 250-SIZE 52428800 250-PIPELINING 250-AUTH CRAM-MD5 PLAIN LOGIN 250-STARTTLS 250 HELP SMTP<< QUIT
A0059: Turn off scanning of outgoing email in Norton Antivirus. If you aren't running Norton Antivirus, see if you are running some other kind of SMTP proxying, either on the client or on a firewall between the client and server. ``Unsupported command'' is not an Exim message.
Q0060: Why am I getting the error failed to expand /data/lists/lists/${lc for require_files: ${lc is not a known operator for this setting:
require_files = MAILMAN_HOME/lists/${lc:$local_part}/config.db
A0060: The value of require_files is a list in which each item is separately expanded. You need either to double the colon, or switch to a different list separator.
Q0061: What does the error Too many ``Received'' headers - suspected mail loop mean?
A0061: Whenever a message passes through an MTA, a Received: header gets added. Exim counts the number of these headers in incoming messages. If there are more than the value of received_headers_max (default 30), Exim assumes there is some kind of mail routing loop occurring. For example, host A passes the message to host B, which immediately passes it back to host A. Check the Received: headers and the mail logs to determine exactly what is going on.
One common cause of this problem is users with accounts on both systems who set up each one to forward to the other, thinking that will cause copies of all messages to be delivered on both of them.
Q0062: When I try to start an Exim daemon it crashes. I ran a debugger and discovered that the crash is happening in the function getservbyname(). What's going on?
A0062: What have you got in the file /etc/nsswitch.conf? If it contains this line:
services: db files
try removing the db. (Your system is trying to look in some kind of database before searching the file /etc/services.)
Q0063: When I try to start an Exim daemon, nothing happens. There is no process, and nothing is written to the Exim log.
A0063: Check to see if anything is written to syslog. This problem can be caused by a permission problem that stops Exim from writing to its log files, especially if you've specified that they should be written somewhere other than under Exim's spool directory. You could also try running the daemon with debugging turned on.
Q0064: When I run exim -d test@domain it delivers fine, but when I send a message from the mail command, I get User unknown and the mail is saved in dead.letter.
A0064: It looks as if Exim isn't being called by mail; instead it is calling some other program (probably Sendmail). Try running the command
/usr/sbin/sendmail -bV
(If you get No such file or directory or Command not found you are running Solaris or IRIX. Try again with /usr/lib/sendmail.) The output should be something like this:
Exim version 4.05 #1 built 13-Jun-2002 10:27:15 Copyright (c) University of Cambridge 2002
If you don't see this, your Exim installation isn't fully operational. If you are running FreeBSD, see Q9201. For other systems, see Q0114.