</P>
<P>
-This version of the FAQ applies to Exim 3.10 and later releases. The syntax of
+This version of the FAQ applies to Exim 3.20 and later releases. The syntax of
some of the options was altered and tidied up at release 3.00. Some of the
examples quoted here will not work with earlier releases.
</P>
<PRE>
- <A HREF="ftp://ftp.csx.cam.ac.uk/pub/software/email/exim/config.samples.tar.gz">ftp://ftp.csx.cam.ac.uk/pub/software/email/exim/config.samples.tar.gz</A></PRE>
+ <A HREF="ftp://ftp.csx.cam.ac.uk/pub/software/email/exim/exim3/config.samples.tar.gz">ftp://ftp.csx.cam.ac.uk/pub/software/email/exim/exim3/config.samples.tar.gz</A>
+ <A HREF="ftp://ftp.csx.cam.ac.uk/pub/software/email/exim/exim3/config.samples.tar.bz2">ftp://ftp.csx.cam.ac.uk/pub/software/email/exim/exim3/config.samples.tar.bz2</A></PRE>
<P>
There are brief descriptions of these files at the end of this document.
</P>
The FAQ is divided into the following sections:
<A HREF="FAQ.html#TOC1">Debugging</A>,
-<A HREF="FAQ.html#TOC37">Building exim</A>,
-<A HREF="FAQ.html#TOC48">Mailbox locking</A>,
-<A HREF="FAQ.html#TOC51">Routing</A>,
-<A HREF="FAQ.html#TOC77">Directing</A>,
-<A HREF="FAQ.html#TOC115">Delivery</A>,
-<A HREF="FAQ.html#TOC151">UUCP</A>,
-<A HREF="FAQ.html#TOC155">Performance</A>,
-<A HREF="FAQ.html#TOC159">Policy controls</A>,
-<A HREF="FAQ.html#TOC193">Majordomo</A>,
-<A HREF="FAQ.html#TOC198">Rewriting</A>,
-<A HREF="FAQ.html#TOC206">Headers</A>,
-<A HREF="FAQ.html#TOC211">Fetchmail</A>,
-<A HREF="FAQ.html#TOC215">Perl</A>,
-<A HREF="FAQ.html#TOC218">Dial-up</A>,
-<A HREF="FAQ.html#TOC223">Millennium</A>,
-<A HREF="FAQ.html#TOC225">Miscellaneous</A>,
-<A HREF="FAQ.html#TOC267">HP-UX</A>,
-<A HREF="FAQ.html#TOC269">BSDI</A>,
-<A HREF="FAQ.html#TOC271">IRIX</A>,
-<A HREF="FAQ.html#TOC274">Linux</A>,
-<A HREF="FAQ.html#TOC281">Sun systems</A>,
-<A HREF="FAQ.html#TOC291">Cookbook</A>, and
-<A HREF="FAQ.html#TOC315">List of sample configurations</A>.
+<A HREF="FAQ.html#TOC49">Building exim</A>,
+<A HREF="FAQ.html#TOC64">Mailbox locking</A>,
+<A HREF="FAQ.html#TOC67">Routing</A>,
+<A HREF="FAQ.html#TOC94">Directing</A>,
+<A HREF="FAQ.html#TOC141">Delivery</A>,
+<A HREF="FAQ.html#TOC182">UUCP</A>,
+<A HREF="FAQ.html#TOC186">Performance</A>,
+<A HREF="FAQ.html#TOC191">Policy controls</A>,
+<A HREF="FAQ.html#TOC232">Majordomo</A>,
+<A HREF="FAQ.html#TOC238">Rewriting addresses</A>,
+<A HREF="FAQ.html#TOC246">Headers</A>,
+<A HREF="FAQ.html#TOC252">Fetchmail</A>,
+<A HREF="FAQ.html#TOC256">Perl</A>,
+<A HREF="FAQ.html#TOC259">Dial-up</A>,
+<A HREF="FAQ.html#TOC264">Modifying message bodies</A>,
+<A HREF="FAQ.html#TOC267">Millennium</A>,
+<A HREF="FAQ.html#TOC269">Miscellaneous</A>,
+<A HREF="FAQ.html#TOC321">HP-UX</A>,
+<A HREF="FAQ.html#TOC323">BSDI</A>,
+<A HREF="FAQ.html#TOC325">IRIX</A>,
+<A HREF="FAQ.html#TOC328">Linux</A>,
+<A HREF="FAQ.html#TOC337">Sun systems</A>,
+<A HREF="FAQ.html#TOC347">Cookbook</A>, and
+<A HREF="FAQ.html#TOC372">List of sample configurations</A>.
<P>
Philip Hazel <B><B><ph10@cus.cam.ac.uk</B>></B><BR>
-Last updated: 15-December-1999
-
+Last update: 23-April-2001<BR>
+<BR>
</P>
<HR><BR>
<A NAME="TOC1" HREF="FAQ.html#SEC1">0. DEBUGGING</A>
<UL>
<LI><A NAME="TOC2" HREF="FAQ.html#SEC2">Q0001</A>: Exim is crashing. What is wrong?
-<LI><A NAME="TOC3" HREF="FAQ.html#SEC3">Q0002</A>: Exim is not working. What is wrong?
+<LI><A NAME="TOC3" HREF="FAQ.html#SEC3">Q0002</A>: Exim is not working. What is wrong? How can I check what it is doing?
<LI><A NAME="TOC4" HREF="FAQ.html#SEC4">Q0003</A>: What does the error "Child process of <TT>address_pipe</TT> transport returned
69 from command <I>xxx</I>" mean?
<LI><A NAME="TOC5" HREF="FAQ.html#SEC5">Q0004</A>: My virtual domain setup isn't working. How can I debug it?
unavailable)".
<LI><A NAME="TOC35" HREF="FAQ.html#SEC35">Q0034</A>: I'm having a problem with an Exim RPM.
<LI><A NAME="TOC36" HREF="FAQ.html#SEC36">Q0035</A>: What does the error "Spool file is locked" mean?
+<LI><A NAME="TOC37" HREF="FAQ.html#SEC37">Q0036</A>: Exim is reporting IP addresses as 0.0.0.0 or 255.255.255.255 instead of
+ their correct values. What's going on?
+<LI><A NAME="TOC38" HREF="FAQ.html#SEC38">Q0037</A>: I can't seem to figure out why PAM support doesn't work correctly.
+<LI><A NAME="TOC39" HREF="FAQ.html#SEC39">Q0038</A>: I'm trying to use a query-style lookup for hosts that are allowed to
+ relay, but it is giving really weird errors.
+<LI><A NAME="TOC40" HREF="FAQ.html#SEC40">Q0039</A>: Exim is rejecting calls from hosts that have more than one IP address,
+ for no apparent reason.
+<LI><A NAME="TOC41" HREF="FAQ.html#SEC41">Q0040</A>: Exim is failing to find the MySQL library, even though is it present
+ within <B><B>$LD_LIBRARY_PATH.</B></B> I'm getting this error:
+<LI><A NAME="TOC42" HREF="FAQ.html#SEC42">Q0041</A>: I have a collection of Exim processes that have been around for days,
+ and are apparently stuck while trying to deliver to remote hosts. This
+ is causing the messages they are handling to get stuck.
+<LI><A NAME="TOC43" HREF="FAQ.html#SEC43">Q0042</A>: I have a message in the spool which couldn't be delivered because of a
+ timeout from the remote smtp server. When I try to deliver this message
+ in eximon, I get "Spool file is locked". How can I deliver the message?
+<LI><A NAME="TOC44" HREF="FAQ.html#SEC44">Q0043</A>: What does the error "lookup of host <B>"xx<EM>.xx</EM><EM>.xx</EM>"</B> failed in <I>yyy</I>y router"
+ mean? Any suggestions to stop this these sort of errors from being
+ frozen would be muchly appreciated.
+<LI><A NAME="TOC45" HREF="FAQ.html#SEC45">Q0044</A>: My filter isn't working. How can I test it?
+<LI><A NAME="TOC46" HREF="FAQ.html#SEC46">Q0045</A>: 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).
+<LI><A NAME="TOC47" HREF="FAQ.html#SEC47">Q0046</A>: Once in a while, a user will send a message and immediatly get a
+ response back "No Transport Provider" If they choose "Send Again",
+ sometimes it works, sometimes it doesn't.
+<LI><A NAME="TOC48" HREF="FAQ.html#SEC48">Q0047</A>: I set <TT>host_accept_relay</TT> to do a lookup in a file of IP addresses, but it
+ doesn't work.
</UL>
-<A NAME="TOC37" HREF="FAQ.html#SEC37">1. BUILDING EXIM</A>
+<A NAME="TOC49" HREF="FAQ.html#SEC49">1. BUILDING EXIM</A>
<UL>
-<LI><A NAME="TOC38" HREF="FAQ.html#SEC38">Q0101</A>: I get the error "conflicting types" when Exim is building the libident
+<LI><A NAME="TOC50" HREF="FAQ.html#SEC50">Q0101</A>: I get the error "conflicting types" when Exim is building the libident
library.
-<LI><A NAME="TOC39" HREF="FAQ.html#SEC39">Q0102</A>: When I ran <B>make</B> I got the error "undefined reference to <TT>dbopen</TT>".
-<LI><A NAME="TOC40" HREF="FAQ.html#SEC40">Q0103</A>: I can't get Exim to compile with Berkeley DB version 2.x.
-<LI><A NAME="TOC41" HREF="FAQ.html#SEC41">Q0104</A>: I'm getting an "undefined symbol" error for <TT>hosts_ctl</TT> when I try to
+<LI><A NAME="TOC51" HREF="FAQ.html#SEC51">Q0102</A>: When I ran <B>make</B> I got the error "undefined reference to <TT>dbopen</TT>".
+<LI><A NAME="TOC52" HREF="FAQ.html#SEC52">Q0103</A>: I can't get Exim to compile with Berkeley DB version 2.x.
+<LI><A NAME="TOC53" HREF="FAQ.html#SEC53">Q0104</A>: I'm getting an "undefined symbol" error for <TT>hosts_ctl</TT> when I try to
build Exim. (On some systems this error is "undefined reference to
'hosts_ctl'".)
-<LI><A NAME="TOC42" HREF="FAQ.html#SEC42">Q0105</A>: I'm about to upgrade to a new Exim release. Do I need to ensure the
+<LI><A NAME="TOC54" HREF="FAQ.html#SEC54">Q0105</A>: I'm about to upgrade to a new Exim release. Do I need to ensure the
spool is empty, or take any other special action?
-<LI><A NAME="TOC43" HREF="FAQ.html#SEC43">Q0106</A>: What does the error "<B>install-info</B>: command not found" mean?
-<LI><A NAME="TOC44" HREF="FAQ.html#SEC44">Q0107</A>: Exim doesn't seem to be recognizing my operating system type correctly,
+<LI><A NAME="TOC55" HREF="FAQ.html#SEC55">Q0106</A>: What does the error "<B>install-info</B>: command not found" mean?
+<LI><A NAME="TOC56" HREF="FAQ.html#SEC56">Q0107</A>: Exim doesn't seem to be recognizing my operating system type correctly,
and so is failing to build.
-<LI><A NAME="TOC45" HREF="FAQ.html#SEC45">Q0108</A>: I am getting an error "`exim' undeclared here" when I compile, in the
+<LI><A NAME="TOC57" HREF="FAQ.html#SEC57">Q0108</A>: I am getting an error "`exim' undeclared here" when I compile, in the
<B>globals.c</B> module.
-<LI><A NAME="TOC46" HREF="FAQ.html#SEC46">Q0109</A>: Exim fails to build, complaining about the absence of the "killpg"
+<LI><A NAME="TOC58" HREF="FAQ.html#SEC58">Q0109</A>: Exim fails to build, complaining about the absence of the "killpg"
function.
-<LI><A NAME="TOC47" HREF="FAQ.html#SEC47">Q0110</A>: I'm getting an unresolved symbol <TT>ldap_is_ldap_url</TT> when trying to build
+<LI><A NAME="TOC59" HREF="FAQ.html#SEC59">Q0110</A>: I'm getting an unresolved symbol <TT>ldap_is_ldap_url</TT> when trying to build
Exim.
+<LI><A NAME="TOC60" HREF="FAQ.html#SEC60">Q0111</A>: I'm getting an unresolved symbol <TT>mysql_close</TT> when trying to build Exim.
+<LI><A NAME="TOC61" HREF="FAQ.html#SEC61">Q0112</A>: I'm trying to build Exim with PAM support. I have included <B>-lpam</B> in
+ <TT>EXTRALIBS</TT>, but I'm still getting a linking error:
+<LI><A NAME="TOC62" HREF="FAQ.html#SEC62">Q0113</A>: I'm getting the error <B>"db.h:</B> No such file or directory" when I try to
+ build Exim.
+<LI><A NAME="TOC63" HREF="FAQ.html#SEC63">Q0114</A>: I'm getting the error "/usr/bin/ld: cannot find <B>-ldb1"</B> when I try to
+ build Exim.
</UL>
-<A NAME="TOC48" HREF="FAQ.html#SEC48">2. MAILBOX LOCKING</A>
+<A NAME="TOC64" HREF="FAQ.html#SEC64">2. MAILBOX LOCKING</A>
<UL>
-<LI><A NAME="TOC49" HREF="FAQ.html#SEC49">Q0201</A>: Why do I get the error "Permission denied: creating lock file hitching
+<LI><A NAME="TOC65" HREF="FAQ.html#SEC65">Q0201</A>: Why do I get the error "Permission denied: creating lock file hitching
post" when Exim tries to do a local delivery?
-<LI><A NAME="TOC50" HREF="FAQ.html#SEC50">Q0202</A>: I am experiencing mailbox locking problems with Sun's <B>mailtool</B> used
+<LI><A NAME="TOC66" HREF="FAQ.html#SEC66">Q0202</A>: I am experiencing mailbox locking problems with Sun's <B>mailtool</B> used
over a network.
</UL>
-<A NAME="TOC51" HREF="FAQ.html#SEC51">3. ROUTING</A>
+<A NAME="TOC67" HREF="FAQ.html#SEC67">3. ROUTING</A>
<UL>
-<LI><A NAME="TOC52" HREF="FAQ.html#SEC52">Q0301</A>: What does "lowest numbered MX record points to local host" mean?
-<LI><A NAME="TOC53" HREF="FAQ.html#SEC53">Q0302</A>: How do I configure Exim to send all non-local mail to a gateway host?
-<LI><A NAME="TOC54" HREF="FAQ.html#SEC54">Q0303</A>: How do I configure Exim to send all non-local mail to a central server
+<LI><A NAME="TOC68" HREF="FAQ.html#SEC68">Q0301</A>: What do "lowest numbered MX record points to local host" and "remote
+ host address is the local host" mean?
+<LI><A NAME="TOC69" HREF="FAQ.html#SEC69">Q0302</A>: How do I configure Exim to send all non-local mail to a gateway host?
+<LI><A NAME="TOC70" HREF="FAQ.html#SEC70">Q0303</A>: How do I configure Exim to send all non-local mail to a central server
if it cannot be immediately delivered by my host? I don't want to have
queued mail waiting on my host.
-<LI><A NAME="TOC55" HREF="FAQ.html#SEC55">Q0304</A>: How can I arrange for messages submitted by (for example) Majordomo to
+<LI><A NAME="TOC71" HREF="FAQ.html#SEC71">Q0304</A>: How can I arrange for messages submitted by (for example) Majordomo to
be routed specially?
-<LI><A NAME="TOC56" HREF="FAQ.html#SEC56">Q0305</A>: How do I arrange for all incoming email for <B><B>*@some.domain</B></B> to go into one
+<LI><A NAME="TOC72" HREF="FAQ.html#SEC72">Q0305</A>: How do I arrange for all incoming email for <B><B>*@some.domain</B></B> to go into one
pop3 mail account? The customer doesn't want to add a list of specific
local parts to the system.
-<LI><A NAME="TOC57" HREF="FAQ.html#SEC57">Q0306</A>: The <TT>route_list</TT> setting
+<LI><A NAME="TOC73" HREF="FAQ.html#SEC73">Q0306</A>: The <TT>route_list</TT> setting
<TT>^foo$:^bar$ $domain byname</TT> in a <B>domainlist</B>
router does not work.
-<LI><A NAME="TOC58" HREF="FAQ.html#SEC58">Q0307</A>: I'm getting "permission denied" when Exim attempts to check a
+<LI><A NAME="TOC74" HREF="FAQ.html#SEC74">Q0307</A>: I'm getting "permission denied" when Exim attempts to check a
<TT>require_files</TT> option.
-<LI><A NAME="TOC59" HREF="FAQ.html#SEC59">Q0308</A>: I have a domain for which some local parts must be delivered locally,
+<LI><A NAME="TOC75" HREF="FAQ.html#SEC75">Q0308</A>: I have a domain for which some local parts must be delivered locally,
but the remainder are to be treated like any other remote addresses.
-<LI><A NAME="TOC60" HREF="FAQ.html#SEC60">Q0309</A>: For certain domains, I don't want Exim to use MX records. Instead, I
+<LI><A NAME="TOC76" HREF="FAQ.html#SEC76">Q0309</A>: For certain domains, I don't want Exim to use MX records. Instead, I
want it just to look up the hosts' A records. I tried using a negative
entry in <TT>mx_domains</TT> in the smtp router, but it didn't work.
-<LI><A NAME="TOC61" HREF="FAQ.html#SEC61">Q0310</A>: How can I configure Exim on a firewall machine so that if mail arrives
+<LI><A NAME="TOC77" HREF="FAQ.html#SEC77">Q0310</A>: How can I configure Exim on a firewall machine so that if mail arrives
addressed to a domain whose MX points to the firewall, it is forwarded
to the internal mail server, without having to have a list of all the
domains involved?
-<LI><A NAME="TOC62" HREF="FAQ.html#SEC62">Q0311</A>: How can I arrange that messages larger than some limit are handled by
+<LI><A NAME="TOC78" HREF="FAQ.html#SEC78">Q0311</A>: How can I arrange that messages larger than some limit are handled by
a special router?
-<LI><A NAME="TOC63" HREF="FAQ.html#SEC63">Q0312</A>: If a DNS lookup returns no MX records why doesn't Exim just bin the
+<LI><A NAME="TOC79" HREF="FAQ.html#SEC79">Q0312</A>: If a DNS lookup returns no MX records why doesn't Exim just bin the
message?
-<LI><A NAME="TOC64" HREF="FAQ.html#SEC64">Q0313</A>: When a DNS lookup for MX records fails to complete, why doesn't Exim
+<LI><A NAME="TOC80" HREF="FAQ.html#SEC80">Q0313</A>: When a DNS lookup for MX records fails to complete, why doesn't Exim
send the messsage to the host defined by the A record?
-<LI><A NAME="TOC65" HREF="FAQ.html#SEC65">Q0314</A>: Can you specify a list of domains to explicitly reject?
-<LI><A NAME="TOC66" HREF="FAQ.html#SEC66">Q0315</A>: Is it possible to use a conditional expression for the host item in a
+<LI><A NAME="TOC81" HREF="FAQ.html#SEC81">Q0314</A>: Can you specify a list of domains to explicitly reject?
+<LI><A NAME="TOC82" HREF="FAQ.html#SEC82">Q0315</A>: Is it possible to use a conditional expression for the host item in a
<TT>route_list</TT> for the <B>domainlist</B> router? I tried the following, but it
doesn't work:
-<LI><A NAME="TOC67" HREF="FAQ.html#SEC67">Q0316</A>: I send all external mail to a smart host, but this means that bad
+<LI><A NAME="TOC83" HREF="FAQ.html#SEC83">Q0316</A>: I send all external mail to a smart host, but this means that bad
addresses also get passed to the smart host. Can I avoid this?
-<LI><A NAME="TOC68" HREF="FAQ.html#SEC68">Q0317</A>: I have a dial-up machine, and I use the <TT>queue_smtp</TT> option so that remote
+<LI><A NAME="TOC84" HREF="FAQ.html#SEC84">Q0317</A>: I have a dial-up machine, and I use the <TT>queue_smtp</TT> option so that remote
mail only goes out when I do a queue run. However, any email I send with
an address <B><B><anything>@aol.com</B></B> is returned within about 15 mins saying
'retry time exceeded', and all addresses are affected.
-<LI><A NAME="TOC69" HREF="FAQ.html#SEC69">Q0318</A>: How can I route mail for user <B>X@local</B> to a smarthost if X doesn't exist
+<LI><A NAME="TOC85" HREF="FAQ.html#SEC85">Q0318</A>: How can I route mail for user <B>X@local</B> to a smarthost if X doesn't exist
on the local host?
-<LI><A NAME="TOC70" HREF="FAQ.html#SEC70">Q0319</A>: How can I arrange to do my own qualification of non-fully-qualified
+<LI><A NAME="TOC86" HREF="FAQ.html#SEC86">Q0319</A>: How can I arrange to do my own qualification of non-fully-qualified
domains, and then pass them on to the next router?
-<LI><A NAME="TOC71" HREF="FAQ.html#SEC71">Q0320</A>: Every system has a "nobody" account under which httpd etc run. I would
+<LI><A NAME="TOC87" HREF="FAQ.html#SEC87">Q0320</A>: Every system has a "nobody" account under which httpd etc run. I would
like to know how to restrict mail which comes from that account to users
on that host only.
-<LI><A NAME="TOC72" HREF="FAQ.html#SEC72">Q0321</A>: I have a really annoying intermittent problem where attempts to mail to
+<LI><A NAME="TOC88" HREF="FAQ.html#SEC88">Q0321</A>: I have a really annoying intermittent problem where attempts to mail to
valid sites are rejected with "unknown mail domain". This only happens a
few times a day and there is no particular pattern to the sites it
rejects. If I try to lookup the same domain a few minutes later then it
is OK.
-<LI><A NAME="TOC73" HREF="FAQ.html#SEC73">Q0322</A>: I'd like route all mail with unresolved addresses to a relay machine.
-<LI><A NAME="TOC74" HREF="FAQ.html#SEC74">Q0323</A>: I would like to forward all incoming email for a particular domain to
+<LI><A NAME="TOC89" HREF="FAQ.html#SEC89">Q0322</A>: I'd like route all mail with unresolved addresses to a relay machine.
+<LI><A NAME="TOC90" HREF="FAQ.html#SEC90">Q0323</A>: I would like to forward all incoming email for a particular domain to
another machine via SMTP. Whereabouts would I configure that?
-<LI><A NAME="TOC75" HREF="FAQ.html#SEC75">Q0324</A>: Why does Exim say "all relevant MX records point to non-existent hosts"
+<LI><A NAME="TOC91" HREF="FAQ.html#SEC91">Q0324</A>: Why does Exim say "all relevant MX records point to non-existent hosts"
when MX records point to IP addresses?
-<LI><A NAME="TOC76" HREF="FAQ.html#SEC76">Q0325</A>: How can I arrange for mail on my local network to be delivered directly
+<LI><A NAME="TOC92" HREF="FAQ.html#SEC92">Q0325</A>: How can I arrange for mail on my local network to be delivered directly
to the relevant hosts, but all other mail to be sent to my ISP's mail
server? The local hosts are all DNS-registered and behave like normal
Internet hosts.
+<LI><A NAME="TOC93" HREF="FAQ.html#SEC93">Q0326</A>: What I'd like to do is have alternative smarthosts, where the one to be
+ used is determined by which ISP I'm connected to.
</UL>
-<A NAME="TOC77" HREF="FAQ.html#SEC77">4. DIRECTING</A>
+<A NAME="TOC94" HREF="FAQ.html#SEC94">4. DIRECTING</A>
<UL>
-<LI><A NAME="TOC78" HREF="FAQ.html#SEC78">Q0401</A>: I need to have any mail for <B>virt.dom.ain</B> that <EM>doesn't</EM> match one of the
+<LI><A NAME="TOC95" HREF="FAQ.html#SEC95">Q0401</A>: I need to have any mail for <B>virt.dom.ain</B> that <EM>doesn't</EM> match one of the
aliases in <B><B>/usr/lib/aliases.virt</B></B> delivered to a particular address, for
example, <B><B>postmaster@virt.dom.ain.</B></B>
-<LI><A NAME="TOC79" HREF="FAQ.html#SEC79">Q0402</A>: How do I configure Exim to send all messages to a central server?
-<LI><A NAME="TOC80" HREF="FAQ.html#SEC80">Q0403</A>: How do I configure Exim to send messages for unknown local users to a
+<LI><A NAME="TOC96" HREF="FAQ.html#SEC96">Q0402</A>: How do I configure Exim to send all messages to a central server?
+<LI><A NAME="TOC97" HREF="FAQ.html#SEC97">Q0403</A>: How do I configure Exim to send messages for unknown local users to a
central server?
-<LI><A NAME="TOC81" HREF="FAQ.html#SEC81">Q0404</A>: How can I arrange for messages submitted by (for example) Majordomo to
+<LI><A NAME="TOC98" HREF="FAQ.html#SEC98">Q0404</A>: How can I arrange for messages submitted by (for example) Majordomo to
be handled specially?
-<LI><A NAME="TOC82" HREF="FAQ.html#SEC82">Q0405</A>: On a host that accepts mail for several domains, do I have to use fully
+<LI><A NAME="TOC99" HREF="FAQ.html#SEC99">Q0405</A>: On a host that accepts mail for several domains, do I have to use fully
qualified names in <B>/etc/aliases</B> or do I have to set up an alias file for
each domain?
-<LI><A NAME="TOC83" HREF="FAQ.html#SEC83">Q0406</A>: Some of my users are using the <B>.forward</B> to pipe to a shell command which
+<LI><A NAME="TOC100" HREF="FAQ.html#SEC100">Q0406</A>: Some of my users are using the <B>.forward</B> to pipe to a shell command which
appends to the user's INBOX. How can I forbid this?
-<LI><A NAME="TOC84" HREF="FAQ.html#SEC84">Q0407</A>: How can I arrange for a default value when using a query-style lookup
+<LI><A NAME="TOC101" HREF="FAQ.html#SEC101">Q0407</A>: How can I arrange for a default value when using a query-style lookup
such as LDAP or NIS+ to handle aliases?
-<LI><A NAME="TOC85" HREF="FAQ.html#SEC85">Q0408</A>: If I don't fully qualify the addresses in a virtual domain's alias file
+<LI><A NAME="TOC102" HREF="FAQ.html#SEC102">Q0408</A>: If I don't fully qualify the addresses in a virtual domain's alias file
then mail to aliases which also match the local domain get delivered to
the local domain.
-<LI><A NAME="TOC86" HREF="FAQ.html#SEC86">Q0409</A>: We've got users who chmod their home to 750, and home is NFS-mounted
+<LI><A NAME="TOC103" HREF="FAQ.html#SEC103">Q0409</A>: We've got users who chmod their home to 750, and home is NFS-mounted
without root privilege, so Exim cannot access <B>~user/.forward.</B>
-<LI><A NAME="TOC87" HREF="FAQ.html#SEC87">Q0410</A>: I'm getting "permission denied" when Exim tries to check a for the
+<LI><A NAME="TOC104" HREF="FAQ.html#SEC104">Q0410</A>: I'm getting "permission denied" when Exim tries to check a for the
existence of a user's <B>.procmailrc</B> file using <TT>require_files</TT>.
-<LI><A NAME="TOC88" HREF="FAQ.html#SEC88">Q0411</A>: How can I deliver mail into different directories for each virtual
+<LI><A NAME="TOC105" HREF="FAQ.html#SEC105">Q0411</A>: How can I deliver mail into different directories for each virtual
domain, doing user lookups not against <B>/etc/passwd</B> but against
<B><B>/etc/passwd.domain</B>?</B>
-<LI><A NAME="TOC89" HREF="FAQ.html#SEC89">Q0412</A>: I want mail for <EM>any</EM> local part at certain virtual domains to go
+<LI><A NAME="TOC106" HREF="FAQ.html#SEC106">Q0412</A>: I want mail for <EM>any</EM> local part at certain virtual domains to go
to a single address for each domain.
-<LI><A NAME="TOC90" HREF="FAQ.html#SEC90">Q0413</A>: How can I make Exim look in the alias NIS map instead of <B>/etc/aliases</B>?
-<LI><A NAME="TOC91" HREF="FAQ.html#SEC91">Q0414</A>: What does the error message "error in forward file (filtering not
+<LI><A NAME="TOC107" HREF="FAQ.html#SEC107">Q0413</A>: How can I make Exim look in the alias NIS map instead of <B>/etc/aliases</B>?
+<LI><A NAME="TOC108" HREF="FAQ.html#SEC108">Q0414</A>: What does the error message "error in forward file (filtering not
enabled): missing or malformed local part ..." mean?
-<LI><A NAME="TOC92" HREF="FAQ.html#SEC92">Q0415</A>: Exim isn't recognizing certain forms of local address.
-<LI><A NAME="TOC93" HREF="FAQ.html#SEC93">Q0416</A>: I have a domain for which some local parts must be delivered locally,
+<LI><A NAME="TOC109" HREF="FAQ.html#SEC109">Q0415</A>: Exim isn't recognizing certain forms of local address.
+<LI><A NAME="TOC110" HREF="FAQ.html#SEC110">Q0416</A>: I have a domain for which some local parts must be delivered locally,
but the remainder are to be treated like any other remote addresses.
-<LI><A NAME="TOC94" HREF="FAQ.html#SEC94">Q0417</A>: What I really need is the ability to obtain the result of a pipe
+<LI><A NAME="TOC111" HREF="FAQ.html#SEC111">Q0417</A>: What I really need is the ability to obtain the result of a pipe
command so that I can filter externally and redirect internally. Is
this possible?
-<LI><A NAME="TOC95" HREF="FAQ.html#SEC95">Q0418</A>: When I set a suffix on one of my directors, it doesn't get stripped when
+<LI><A NAME="TOC112" HREF="FAQ.html#SEC112">Q0418</A>: When I set a suffix on one of my directors, it doesn't get stripped when
checking the <TT>local_parts</TT> option. Why is this?
-<LI><A NAME="TOC96" HREF="FAQ.html#SEC96">Q0419</A>: Why will Exim deliver a message locally to any username that is longer
+<LI><A NAME="TOC113" HREF="FAQ.html#SEC113">Q0419</A>: Why will Exim deliver a message locally to any username that is longer
than 8 characters as long as the first 8 characters match one of the
local usernames?
-<LI><A NAME="TOC97" HREF="FAQ.html#SEC97">Q0420</A>: Why am I seeing the error "bad mode (100664) for <B><B>/home/test/.forward</B></B>
+<LI><A NAME="TOC114" HREF="FAQ.html#SEC114">Q0420</A>: Why am I seeing the error "bad mode (100664) for <B><B>/home/test/.forward</B></B>
(userforward director)"? I've looked through the documentation but can't
see anything to suggest that exim has to do anything other than read the
<B>.forward</B> file.
-<LI><A NAME="TOC98" HREF="FAQ.html#SEC98">Q0421</A>: How can I arrange that messages larger than some limit are handled by
+<LI><A NAME="TOC115" HREF="FAQ.html#SEC115">Q0421</A>: How can I arrange that messages larger than some limit are handled by
a special director?
-<LI><A NAME="TOC99" HREF="FAQ.html#SEC99">Q0422</A>: When a user's <B>.forward</B> file is syntactially invalid, Exim defers
+<LI><A NAME="TOC116" HREF="FAQ.html#SEC116">Q0422</A>: When a user's <B>.forward</B> file is syntactially invalid, Exim defers
delivery of all messages to that user, which sometimes include the
user's own test messages. Can it be told to ignore the <B>.forward</B> file
and/or inform the user of the error?
-<LI><A NAME="TOC100" HREF="FAQ.html#SEC100">Q0423</A>: I have some users on my system with upper case letters in their login
+<LI><A NAME="TOC117" HREF="FAQ.html#SEC117">Q0423</A>: I have some users on my system with upper case letters in their login
names, but these are not recognized.
-<LI><A NAME="TOC101" HREF="FAQ.html#SEC101">Q0424</A>: I have unset <TT>locally_caseless</TT> because my users have upper case letters
+<LI><A NAME="TOC118" HREF="FAQ.html#SEC118">Q0424</A>: I have unset <TT>locally_caseless</TT> because my users have upper case letters
in their login names, but incoming mail now has to use the correct case.
Can I relax this somehow?
-<LI><A NAME="TOC102" HREF="FAQ.html#SEC102">Q0425</A>: I want to look up local users in an SQL database instead of looking in
+<LI><A NAME="TOC119" HREF="FAQ.html#SEC119">Q0425</A>: I want to look up local users in an SQL database instead of looking in
the passwd file.
-<LI><A NAME="TOC103" HREF="FAQ.html#SEC103">Q0426</A>: Is it possible for Exim to use a SQL database like MySQL for its lists
+<LI><A NAME="TOC120" HREF="FAQ.html#SEC120">Q0426</A>: Is it possible for Exim to use a SQL database like MySQL for its lists
of virtual domains and explicit aliases?
-<LI><A NAME="TOC104" HREF="FAQ.html#SEC104">Q0427</A>: Can I use my existing alias files and forward files as well as procmail
+<LI><A NAME="TOC121" HREF="FAQ.html#SEC121">Q0427</A>: Can I use my existing alias files and forward files as well as procmail
and effectively drop in exim in place of Sendmail ?
-<LI><A NAME="TOC105" HREF="FAQ.html#SEC105">Q0428</A>: How can I route mail for user <B>X@local</B> to a smarthost if X doesn't exist
+<LI><A NAME="TOC122" HREF="FAQ.html#SEC122">Q0428</A>: How can I route mail for user <B>X@local</B> to a smarthost if X doesn't exist
on the local host?
-<LI><A NAME="TOC106" HREF="FAQ.html#SEC106">Q0429</A>: What is quickest way to set up Exim so any message sent to a non-
+<LI><A NAME="TOC123" HREF="FAQ.html#SEC123">Q0429</A>: What is quickest way to set up Exim so any message sent to a non-
existing user would bounce back with a different message, based
on the name of non-existing user?
-<LI><A NAME="TOC107" HREF="FAQ.html#SEC107">Q0430</A>: I am building some largish mailing lists with Majordomo, and was
+<LI><A NAME="TOC124" HREF="FAQ.html#SEC124">Q0430</A>: I am building some largish mailing lists with Majordomo, and was
wondering if it worth leaving the actually list expansion to the
<B>aliasfile</B> :include: mechanism or should I consider using the <B>forwardfile</B>
transport? Is there any real difference in terms of facilities and/or
performance, and are the expansions basically the same code anyway?
-<LI><A NAME="TOC108" HREF="FAQ.html#SEC108">Q0431</A>: What do I need to do to make Exim handle <B>/usr/ucb/vacation</B> processing
+<LI><A NAME="TOC125" HREF="FAQ.html#SEC125">Q0431</A>: What do I need to do to make Exim handle <B>/usr/ucb/vacation</B> processing
automatically, so that people could just create a .<B>vacation.msg</B> file in
their home directory and not have to edit their <B>.forward</B> file?
-<LI><A NAME="TOC109" HREF="FAQ.html#SEC109">Q0432</A>: I want to use a default entry in my alias file, but it picks up the
+<LI><A NAME="TOC126" HREF="FAQ.html#SEC126">Q0432</A>: I want to use a default entry in my alias file, but it picks up the
local parts that the aliases generate. For example, if the alias file
is
-<LI><A NAME="TOC110" HREF="FAQ.html#SEC110">Q0433</A>: I have some obsolete domains which people have been warned not to use
+<LI><A NAME="TOC127" HREF="FAQ.html#SEC127">Q0433</A>: I have some obsolete domains which people have been warned not to use
any more. How can I arrange to delete any mail that is sent to them?
-<LI><A NAME="TOC111" HREF="FAQ.html#SEC111">Q0434</A>: How can I arrange that mail addressed to <B><B>anything@something.mydomain.com</B></B>
+<LI><A NAME="TOC128" HREF="FAQ.html#SEC128">Q0434</A>: How can I arrange that mail addressed to <B><B>anything@something.mydomain.com</B></B>
gets delivered to <B><B>something@mydomain.com</B>?</B>
-<LI><A NAME="TOC112" HREF="FAQ.html#SEC112">Q0435</A>: I can't get a regular expression to work in this <TT>local_parts</TT> option on
+<LI><A NAME="TOC129" HREF="FAQ.html#SEC129">Q0435</A>: I can't get a regular expression to work in this <TT>local_parts</TT> option on
one of my directors:
-<LI><A NAME="TOC113" HREF="FAQ.html#SEC113">Q0436</A>: How can I arrange for all addresses in a group of domains <B>*.example.com</B>
+<LI><A NAME="TOC130" HREF="FAQ.html#SEC130">Q0436</A>: How can I arrange for all addresses in a group of domains <B>*.example.com</B>
to share the same alias file? I have a number of such groups.
-<LI><A NAME="TOC114" HREF="FAQ.html#SEC114">Q0437</A>: When Exim tries to read <B><B>/usr/lib/majordomo/lists/lists.aliases</B></B> it is
+<LI><A NAME="TOC131" HREF="FAQ.html#SEC131">Q0437</A>: When Exim tries to read <B><B>/usr/lib/majordomo/lists/lists.aliases</B></B> it is
giving "Permission denied", but that file is world-readable!
+<LI><A NAME="TOC132" HREF="FAQ.html#SEC132">Q0438</A>: Some of our users have no home directories; the field in the password
+ file contains <B>/no/home/dir</B>. This causes the error "failed to stat
+ <B>/no/home/dir</B> (No such file or directory)" when Exim tries to look for a
+ <B>.forward</B> file, and the delivery is deferred.
+<LI><A NAME="TOC133" HREF="FAQ.html#SEC133">Q0439</A>: How can I disable Exim's de-duplication features? I want it to do two
+ deliveries if two different aliases expand to the same address.
+<LI><A NAME="TOC134" HREF="FAQ.html#SEC134">Q0440</A>: I set up an <B>aliasfile</B> director using MySQL, but it doesn't use the new
+ addresses. This it my director:
+<LI><A NAME="TOC135" HREF="FAQ.html#SEC135">Q0441</A>: I received a message with a Subject: line that contained a non-printing
+ character (a carriage return). This messed up my filter file. Is there a
+ way to get round it?
+<LI><A NAME="TOC136" HREF="FAQ.html#SEC136">Q0442</A>: My users' mailboxes are distributed between several servers according to
+ the first letter of the user name. All the servers receive incoming mail
+ at random. I would like to have the same configuration file for all the
+ servers, which does local delivery for the mailboxes it holds, and sends
+ other addresses to the correct other server. Is this possible?
+<LI><A NAME="TOC137" HREF="FAQ.html#SEC137">Q0443</A>: I want to search for '$' in the subject line, but I can't seem to get
+ the syntax. The obvious choice, '\$' doesn't work. Any help?
+<LI><A NAME="TOC138" HREF="FAQ.html#SEC138">Q0444</A>: One of the things I want to set up is for <B>anything@onedomain</B> to forward
+ to <B><B>anything@anotherdomain.</B></B> I tried adding <B>$local_part@anotherdomain</B> to
+ my aliases but it did not expand - it sent it to that literal address.
+<LI><A NAME="TOC139" HREF="FAQ.html#SEC139">Q0445</A>: How can I have an address looked up in two different alias files, and
+ delivered to all the addresses that are found?
+<LI><A NAME="TOC140" HREF="FAQ.html#SEC140">Q0446</A>: I've converted from Sendmail, and I notice that Exim doesn't make use
+ of the "owner-" entries in my alias file to change the sender address in
+ outgoing messages to a mailing list.
</UL>
-<A NAME="TOC115" HREF="FAQ.html#SEC115">5. DELIVERY</A>
+<A NAME="TOC141" HREF="FAQ.html#SEC141">5. DELIVERY</A>
<UL>
-<LI><A NAME="TOC116" HREF="FAQ.html#SEC116">Q0501</A>: What does the error "Neither the <I>xxx</I> director nor the <I>yyy</I> transport set
+<LI><A NAME="TOC142" HREF="FAQ.html#SEC142">Q0501</A>: What does the error "Neither the <I>xxx</I> director nor the <I>yyy</I> transport set
a uid for local delivery of..." mean?
-<LI><A NAME="TOC117" HREF="FAQ.html#SEC117">Q0502</A>: Exim won't deliver to a host with no MX record.
-<LI><A NAME="TOC118" HREF="FAQ.html#SEC118">Q0503</A>: How should Exim be configured when it is acting as a temporary storage
+<LI><A NAME="TOC143" HREF="FAQ.html#SEC143">Q0502</A>: Exim won't deliver to a host with no MX record.
+<LI><A NAME="TOC144" HREF="FAQ.html#SEC144">Q0503</A>: How should Exim be configured when it is acting as a temporary storage
system for a domain on a dial-up host?
-<LI><A NAME="TOC119" HREF="FAQ.html#SEC119">Q0504</A>: I would like to deliver mail addressed to a given domain normally, but
+<LI><A NAME="TOC145" HREF="FAQ.html#SEC145">Q0504</A>: I would like to deliver mail addressed to a given domain normally, but
also to generate a message to the envelope sender.
-<LI><A NAME="TOC120" HREF="FAQ.html#SEC120">Q0505</A>: Exim keeps crashing with segmentation errors (signal 11 or 139) during
+<LI><A NAME="TOC146" HREF="FAQ.html#SEC146">Q0505</A>: Exim keeps crashing with segmentation errors (signal 11 or 139) during
delivery. This seems to happen when it is about to contact a remote
host or when a delivery is deferred.
-<LI><A NAME="TOC121" HREF="FAQ.html#SEC121">Q0506</A>: Whenever Exim tries to do a local delivery, it gives a permission denied
+<LI><A NAME="TOC147" HREF="FAQ.html#SEC147">Q0506</A>: Whenever Exim tries to do a local delivery, it gives a permission denied
error for the <B>.forward</B> file, like this:
-<LI><A NAME="TOC122" HREF="FAQ.html#SEC122">Q0507</A>: I have installed Exim, but now I can't mail to root any more. Why is
+<LI><A NAME="TOC148" HREF="FAQ.html#SEC148">Q0507</A>: I have installed Exim, but now I can't mail to root any more. Why is
this?
-<LI><A NAME="TOC123" HREF="FAQ.html#SEC123">Q0508</A>: How can I stop undeliverable bounce messages (e.g. to routeable, but
+<LI><A NAME="TOC149" HREF="FAQ.html#SEC149">Q0508</A>: How can I stop undeliverable bounce messages (e.g. to routeable, but
undeliverable, spammer senders) from clogging up the queue for days?
-<LI><A NAME="TOC124" HREF="FAQ.html#SEC124">Q0509</A>: How can mails that are being routed through directors other than
+<LI><A NAME="TOC150" HREF="FAQ.html#SEC150">Q0509</A>: How can mails that are being routed through directors other than
localuser be delivered under the uid of the recipient?
-<LI><A NAME="TOC125" HREF="FAQ.html#SEC125">Q0510</A>: I want to use MMDF-style mailboxes. How can I get Exim to append the
+<LI><A NAME="TOC151" HREF="FAQ.html#SEC151">Q0510</A>: I want to use MMDF-style mailboxes. How can I get Exim to append the
ctrl-A characters that separate indvidual emails?
-<LI><A NAME="TOC126" HREF="FAQ.html#SEC126">Q0511</A>: I have an ISDN connection and would like a way of running the queue
+<LI><A NAME="TOC152" HREF="FAQ.html#SEC152">Q0511</A>: I have an ISDN connection and would like a way of running the queue
automatically when it is up.
-<LI><A NAME="TOC127" HREF="FAQ.html#SEC127">Q0512</A>: If a user's mailbox is over quota, is there a way for me to set it up so
+<LI><A NAME="TOC153" HREF="FAQ.html#SEC153">Q0512</A>: If a user's mailbox is over quota, is there a way for me to set it up so
that the mail bounces to the sender and is NOT stored in the mail queue?
-<LI><A NAME="TOC128" HREF="FAQ.html#SEC128">Q0513</A>: I'm using tmail to do local deliveries, but when I turned on the
+<LI><A NAME="TOC154" HREF="FAQ.html#SEC154">Q0513</A>: I'm using tmail to do local deliveries, but when I turned on the
<TT>use_crlf</TT> option on the pipe transport (tmail prefers \r\n terminations)
message bodies started to vanish.
-<LI><A NAME="TOC129" HREF="FAQ.html#SEC129">Q0514</A>: What does the message "Unable to get root to set uid and gid
+<LI><A NAME="TOC155" HREF="FAQ.html#SEC155">Q0514</A>: What does the message "Unable to get root to set uid and gid
for local delivery to <I>xxx</I>: uid=<I>yyy</I> euid=<I>zzz</I>" mean?
-<LI><A NAME="TOC130" HREF="FAQ.html#SEC130">Q0515</A>: I upgraded to 2.04 and now my Envelope-To: header for my virtual domains
+<LI><A NAME="TOC156" HREF="FAQ.html#SEC156">Q0515</A>: I upgraded to 2.04 and now my Envelope-To: header for my virtual domains
is gone. Any idea how to get it back?
-<LI><A NAME="TOC131" HREF="FAQ.html#SEC131">Q0516</A>: The Exim log records the arrival of a message, and then "Completed",
+<LI><A NAME="TOC157" HREF="FAQ.html#SEC157">Q0516</A>: The Exim log records the arrival of a message, and then "Completed",
without logging any deliveries. What's going on?
-<LI><A NAME="TOC132" HREF="FAQ.html#SEC132">Q0517</A>: When I activate "return receipt" for example in Netscape Mailbox
+<LI><A NAME="TOC158" HREF="FAQ.html#SEC158">Q0517</A>: When I activate "return receipt" for example in Netscape Mailbox
sending options, then I get an error message from Exim... something
like "not supported". Can I activate delivery confirmations?
-<LI><A NAME="TOC133" HREF="FAQ.html#SEC133">Q0518</A>: When I dial up to collect mail from my ISP, only the first 10 messages
+<LI><A NAME="TOC159" HREF="FAQ.html#SEC159">Q0518</A>: When I dial up to collect mail from my ISP, only the first 10 messages
get delivered immediately; the remainder just sit on the queue until a
queue runner process finds them.
-<LI><A NAME="TOC134" HREF="FAQ.html#SEC134">Q0519</A>: My ISP's mail server is rejecting bounce messages from Exim, complaining
+<LI><A NAME="TOC160" HREF="FAQ.html#SEC160">Q0519</A>: 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?
-<LI><A NAME="TOC135" HREF="FAQ.html#SEC135">Q0520</A>: What does the message "retry time not reached [for any host]" on the log
+<LI><A NAME="TOC161" HREF="FAQ.html#SEC161">Q0520</A>: What does the message "retry time not reached [for any host]" on the log
mean? Why won't Exim try to deliver the message?
-<LI><A NAME="TOC136" HREF="FAQ.html#SEC136">Q0521</A>: RFC 1985 specifies that the SMTP command "ETRN <B>host.domain"</B> causes all
+<LI><A NAME="TOC162" HREF="FAQ.html#SEC162">Q0521</A>: RFC 1985 specifies that the SMTP command "ETRN <B>host.domain"</B> causes all
mail queued for that host, no matter what domain it's for, to be
dequeued. Why doesn't Exim support this?
-<LI><A NAME="TOC137" HREF="FAQ.html#SEC137">Q0522</A>: If email has been deferred to a member on a local mailing list
+<LI><A NAME="TOC163" HREF="FAQ.html#SEC163">Q0522</A>: If email has been deferred to a member on a local mailing list
(implemented through forward files), and one of our ETRN clients is on
this mailing list, the <B>-R</B> won't "flush" the mailing list message for
that client.
-<LI><A NAME="TOC138" HREF="FAQ.html#SEC138">Q0523</A>: Exim seems to be sending the same message twice, according to the log,
+<LI><A NAME="TOC164" HREF="FAQ.html#SEC164">Q0523</A>: Exim seems to be sending the same message twice, according to the log,
although there is a difference in capitalization of the local part of
the address.
-<LI><A NAME="TOC139" HREF="FAQ.html#SEC139">Q0524</A>: How can I force the next retry time for a host to be now?
-<LI><A NAME="TOC140" HREF="FAQ.html#SEC140">Q0525</A>: I set up "|/bin/grep Subject|/usr/bin/smbclient <B>-M</B> <netbiosname>" as an
+<LI><A NAME="TOC165" HREF="FAQ.html#SEC165">Q0524</A>: How can I force the next retry time for a host to be now?
+<LI><A NAME="TOC166" HREF="FAQ.html#SEC166">Q0525</A>: I set up "|/bin/grep Subject|/usr/bin/smbclient <B>-M</B> <netbiosname>" as an
alias but it doesn't work.
-<LI><A NAME="TOC141" HREF="FAQ.html#SEC141">Q0526</A>: Why does the pipe transport add a line starting with ">From" to
+<LI><A NAME="TOC167" HREF="FAQ.html#SEC167">Q0526</A>: Why does the pipe transport add a line starting with ">From" to
messages?
-<LI><A NAME="TOC142" HREF="FAQ.html#SEC142">Q0527</A>: I have set <TT>fallback_hosts</TT> on my smtp transport, but after the error
- <B>"sem@chat.ru</B> cannot be resolved at this time" Exim isn't using them.
-<LI><A NAME="TOC143" HREF="FAQ.html#SEC143">Q0528</A>: After the holidays my ISP has always hundreds of e-mails waiting for me.
+<LI><A NAME="TOC168" HREF="FAQ.html#SEC168">Q0527</A>: I have set <TT>fallback_hosts</TT> on my smtp transport, but after the error
+ <B><B>"sem@chat.ru</B></B> cannot be resolved at this time" Exim isn't using them.
+<LI><A NAME="TOC169" HREF="FAQ.html#SEC169">Q0528</A>: After the holidays my ISP has always hundreds of e-mails waiting for me.
These are forced down Exim's throat in one go. Exim spawns a lot of
kids, but is there some limit to the number of processes it creates?
-<LI><A NAME="TOC144" HREF="FAQ.html#SEC144">Q0529</A>: When a message in the queue got to 12h old, Exim wrote 'retry timeout
+<LI><A NAME="TOC170" HREF="FAQ.html#SEC170">Q0529</A>: When a message in the queue got to 12h old, Exim wrote 'retry timeout
exceeded' and removed <EM>all</EM> messages in the queue to this host - even
recent messages. How I can avoid this behaviour? I only want to remove
messages that have exceeded the maximum retry time.
-<LI><A NAME="TOC145" HREF="FAQ.html#SEC145">Q0530</A>: Can Exim add a Content-Length: header to messages it delivers?
-<LI><A NAME="TOC146" HREF="FAQ.html#SEC146">Q0531</A>: Exim seems to be trying to deliver a message every 10 minutes, though
+<LI><A NAME="TOC171" HREF="FAQ.html#SEC171">Q0530</A>: Can Exim add a Content-Length: header to messages it delivers?
+<LI><A NAME="TOC172" HREF="FAQ.html#SEC172">Q0531</A>: Exim seems to be trying to deliver a message every 10 minutes, though
the retry rules specify longer times after a while, because it is
writing a log entry every time, like this:
-<LI><A NAME="TOC147" HREF="FAQ.html#SEC147">Q0532</A>: I am trying to set exim up to have a automatic failover if it sees that
+<LI><A NAME="TOC173" HREF="FAQ.html#SEC173">Q0532</A>: I am trying to set exim up to have a automatic failover if it sees that
the system that it is sending all mail to is down.
-<LI><A NAME="TOC148" HREF="FAQ.html#SEC148">Q0533</A>: I can't get Exim to deliver over NFS. I get the error "fcntl() failed:
+<LI><A NAME="TOC174" HREF="FAQ.html#SEC174">Q0533</A>: I can't get Exim to deliver over NFS. I get the error "fcntl() failed:
No locks available", though the lock daemon is running on the NFS server
and other hosts are able to access it.
-<LI><A NAME="TOC149" HREF="FAQ.html#SEC149">Q0534</A>: Why does Exim bounce messages without even attempting delivery, giving
+<LI><A NAME="TOC175" HREF="FAQ.html#SEC175">Q0534</A>: Why does Exim bounce messages without even attempting delivery, giving
the error "retry time not reached for any host after a long failure
period"?
-<LI><A NAME="TOC150" HREF="FAQ.html#SEC150">Q0535</A>: My <B>.forward</B> file is "|/usr/bin/procmail <B>-f-"</B> and mail gets delivered,
+<LI><A NAME="TOC176" HREF="FAQ.html#SEC176">Q0535</A>: My <B>.forward</B> file is "|/usr/bin/procmail <B>-f-"</B> and mail gets delivered,
but there was a bounce to the sender, sending him the output of procmail.
How can I prevent this?
+<LI><A NAME="TOC177" HREF="FAQ.html#SEC177">Q0536</A>: Can I write an ordinary file when I running a perl script as a transport
+ filter for <TT>remote_smtp</TT> and <TT>address_pipe</TT> transports?
+<LI><A NAME="TOC178" HREF="FAQ.html#SEC178">Q0537</A>: I have some mails on my queues that are sticking around longer than
+ the retry time indicates they should. They are all getting frozen
+ because some remote admin has set their MX record to 127.0.0.1.
+<LI><A NAME="TOC179" HREF="FAQ.html#SEC179">Q0538</A>: My <B>/var/spool/mail</B> has grown drastically. Is there any possibility of
+ using two files in <B>exim.cfg</B> ?
+<LI><A NAME="TOC180" HREF="FAQ.html#SEC180">Q0539</A>: Sendmail has a program called smrsh that restricts what binaries
+ can be run from sendmail aliases. Is there someting like this in Exim ?
+<LI><A NAME="TOC181" HREF="FAQ.html#SEC181">Q0540</A>: I wish to have large emails go out one at a time.
</UL>
-<A NAME="TOC151" HREF="FAQ.html#SEC151">6. UUCP</A>
+<A NAME="TOC182" HREF="FAQ.html#SEC182">6. UUCP</A>
<UL>
-<LI><A NAME="TOC152" HREF="FAQ.html#SEC152">Q0601</A>: The MX records for some UUCP domains point to my local host. How do I
+<LI><A NAME="TOC183" HREF="FAQ.html#SEC183">Q0601</A>: The MX records for some UUCP domains point to my local host. How do I
get it to pass the messages on to UUCP?
-<LI><A NAME="TOC153" HREF="FAQ.html#SEC153">Q0602</A>: How can I get Exim to handle "bang path" addresses?
-<LI><A NAME="TOC154" HREF="FAQ.html#SEC154">Q0603</A>: We see something strange on our system in regards to mail comming in via
+<LI><A NAME="TOC184" HREF="FAQ.html#SEC184">Q0602</A>: How can I get Exim to handle "bang path" addresses?
+<LI><A NAME="TOC185" HREF="FAQ.html#SEC185">Q0603</A>: We see something strange on our system in regards to mail comming in via
rmail from a UUCP link. The sender is being set to mailmaster instead of
the real sender, and a Sender: header is being added to the message.
</UL>
-<A NAME="TOC155" HREF="FAQ.html#SEC155">7. PERFORMANCE</A>
+<A NAME="TOC186" HREF="FAQ.html#SEC186">7. PERFORMANCE</A>
<UL>
-<LI><A NAME="TOC156" HREF="FAQ.html#SEC156">Q0701</A>: I'm running a large mail server. Should I set <TT>split_spool_directory</TT> to
+<LI><A NAME="TOC187" HREF="FAQ.html#SEC187">Q0701</A>: I'm running a large mail server. Should I set <TT>split_spool_directory</TT> to
improve performance?
-<LI><A NAME="TOC157" HREF="FAQ.html#SEC157">Q0702</A>: How well does Exim scale?
-<LI><A NAME="TOC158" HREF="FAQ.html#SEC158">Q0703</A>: We have a large password file. Can Exim use alternative lookups during
+<LI><A NAME="TOC188" HREF="FAQ.html#SEC188">Q0702</A>: How well does Exim scale?
+<LI><A NAME="TOC189" HREF="FAQ.html#SEC189">Q0703</A>: We have a large password file. Can Exim use alternative lookups during
delivery to speed things up?
+<LI><A NAME="TOC190" HREF="FAQ.html#SEC190">Q0704</A>: I just wondered if it might be helpful to put the hints database on a
+ RAM disk during regular operation. Did anybody try that yet?
</UL>
-<A NAME="TOC159" HREF="FAQ.html#SEC159">8. POLICY CONTROLS</A>
+<A NAME="TOC191" HREF="FAQ.html#SEC191">8. POLICY CONTROLS</A>
<UL>
-<LI><A NAME="TOC160" HREF="FAQ.html#SEC160">Q0801</A>: How do I block unwanted messages from outside my host?
-<LI><A NAME="TOC161" HREF="FAQ.html#SEC161">Q0802</A>: I don't want to block spam entirely; how can I inspect each message
+<LI><A NAME="TOC192" HREF="FAQ.html#SEC192">Q0801</A>: How do I block unwanted messages from outside my host?
+<LI><A NAME="TOC193" HREF="FAQ.html#SEC193">Q0802</A>: I don't want to block spam entirely; how can I inspect each message
before deciding whether to deliver it or not?
-<LI><A NAME="TOC162" HREF="FAQ.html#SEC162">Q0803</A>: How can I test that my spam blocks are working?
-<LI><A NAME="TOC163" HREF="FAQ.html#SEC163">Q0804</A>: How can I test that Exim is correctly configured to use the Realtime
+<LI><A NAME="TOC194" HREF="FAQ.html#SEC194">Q0803</A>: How can I test that my spam blocks are working?
+<LI><A NAME="TOC195" HREF="FAQ.html#SEC195">Q0804</A>: How can I test that Exim is correctly configured to use the Realtime
Blocking List (RBL)?
-<LI><A NAME="TOC164" HREF="FAQ.html#SEC164">Q0805</A>: How can I use <B>tcpwrappers</B> in conjunction with Exim?
-<LI><A NAME="TOC165" HREF="FAQ.html#SEC165">Q0806</A>: How can I get POP-auth-before-relay support in Exim?
-<LI><A NAME="TOC166" HREF="FAQ.html#SEC166">Q0807</A>: I have one or two cases where my machine correctly rejects messages, but
+<LI><A NAME="TOC196" HREF="FAQ.html#SEC196">Q0805</A>: How can I use <B>tcpwrappers</B> in conjunction with Exim?
+<LI><A NAME="TOC197" HREF="FAQ.html#SEC197">Q0806</A>: How can I get POP-auth-before-relay support in Exim?
+<LI><A NAME="TOC198" HREF="FAQ.html#SEC198">Q0807</A>: I have one or two cases where my machine correctly rejects messages, but
the remote machine is quite persistent, and keeps trying over and over.
-<LI><A NAME="TOC167" HREF="FAQ.html#SEC167">Q0808</A>: I am seeing the error "no valid sender in message headers: return path
+<LI><A NAME="TOC199" HREF="FAQ.html#SEC199">Q0808</A>: I am seeing the error "no valid sender in message headers: return path
is <>" in the reject log. Isn't <> a valid return path for error
messages?
-<LI><A NAME="TOC168" HREF="FAQ.html#SEC168">Q0809</A>: Let's say that we want to run a mail server that does not care if you
+<LI><A NAME="TOC200" HREF="FAQ.html#SEC200">Q0809</A>: Let's say that we want to run a mail server that does not care if you
have proper reverse DNS. If you include <TT>host_reject</TT> lines in your
config file, Exim will always reject connections from such hosts. How
can this be avoided?
-<LI><A NAME="TOC169" HREF="FAQ.html#SEC169">Q0810</A>: Is there a way to prevent lookups in the RBL for local hosts?
-<LI><A NAME="TOC170" HREF="FAQ.html#SEC170">Q0811</A>: How can I set up the <TT>sender_reject</TT> option in my config file so I can
+<LI><A NAME="TOC201" HREF="FAQ.html#SEC201">Q0810</A>: Is there a way to prevent lookups in the RBL for local hosts?
+<LI><A NAME="TOC202" HREF="FAQ.html#SEC202">Q0811</A>: How can I set up the <TT>sender_reject</TT> option in my config file so I can
reject mail by matching regular expressions?
-<LI><A NAME="TOC171" HREF="FAQ.html#SEC171">Q0812</A>: Normally <TT>sender_reject_recipients</TT> works fine, but addresses that have
+<LI><A NAME="TOC203" HREF="FAQ.html#SEC203">Q0812</A>: Normally <TT>sender_reject_recipients</TT> works fine, but addresses that have
some uppercase letters in them seem to come through.
-<LI><A NAME="TOC172" HREF="FAQ.html#SEC172">Q0813</A>: I want to accept some sender addresses, even though they do not verify.
+<LI><A NAME="TOC204" HREF="FAQ.html#SEC204">Q0813</A>: I want to accept some sender addresses, even though they do not verify.
There doesn't seem to be an option for verification exceptions, so how
can I do this?
-<LI><A NAME="TOC173" HREF="FAQ.html#SEC173">Q0814</A>: We are being plagued by forged mail coming from a number of different
+<LI><A NAME="TOC205" HREF="FAQ.html#SEC205">Q0814</A>: We are being plagued by forged mail coming from a number of different
hosts and sender addresses. The guy however leaves a fingerprint. The
first received line always contains 'Received: from baby'. What is the
best suggested way for eliminiating him from our systems?
-<LI><A NAME="TOC174" HREF="FAQ.html#SEC174">Q0815</A>: I have set <TT>host_accept_relay</TT>, but my host still refuses to relay from
+<LI><A NAME="TOC206" HREF="FAQ.html#SEC206">Q0815</A>: I have set <TT>host_accept_relay</TT>, but my host still refuses to relay from
matching hosts.
-<LI><A NAME="TOC175" HREF="FAQ.html#SEC175">Q0816</A>: How can I run customized verification checks on incoming addresses?
-<LI><A NAME="TOC176" HREF="FAQ.html#SEC176">Q0817</A>: Does Exim apply RBL checks to error messages, those with an envelope
+<LI><A NAME="TOC207" HREF="FAQ.html#SEC207">Q0816</A>: How can I run customized verification checks on incoming addresses?
+<LI><A NAME="TOC208" HREF="FAQ.html#SEC208">Q0817</A>: Does Exim apply RBL checks to error messages, those with an envelope
sender of "<>" ?
-<LI><A NAME="TOC177" HREF="FAQ.html#SEC177">Q0818</A>: I want to be able to set up a list, similar to <TT>sender_reject_recipients</TT>,
+<LI><A NAME="TOC209" HREF="FAQ.html#SEC209">Q0818</A>: I want to be able to set up a list, similar to <TT>sender_reject_recipients</TT>,
but with a user-defined message. I believe I have to use a director for
this.
-<LI><A NAME="TOC178" HREF="FAQ.html#SEC178">Q0819</A>: I want to reject certain sender-recipient combinations, with a specific
+<LI><A NAME="TOC210" HREF="FAQ.html#SEC210">Q0819</A>: I want to reject certain sender-recipient combinations, with a specific
message for each such combination.
-<LI><A NAME="TOC179" HREF="FAQ.html#SEC179">Q0820</A>: Will Exim allow me to create a file of regexs and match incoming
+<LI><A NAME="TOC211" HREF="FAQ.html#SEC211">Q0820</A>: Will Exim allow me to create a file of regexs and match incoming
external email to the list - and if a match is found file the offending
message into a special location? Also is it possible to make exim only
filter parts of an incoming email - e.g. ignore large MIME attachments
for example and only process text/plain?
-<LI><A NAME="TOC180" HREF="FAQ.html#SEC180">Q0821</A>: I've hacked sendmail to make an ioctl call at the time of the SMTP RCPT
+<LI><A NAME="TOC212" HREF="FAQ.html#SEC212">Q0821</A>: I've hacked sendmail to make an ioctl call at the time of the SMTP RCPT
command, to check if a user has exceeded their email quota. If they have
I issue a temporary failure and a message - can I do this with Exim?
-<LI><A NAME="TOC181" HREF="FAQ.html#SEC181">Q0822</A>: I'm looking for a rule to reject special unknown recipients.
-<LI><A NAME="TOC182" HREF="FAQ.html#SEC182">Q0823</A>: I'd like to pass all messages through a virus-scanning system before
+<LI><A NAME="TOC213" HREF="FAQ.html#SEC213">Q0822</A>: I'm looking for a rule to reject special unknown recipients.
+<LI><A NAME="TOC214" HREF="FAQ.html#SEC214">Q0823</A>: I'd like to pass all messages through a virus-scanning system before
delivery. Can Exim do this?
-<LI><A NAME="TOC183" HREF="FAQ.html#SEC183">Q0824</A>: How can I accomplish this: a message sent from any host must either be
+<LI><A NAME="TOC215" HREF="FAQ.html#SEC215">Q0824</A>: How can I accomplish this: a message sent from any host must either be
sending to a domain in a list (a dbm file) or the sender's address
domain must be in the list.
-<LI><A NAME="TOC184" HREF="FAQ.html#SEC184">Q0825</A>: I've set <TT>relay_domains</TT> and <TT>sender_address_relay</TT>, but if <B>user@mydomain</B>
+<LI><A NAME="TOC216" HREF="FAQ.html#SEC216">Q0825</A>: I've set <TT>relay_domains</TT> and <TT>sender_address_relay</TT>, but if <B>user@mydomain</B>
tries sending to an arbitrary domain, Exim rejects it.
-<LI><A NAME="TOC185" HREF="FAQ.html#SEC185">Q0826</A>: I set <TT>sender_reject_recipients</TT>, but Exim is not rejecting those
+<LI><A NAME="TOC217" HREF="FAQ.html#SEC217">Q0826</A>: I set <TT>sender_reject_recipients</TT>, but Exim is not rejecting those
recipients.
-<LI><A NAME="TOC186" HREF="FAQ.html#SEC186">Q0827</A>: I can't find an option to deny "RCPT TO:" addresses.
-<LI><A NAME="TOC187" HREF="FAQ.html#SEC187">Q0828</A>: My problem is that Exim replaces <B>$local_part</B> with an empty string in the
+<LI><A NAME="TOC218" HREF="FAQ.html#SEC218">Q0827</A>: I can't find an option to deny "RCPT TO:" addresses.
+<LI><A NAME="TOC219" HREF="FAQ.html#SEC219">Q0828</A>: My problem is that Exim replaces <B>$local_part</B> with an empty string in the
system filtering. What's wrong or what did I miss?
-<LI><A NAME="TOC188" HREF="FAQ.html#SEC188">Q0829</A>: Using <B>$recipients</B> in a system filter gives me another problem: how can
+<LI><A NAME="TOC220" HREF="FAQ.html#SEC220">Q0829</A>: Using <B>$recipients</B> in a system filter gives me another problem: how can
I do a string lookup if <B>$recipients</B> is a list of addresses?
-<LI><A NAME="TOC189" HREF="FAQ.html#SEC189">Q0830</A>: Is there a way to configure Exim to reject mail to a certain local host?
-<LI><A NAME="TOC190" HREF="FAQ.html#SEC190">Q0831</A>: Exim sometimes rejects messages with bad senders after the DATA and
+<LI><A NAME="TOC221" HREF="FAQ.html#SEC221">Q0830</A>: Is there a way to configure Exim to reject mail to a certain local host?
+<LI><A NAME="TOC222" HREF="FAQ.html#SEC222">Q0831</A>: Exim sometimes rejects messages with bad senders after the DATA and
sometimes after the MAIL command. What is the difference?
-<LI><A NAME="TOC191" HREF="FAQ.html#SEC191">Q0832</A>: How can I get Exim to remove attachments from messages?
-<LI><A NAME="TOC192" HREF="FAQ.html#SEC192">Q0833</A>: I ran a relay test against my host and it failed with an address
+<LI><A NAME="TOC223" HREF="FAQ.html#SEC223">Q0832</A>: How can I get Exim to remove attachments from messages?
+<LI><A NAME="TOC224" HREF="FAQ.html#SEC224">Q0833</A>: I ran a relay test against my host and it failed with an address
containing a %, though I don't have <TT>percent_hack_domains</TT> set. Is Exim
broken? This is what the tester said:
+<LI><A NAME="TOC225" HREF="FAQ.html#SEC225">Q0834</A>: How can I arrange for each user to have a file listing the only sender
+ addresses from which she will accept mail? I want to do this so my
+ family members don't get any spam (or other inappropriate mail).
+<LI><A NAME="TOC226" HREF="FAQ.html#SEC226">Q0835</A>: I have the POP-auth-before-relay support in, but I see that Exim still
+ does an RBL lookup before checking the POP authorisation file. How can I
+ prevent it doing an RBL check if the caller is authorized by virtue of a
+ recent POP authentication?
+<LI><A NAME="TOC227" HREF="FAQ.html#SEC227">Q0836</A>: When using Nessus on a system that runs exim, a number of security
+ issues are raised. Nessus complains that exim answers to EXPN and/or
+ VRFY; sometimes it even complains that exim allows relaying.
+<LI><A NAME="TOC228" HREF="FAQ.html#SEC228">Q0837</A>: Could anyone points me to right rules to prevent sending/receiving
+ messages to/for domains which have one MX to localhost or only have
+ address 127.0.0.1 ?
+<LI><A NAME="TOC229" HREF="FAQ.html#SEC229">Q0838</A>: How can I lock out domains that do not have any MX records?
+<LI><A NAME="TOC230" HREF="FAQ.html#SEC230">Q0839</A>: I would like to have a per-user limit for the maximum size of messages
+ that can be sent.
+<LI><A NAME="TOC231" HREF="FAQ.html#SEC231">Q0840</A>: I have set up a DBM (or cdb, or lsearch, or MySQL or whatever) file
+ containing a list of IP addresses for the hosts I want to allow to
+ relay, but when I set <TT>host_accept_relay</TT> to do a lookup on that data, it
+ doesn't work.
</UL>
-<A NAME="TOC193" HREF="FAQ.html#SEC193">9. MAJORDOMO</A>
+<A NAME="TOC232" HREF="FAQ.html#SEC232">9. MAJORDOMO</A>
<UL>
-<LI><A NAME="TOC194" HREF="FAQ.html#SEC194">Q0901</A>: How do I set up Majordomo to work with Exim?
-<LI><A NAME="TOC195" HREF="FAQ.html#SEC195">Q0902</A>: I have set <B>$mailer</B> in <B>majordomo.cf,</B> but it still isn't setting the
+<LI><A NAME="TOC233" HREF="FAQ.html#SEC233">Q0901</A>: How do I set up Majordomo to work with Exim?
+<LI><A NAME="TOC234" HREF="FAQ.html#SEC234">Q0902</A>: I have set <B>$mailer</B> in <B>majordomo.cf,</B> but it still isn't setting the
sender correctly in the messages it sends.
-<LI><A NAME="TOC196" HREF="FAQ.html#SEC196">Q0903</A>: I'm trying to set up majordomo, but I'm getting a "wrong mode" error
+<LI><A NAME="TOC235" HREF="FAQ.html#SEC235">Q0903</A>: I'm trying to set up majordomo, but I'm getting a "wrong mode" error
when I try to send it mail. The panic log entry reads:
-<LI><A NAME="TOC197" HREF="FAQ.html#SEC197">Q0904</A>: I'm getting return code 9 from <B><B>/home/majordomo/majordomo-1.94.4/wrapper</B></B>
+<LI><A NAME="TOC236" HREF="FAQ.html#SEC236">Q0904</A>: I'm getting return code 9 from <B><B>/home/majordomo/majordomo-1.94.4/wrapper</B></B>
when it is passed a message from Exim.
+<LI><A NAME="TOC237" HREF="FAQ.html#SEC237">Q0905</A>: Exim is complaining about an invalid command line when Majordomo tries
+ to send it a message for delivery.
</UL>
-<A NAME="TOC198" HREF="FAQ.html#SEC198">10. REWRITING</A>
+<A NAME="TOC238" HREF="FAQ.html#SEC238">10. REWRITING ADDRESSES</A>
<UL>
-<LI><A NAME="TOC199" HREF="FAQ.html#SEC199">Q1001</A>: How can I get Exim to strip the hostname from the sender's address?
-<LI><A NAME="TOC200" HREF="FAQ.html#SEC200">Q1002</A>: I have Exim configured to remove the hostname portion of the domain on
+<LI><A NAME="TOC239" HREF="FAQ.html#SEC239">Q1001</A>: How can I get Exim to strip the hostname from the sender's address?
+<LI><A NAME="TOC240" HREF="FAQ.html#SEC240">Q1002</A>: I have Exim configured to remove the hostname portion of the domain on
outgoing mail, and yet the hostname is present when the mail gets
delivered.
-<LI><A NAME="TOC201" HREF="FAQ.html#SEC201">Q1003</A>: I want to rewrite local addresses in mail that goes to the outside
+<LI><A NAME="TOC241" HREF="FAQ.html#SEC241">Q1003</A>: I want to rewrite local addresses in mail that goes to the outside
world, but not for messages that remain within the local intranet.
-<LI><A NAME="TOC202" HREF="FAQ.html#SEC202">Q1004</A>: I'm using this rewriting rule to change login names into "friendly"
+<LI><A NAME="TOC242" HREF="FAQ.html#SEC242">Q1004</A>: I'm using this rewriting rule to change login names into "friendly"
names, but if mail comes in for an upper case login name, it doesn't
get rewritten.
-<LI><A NAME="TOC203" HREF="FAQ.html#SEC203">Q1005</A>: Is it possible to completely fail a message if the rewrite rules fail?
-<LI><A NAME="TOC204" HREF="FAQ.html#SEC204">Q1006</A>: I'm using <B>$domain</B> as the key for a lookup in a rewriting rule, but its
+<LI><A NAME="TOC243" HREF="FAQ.html#SEC243">Q1005</A>: Is it possible to completely fail a message if the rewrite rules fail?
+<LI><A NAME="TOC244" HREF="FAQ.html#SEC244">Q1006</A>: I'm using <B>$domain</B> as the key for a lookup in a rewriting rule, but its
contents are not being lowercased. Aren't domains supposed to be handled
caselessly?
-<LI><A NAME="TOC205" HREF="FAQ.html#SEC205">Q1007</A>: I want to rewrite local sender addresses depending on the domain of the
+<LI><A NAME="TOC245" HREF="FAQ.html#SEC245">Q1007</A>: I want to rewrite local sender addresses depending on the domain of the
recipient.
</UL>
-<A NAME="TOC206" HREF="FAQ.html#SEC206">11. HEADERS</A>
+<A NAME="TOC246" HREF="FAQ.html#SEC246">11. HEADERS</A>
<UL>
-<LI><A NAME="TOC207" HREF="FAQ.html#SEC207">Q1101</A>: I would like add some custom headers to selected outgoing mail based on
+<LI><A NAME="TOC247" HREF="FAQ.html#SEC247">Q1101</A>: I would like add some custom headers to selected outgoing mail based on
a specific domain and the subject line.
-<LI><A NAME="TOC208" HREF="FAQ.html#SEC208">Q1102</A>: Is it possible to have Exim add a header to only certain <TT>local_parts</TT> of
+<LI><A NAME="TOC248" HREF="FAQ.html#SEC248">Q1102</A>: Is it possible to have Exim add a header to only certain <TT>local_parts</TT> of
outgoing mail?
-<LI><A NAME="TOC209" HREF="FAQ.html#SEC209">Q1103</A>: How can I remove some part of the Received: header?
-<LI><A NAME="TOC210" HREF="FAQ.html#SEC210">Q1104</A>: How I can insert the PGP header line using exim filters?
+<LI><A NAME="TOC249" HREF="FAQ.html#SEC249">Q1103</A>: How can I remove some part of the Received: header?
+<LI><A NAME="TOC250" HREF="FAQ.html#SEC250">Q1104</A>: How I can insert the PGP header line using exim filters?
+<LI><A NAME="TOC251" HREF="FAQ.html#SEC251">Q1105</A>: I know I can use a system filter to replace certain headers in messages,
+ but how can I add text to existing headers? I want to add [SPAM] to
+ the subject line of messages that appear to be spam.
</UL>
-<A NAME="TOC211" HREF="FAQ.html#SEC211">12. FETCHMAIL</A>
+<A NAME="TOC252" HREF="FAQ.html#SEC252">12. FETCHMAIL</A>
<UL>
-<LI><A NAME="TOC212" HREF="FAQ.html#SEC212">Q1201</A>: When I run fetchmail, I get the error "SMTP listener doesn't like
+<LI><A NAME="TOC253" HREF="FAQ.html#SEC253">Q1201</A>: When I run fetchmail, I get the error "SMTP listener doesn't like
recipient address <B><I>xxx</I>@localhost</B>".
-<LI><A NAME="TOC213" HREF="FAQ.html#SEC213">Q1202</A>: Fetchmail is passing on bounce messages to Exim with the sender address
+<LI><A NAME="TOC254" HREF="FAQ.html#SEC254">Q1202</A>: Fetchmail is passing on bounce messages to Exim with the sender address
set to <B><B><@some.domain</B>></B> which causes Exim to complain, because there is no
local part.
-<LI><A NAME="TOC214" HREF="FAQ.html#SEC214">Q1203</A>: I'm currently using Exim with fetchmail and I'd like to use the RBL on
+<LI><A NAME="TOC255" HREF="FAQ.html#SEC255">Q1203</A>: I'm currently using Exim with fetchmail and I'd like to use the RBL on
Exim, but will it work? Do I need to configure fetchmail any particular
way? As far as Exim knows, all mail is coming from 127.0.01. Will it
check the source address against RBL? Or will it check the From: header?
</UL>
-<A NAME="TOC215" HREF="FAQ.html#SEC215">13. PERL</A>
+<A NAME="TOC256" HREF="FAQ.html#SEC256">13. PERL</A>
<UL>
-<LI><A NAME="TOC216" HREF="FAQ.html#SEC216">Q1301</A>: Exim built with Perl support exits with the error message <B>"./exim:</B> can't
+<LI><A NAME="TOC257" HREF="FAQ.html#SEC257">Q1301</A>: Exim built with Perl support exits with the error message <B>"./exim:</B> can't
load library <B>'libperl.so'".</B>
-<LI><A NAME="TOC217" HREF="FAQ.html#SEC217">Q1302</A>: Exim built with Perl support exits with several error messages of the
+<LI><A NAME="TOC258" HREF="FAQ.html#SEC258">Q1302</A>: Exim built with Perl support exits with several error messages of the
form "undefined reference to `PL_stack_sp'".
</UL>
-<A NAME="TOC218" HREF="FAQ.html#SEC218">14. DIAL-UP</A>
+<A NAME="TOC259" HREF="FAQ.html#SEC259">14. DIAL-UP</A>
<UL>
-<LI><A NAME="TOC219" HREF="FAQ.html#SEC219">Q1401</A>: How can I arrange for mail to other hosts on my local network to be
+<LI><A NAME="TOC260" HREF="FAQ.html#SEC260">Q1401</A>: How can I arrange for mail to other hosts on my local network to be
delivered when I'm not connected to the Internet?
-<LI><A NAME="TOC220" HREF="FAQ.html#SEC220">Q1402</A>: I have a dial-up machine, and I use the <TT>queue_smtp_domains</TT> option so
+<LI><A NAME="TOC261" HREF="FAQ.html#SEC261">Q1402</A>: I have a dial-up machine, and I use the <TT>queue_smtp_domains</TT> option so
that remote mail only goes out when I do a queue run. However, any email
I send with an address <B><B><anything>@aol.com</B></B> is returned within about 15
minutes saying 'retry time exceeded', and all addresses are affected.
-<LI><A NAME="TOC221" HREF="FAQ.html#SEC221">Q1403</A>: How should Exim be configured when it is acting as a temporary storage
+<LI><A NAME="TOC262" HREF="FAQ.html#SEC262">Q1403</A>: How should Exim be configured when it is acting as a temporary storage
system for a domain on a dial-up host?
-<LI><A NAME="TOC222" HREF="FAQ.html#SEC222">Q1404</A>: I have <TT>queue_remote_domains</TT> or <TT>queue_smtp_domains</TT> set, and use <B>-qf</B> to
+<LI><A NAME="TOC263" HREF="FAQ.html#SEC263">Q1404</A>: I have <TT>queue_remote_domains</TT> or <TT>queue_smtp_domains</TT> set, and use <B>-qf</B> to
force delivery of waiting mail when I dial in. How can I arrange for any
new messages that arrive while I'm connected to be delivered immediately?
</UL>
-<A NAME="TOC223" HREF="FAQ.html#SEC223">20. MILLENNIUM</A>
+<A NAME="TOC264" HREF="FAQ.html#SEC264">15. MODIFYING MESSAGE BODIES</A>
+<UL>
+<LI><A NAME="TOC265" HREF="FAQ.html#SEC265">Q1501</A>: How can I add a disclaimer or an advertisement to a message?
+<LI><A NAME="TOC266" HREF="FAQ.html#SEC266">Q1502</A>: How can I remove attachments from messages?
+</UL>
+
+<A NAME="TOC267" HREF="FAQ.html#SEC267">20. MILLENNIUM</A>
<UL>
-<LI><A NAME="TOC224" HREF="FAQ.html#SEC224">Q2000</A>: Are there any Y2K issues with Exim?
+<LI><A NAME="TOC268" HREF="FAQ.html#SEC268">Q2000</A>: Are there any Y2K issues with Exim?
</UL>
-<A NAME="TOC225" HREF="FAQ.html#SEC225">50. MISCELLANEOUS</A>
+<A NAME="TOC269" HREF="FAQ.html#SEC269">50. MISCELLANEOUS</A>
<UL>
-<LI><A NAME="TOC226" HREF="FAQ.html#SEC226">Q5001</A>: What does the error "Unable to get interface configuration: 22 Invalid
+<LI><A NAME="TOC270" HREF="FAQ.html#SEC270">Q5001</A>: What does the error "Unable to get interface configuration: 22 Invalid
argument" mean?
-<LI><A NAME="TOC227" HREF="FAQ.html#SEC227">Q5002</A>: How can I arrange to allow a limited set of users to perform a limited
+<LI><A NAME="TOC271" HREF="FAQ.html#SEC271">Q5002</A>: How can I arrange to allow a limited set of users to perform a limited
set of Exim administration functions? I don't want to put them all in
the exim group.
-<LI><A NAME="TOC228" HREF="FAQ.html#SEC228">Q5003</A>: How can I test for a message's size being greater or less than a given
+<LI><A NAME="TOC272" HREF="FAQ.html#SEC272">Q5003</A>: How can I test for a message's size being greater or less than a given
value in an expansion string?
-<LI><A NAME="TOC229" HREF="FAQ.html#SEC229">Q5004</A>: I want to "tail" the Exim log, but I have a number of other logs I also
+<LI><A NAME="TOC273" HREF="FAQ.html#SEC273">Q5004</A>: I want to "tail" the Exim log, but I have a number of other logs I also
want to "tail", and the number of tailing windows is getting to be a
nuisance.
-<LI><A NAME="TOC230" HREF="FAQ.html#SEC230">Q5005</A>: I would like to have Exim log information written to syslog.
-<LI><A NAME="TOC231" HREF="FAQ.html#SEC231">Q5006</A>: What does the error "Failed to create spool file" mean?
-<LI><A NAME="TOC232" HREF="FAQ.html#SEC232">Q5007</A>: Exim keeps crashing with segmentation errors (signal 11 or 139).
-<LI><A NAME="TOC233" HREF="FAQ.html#SEC233">Q5008</A>: Exim's databases keep getting corrupted.
-<LI><A NAME="TOC234" HREF="FAQ.html#SEC234">Q5009</A>: I've been using an autoreply director to try and mimic a bounce message,
+<LI><A NAME="TOC274" HREF="FAQ.html#SEC274">Q5005</A>: I would like to have Exim log information written to syslog.
+<LI><A NAME="TOC275" HREF="FAQ.html#SEC275">Q5006</A>: What does the error "Failed to create spool file" mean?
+<LI><A NAME="TOC276" HREF="FAQ.html#SEC276">Q5007</A>: Exim keeps crashing with segmentation errors (signal 11 or 139).
+<LI><A NAME="TOC277" HREF="FAQ.html#SEC277">Q5008</A>: Exim's databases keep getting corrupted.
+<LI><A NAME="TOC278" HREF="FAQ.html#SEC278">Q5009</A>: I've been using an autoreply director to try and mimic a bounce message,
but I can't get it to have an envelope from of <>.
-<LI><A NAME="TOC235" HREF="FAQ.html#SEC235">Q5010</A>: I see entries in the log that mention two different IP addresses for the
+<LI><A NAME="TOC279" HREF="FAQ.html#SEC279">Q5010</A>: I see entries in the log that mention two different IP addresses for the
same connection. Why is this? For example:
-<LI><A NAME="TOC236" HREF="FAQ.html#SEC236">Q5011</A>: How can I persuade Exim to accept ETRN commands without the leading
+<LI><A NAME="TOC280" HREF="FAQ.html#SEC280">Q5011</A>: How can I persuade Exim to accept ETRN commands without the leading
# character?
-<LI><A NAME="TOC237" HREF="FAQ.html#SEC237">Q5012</A>: I've recently noticed that emails I send with a Bcc: line are being
+<LI><A NAME="TOC281" HREF="FAQ.html#SEC281">Q5012</A>: I've recently noticed that emails I send with a Bcc: line are being
delivered to their final destination with the Bcc: line still present.
-<LI><A NAME="TOC238" HREF="FAQ.html#SEC238">Q5013</A>: I used gv <B>v3.5.8</B> (ghostview) to try printing <B>spec.ps.</B> After every
+<LI><A NAME="TOC282" HREF="FAQ.html#SEC282">Q5013</A>: I used gv <B>v3.5.8</B> (ghostview) to try printing <B>spec.ps.</B> After every
printed page, the printer ejects a blank sheet. Is this something to do
with using "letter" rather than A4 paper?
-<LI><A NAME="TOC239" HREF="FAQ.html#SEC239">Q5014</A>: I would like to have a separate queue per domain for hosts which dial
+<LI><A NAME="TOC283" HREF="FAQ.html#SEC283">Q5014</A>: I would like to have a separate queue per domain for hosts which dial
in to collect their mail.
-<LI><A NAME="TOC240" HREF="FAQ.html#SEC240">Q5015</A>: A short time after I start Exim I see a <defunct> process. What is
- causing this?
-<LI><A NAME="TOC241" HREF="FAQ.html#SEC241">Q5016</A>: On a reboot, or a restart of the mail system, I see the message "Mailer
+<LI><A NAME="TOC284" HREF="FAQ.html#SEC284">Q5015</A>: A short time after I start Exim I see a <defunct> zombie process. What
+ is causing this?
+<LI><A NAME="TOC285" HREF="FAQ.html#SEC285">Q5016</A>: On a reboot, or a restart of the mail system, I see the message "Mailer
daemons: exim abandoned: unknown, malformed, or incomplete option
<B>-bz</B> sendmail". What does this mean?
-<LI><A NAME="TOC242" HREF="FAQ.html#SEC242">Q5017</A>: I would like to restrict e-mail usage for some users to the local
+<LI><A NAME="TOC286" HREF="FAQ.html#SEC286">Q5017</A>: I would like to restrict e-mail usage for some users to the local
machine, ideally on a group basis.
-<LI><A NAME="TOC243" HREF="FAQ.html#SEC243">Q5018</A>: Whenever exim restarts it takes up to 3-5 minutes to start responding on
+<LI><A NAME="TOC287" HREF="FAQ.html#SEC287">Q5018</A>: Whenever exim restarts it takes up to 3-5 minutes to start responding on
the SMTP port. Why is this?
-<LI><A NAME="TOC244" HREF="FAQ.html#SEC244">Q5019</A>: Why aren't there any man pages for Exim? I don't always carry my printed
+<LI><A NAME="TOC288" HREF="FAQ.html#SEC288">Q5019</A>: Why aren't there any man pages for Exim? I don't always carry my printed
documentation.
-<LI><A NAME="TOC245" HREF="FAQ.html#SEC245">Q5020</A>: When I send a message using the <B>-t</B> command line option, Exim sends only
+<LI><A NAME="TOC289" HREF="FAQ.html#SEC289">Q5020</A>: When I send a message using the <B>-t</B> command line option, Exim sends only
to the addresses within the message, not to those on the command line.
-<LI><A NAME="TOC246" HREF="FAQ.html#SEC246">Q5021</A>: If I set up, for example,
+<LI><A NAME="TOC290" HREF="FAQ.html#SEC290">Q5021</A>: If I set up, for example,
<TT>local_domains = *customer.com</TT>, then it matches
<B>"customer.com"</B> and <B>"abc.customer.com"</B> as required, but it also matches
<B>"noncustomer.com",</B> which is wrong. How can I get round this?
-<LI><A NAME="TOC247" HREF="FAQ.html#SEC247">Q5022</A>: I want to match all local domains of the form <B>*.oyoy.org</B> but want a few
+<LI><A NAME="TOC291" HREF="FAQ.html#SEC291">Q5022</A>: I want to match all local domains of the form <B>*.oyoy.org</B> but want a few
exceptions. For instance I don't want <B>foo.oyoy.org</B> or <B>bar.oyoy.org</B> to be
treated as local. What is the best way to do this?
-<LI><A NAME="TOC248" HREF="FAQ.html#SEC248">Q5023</A>: I can't seem to find a pre-built version of Exim anywhere. The machine
+<LI><A NAME="TOC292" HREF="FAQ.html#SEC292">Q5023</A>: I can't seem to find a pre-built version of Exim anywhere. The machine
is a Sparc 5 running Solaris 2.6.
-<LI><A NAME="TOC249" HREF="FAQ.html#SEC249">Q5024</A>: Is there a Windows NT version of Exim available?
-<LI><A NAME="TOC250" HREF="FAQ.html#SEC250">Q5025</A>: Does Exim support Delivery Status Notificaion (DSN), Message Status
+<LI><A NAME="TOC293" HREF="FAQ.html#SEC293">Q5024</A>: Is there a Windows NT version of Exim available?
+<LI><A NAME="TOC294" HREF="FAQ.html#SEC294">Q5025</A>: Does Exim support Delivery Status Notificaion (DSN), Message Status
Notification (MSN), or any other form of delivery acknowledgement?
-<LI><A NAME="TOC251" HREF="FAQ.html#SEC251">Q5026</A>: What does "Exim" stand for?
-<LI><A NAME="TOC252" HREF="FAQ.html#SEC252">Q5027</A>: What does the log message "no immediate delivery: more than 10 messages
+<LI><A NAME="TOC295" HREF="FAQ.html#SEC295">Q5026</A>: What does "Exim" stand for?
+<LI><A NAME="TOC296" HREF="FAQ.html#SEC296">Q5027</A>: What does the log message "no immediate delivery: more than 10 messages
received in one connection" mean?
-<LI><A NAME="TOC253" HREF="FAQ.html#SEC253">Q5028</A>: Although I haven't set <TT>check_spool_space</TT>, Exim is still checking the
+<LI><A NAME="TOC297" HREF="FAQ.html#SEC297">Q5028</A>: Although I haven't set <TT>check_spool_space</TT>, Exim is still checking the
amount of space on the spool for incoming SMTP messages that use the
SIZE option. Can I suppress this?
-<LI><A NAME="TOC254" HREF="FAQ.html#SEC254">Q5029</A>: I just noticed log entries that start off "<= <>". Am I correct in
+<LI><A NAME="TOC298" HREF="FAQ.html#SEC298">Q5029</A>: I just noticed log entries that start off "<= <>". Am I correct in
assuming that the "<>" indicates that the envelope did not contain any
"From" data?
-<LI><A NAME="TOC255" HREF="FAQ.html#SEC255">Q5030</A>: I've received a message which does not have my address in the To:
+<LI><A NAME="TOC299" HREF="FAQ.html#SEC299">Q5030</A>: I've received a message which does not have my address in the To:
line. It is a spam message with the same address in both the From: and
the To: headers. How can this happen, and why doesn't Exim reject it?
-<LI><A NAME="TOC256" HREF="FAQ.html#SEC256">Q5031</A>: Can (or will) Exim ever handle a message delivery purely in memory,
+<LI><A NAME="TOC300" HREF="FAQ.html#SEC300">Q5031</A>: Can (or will) Exim ever handle a message delivery purely in memory,
that is, it is handled without it ever hitting the disc?
-<LI><A NAME="TOC257" HREF="FAQ.html#SEC257">Q5032</A>: If I am using dbm files for data that Exim reads, can I rebuild them
+<LI><A NAME="TOC301" HREF="FAQ.html#SEC301">Q5032</A>: If I am using dbm files for data that Exim reads, can I rebuild them
on the fly, or do I need to restart Exim every time I make a change?
-<LI><A NAME="TOC258" HREF="FAQ.html#SEC258">Q5033</A>: What are the main differences between using an Exim filter and using
+<LI><A NAME="TOC302" HREF="FAQ.html#SEC302">Q5033</A>: What are the main differences between using an Exim filter and using
procmail?
-<LI><A NAME="TOC259" HREF="FAQ.html#SEC259">Q5034</A>: I need an option that is the opposite of <B>-bpa,</B> that is, a listing of
+<LI><A NAME="TOC303" HREF="FAQ.html#SEC303">Q5034</A>: I need an option that is the opposite of <B>-bpa,</B> that is, a listing of
those addresses generated from a top-level address that have not yet
been delivered.
-<LI><A NAME="TOC260" HREF="FAQ.html#SEC260">Q5035</A>: I am getting complaints from a customer who uses my EXIM server for
+<LI><A NAME="TOC304" HREF="FAQ.html#SEC304">Q5035</A>: 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.
-<LI><A NAME="TOC261" HREF="FAQ.html#SEC261">Q5036</A>: When I try "exim <B>-bf"</B> to test a system filter, I received the following
+<LI><A NAME="TOC305" HREF="FAQ.html#SEC305">Q5036</A>: When I try "exim <B>-bf"</B> to test a system filter, I received the following
error message: "Filter error: unavailable filtering command "fail" near
line 8 of filter file".
-<LI><A NAME="TOC262" HREF="FAQ.html#SEC262">Q5037</A>: How can I make Exim receive incoming mail, queue it, but NOT attempt to
+<LI><A NAME="TOC306" HREF="FAQ.html#SEC306">Q5037</A>: How can I make Exim receive incoming mail, queue it, but NOT attempt to
deliver it? I want to be in this state while moving some mailboxes.
-<LI><A NAME="TOC263" HREF="FAQ.html#SEC263">Q5038</A>: What does the rejection message "reject all recipients: 3 times bad
+<LI><A NAME="TOC307" HREF="FAQ.html#SEC307">Q5038</A>: What does the rejection message "reject all recipients: 3 times bad
sender" mean?
-<LI><A NAME="TOC264" HREF="FAQ.html#SEC264">Q5039</A>: The menu in Eximon isn't working. It displays, but I can't select
+<LI><A NAME="TOC308" HREF="FAQ.html#SEC308">Q5039</A>: The menu in Eximon isn't working. It displays, but I can't select
anything from it.
-<LI><A NAME="TOC265" HREF="FAQ.html#SEC265">Q5040</A>: What does "ridiculously long message header" in an error report mean?
-<LI><A NAME="TOC266" HREF="FAQ.html#SEC266">Q5041</A>: What does Exim use for POP as a default? Do I have to install anything
+<LI><A NAME="TOC309" HREF="FAQ.html#SEC309">Q5040</A>: What does "ridiculously long message header" in an error report mean?
+<LI><A NAME="TOC310" HREF="FAQ.html#SEC310">Q5041</A>: What does Exim use for POP as a default? Do I have to install anything
else?
+<LI><A NAME="TOC311" HREF="FAQ.html#SEC311">Q5042</A>: I see that Exim doesn't support SSL. Can it be made to work with stunnel?
+<LI><A NAME="TOC312" HREF="FAQ.html#SEC312">Q5043</A>: Is there an easy way of removing all queued messages at once in a safe
+ way?
+<LI><A NAME="TOC313" HREF="FAQ.html#SEC313">Q5044</A>: What is the best way to provide backup MX for clients?
+<LI><A NAME="TOC314" HREF="FAQ.html#SEC314">Q5045</A>: Why does Exim do "ident" callbacks by default? Isn't this just a waste
+ of resources? I've been told this is an ancient way of authentication.
+ Is it obsolete?
+<LI><A NAME="TOC315" HREF="FAQ.html#SEC315">Q5046</A>: I often have the problem that a message gets stuck in the mailq and I
+ want it to be bounced to a certain address.
+<LI><A NAME="TOC316" HREF="FAQ.html#SEC316">Q5047</A>: What precautions should I take when editing <B>exim.conf?</B>
+<LI><A NAME="TOC317" HREF="FAQ.html#SEC317">Q5048</A>: Is exim able to use RFC 2645, On-demand Mail Relay (ODMR)?
+<LI><A NAME="TOC318" HREF="FAQ.html#SEC318">Q5049</A>: I want to send every bounced mail that is received by my server, as
+ "headers-only" to the sysadmin. How can I do this?
+<LI><A NAME="TOC319" HREF="FAQ.html#SEC319">Q5050</A>: What POP3 daemon should I use with Exim? I want something with
+ configurable authentication mechanisms.
+<LI><A NAME="TOC320" HREF="FAQ.html#SEC320">Q5051</A>: Is there any way I can send bounces to the postmaster, and nobody else?
+ Basically, I want to recieve them, and I don't want the reply/from
+ person to get them. If I think they need it I will forward it myself.
</UL>
-<A NAME="TOC267" HREF="FAQ.html#SEC267">93. HP-UX</A>
+<A NAME="TOC321" HREF="FAQ.html#SEC321">93. HP-UX</A>
<UL>
-<LI><A NAME="TOC268" HREF="FAQ.html#SEC268">Q9301</A>: I'm trying to compile on an HP machine and I don't have gcc there. So I
+<LI><A NAME="TOC322" HREF="FAQ.html#SEC322">Q9301</A>: I'm trying to compile on an HP machine and I don't have gcc there. So I
put <TT>CC=cc</TT> in the <B>Local/Makefile</B>, but I got this error:
</UL>
-<A NAME="TOC269" HREF="FAQ.html#SEC269">94. BSDI</A>
+<A NAME="TOC323" HREF="FAQ.html#SEC323">94. BSDI</A>
<UL>
-<LI><A NAME="TOC270" HREF="FAQ.html#SEC270">Q9401</A>: On BSDI 4.0, Exim built with Perl support exits with the error message
- <B>"./exim:</B> can't load library <B>'libperl.so'".</B>
+<LI><A NAME="TOC324" HREF="FAQ.html#SEC324">Q9401</A>: On BSDI 4.0, Exim built with Perl support exits with the error message
</UL>
-<A NAME="TOC271" HREF="FAQ.html#SEC271">95. IRIX</A>
+<A NAME="TOC325" HREF="FAQ.html#SEC325">95. IRIX</A>
<UL>
-<LI><A NAME="TOC272" HREF="FAQ.html#SEC272">Q9501</A>: I'm running IRIX 6.2 with a number of alias IP addresses set up, but
+<LI><A NAME="TOC326" HREF="FAQ.html#SEC326">Q9501</A>: I'm running IRIX 6.2 with a number of alias IP addresses set up, but
Exim doesn't seem to recognize them as local addresses.
-<LI><A NAME="TOC273" HREF="FAQ.html#SEC273">Q9502</A>: The IP addresses for incoming calls are all being given as
- 255.255.255.255.
+<LI><A NAME="TOC327" HREF="FAQ.html#SEC327">Q9502</A>: The IP addresses for incoming calls are all being given as
+ 255.255.255.255 or 0.0.0.0.
</UL>
-<A NAME="TOC274" HREF="FAQ.html#SEC274">96. LINUX</A>
+<A NAME="TOC328" HREF="FAQ.html#SEC328">96. LINUX</A>
<UL>
-<LI><A NAME="TOC275" HREF="FAQ.html#SEC275">Q9601</A>: Exim is mysteriously crashing, usually when forking to send a delivery
+<LI><A NAME="TOC329" HREF="FAQ.html#SEC329">Q9601</A>: Exim is mysteriously crashing, usually when forking to send a delivery
error message.
-<LI><A NAME="TOC276" HREF="FAQ.html#SEC276">Q9602</A>: Exim has created a directory called <B>build-Linux-libc5-i386</B> but is
+<LI><A NAME="TOC330" HREF="FAQ.html#SEC330">Q9602</A>: Exim has created a directory called <B>build-Linux-libc5-i386</B> but is
trying to reference <B>build-Linux-libc5-i386-linux</B> while building.
-<LI><A NAME="TOC277" HREF="FAQ.html#SEC277">Q9603</A>: I want to use logrotate which is standard with <B>RH5.2</B> Linux to rotate
+<LI><A NAME="TOC331" HREF="FAQ.html#SEC331">Q9603</A>: I want to use logrotate which is standard with <B>RH5.2</B> Linux to rotate
my mail logs. Anyone worked out the logrotate config file that will
do this?
-<LI><A NAME="TOC278" HREF="FAQ.html#SEC278">Q9604</A>: I'm seeing the message "<B>inetd</B>[334]: imap/tcp server failing (looping),
+<LI><A NAME="TOC332" HREF="FAQ.html#SEC332">Q9604</A>: I'm seeing the message "<B>inetd</B>[334]: imap/tcp server failing (looping),
service terminated" on a RedHat 5.2 system, causing imap connections to
be refused. The imapd in use is Washington Uni vers 12.250. Could this
be anything to do with Exim?
-<LI><A NAME="TOC279" HREF="FAQ.html#SEC279">Q9605</A>: I get the "too many open files" error especially when a lot of messages
+<LI><A NAME="TOC333" HREF="FAQ.html#SEC333">Q9605</A>: I get the "too many open files" error especially when a lot of messages
land for majordomo at the same time.
-<LI><A NAME="TOC280" HREF="FAQ.html#SEC280">Q9606</A>: I'm having a problem with an Exim RPM.
+<LI><A NAME="TOC334" HREF="FAQ.html#SEC334">Q9606</A>: I'm having a problem with an Exim RPM.
+<LI><A NAME="TOC335" HREF="FAQ.html#SEC335">Q9607</A>: I installed debian 2.2 linux on a small 325mb 486 laptop. When I try
+ to test the Mail program, I get the following error: "Failed to open
+ configuration file <B><B>/etc/exim.conf</B>".</B>
+<LI><A NAME="TOC336" HREF="FAQ.html#SEC336">Q9608</A>: I'm getting the error <B>"db.h:</B> No such file or directory" when I try to
+ build Exim under RedHat 7.0.
</UL>
-<A NAME="TOC281" HREF="FAQ.html#SEC281">97. SUN SYSTEMS</A>
+<A NAME="TOC337" HREF="FAQ.html#SEC337">97. SUN SYSTEMS</A>
<UL>
-<LI><A NAME="TOC282" HREF="FAQ.html#SEC282">Q9701</A>: Exim builds fine with gcc on SunOS 4 but crashes inside <B>sscanf()</B>.
-<LI><A NAME="TOC283" HREF="FAQ.html#SEC283">Q9702</A>: How can I get rid of spurious ^M characters in messages sent from
+<LI><A NAME="TOC338" HREF="FAQ.html#SEC338">Q9701</A>: Exim builds fine with gcc on SunOS 4 but crashes inside <B>sscanf()</B>.
+<LI><A NAME="TOC339" HREF="FAQ.html#SEC339">Q9702</A>: How can I get rid of spurious ^M characters in messages sent from
CDE <B>dtmail</B>?
-<LI><A NAME="TOC284" HREF="FAQ.html#SEC284">Q9703</A>: On SunOS 4 Exim crashes when looking up domains in the DNS that have
+<LI><A NAME="TOC340" HREF="FAQ.html#SEC340">Q9703</A>: On SunOS 4 Exim crashes when looking up domains in the DNS that have
more than 10 A records.
-<LI><A NAME="TOC285" HREF="FAQ.html#SEC285">Q9704</A>: The menu in Eximon isn't working on my Sun system.
-<LI><A NAME="TOC286" HREF="FAQ.html#SEC286">Q9705</A>: I am experiencing mailbox locking problems with Sun's <B>mailtool</B> used
+<LI><A NAME="TOC341" HREF="FAQ.html#SEC341">Q9704</A>: The menu in Eximon isn't working on my Sun system.
+<LI><A NAME="TOC342" HREF="FAQ.html#SEC342">Q9705</A>: I am experiencing mailbox locking problems with Sun's <B>mailtool</B> used
over a network.
-<LI><A NAME="TOC287" HREF="FAQ.html#SEC287">Q9706</A>: Exim has been crashing on my Solaris x86 system, apparently while
+<LI><A NAME="TOC343" HREF="FAQ.html#SEC343">Q9706</A>: Exim has been crashing on my Solaris x86 system, apparently while
running DBM functions.
-<LI><A NAME="TOC288" HREF="FAQ.html#SEC288">Q9707</A>: The exiwhat utility isn't working for me on a Solaris 2 system.
-<LI><A NAME="TOC289" HREF="FAQ.html#SEC289">Q9708</A>: How do I stop Sun's <B>dtcm</B> from hanging?
-<LI><A NAME="TOC290" HREF="FAQ.html#SEC290">Q9709</A>: I want Exim to use only the resolver (i.e. ignore <B>/etc/hosts</B>), but don't
+<LI><A NAME="TOC344" HREF="FAQ.html#SEC344">Q9707</A>: The exiwhat utility isn't working for me on a Solaris 2 system.
+<LI><A NAME="TOC345" HREF="FAQ.html#SEC345">Q9708</A>: How do I stop Sun's <B>dtcm</B> from hanging?
+<LI><A NAME="TOC346" HREF="FAQ.html#SEC346">Q9709</A>: I want Exim to use only the resolver (i.e. ignore <B>/etc/hosts</B>), but don't
want to alter the <B>nsswitch.conf</B> file in Solaris 2.
</UL>
-<A NAME="TOC291" HREF="FAQ.html#SEC291">98. COOKBOOK</A>
+<A NAME="TOC347" HREF="FAQ.html#SEC347">98. COOKBOOK</A>
<UL>
-<LI><A NAME="TOC292" HREF="FAQ.html#SEC292">Q9801</A>: How do I configure Exim as part of TPC <B>(<A HREF="http://www.tpc.int">http://www.tpc.int</A>)?</B>
-<LI><A NAME="TOC293" HREF="FAQ.html#SEC293">Q9802</A>: How do I configure Exim so that it sends mail to the outside world only
+<LI><A NAME="TOC348" HREF="FAQ.html#SEC348">Q9801</A>: How do I configure Exim as part of TPC <B>(<A HREF="http://www.tpc.int">http://www.tpc.int</A>)?</B>
+<LI><A NAME="TOC349" HREF="FAQ.html#SEC349">Q9802</A>: How do I configure Exim so that it sends mail to the outside world only
from a restricted list of our local users?
-<LI><A NAME="TOC294" HREF="FAQ.html#SEC294">Q9803</A>: How do I configure Exim to run with SmartList?
-<LI><A NAME="TOC295" HREF="FAQ.html#SEC295">Q9804</A>: How do I configure Exim to minic PP's "tripnote" facility?
-<LI><A NAME="TOC296" HREF="FAQ.html#SEC296">Q9805</A>: How do I configure Exim to handle local parts with extensions?
-<LI><A NAME="TOC297" HREF="FAQ.html#SEC297">Q9806</A>: How do I configure Exim so that only a restricted list of users can
+<LI><A NAME="TOC350" HREF="FAQ.html#SEC350">Q9803</A>: How do I configure Exim to run with SmartList?
+<LI><A NAME="TOC351" HREF="FAQ.html#SEC351">Q9804</A>: How do I configure Exim to minic PP's "tripnote" facility?
+<LI><A NAME="TOC352" HREF="FAQ.html#SEC352">Q9805</A>: How do I configure Exim to handle local parts with extensions?
+<LI><A NAME="TOC353" HREF="FAQ.html#SEC353">Q9806</A>: How do I configure Exim so that only a restricted list of users can
receive mail from external domains?
-<LI><A NAME="TOC298" HREF="FAQ.html#SEC298">Q9807</A>: I have <B><B>someuser@mydomain.com</B></B> that I only want certain users to be able
+<LI><A NAME="TOC354" HREF="FAQ.html#SEC354">Q9807</A>: I have <B><B>someuser@mydomain.com</B></B> that I only want certain users to be able
to mail to. How do I accomplish this?
-<LI><A NAME="TOC299" HREF="FAQ.html#SEC299">Q9808</A>: A site for which I provide secondary MX is down for some time. Is there
+<LI><A NAME="TOC355" HREF="FAQ.html#SEC355">Q9808</A>: A site for which I provide secondary MX is down for some time. Is there
a way to run the queue for that destination separately from the main
queue?
-<LI><A NAME="TOC300" HREF="FAQ.html#SEC300">Q9809</A>: How do I implement VERP (Variable Envelope Return Paths) in Exim?
-<LI><A NAME="TOC301" HREF="FAQ.html#SEC301">Q9810</A>: I'd like to make a copy of all outgoing messages to a local mailbox. Is
+<LI><A NAME="TOC356" HREF="FAQ.html#SEC356">Q9809</A>: How do I implement VERP (Variable Envelope Return Paths) in Exim?
+<LI><A NAME="TOC357" HREF="FAQ.html#SEC357">Q9810</A>: I'd like to make a copy of all outgoing messages to a local mailbox. Is
there a solution for this using an Exim filter?
-<LI><A NAME="TOC302" HREF="FAQ.html#SEC302">Q9811</A>: I want to make a copy of outgoing messages to a specific file for each
+<LI><A NAME="TOC358" HREF="FAQ.html#SEC358">Q9811</A>: I want to make a copy of outgoing messages to a specific file for each
user in a specific directory, using a "save" command in a system filter.
How can I arrange for Exim to write to these files under the correct
UID/GID?
-<LI><A NAME="TOC303" HREF="FAQ.html#SEC303">Q9812</A>: How can I keep an archive of all mail for some specific local email
+<LI><A NAME="TOC359" HREF="FAQ.html#SEC359">Q9812</A>: How can I keep an archive of all mail for some specific local email
addresses?
-<LI><A NAME="TOC304" HREF="FAQ.html#SEC304">Q9813</A>: How can I configure Exim to provide a vacation message when there are
+<LI><A NAME="TOC360" HREF="FAQ.html#SEC360">Q9813</A>: How can I configure Exim to provide a vacation message when there are
no local users on my mail hub?
-<LI><A NAME="TOC305" HREF="FAQ.html#SEC305">Q9814</A>: We want to be able to temporarily lock out a user by disabling the
+<LI><A NAME="TOC361" HREF="FAQ.html#SEC361">Q9814</A>: We want to be able to temporarily lock out a user by disabling the
password and moving the home directory to another place. How can we
arrange to reject mail for users in this state?
-<LI><A NAME="TOC306" HREF="FAQ.html#SEC306">Q9815</A>: I need an alias, say "fakeaddress" that should receive a message,
+<LI><A NAME="TOC362" HREF="FAQ.html#SEC362">Q9815</A>: I need an alias, say "fakeaddress" that should receive a message,
strip all reply-to: headers present, substitute another one pointing to
"otheraddress" and forward a message to "realaddress".
-<LI><A NAME="TOC307" HREF="FAQ.html#SEC307">Q9816</A>: How can I set up Exim to work with Listar?
-<LI><A NAME="TOC308" HREF="FAQ.html#SEC308">Q9817</A>: I need to take copies of all incoming and outgoing mail for certain
+<LI><A NAME="TOC363" HREF="FAQ.html#SEC363">Q9816</A>: How can I set up Exim to work with Listar?
+<LI><A NAME="TOC364" HREF="FAQ.html#SEC364">Q9817</A>: I need to take copies of all incoming and outgoing mail for certain
users. For each user there may be a different monitoring address.
-<LI><A NAME="TOC309" HREF="FAQ.html#SEC309">Q9818</A>: How can I add a disclaimer to the end of every message?
-<LI><A NAME="TOC310" HREF="FAQ.html#SEC310">Q9819</A>: I would like to append a simple advertisement text to all outgoing
+<LI><A NAME="TOC365" HREF="FAQ.html#SEC365">Q9818</A>: How can I add a disclaimer to the end of every message?
+<LI><A NAME="TOC366" HREF="FAQ.html#SEC366">Q9819</A>: I would like to append a simple advertisement text to all outgoing
and local mails.
-<LI><A NAME="TOC311" HREF="FAQ.html#SEC311">Q9820</A>: How can I configure Exim so that all mails adressed to
+<LI><A NAME="TOC367" HREF="FAQ.html#SEC367">Q9820</A>: How can I configure Exim so that all mails adressed to
<B><B>something@username.domain.net</B></B> get delivered to <B>/var/spool/mail/username</B>?
-<LI><A NAME="TOC312" HREF="FAQ.html#SEC312">Q9821</A>: How do I get exim not to add a Sender: header to locally originated
+<LI><A NAME="TOC368" HREF="FAQ.html#SEC368">Q9821</A>: How do I get exim not to add a Sender: header to locally originated
mail?
-<LI><A NAME="TOC313" HREF="FAQ.html#SEC313">Q9822</A>: How can I get Exim to work with mailman?
-<LI><A NAME="TOC314" HREF="FAQ.html#SEC314">Q9823</A>: Is there any way to have messages sent to a specific local address
+<LI><A NAME="TOC369" HREF="FAQ.html#SEC369">Q9822</A>: How can I get Exim to work with mailman?
+<LI><A NAME="TOC370" HREF="FAQ.html#SEC370">Q9823</A>: Is there any way to have messages sent to a specific local address
delayed by - say - 24 hours?
+<LI><A NAME="TOC371" HREF="FAQ.html#SEC371">Q9824</A>: I have a mailing list exploder on one host, and three other hosts where
+ I want to do the actual deliveries from. How can I get Exim to split
+ a message into groups of recipients between the three hosts?
</UL>
-<A NAME="TOC315" HREF="FAQ.html#SEC315">99. LIST OF SAMPLE CONFIGURATIONS</A>
+<A NAME="TOC372" HREF="FAQ.html#SEC372">99. LIST OF SAMPLE CONFIGURATIONS</A>
<UL>
</UL>
<BR><H2><A NAME="SEC1" HREF="FAQ.html#TOC1">0. DEBUGGING
Exim, delete any existing database files in the <B>spool/db</B> directory.
</P>
-<A NAME="SEC3" HREF="FAQ.html#TOC3">Q0002</A>: Exim is not working. What is wrong?
+<A NAME="SEC3" HREF="FAQ.html#TOC3">Q0002</A>: Exim is not working. What is wrong? How can I check what it is doing?
<P>
A0003: The most common meaning of exit code 69 is "unavailable", and this often
means that when Exim tried to exec the command <I>xxx</I>, it failed. One
cause of this might be incorrect permissions on the file containing the
- command.
+ command. See also
+ <A HREF="FAQ.html#SEC34">Q0033</A>.
</P>
<A NAME="SEC5" HREF="FAQ.html#TOC5">Q0004</A>: My virtual domain setup isn't working. How can I debug it?
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?
+</P>
+<P>
+ 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.
+
</P>
<P>
(C) If the problem occurs right at the start of the mail, then it could
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's transit
+ 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
(3) <TT>host_lookup</TT> and any other options that require the remote host's
name to be looked up from its IP address.
+</P>
+<P>
+ (4) <TT>sender_verify_hosts_callback</TT> and <TT>sender_verify_callback_domains</TT>.
+
</P>
<P>
You can use the <B>-bh</B> option to get more information about what is
<P>
A0034: See
- <A HREF="FAQ.html#SEC280">Q9606</A>.
+ <A HREF="FAQ.html#SEC334">Q9606</A>.
</P>
<A NAME="SEC36" HREF="FAQ.html#TOC36">Q0035</A>: What does the error "Spool file is locked" mean?
message has somehow got stuck.
</P>
-<BR><H2><A NAME="SEC37" HREF="FAQ.html#TOC37">1. BUILDING EXIM
+<A NAME="SEC37" HREF="FAQ.html#TOC37">Q0036</A>: Exim is reporting IP addresses as 0.0.0.0 or 255.255.255.255 instead of
+ their correct values. What's going on?
+
+
+<P>
+A0036: You are using a version of Exim built with gcc on an IRIX box.
+ See
+ <A HREF="FAQ.html#SEC327">Q9502</A>.
+
+</P>
+<A NAME="SEC38" HREF="FAQ.html#TOC38">Q0037</A>: I can't seem to figure out why PAM support doesn't work correctly.
+
+
+<P>
+A0037: There is a problem using PAM on Linux 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. I don't know of an easy
+ resolution to this.
+
+</P>
+<A NAME="SEC39" HREF="FAQ.html#TOC39">Q0038</A>: I'm trying to use a query-style lookup for hosts that are allowed to
+ relay, but it is giving really weird errors.
+
+
+<P>
+A0038: Does your query contain a colon character? Remember that
+ <TT>host_accept_relay</TT> operates on a colon-separated list, so you need to
+ double any colons in the query. This applies even if the query is
+ defined as a macro.
+
+</P>
+<A NAME="SEC40" HREF="FAQ.html#TOC40">Q0039</A>: Exim is rejecting calls from hosts that have more than one IP address,
+ for no apparent reason.
+
+
+<P>
+A0039: You are using Solaris 7 or earlier, and have "nis dns files" in
+ <B><B>/etc/nsswitch.conf</B>.</B> Change this to "dns nis files" to avoid hitting Sun
+ bug 1154236 (a bad interaction between NIS and the DNS).
+
+</P>
+<A NAME="SEC41" HREF="FAQ.html#TOC41">Q0040</A>: Exim is failing to find the MySQL library, even though is it present
+ within <B><B>$LD_LIBRARY_PATH.</B></B> I'm getting this error:
+
+
+<PRE>
+ /usr/local/bin/exim: fatal: libmysqlclient.so.6: open failed:
+ No such file or directory</PRE>
+<P>
+A0040: 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
+ <B>-R/local/lib/mysql</B> to the same place in the compilation that you added
+ <B><B>-L/local/lib/mysql.</B></B> This lets the binary know where to look without
+ needing a path variable.
+
+</P>
+<A NAME="SEC42" HREF="FAQ.html#TOC42">Q0041</A>: I have a collection of Exim processes that have been around for days,
+ and are apparently stuck while trying to deliver to remote hosts. This
+ is causing the messages they are handling to get stuck.
+
+
+<P>
+A0041: There appears to be a problem in the connect() function in some
+ operating systems, such that it does not time out as it should. Setting
+ <TT>connect_timeout</TT> in the smtp transport causes Exim to apply its own
+ timeout, and this seems to overcome this problem. In Exim 3.15 the
+ default was changed from zero (rely on system's timeout) to 5 minutes,
+ which is the value recommended in the RFCs.
+
+</P>
+<A NAME="SEC43" HREF="FAQ.html#TOC43">Q0042</A>: I have a message in the spool which couldn't be delivered because of a
+ timeout from the remote smtp server. When I try to deliver this message
+ in eximon, I get "Spool file is locked". How can I deliver the message?
+
+
+<P>
+A0042: Find the Exim proccess that is stuck, and kill it. You may be able to
+ use exiwhat to do this, but if it is stuck in connect() it may not
+ respond, and you will have to identify it some other way. Now read
+
+ <A HREF="FAQ.html#SEC42">Q0041</A> about why this might have happened.
+
+</P>
+<P>
+ If you have a suitable debugger on your system, you may be able to find
+ out more information before killing the process. For example, if you
+ have gdb you can connect it to the process by running this command as
+ root:
+
+</P>
+<PRE>
+ gdb exim <process-id></PRE>
+<P>
+ At the gdb prompt, give the "bt" (backtrace) command, to display the
+ stack contents. This should tell you the name of the function in which
+ the process is stuck. If this is connect(), then you do have the
+ <A HREF="FAQ.html#SEC42">Q0041</A>
+ problem.
+
+</P>
+<A NAME="SEC44" HREF="FAQ.html#TOC44">Q0043</A>: What does the error "lookup of host <B>"xx<EM>.xx</EM><EM>.xx</EM>"</B> failed in <I>yyy</I>y router"
+ mean? Any suggestions to stop this these sort of errors from being
+ frozen would be muchly appreciated.
+
+
+<P>
+A0043: You configured a <B>domainlist</B> router to send the message to <B>xx<EM>.xx</EM><EM>.xx</EM>.</B> 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.
+
+</P>
+<P>
+ 1. Don't set up routes to non-existent hosts.
+
+</P>
+<P>
+ 2. If you must set up routes to non-existent hosts, and don't want
+ freezing, set the <TT>host_find_failed</TT> option on the router to do something
+ other than freeze.
+
+</P>
+<A NAME="SEC45" HREF="FAQ.html#TOC45">Q0044</A>: My filter isn't working. How can I test it?
+
+
+<P>
+A0044: Use the <B>-bf</B> option (-bF for a system filter) to test the basic operation
+ of your filter. If you also turn on debugging at level 10 (-d10) it will
+ output information as the filter runs.
+
+</P>
+<A NAME="SEC46" HREF="FAQ.html#TOC46">Q0045</A>: 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).
+
+
+<P>
+A0045: Is the new host running exactly the same operating system? Most
+ importantly, are the versions of the dynamically loaded libraries
+ (files with names like <B>libsocket.so.1)</B> 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.
+
+</P>
+<A NAME="SEC47" HREF="FAQ.html#TOC47">Q0046</A>: Once in a while, a user will send a message and immediatly get a
+ response back "No Transport Provider" If they choose "Send Again",
+ sometimes it works, sometimes it doesn't.
+
+
+<P>
+A0046: This problem has been seen on Debian Linux 2.1 systems. The best advice
+ seems to be to upgrade your server to a later Debian release and a later
+ Exim release, and maybe also upgrade the hardware.
+
+</P>
+<A NAME="SEC48" HREF="FAQ.html#TOC48">Q0047</A>: I set <TT>host_accept_relay</TT> to do a lookup in a file of IP addresses, but it
+ doesn't work.
+
+
+<P>
+A0047: Did you remember to put `net-' at the start of the the search type? If
+ you set something like this:
+
+</P>
+<PRE>
+ host_accept_relay = lsearch;/some/file</PRE>
+<P>
+ it searches the file for the host <EM>name</EM>. You need to set
+
+</P>
+<PRE>
+ host_accept_relay = net-lsearch;/some/file</PRE>
+<P>
+ to make it use the IP address as the key to the lookup.
+
+</P>
+<BR><H2><A NAME="SEC49" HREF="FAQ.html#TOC49">1. BUILDING EXIM
</A></H2>
-<A NAME="SEC38" HREF="FAQ.html#TOC38">Q0101</A>: I get the error "conflicting types" when Exim is building the libident
+<A NAME="SEC50" HREF="FAQ.html#TOC50">Q0101</A>: I get the error "conflicting types" when Exim is building the libident
library.
to be empty should be harmless.
</P>
-<A NAME="SEC39" HREF="FAQ.html#TOC39">Q0102</A>: When I ran <B>make</B> I got the error "undefined reference to <TT>dbopen</TT>".
+<A NAME="SEC51" HREF="FAQ.html#TOC51">Q0102</A>: When I ran <B>make</B> I got the error "undefined reference to <TT>dbopen</TT>".
<P>
the libraries used in Caldera OpenLinux Base 1.1.
</P>
-<A NAME="SEC40" HREF="FAQ.html#TOC40">Q0103</A>: I can't get Exim to compile with Berkeley DB version 2.x.
+<A NAME="SEC52" HREF="FAQ.html#TOC52">Q0103</A>: I can't get Exim to compile with Berkeley DB version 2.x.
<P>
system.
</P>
-<A NAME="SEC41" HREF="FAQ.html#TOC41">Q0104</A>: I'm getting an "undefined symbol" error for <TT>hosts_ctl</TT> when I try to
+<A NAME="SEC53" HREF="FAQ.html#TOC53">Q0104</A>: I'm getting an "undefined symbol" error for <TT>hosts_ctl</TT> when I try to
build Exim. (On some systems this error is "undefined reference to
'hosts_ctl'".)
<B>-lwrap</B> to your <TT>EXTRALIBS</TT> setting in <B>Local/Makefile</B>.
</P>
-<A NAME="SEC42" HREF="FAQ.html#TOC42">Q0105</A>: I'm about to upgrade to a new Exim release. Do I need to ensure the
+<A NAME="SEC54" HREF="FAQ.html#TOC54">Q0105</A>: I'm about to upgrade to a new Exim release. Do I need to ensure the
spool is empty, or take any other special action?
install a new binary and then HUP the daemon if you are running one.
</P>
-<A NAME="SEC43" HREF="FAQ.html#TOC43">Q0106</A>: What does the error "<B>install-info</B>: command not found" mean?
+<A NAME="SEC55" HREF="FAQ.html#TOC55">Q0106</A>: What does the error "<B>install-info</B>: command not found" mean?
<P>
the <B>install-info</B> command is not available.
</P>
-<A NAME="SEC44" HREF="FAQ.html#TOC44">Q0107</A>: Exim doesn't seem to be recognizing my operating system type correctly,
+<A NAME="SEC56" HREF="FAQ.html#TOC56">Q0107</A>: Exim doesn't seem to be recognizing my operating system type correctly,
and so is failing to build.
distribution, to avoid any wreckage left over from the failed attempt.
</P>
-<A NAME="SEC45" HREF="FAQ.html#TOC45">Q0108</A>: I am getting an error "`exim' undeclared here" when I compile, in the
+<A NAME="SEC57" HREF="FAQ.html#TOC57">Q0108</A>: I am getting an error "`exim' undeclared here" when I compile, in the
<B>globals.c</B> module.
However, in the runtime configure file names are permitted.
</P>
-<A NAME="SEC46" HREF="FAQ.html#TOC46">Q0109</A>: Exim fails to build, complaining about the absence of the "killpg"
+<A NAME="SEC58" HREF="FAQ.html#TOC58">Q0109</A>: Exim fails to build, complaining about the absence of the "killpg"
function.
system, and is the output of the command "scripts/os-type <B><B>-generic".</B></B>
</P>
-<A NAME="SEC47" HREF="FAQ.html#TOC47">Q0110</A>: I'm getting an unresolved symbol <TT>ldap_is_ldap_url</TT> when trying to build
+<A NAME="SEC59" HREF="FAQ.html#TOC59">Q0110</A>: I'm getting an unresolved symbol <TT>ldap_is_ldap_url</TT> when trying to build
Exim.
<P>
A0110: You must have specified <TT>LOOKUP_LDAP=yes</TT> in the configuration. Have you
remembered to set <B>-lldap</B> somewhere (e.g. in LOOKUP_LIBS)? You need that
- in order to get the LDAP scanned when linking.
+ in order to get the LDAP library scanned when linking.
+
+</P>
+<A NAME="SEC60" HREF="FAQ.html#TOC60">Q0111</A>: I'm getting an unresolved symbol <TT>mysql_close</TT> when trying to build Exim.
+
+
+<P>
+A0111: You must have specified <TT>LOOKUP_MYSQL=yes</TT> in the configuration. Have you
+ remembered to set <B>-lmysqlclient</B> somewhere (e.g. in LOOKUP_LIBS)? You
+ need that in order to get the MySQL library scanned when linking.
+
+</P>
+<A NAME="SEC61" HREF="FAQ.html#TOC61">Q0112</A>: I'm trying to build Exim with PAM support. I have included <B>-lpam</B> in
+ <TT>EXTRALIBS</TT>, but I'm still getting a linking error:
+
+
+<PRE>
+ /lib/libpam.so: undefined reference to `dlerror'
+ /lib/libpam.so: undefined reference to `dlclose'
+ /lib/libpam.so: undefined reference to `dlopen'
+ /lib/libpam.so: undefined reference to `dlsym'</PRE>
+<P>
+A0112: Add <B>-ldl</B> to <TT>EXTRALIBS</TT>. In some systems these dynamic loading functions
+ are in their own library.
+
+</P>
+<A NAME="SEC62" HREF="FAQ.html#TOC62">Q0113</A>: I'm getting the error <B>"db.h:</B> No such file or directory" when I try to
+ build Exim.
+
+
+<P>
+A0113: This problem has been seen with RedHat 7.0, but could also happen in
+ other environments. If your system is using the DB3 DBM library, you
+ need to install the DB3 development package in order to build Exim.
+ The package is called something like <B>db3-devel-3.1.14-16.i386.rpm</B> for
+ Linux systems, but you should check which version of DB3 you have
+ installed.
+
+</P>
+<A NAME="SEC63" HREF="FAQ.html#TOC63">Q0114</A>: I'm getting the error "/usr/bin/ld: cannot find <B>-ldb1"</B> when I try to
+ build Exim.
+
+
+<P>
+A0114: This is probably the same problem as
+ <A HREF="FAQ.html#SEC62">Q0113</A>.
</P>
-<BR><H2><A NAME="SEC48" HREF="FAQ.html#TOC48">2. MAILBOX LOCKING
+<BR><H2><A NAME="SEC64" HREF="FAQ.html#TOC64">2. MAILBOX LOCKING
</A></H2>
-<A NAME="SEC49" HREF="FAQ.html#TOC49">Q0201</A>: Why do I get the error "Permission denied: creating lock file hitching
+<A NAME="SEC65" HREF="FAQ.html#TOC65">Q0201</A>: Why do I get the error "Permission denied: creating lock file hitching
post" when Exim tries to do a local delivery?
<PRE>
local_delivery:
driver = appendfile
- file = /var/mail/${local_part}</PRE>
+ file = /var/mail/$local_part</PRE>
<P>
and the permissions on the directory probably look like this:
</P>
<P>
If your problem involves mail to root, see also
- <A HREF="FAQ.html#SEC122">Q0507</A>.
+ <A HREF="FAQ.html#SEC148">Q0507</A>.
</P>
-<A NAME="SEC50" HREF="FAQ.html#TOC50">Q0202</A>: I am experiencing mailbox locking problems with Sun's <B>mailtool</B> used
+<A NAME="SEC66" HREF="FAQ.html#TOC66">Q0202</A>: I am experiencing mailbox locking problems with Sun's <B>mailtool</B> used
over a network.
<P>
A0202: See
- <A HREF="FAQ.html#SEC286">A9705</A> in the Sun-specific section below.
+ <A HREF="FAQ.html#SEC342">A9705</A> in the Sun-specific section below.
</P>
-<BR><H2><A NAME="SEC51" HREF="FAQ.html#TOC51">3. ROUTING
+<BR><H2><A NAME="SEC67" HREF="FAQ.html#TOC67">3. ROUTING
</A></H2>
-<A NAME="SEC52" HREF="FAQ.html#TOC52">Q0301</A>: What does "lowest numbered MX record points to local host" mean?
+<A NAME="SEC68" HREF="FAQ.html#TOC68">Q0301</A>: What do "lowest numbered MX record points to local host" and "remote
+ host address is the local host" mean?
<P>
-A0301: It means exactly what it says. Exim has tried to route a domain that it
- thinks is not local, and when it looked it up in the DNS, the lowest
- numbered MX record pointed at the local host.
+A0301: They mean exactly what they say. Exim has tried to route a domain that
+ it thinks is not local, and when it looked it up in the DNS, either the
+ lowest numbered MX record pointed at the local host, or there were no
+ MX records, and the address record for the domain pointed to an IP
+ address that belongs to the local host.
</P>
<P>
</P>
<P>
(C) If neither (A) nor (B) is the case, then the lowest numbered MX
- record for the domain should not be pointing to your host. You
- should arrange to get the DNS mended.
+ record or the address record for the domain should not be pointing
+ to your host. You should arrange to get the DNS mended.
+
+</P>
+<P>
+ There has been a rash of instances of domains being deliberately set
+ up with MX records pointing to "localhost", which causes this
+ behaviour. By default, Exim defers delivery and freezes the message.
+ You can change what Exim does by setting the generic "self" option
+ on the router, for example, to make it bounce such domains. If you
+ are running a release later than 3.16, you can use the option
+ called <TT>ignore_target_hosts</TT> instead, to get it to pretend such hosts
+ do not exist.
</P>
-<A NAME="SEC53" HREF="FAQ.html#TOC53">Q0302</A>: How do I configure Exim to send all non-local mail to a gateway host?
+<A NAME="SEC69" HREF="FAQ.html#TOC69">Q0302</A>: How do I configure Exim to send all non-local mail to a gateway host?
<P>
send_to_gateway:
driver = domainlist
transport = remote_smtp
- route_list = "* gate.way.host byname"</PRE>
+ route_list = * gate.way.host byname</PRE>
<P>
This uses gethostbyname() to find the gateway's IP address. You could
alternatively have "bydns" to do a DNS lookup with MX handling, in which
case <B>"gate.way.host"</B> is really being treated as a mail domain name
rather than a host name. If there are several hosts you can send to,
you can specify them as a colon-separated list. See also
- <A HREF="FAQ.html#SEC76">Q0325</A> and
- <A HREF="FAQ.html#SEC79">Q0402</A>.
+ <A HREF="FAQ.html#SEC92">Q0325</A> and
+ <A HREF="FAQ.html#SEC96">Q0402</A>.
</P>
-<A NAME="SEC54" HREF="FAQ.html#TOC54">Q0303</A>: How do I configure Exim to send all non-local mail to a central server
+<A NAME="SEC70" HREF="FAQ.html#TOC70">Q0303</A>: How do I configure Exim to send all non-local mail to a central server
if it cannot be immediately delivered by my host? I don't want to have
queued mail waiting on my host.
If there are several names, they must be separated by colons.
</P>
-<A NAME="SEC55" HREF="FAQ.html#TOC55">Q0304</A>: How can I arrange for messages submitted by (for example) Majordomo to
+<A NAME="SEC71" HREF="FAQ.html#TOC71">Q0304</A>: How can I arrange for messages submitted by (for example) Majordomo to
be routed specially?
<P>
A0304: See
- <A HREF="FAQ.html#SEC81">A0404</A>.
+ <A HREF="FAQ.html#SEC98">A0404</A>.
</P>
-<A NAME="SEC56" HREF="FAQ.html#TOC56">Q0305</A>: How do I arrange for all incoming email for <B><B>*@some.domain</B></B> to go into one
+<A NAME="SEC72" HREF="FAQ.html#TOC72">Q0305</A>: How do I arrange for all incoming email for <B><B>*@some.domain</B></B> to go into one
pop3 mail account? The customer doesn't want to add a list of specific
local parts to the system.
special_router:
driver = domainlist
transport = special_transport
- route_list = "some.domain"</PRE>
+ route_list = some.domain</PRE>
<P>
Alternatively, you could make <B>some.domain</B> a local domain, and use a
<B>smartuser</B> director instead.
</P>
-<A NAME="SEC57" HREF="FAQ.html#TOC57">Q0306</A>: The <TT>route_list</TT> setting
+<A NAME="SEC73" HREF="FAQ.html#TOC73">Q0306</A>: The <TT>route_list</TT> setting
<TT>^foo$:^bar$ $domain byname</TT> in a <B>domainlist</B>
router does not work.
item <EM>can</EM> be a list - of hosts.
</P>
-<A NAME="SEC58" HREF="FAQ.html#TOC58">Q0307</A>: I'm getting "permission denied" when Exim attempts to check a
+<A NAME="SEC74" HREF="FAQ.html#TOC74">Q0307</A>: I'm getting "permission denied" when Exim attempts to check a
<TT>require_files</TT> option.
<P>
A0307: See
- <A HREF="FAQ.html#SEC87">A0410</A> below.
+ <A HREF="FAQ.html#SEC104">A0410</A> below.
</P>
-<A NAME="SEC59" HREF="FAQ.html#TOC59">Q0308</A>: I have a domain for which some local parts must be delivered locally,
+<A NAME="SEC75" HREF="FAQ.html#TOC75">Q0308</A>: I have a domain for which some local parts must be delivered locally,
but the remainder are to be treated like any other remote addresses.
be handled as normal remote addresses.
</P>
-<A NAME="SEC60" HREF="FAQ.html#TOC60">Q0309</A>: For certain domains, I don't want Exim to use MX records. Instead, I
+<A NAME="SEC76" HREF="FAQ.html#TOC76">Q0309</A>: For certain domains, I don't want Exim to use MX records. Instead, I
want it just to look up the hosts' A records. I tried using a negative
entry in <TT>mx_domains</TT> in the smtp router, but it didn't work.
<TT>route_list</TT> option.
</P>
-<A NAME="SEC61" HREF="FAQ.html#TOC61">Q0310</A>: How can I configure Exim on a firewall machine so that if mail arrives
+<A NAME="SEC77" HREF="FAQ.html#TOC77">Q0310</A>: How can I configure Exim on a firewall machine so that if mail arrives
addressed to a domain whose MX points to the firewall, it is forwarded
to the internal mail server, without having to have a list of all the
domains involved?
</P>
<PRE>
no_more
- self = fail_soft</PRE>
+ self = pass</PRE>
<P>
This will handle all domains whose lowest numbered MX records do <EM>not</EM>
point to your host. Because of the <TT>no_more</TT> setting, if it encounters
an unknown domain, routing will fail. However, if it hits a domain whose
lowest numbered MX points to your host, the "self" option comes into
- play, and overrides <TT>no_more</TT>. The <TT>fail_soft</TT> setting causes it to pass
+ play, and overrides <TT>no_more</TT>. The "pass" setting causes it to pass
the address on to the next router. (The default causes it to generate an
error.)
</P>
<PRE>
route_list = * internal.server byname</PRE>
-<A NAME="SEC62" HREF="FAQ.html#TOC62">Q0311</A>: How can I arrange that messages larger than some limit are handled by
+<A NAME="SEC78" HREF="FAQ.html#TOC78">Q0311</A>: How can I arrange that messages larger than some limit are handled by
a special router?
</P>
<PRE>
condition = ${if eq {${substr_5:$message_size}}{}{no}{yes}}</PRE>
-<A NAME="SEC63" HREF="FAQ.html#TOC63">Q0312</A>: If a DNS lookup returns no MX records why doesn't Exim just bin the
+<A NAME="SEC79" HREF="FAQ.html#TOC79">Q0312</A>: If a DNS lookup returns no MX records why doesn't Exim just bin the
message?
plenty) who do not set up MX records.
</P>
-<A NAME="SEC64" HREF="FAQ.html#TOC64">Q0313</A>: When a DNS lookup for MX records fails to complete, why doesn't Exim
+<A NAME="SEC80" HREF="FAQ.html#TOC80">Q0313</A>: When a DNS lookup for MX records fails to complete, why doesn't Exim
send the messsage to the host defined by the A record?
so all Exim can do is try again later.
</P>
-<A NAME="SEC65" HREF="FAQ.html#TOC65">Q0314</A>: Can you specify a list of domains to explicitly reject?
+<A NAME="SEC81" HREF="FAQ.html#TOC81">Q0314</A>: Can you specify a list of domains to explicitly reject?
<P>
self = fail_hard
domains = list:of:domains:to:reject
route_list = * localhost byname</PRE>
-<A NAME="SEC66" HREF="FAQ.html#TOC66">Q0315</A>: Is it possible to use a conditional expression for the host item in a
+<A NAME="SEC82" HREF="FAQ.html#TOC82">Q0315</A>: Is it possible to use a conditional expression for the host item in a
<TT>route_list</TT> for the <B>domainlist</B> router? I tried the following, but it
doesn't work:
<PRE>
- route_list = "* ${if match{$header_from:}{.*\\.usa\\.net\\$} \
- {<smarthost1>}{<smarthost2>} bydns_a"</PRE>
+ route_list = * ${if match{$header_from:}{.*\\.usa\\.net\\$} \
+ {<smarthost1>}{<smarthost2>} bydns_a</PRE>
<P>
A0315: The problem is that the second item in the <TT>route_list</TT> contains white
space, which means that it gets terminated prematurely. To avoid this,
- you must put the second item in quotes, and because the whole item is
- already in quotes, you have to escape them like this:
+ you must put the second item in quotes:
</P>
<PRE>
- route_list = "* \"${if match{$header_from:}{.*\\.usa\\.net\\$} \
- {<smarthost1>}{<smarthost2>}\" bydns_a"</PRE>
-<A NAME="SEC67" HREF="FAQ.html#TOC67">Q0316</A>: I send all external mail to a smart host, but this means that bad
+ route_list = * "${if match{$header_from:}{.*\\.usa\\.net\\$} \
+ {<smarthost1>}{<smarthost2>}}" bydns_a</PRE>
+<A NAME="SEC83" HREF="FAQ.html#TOC83">Q0316</A>: I send all external mail to a smart host, but this means that bad
addresses also get passed to the smart host. Can I avoid this?
so that addresses are accepted only if they verify successfully.
</P>
-<A NAME="SEC68" HREF="FAQ.html#TOC68">Q0317</A>: I have a dial-up machine, and I use the <TT>queue_smtp</TT> option so that remote
+<A NAME="SEC84" HREF="FAQ.html#TOC84">Q0317</A>: I have a dial-up machine, and I use the <TT>queue_smtp</TT> option so that remote
mail only goes out when I do a queue run. However, any email I send with
an address <B><B><anything>@aol.com</B></B> is returned within about 15 mins saying
'retry time exceeded', and all addresses are affected.
<P>
A0317: See
- <A HREF="FAQ.html#SEC219">Q1401</A>.
+ <A HREF="FAQ.html#SEC260">Q1401</A>.
</P>
-<A NAME="SEC69" HREF="FAQ.html#TOC69">Q0318</A>: How can I route mail for user <B>X@local</B> to a smarthost if X doesn't exist
+<A NAME="SEC85" HREF="FAQ.html#TOC85">Q0318</A>: How can I route mail for user <B>X@local</B> to a smarthost if X doesn't exist
on the local host?
<P>
A0318: See
- <A HREF="FAQ.html#SEC105">A0428</A>.
+ <A HREF="FAQ.html#SEC122">A0428</A>.
</P>
-<A NAME="SEC70" HREF="FAQ.html#TOC70">Q0319</A>: How can I arrange to do my own qualification of non-fully-qualified
+<A NAME="SEC86" HREF="FAQ.html#TOC86">Q0319</A>: How can I arrange to do my own qualification of non-fully-qualified
domains, and then pass them on to the next router?
<PRE>
qualify:
driver = domainlist
- route_list = "*.a.b $domain.c.com"</PRE>
+ route_list = *.a.b $domain.c.com</PRE>
<P>
adds <B>".c.com"</B> to any domain that matches <B>"*.a.b".</B> In the absence of any
options in the route item, the new domain is passed to the next router.
you want.
</P>
-<A NAME="SEC71" HREF="FAQ.html#TOC71">Q0320</A>: Every system has a "nobody" account under which httpd etc run. I would
+<A NAME="SEC87" HREF="FAQ.html#TOC87">Q0320</A>: Every system has a "nobody" account under which httpd etc run. I would
like to know how to restrict mail which comes from that account to users
on that host only.
mail to non-local domains.
</P>
-<A NAME="SEC72" HREF="FAQ.html#TOC72">Q0321</A>: I have a really annoying intermittent problem where attempts to mail to
+<A NAME="SEC88" HREF="FAQ.html#TOC88">Q0321</A>: I have a really annoying intermittent problem where attempts to mail to
valid sites are rejected with "unknown mail domain". This only happens a
few times a day and there is no particular pattern to the sites it
rejects. If I try to lookup the same domain a few minutes later then it
out of step with each other.
</P>
-<A NAME="SEC73" HREF="FAQ.html#TOC73">Q0322</A>: I'd like route all mail with unresolved addresses to a relay machine.
+<A NAME="SEC89" HREF="FAQ.html#TOC89">Q0322</A>: I'd like route all mail with unresolved addresses to a relay machine.
<P>
<B>domainlist</B> router that routes everything to the relay.
</P>
-<A NAME="SEC74" HREF="FAQ.html#TOC74">Q0323</A>: I would like to forward all incoming email for a particular domain to
+<A NAME="SEC90" HREF="FAQ.html#TOC90">Q0323</A>: I would like to forward all incoming email for a particular domain to
another machine via SMTP. Whereabouts would I configure that?
router, in order to route the domain to the specific host.
</P>
-<A NAME="SEC75" HREF="FAQ.html#TOC75">Q0324</A>: Why does Exim say "all relevant MX records point to non-existent hosts"
+<A NAME="SEC91" HREF="FAQ.html#TOC91">Q0324</A>: Why does Exim say "all relevant MX records point to non-existent hosts"
when MX records point to IP addresses?
problems with is misconfigured.
</P>
-<A NAME="SEC76" HREF="FAQ.html#TOC76">Q0325</A>: How can I arrange for mail on my local network to be delivered directly
+<P>
+ However, it appears that more and more DNS zones are breaking the rules
+ and putting IP addresses on the RHS of MX records. Exim follows the
+ rules and rejects this, but other MTAs do support it, so <TT>allow_mx_to_ip</TT>
+ was regretfully added at release 3.14 to permit this heinous activity.
+
+</P>
+<A NAME="SEC92" HREF="FAQ.html#TOC92">Q0325</A>: How can I arrange for mail on my local network to be delivered directly
to the relevant hosts, but all other mail to be sent to my ISP's mail
server? The local hosts are all DNS-registered and behave like normal
Internet hosts.
This sends anything else to the smart host.
</P>
-<BR><H2><A NAME="SEC77" HREF="FAQ.html#TOC77">4. DIRECTING
+<A NAME="SEC93" HREF="FAQ.html#TOC93">Q0326</A>: What I'd like to do is have alternative smarthosts, where the one to be
+ used is determined by which ISP I'm connected to.
+
+
+<P>
+A0326: The simplest way to do this is to use a lookup in a <B>domainlist</B> router.
+ For example:
+
+</P>
+<PRE>
+ smarthost:
+ driver = domainlist
+ transport = remote_smtp
+ route_list = * ${lookup{smart}lsearch{/etc/smarthost}{$value}} byname</PRE>
+<P>
+ where you arrange for the name (or IP address) of the relevant smart
+ host to be placed in <B>/etc/smarthost</B> when you connect, in the form
+
+</P>
+<PRE>
+ smart: smart.host.name.or.ip</PRE>
+<P>
+ By keeping the data out of the main configuration file, you avoid having
+ to HUP the daemon when it changes.
+
+</P>
+<BR><H2><A NAME="SEC94" HREF="FAQ.html#TOC94">4. DIRECTING
</A></H2>
-<A NAME="SEC78" HREF="FAQ.html#TOC78">Q0401</A>: I need to have any mail for <B>virt.dom.ain</B> that <EM>doesn't</EM> match one of the
+<A NAME="SEC95" HREF="FAQ.html#TOC95">Q0401</A>: I need to have any mail for <B>virt.dom.ain</B> that <EM>doesn't</EM> match one of the
aliases in <B><B>/usr/lib/aliases.virt</B></B> delivered to a particular address, for
example, <B><B>postmaster@virt.dom.ain.</B></B>
address.
</P>
-<A NAME="SEC79" HREF="FAQ.html#TOC79">Q0402</A>: How do I configure Exim to send all messages to a central server?
+<A NAME="SEC96" HREF="FAQ.html#TOC96">Q0402</A>: How do I configure Exim to send all messages to a central server?
<P>
in the configuration file. This specifies that there are no local
domains (by default your host name is set up as a local domain). Then
all addresses are non-local -
- <A HREF="FAQ.html#SEC53">A0302</A> tells you how to deal with them.
+ <A HREF="FAQ.html#SEC69">A0302</A> tells you how to deal with them.
</P>
-<A NAME="SEC80" HREF="FAQ.html#TOC80">Q0403</A>: How do I configure Exim to send messages for unknown local users to a
+<A NAME="SEC97" HREF="FAQ.html#TOC97">Q0403</A>: How do I configure Exim to send messages for unknown local users to a
central server?
headers.
</P>
-<A NAME="SEC81" HREF="FAQ.html#TOC81">Q0404</A>: How can I arrange for messages submitted by (for example) Majordomo to
+<A NAME="SEC98" HREF="FAQ.html#TOC98">Q0404</A>: How can I arrange for messages submitted by (for example) Majordomo to
be handled specially?
</P>
<PRE>
- condition = "${if and {eq {$sender_host_address}{}} \
- {eq {$sender_ident}{majordom}} {yes}{no}}"</PRE>
+ condition = ${if and {{eq {$sender_host_address}{}} \
+ {eq {$sender_ident}{majordom}}} {yes}{no}}</PRE>
<P>
This first tests for a locally-submitted message, by ensuring there is
no sending host address, and then it checks the identity of the user
that ran the submitting process.
</P>
-<A NAME="SEC82" HREF="FAQ.html#TOC82">Q0405</A>: On a host that accepts mail for several domains, do I have to use fully
+<A NAME="SEC99" HREF="FAQ.html#TOC99">Q0405</A>: On a host that accepts mail for several domains, do I have to use fully
qualified names in <B>/etc/aliases</B> or do I have to set up an alias file for
each domain?
<P>
A0405: You can do it either way. If you use a single file, you must set
- <TT>include_domains</TT> on the <B>aliasfile</B> director. If you use a separate file
+ <TT>include_domain</TT> on the <B>aliasfile</B> director. If you use a separate file
for each domain you can use a single director with an option such as
</P>
they all match something in <TT>local_domains</TT>.
</P>
-<A NAME="SEC83" HREF="FAQ.html#TOC83">Q0406</A>: Some of my users are using the <B>.forward</B> to pipe to a shell command which
+<A NAME="SEC100" HREF="FAQ.html#TOC100">Q0406</A>: Some of my users are using the <B>.forward</B> to pipe to a shell command which
appends to the user's INBOX. How can I forbid this?
transport.
</P>
-<A NAME="SEC84" HREF="FAQ.html#TOC84">Q0407</A>: How can I arrange for a default value when using a query-style lookup
+<A NAME="SEC101" HREF="FAQ.html#TOC101">Q0407</A>: How can I arrange for a default value when using a query-style lookup
such as LDAP or NIS+ to handle aliases?
queries = "\
ldap:://x.y.z/l=yvr?aliasaddress?sub?(&(mail=$local_part@$domain)):\
ldap:://x.y.z/l=yvr?aliasaddress?sub?(&(mail=default@$domain))"</PRE>
-<A NAME="SEC85" HREF="FAQ.html#TOC85">Q0408</A>: If I don't fully qualify the addresses in a virtual domain's alias file
+<A NAME="SEC102" HREF="FAQ.html#TOC102">Q0408</A>: If I don't fully qualify the addresses in a virtual domain's alias file
then mail to aliases which also match the local domain get delivered to
the local domain.
A0408: Set the <TT>qualify_preserve_domain</TT> option on the <B>aliasfile</B> director.
</P>
-<A NAME="SEC86" HREF="FAQ.html#TOC86">Q0409</A>: We've got users who chmod their home to 750, and home is NFS-mounted
+<A NAME="SEC103" HREF="FAQ.html#TOC103">Q0409</A>: We've got users who chmod their home to 750, and home is NFS-mounted
without root privilege, so Exim cannot access <B>~user/.forward.</B>
option, which causes Exim to ignore unreadable files.
</P>
-<A NAME="SEC87" HREF="FAQ.html#TOC87">Q0410</A>: I'm getting "permission denied" when Exim tries to check a for the
+<A NAME="SEC104" HREF="FAQ.html#TOC104">Q0410</A>: I'm getting "permission denied" when Exim tries to check a for the
existence of a user's <B>.procmailrc</B> file using <TT>require_files</TT>.
<PRE>
procmail:
driver = localuser
- require_files = ${local_part}:${home}/.procmailrc
+ require_files = $local_part:$home/.procmailrc
transport = procmail_pipe</PRE>
-<A NAME="SEC88" HREF="FAQ.html#TOC88">Q0411</A>: How can I deliver mail into different directories for each virtual
+<A NAME="SEC105" HREF="FAQ.html#TOC105">Q0411</A>: How can I deliver mail into different directories for each virtual
domain, doing user lookups not against <B>/etc/passwd</B> but against
<B><B>/etc/passwd.domain</B>?</B>
A0411: See configuration sample C009.
</P>
-<A NAME="SEC89" HREF="FAQ.html#TOC89">Q0412</A>: I want mail for <EM>any</EM> local part at certain virtual domains to go
+<A NAME="SEC106" HREF="FAQ.html#TOC106">Q0412</A>: I want mail for <EM>any</EM> local part at certain virtual domains to go
to a single address for each domain.
efficient.
</P>
-<A NAME="SEC90" HREF="FAQ.html#TOC90">Q0413</A>: How can I make Exim look in the alias NIS map instead of <B>/etc/aliases</B>?
+<A NAME="SEC107" HREF="FAQ.html#TOC107">Q0413</A>: How can I make Exim look in the alias NIS map instead of <B>/etc/aliases</B>?
<P>
data source you want to take precedence.
</P>
-<A NAME="SEC91" HREF="FAQ.html#TOC91">Q0414</A>: What does the error message "error in forward file (filtering not
+<A NAME="SEC108" HREF="FAQ.html#TOC108">Q0414</A>: What does the error message "error in forward file (filtering not
enabled): missing or malformed local part ..." mean?
the <B>.forward</B> file.
</P>
-<A NAME="SEC92" HREF="FAQ.html#TOC92">Q0415</A>: Exim isn't recognizing certain forms of local address.
+<A NAME="SEC109" HREF="FAQ.html#TOC109">Q0415</A>: Exim isn't recognizing certain forms of local address.
<P>
locally_caseless = false</PRE>
<P>
but then incoming addresses are recognized only in the correct case.
- See also
- <A HREF="FAQ.html#SEC101">Q0424</A> for a way round this.
+ See
+ <A HREF="FAQ.html#SEC118">Q0424</A> for a way round this.
</P>
-<A NAME="SEC93" HREF="FAQ.html#TOC93">Q0416</A>: I have a domain for which some local parts must be delivered locally,
+<A NAME="SEC110" HREF="FAQ.html#TOC110">Q0416</A>: I have a domain for which some local parts must be delivered locally,
but the remainder are to be treated like any other remote addresses.
<P>
A0416: See
- <A HREF="FAQ.html#SEC59">A0308</A>.
+ <A HREF="FAQ.html#SEC75">A0308</A>.
</P>
-<A NAME="SEC94" HREF="FAQ.html#TOC94">Q0417</A>: What I really need is the ability to obtain the result of a pipe
+<A NAME="SEC111" HREF="FAQ.html#TOC111">Q0417</A>: What I really need is the ability to obtain the result of a pipe
command so that I can filter externally and redirect internally. Is
this possible?
delivery agent such as procmail which provides this kind of facility.
</P>
-<A NAME="SEC95" HREF="FAQ.html#TOC95">Q0418</A>: When I set a suffix on one of my directors, it doesn't get stripped when
+<A NAME="SEC112" HREF="FAQ.html#TOC112">Q0418</A>: When I set a suffix on one of my directors, it doesn't get stripped when
checking the <TT>local_parts</TT> option. Why is this?
</P>
<PRE>
- condition = "${if lookup{\
+ condition = ${if lookup{\
${if match{$local_part}{^(.*)-request}{$1}{$local_part}}\
- }lsearch{/some/file}{yes}}"</PRE>
+ }lsearch{/some/file}{yes}}</PRE>
<P>
The key that is looked up is the second line, which uses a regular
expression to strip "-request" from the local part if it is present.
</P>
-<A NAME="SEC96" HREF="FAQ.html#TOC96">Q0419</A>: Why will Exim deliver a message locally to any username that is longer
+<A NAME="SEC113" HREF="FAQ.html#TOC113">Q0419</A>: Why will Exim deliver a message locally to any username that is longer
than 8 characters as long as the first 8 characters match one of the
local usernames?
<TT>max_user_name_length</TT> which you can set to the maximum allowed length.
</P>
-<A NAME="SEC97" HREF="FAQ.html#TOC97">Q0420</A>: Why am I seeing the error "bad mode (100664) for <B><B>/home/test/.forward</B></B>
+<A NAME="SEC114" HREF="FAQ.html#TOC114">Q0420</A>: Why am I seeing the error "bad mode (100664) for <B><B>/home/test/.forward</B></B>
(userforward director)"? I've looked through the documentation but can't
see anything to suggest that exim has to do anything other than read the
<B>.forward</B> file.
<B>forwardfile</B> director.
</P>
-<A NAME="SEC98" HREF="FAQ.html#TOC98">Q0421</A>: How can I arrange that messages larger than some limit are handled by
+<A NAME="SEC115" HREF="FAQ.html#TOC115">Q0421</A>: How can I arrange that messages larger than some limit are handled by
a special director?
<P>
A0421: See
- <A HREF="FAQ.html#SEC62">A0311</A>.
+ <A HREF="FAQ.html#SEC78">A0311</A>.
</P>
-<A NAME="SEC99" HREF="FAQ.html#TOC99">Q0422</A>: When a user's <B>.forward</B> file is syntactially invalid, Exim defers
+<A NAME="SEC116" HREF="FAQ.html#TOC116">Q0422</A>: When a user's <B>.forward</B> file is syntactially invalid, Exim defers
delivery of all messages to that user, which sometimes include the
user's own test messages. Can it be told to ignore the <B>.forward</B> file
and/or inform the user of the error?
look at the Envelope-To header.
</P>
-<A NAME="SEC100" HREF="FAQ.html#TOC100">Q0423</A>: I have some users on my system with upper case letters in their login
+<A NAME="SEC117" HREF="FAQ.html#TOC117">Q0423</A>: I have some users on my system with upper case letters in their login
names, but these are not recognized.
<P>
A0423: See
- <A HREF="FAQ.html#SEC101">A0424</A>.
+ <A HREF="FAQ.html#SEC118">A0424</A>.
</P>
-<A NAME="SEC101" HREF="FAQ.html#TOC101">Q0424</A>: I have unset <TT>locally_caseless</TT> because my users have upper case letters
+<A NAME="SEC118" HREF="FAQ.html#TOC118">Q0424</A>: I have unset <TT>locally_caseless</TT> because my users have upper case letters
in their login names, but incoming mail now has to use the correct case.
Can I relax this somehow?
<PRE>
set_case_director:
driver = smartuser
- new_address = "${lookup{${lc:$local_part}}lsearch{/the/file}\
- {$value@$domain}fail}"</PRE>
+ new_address = ${lookup{${lc:$local_part}}lsearch{/the/file}\
+ {$value@$domain}fail}</PRE>
<P>
For efficiency, you should also set the <TT>new_director</TT> option to cause
processing of the changed address to begin at the next director. If you
will have to extend this configuration to cope appropriately.
</P>
-<A NAME="SEC102" HREF="FAQ.html#TOC102">Q0425</A>: I want to look up local users in an SQL database instead of looking in
+<A NAME="SEC119" HREF="FAQ.html#TOC119">Q0425</A>: I want to look up local users in an SQL database instead of looking in
the passwd file.
<P>
-A0425: (A) From release 3.03, Exim contains support for calling MySQL.
-
-</P>
-<P>
- (B) If you can set up an LDAP interface to your SQL database, then this
- is relatively straightforward to do, since Exim contains LDAP support.
- Sample configuration C009 shows you how to lookup users in
- <B>/etc/passwd/whatever</B> instead of <B>/etc/passwd</B>. Modifying this to use LDAP
- instead of looking in a file would be easy.
-
-</P>
-<P>
- (C) If you can access SQL from Perl, you could use Exim's embedded Perl
- facility, but this is expensive in terms of resources used.
+A0425: From release 3.03, Exim contains support for calling MySQL, and from
+ release 3.14 there is support for PostgreSQL.
</P>
<P>
to work off that. This is also likely to be more efficient.
</P>
-<A NAME="SEC103" HREF="FAQ.html#TOC103">Q0426</A>: Is it possible for Exim to use a SQL database like MySQL for its lists
+<A NAME="SEC120" HREF="FAQ.html#TOC120">Q0426</A>: Is it possible for Exim to use a SQL database like MySQL for its lists
of virtual domains and explicit aliases?
<P>
A0426: See
- <A HREF="FAQ.html#SEC102">A0425</A>.
+ <A HREF="FAQ.html#SEC119">A0425</A>.
</P>
-<A NAME="SEC104" HREF="FAQ.html#TOC104">Q0427</A>: Can I use my existing alias files and forward files as well as procmail
+<A NAME="SEC121" HREF="FAQ.html#TOC121">Q0427</A>: Can I use my existing alias files and forward files as well as procmail
and effectively drop in exim in place of Sendmail ?
or configure Exim to use a shell (which it doesn't by default).
</P>
-<A NAME="SEC105" HREF="FAQ.html#TOC105">Q0428</A>: How can I route mail for user <B>X@local</B> to a smarthost if X doesn't exist
+<A NAME="SEC122" HREF="FAQ.html#TOC122">Q0428</A>: How can I route mail for user <B>X@local</B> to a smarthost if X doesn't exist
on the local host?
<P>
A0428: This is the same question as
- <A HREF="FAQ.html#SEC79">Q0402</A>. The duplication is a bug in the FAQ.
+ <A HREF="FAQ.html#SEC96">Q0402</A>. The duplication is a bug in the FAQ.
</P>
-<A NAME="SEC106" HREF="FAQ.html#TOC106">Q0429</A>: What is quickest way to set up Exim so any message sent to a non-
+<A NAME="SEC123" HREF="FAQ.html#TOC123">Q0429</A>: What is quickest way to set up Exim so any message sent to a non-
existing user would bounce back with a different message, based
on the name of non-existing user?
automatic processing".
</P>
-<A NAME="SEC107" HREF="FAQ.html#TOC107">Q0430</A>: I am building some largish mailing lists with Majordomo, and was
+<A NAME="SEC124" HREF="FAQ.html#TOC124">Q0430</A>: I am building some largish mailing lists with Majordomo, and was
wondering if it worth leaving the actually list expansion to the
<B>aliasfile</B> :include: mechanism or should I consider using the <B>forwardfile</B>
transport? Is there any real difference in terms of facilities and/or
for you.
</P>
-<A NAME="SEC108" HREF="FAQ.html#TOC108">Q0431</A>: What do I need to do to make Exim handle <B>/usr/ucb/vacation</B> processing
+<A NAME="SEC125" HREF="FAQ.html#TOC125">Q0431</A>: What do I need to do to make Exim handle <B>/usr/ucb/vacation</B> processing
automatically, so that people could just create a .<B>vacation.msg</B> file in
their home directory and not have to edit their <B>.forward</B> file?
See C033.
</P>
-<A NAME="SEC109" HREF="FAQ.html#TOC109">Q0432</A>: I want to use a default entry in my alias file, but it picks up the
+<A NAME="SEC126" HREF="FAQ.html#TOC126">Q0432</A>: I want to use a default entry in my alias file, but it picks up the
local parts that the aliases generate. For example, if the alias file
is
rather than local users.
</P>
-<A NAME="SEC110" HREF="FAQ.html#TOC110">Q0433</A>: I have some obsolete domains which people have been warned not to use
+<A NAME="SEC127" HREF="FAQ.html#TOC127">Q0433</A>: I have some obsolete domains which people have been warned not to use
any more. How can I arrange to delete any mail that is sent to them?
with the file containing
</P>
-<P>
- *: :blackhole:
-
-</P>
+<PRE>
+ *: :blackhole:</PRE>
<P>
and possibly a postmaster alias if you want.
</P>
-<A NAME="SEC111" HREF="FAQ.html#TOC111">Q0434</A>: How can I arrange that mail addressed to <B><B>anything@something.mydomain.com</B></B>
+<A NAME="SEC128" HREF="FAQ.html#TOC128">Q0434</A>: How can I arrange that mail addressed to <B><B>anything@something.mydomain.com</B></B>
gets delivered to <B><B>something@mydomain.com</B>?</B>
<PRE>
user_from_domain:
driver = smartuser
- new_address = "${if match{$domain}{^(.+)\\\\.mydomain.com\\$}\
- {$1@mydomain.com}fail}"</PRE>
-<A NAME="SEC112" HREF="FAQ.html#TOC112">Q0435</A>: I can't get a regular expression to work in this <TT>local_parts</TT> option on
+ new_address = ${if match{$domain}{^(.+)\\.mydomain.com\$}\
+ {$1@mydomain.com}fail}</PRE>
+<A NAME="SEC129" HREF="FAQ.html#TOC129">Q0435</A>: I can't get a regular expression to work in this <TT>local_parts</TT> option on
one of my directors:
so as to preserve the backslash.
</P>
-<A NAME="SEC113" HREF="FAQ.html#TOC113">Q0436</A>: How can I arrange for all addresses in a group of domains <B>*.example.com</B>
+<A NAME="SEC130" HREF="FAQ.html#TOC130">Q0436</A>: How can I arrange for all addresses in a group of domains <B>*.example.com</B>
to share the same alias file? I have a number of such groups.
</P>
<PRE>
- local_domains = "partial-lsearch;/that/file"</PRE>
+ local_domains = partial-lsearch;/that/file</PRE>
<P>
Then create a director like this
in this case.
</P>
-<A NAME="SEC114" HREF="FAQ.html#TOC114">Q0437</A>: When Exim tries to read <B><B>/usr/lib/majordomo/lists/lists.aliases</B></B> it is
+<A NAME="SEC131" HREF="FAQ.html#TOC131">Q0437</A>: When Exim tries to read <B><B>/usr/lib/majordomo/lists/lists.aliases</B></B> it is
giving "Permission denied", but that file is world-readable!
A0437: Check the permissions on the superior directories.
</P>
-<BR><H2><A NAME="SEC115" HREF="FAQ.html#TOC115">5. DELIVERY
-
-</A></H2>
-<A NAME="SEC116" HREF="FAQ.html#TOC116">Q0501</A>: What does the error "Neither the <I>xxx</I> director nor the <I>yyy</I> transport set
- a uid for local delivery of..." mean?
+<A NAME="SEC132" HREF="FAQ.html#TOC132">Q0438</A>: Some of our users have no home directories; the field in the password
+ file contains <B>/no/home/dir</B>. This causes the error "failed to stat
+ <B>/no/home/dir</B> (No such file or directory)" when Exim tries to look for a
+ <B>.forward</B> file, and the delivery is deferred.
<P>
-A0501: Whenever Exim does a local delivery, it runs a process under a specific
- user and group id (uid and gid). For deliveries into mailboxes, and to
- pipes and files set up by <B>.forward</B>ing, it normally picks up the uid/gid
- of the receiving user. However, if an address is directed to a pipe or a
- file by some other means, such an entry in the system alias file of the
- form
+A0438: With the default configuration, you are asking Exim to check for a
+ <B>.forward</B> file in the user's home directory. It looks up the home
+ directory and tries to stat() it before looking for <B>.forward</B>. This is so
+ that it can will notice a missing NFS home directory, and not treat it
+ as if the <B>.forward</B> file did not exist. This stat() is failing when the
+ home directory doesn't exist. What you should do is pick off these
+ special cases before looking for <B>.forward</B> files for normal users. Place
+ the following director before the userforward director:
</P>
<PRE>
- majordomo: |/local/mail/majordomo ...</PRE>
-<P>
- then Exim has to be told what uid/gid to use for the delivery. This can
- be done either on the director that handled the address, or on the
- transport that actually does the delivery. If a pipe is going to run a
- setuid program, then it doesn't matter what uid Exim starts it out with,
- and so the most straightforward thing is to put
+ no_home_directory_users:
+ driver = localuser
+ transport = local_delivery
+ match_directory = /no/home/dir
+ current_directory = /</PRE>
+<A NAME="SEC133" HREF="FAQ.html#TOC133">Q0439</A>: How can I disable Exim's de-duplication features? I want it to do two
+ deliveries if two different aliases expand to the same address.
-</P>
-<PRE>
- user = exim</PRE>
-<P>
- on either the director or the transport. A setting on the transport
- overrides a setting on the director, so if the same transport is being
- used with several directors, you should set the user on it only if you
- want the same uid to be used in all cases.
-</P>
<P>
- In the default configuration, the transports used for file and pipe
- deliveries are the ones called <TT>address_file</TT> and <TT>address_pipe</TT>. You
- can specify different transports by setting, for example,
+A0439: This is not possible. Duplication has other ramifications other than
+ just (in)convenience. Consider:
</P>
-<PRE>
- pipe_transport = special_pipe_transport</PRE>
<P>
- on the <B>aliasfile</B> director. Then you can set up <TT>special_pipe_transport</TT>
+ . Message is addressed to A and to B.
</P>
-<PRE>
- special_pipe_transport:
- driver = pipe
- user = ????</PRE>
<P>
- which will be used only for pipe deliveries from that one director.
- What you put for the ???? is up to you, and depends on the particular
- circumstances.
+ . Both A and B are aliased to C.
</P>
-<A NAME="SEC117" HREF="FAQ.html#TOC117">Q0502</A>: Exim won't deliver to a host with no MX record.
-
-
<P>
-A0502: (A) Are you sure there really is no MX record? Sometimes a typo results
- in a malformed MX record in the zone file, in which case some nameservers
- give a SERVFAIL error rather than NXDOMAIN. Exim has to treat this as
- a temporary error, so it can't go on to look for an A record. You can
- check for this state using one of the DNS interrogation commands, such
- as "dig".
+ . Without de-duplication, two deliveries to C are scheduled.
</P>
<P>
- (B) Is there a wildcard MX record for <EM>your</EM> domain? Is the
- <TT>search_parents</TT> option on in your <B>lookuphost</B> router? (Prior to Exim
- version 1.80 this was the default; it was changed because of this
- problem.) If the answer to both these questions is "yes", then that is
- the cause of the problem. When the DNS resolver fails to find the MX
- record, it tries adding on your domain if <TT>search_parents</TT> is true, and
- thereby finds your wildcard MX record. For example:
+ . One delivery happens, Exim records that it has delivered the message
+ to C.
</P>
<P>
- . There is a wildcard MX record for <B>*.a.b.c.</B>
+ . The next delivery fails (C's mailbox is over quota, say).
</P>
<P>
- . There is a host called <B>x.y.z</B> that has an A record and no MX record.
+ Next time round, Exim wants to know if it has already delivered to C or
+ not, before scheduling a new delivery. Has it? Obviously, if duplicate
+ deliveries are supported, it has to remember not only that it has
+ delivered to C but also the "history" of how that delivery happened - in
+ effect an ancestry list back to the original envelope address. This it
+ does not do, and changing it to work in that way would be a lot of work
+ and a big upheaval.
</P>
<P>
- . Somebody on a machine <B>m.a.b.c</B> domain tries to mail to <B><B>user@x.y.z.</B></B>
+ The best way to get duplicate deliveries if you want them is not to use
+ <B>aliasfile</B>, but to use <B>smartuser</B> with a transport, e.g.
</P>
+<PRE>
+ alias_with_duplicates:
+ driver = smartuser
+ transport = local_delivery_for_duplicates
+ new_address = ${lookup {$local_part} lsearch ..... etc</PRE>
<P>
- . Exim calls the DNS to look for an MX record for <B>x.y.z.</B>
+ This goes straight to the transport without generating a new address
+ that is considered for de-duplication or re-aliasing. In effect, it is
+ just re-writing the address on the way to the transport. You will need
+ to specify the user under which to run the delivery, either on the
+ transport or on the director.
</P>
-<P>
- . The DNS doesn't find any MX record. Because <TT>search_parents</TT> is true,
- it then tries searching the current host's parent domain, so it
- looks for <B>x.y.z.a.b.c</B> and picks up the wildcard MX record.
+<A NAME="SEC134" HREF="FAQ.html#TOC134">Q0440</A>: I set up an <B>aliasfile</B> director using MySQL, but it doesn't use the new
+ addresses. This it my director:
-</P>
+
+<PRE>
+ mysql_system_aliases:
+ driver = aliasfile
+ search_type = mysql
+ query = "select userid from domain_table where \
+ aliasid='$local_part' and domain='$domain'"
+ transport = local_delivery</PRE>
<P>
- Setting <TT>search_parents</TT> false makes this case work while retaining the
- wildcard MX record. However, anybody on the machine <B>m.a.b.c</B> who mails to
- <B><B>user@n.a</B></B> (expecting it to go to <B><B>user@n.a.b.c</B>)</B> now has a problem. The
- <TT>widen_domains</TT> option of the <B>lookuphost</B> router may be helpful in this
- circumstance.
+A0440: The setting of "transport" is your problem. Aliasfile operates entirely
+ differently if you give it a transport. It just verifies the incoming
+ address by doing the query, then sends it to the transport. Take away
+ the transport setting, and it will do normal aliasing, that is, turn one
+ address into another which is independently processed.
</P>
-<A NAME="SEC118" HREF="FAQ.html#TOC118">Q0503</A>: How should Exim be configured when it is acting as a temporary storage
- system for a domain on a dial-up host?
+<A NAME="SEC135" HREF="FAQ.html#TOC135">Q0441</A>: I received a message with a Subject: line that contained a non-printing
+ character (a carriage return). This messed up my filter file. Is there a
+ way to get round it?
<P>
-A0503: See
- <A HREF="FAQ.html#SEC220">Q1402</A>.
+A0441: Instead of <B>$h_subject:</B> use <B>${escape:$h_subject:}</B>
</P>
-<A NAME="SEC119" HREF="FAQ.html#TOC119">Q0504</A>: I would like to deliver mail addressed to a given domain normally, but
- also to generate a message to the envelope sender.
+<A NAME="SEC136" HREF="FAQ.html#TOC136">Q0442</A>: My users' mailboxes are distributed between several servers according to
+ the first letter of the user name. All the servers receive incoming mail
+ at random. I would like to have the same configuration file for all the
+ servers, which does local delivery for the mailboxes it holds, and sends
+ other addresses to the correct other server. Is this possible?
<P>
-A0504: If the domain is a local one, you can do this with an "unseen" <B>smartuser</B>
- director and an autoreply transport, along the following lines:
+A0442: It is easiest if you arrange for all the users to have password entries
+ on all the servers. This means that non-existent users can be detected
+ at the first server they reach. Set up a file containing a mapping from
+ the first letter of the user names to the servers where their mailboxes
+ are held. For example:
</P>
<PRE>
- # Transport
- warning_t:
- driver = autoreply
- file = /usr/local/mail/warning.txt
- file_expand
- from = postmaster@your.domain
- to = $sender_address
- user = exim
- subject = "Re: Your mail to ${local_part}@${domain}"</PRE>
+ a: server1
+ b: server1
+ c: server2
+ ...</PRE>
+<P>
+ Replace the normal localuser director with these two directors:
+
+</P>
<PRE>
- # Director
- auto_warning_d:
- driver = smartuser
- domains = <domains you want to do this for>
- condition = ${if eq{$sender_address}{}{no}{yes}}
- transport = warning_t
- no_verify
- unseen</PRE>
+ localuser:
+ driver = localuser
+ transport = local_delivery
+ condition = ${if eq{$primary_hostname}\
+ {${lookup {${substr_0_1:$local_part}}\
+ lsearch{/etc/mapfile} {$value}}}{yes}{no}}</PRE>
+<PRE>
+ check_remote:
+ driver = localuser
+ transport = send_to_correct_host</PRE>
<P>
- Note the use of the <TT>condition</TT> option to avoid attempting to send a
- message when there is no sender (that is, when the incoming message is a
- delivery error report). You can of course extend this to include other
- conditions. If you want to log the sending of messages, you can add
+ The first director succeeds only if the local part is a local user whose
+ mailbox is listed as being on the current host. The second server runs
+ for all other local users, directing the addresses to this transport:
</P>
<PRE>
- log = /some/file</PRE>
+ send_to_correct_host:
+ driver = smtp
+ hosts = ${lookup {${substr_0_1:$local_part}}lsearch{/etc/mapfile}\
+ {$value}}</PRE>
<P>
- to the transport and also make use of the "once" option if you want to
- send only one message to each sender.
+ Local parts that are not the names of local users are declined by both
+ directors, and so they fail.
</P>
-<A NAME="SEC120" HREF="FAQ.html#TOC120">Q0505</A>: Exim keeps crashing with segmentation errors (signal 11 or 139) during
- delivery. This seems to happen when it is about to contact a remote
- host or when a delivery is deferred.
+<A NAME="SEC137" HREF="FAQ.html#TOC137">Q0443</A>: I want to search for '$' in the subject line, but I can't seem to get
+ the syntax. The obvious choice, '\$' doesn't work. Any help?
+
+
+<P>
+A0443: Try one of these:
+
+</P>
+<PRE>
+ if $h_subject: contains \$ then ...
+ if $h_subject: contains "\\$" then ...</PRE>
+<A NAME="SEC138" HREF="FAQ.html#TOC138">Q0444</A>: One of the things I want to set up is for <B>anything@onedomain</B> to forward
+ to <B><B>anything@anotherdomain.</B></B> I tried adding <B>$local_part@anotherdomain</B> to
+ my aliases but it did not expand - it sent it to that literal address.
+
+
+<P>
+A0444: If you want to do it that way, you can make it expand by setting
+ the "expand" option on the <B>aliasfile</B> director. Another approach is to
+ use a <B>smartuser</B> director like this:
+
+</P>
+<PRE>
+ forwarddomain:
+ driver = smartuser
+ domains = onedomain
+ new_address = $local_part@anotherdomain</PRE>
+<P>
+ <TT>new_address</TT> can, of course, be more complicated, involving lookups etc.
+ if you have lots of different cases.
+
+</P>
+<A NAME="SEC139" HREF="FAQ.html#TOC139">Q0445</A>: How can I have an address looked up in two different alias files, and
+ delivered to all the addresses that are found?
+
+
+<P>
+A0445: It is tempting to use the "unseen" option for this (see
+ <A HREF="FAQ.html#SEC145">Q0504</A> for an
+ example of the use of "unseen"). You would have two directors, the first
+ of which has "unseen" set, so that the address is always passed on to
+ the next director, even if the first one accepts it.
+
+</P>
+<P>
+ However, there is a problem with this approach. If an address is found
+ in the first director (with unseen set) but not in the second one, it
+ will get delivered but will also (under most normal setups) generate an
+ "unknown user" bounce as well.
+
+</P>
+<P>
+ If you want an incoming address to be "properly" delivered to
+ two different "child" addresses (or lists), "unseen" is not really the
+ right way to do it. You don't really need two different directors. You
+ can use a <B>smartuser</B> director with an option something like this:
+
+</P>
+<PRE>
+ new_address = ${lookup{$local_part}lsearch{/etc/aliases1}\
+ {$value${lookup{$local_part}lsearch{/etc/aliases2}{,$value}}}\
+ {${lookup{$local_part}lsearch{/etc/aliases2}{$value}fail}}}\</PRE>
+<P>
+ If the first lookup succeeds, the result is its data, followed by the
+ data from the second lookup, if any, separated by a comma. If the first
+ lookup fails, the result is the data from the third lookup (which also
+ looks in the second file), but if this also fails, the entire expansion
+ is forced to fail, thereby causing the director to decline.
+
+</P>
+<A NAME="SEC140" HREF="FAQ.html#TOC140">Q0446</A>: I've converted from Sendmail, and I notice that Exim doesn't make use
+ of the "owner-" entries in my alias file to change the sender address in
+ outgoing messages to a mailing list.
+
+
+<P>
+A0446: If you have an alias file with entries like this:
+
+</P>
+<PRE>
+ somelist: a@b, c@d, ...
+ owner-somelist: postmaster</PRE>
+<P>
+ Sendmail assumes that the second entry specifies a new sender address
+ for the first. Exim does not make this assumption. However, you can make
+ it take the same action, by adding
+
+</P>
+<PRE>
+ errors_to = owner-$local_part@whatever.domain</PRE>
+<P>
+ to the configuration for your <B>aliasfile</B> director. This is fail-safe,
+ because Exim verifies a new sender address before using it. Thus, the
+ change of sender address occurs only when the owner entry exists.
+
+</P>
+<BR><H2><A NAME="SEC141" HREF="FAQ.html#TOC141">5. DELIVERY
+
+</A></H2>
+<A NAME="SEC142" HREF="FAQ.html#TOC142">Q0501</A>: What does the error "Neither the <I>xxx</I> director nor the <I>yyy</I> transport set
+ a uid for local delivery of..." mean?
+
+
+<P>
+A0501: Whenever Exim does a local delivery, it runs a process under a specific
+ user and group id (uid and gid). For deliveries into mailboxes, and to
+ pipes and files set up by <B>.forward</B>ing, it normally picks up the uid/gid
+ of the receiving user. However, if an address is directed to a pipe or a
+ file by some other means, such an entry in the system alias file of the
+ form
+
+</P>
+<PRE>
+ majordomo: |/local/mail/majordomo ...</PRE>
+<P>
+ then Exim has to be told what uid/gid to use for the delivery. This can
+ be done either on the director that handled the address, or on the
+ transport that actually does the delivery. If a pipe is going to run a
+ setuid program, then it doesn't matter what uid Exim starts it out with,
+ and so the most straightforward thing is to put
+
+</P>
+<PRE>
+ user = exim</PRE>
+<P>
+ on either the director or the transport. A setting on the transport
+ overrides a setting on the director, so if the same transport is being
+ used with several directors, you should set the user on it only if you
+ want the same uid to be used in all cases.
+
+</P>
+<P>
+ In the default configuration, the transports used for file and pipe
+ deliveries are the ones called <TT>address_file</TT> and <TT>address_pipe</TT>. You
+ can specify different transports by setting, for example,
+
+</P>
+<PRE>
+ pipe_transport = special_pipe_transport</PRE>
+<P>
+ on the <B>aliasfile</B> director. Then you can set up <TT>special_pipe_transport</TT>
+
+</P>
+<PRE>
+ special_pipe_transport:
+ driver = pipe
+ user = ????</PRE>
+<P>
+ which will be used only for pipe deliveries from that one director.
+ What you put for the ???? is up to you, and depends on the particular
+ circumstances.
+
+</P>
+<A NAME="SEC143" HREF="FAQ.html#TOC143">Q0502</A>: Exim won't deliver to a host with no MX record.
+
+
+<P>
+A0502: (A) Are you sure there really is no MX record? Sometimes a typo results
+ in a malformed MX record in the zone file, in which case some nameservers
+ give a SERVFAIL error rather than NXDOMAIN. Exim has to treat this as
+ a temporary error, so it can't go on to look for an A record. You can
+ check for this state using one of the DNS interrogation commands, such
+ as "nslookup", "host", or "dig".
+
+</P>
+<P>
+ (B) Is there a wildcard MX record for <EM>your</EM> domain? Is the
+ <TT>search_parents</TT> option on in your <B>lookuphost</B> router? (Prior to Exim
+ version 1.80 this was the default; it was changed because of this
+ problem.) If the answer to both these questions is "yes", then that is
+ the cause of the problem. When the DNS resolver fails to find the MX
+ record, it tries adding on your domain if <TT>search_parents</TT> is true, and
+ thereby finds your wildcard MX record. For example:
+
+</P>
+<P>
+ . There is a wildcard MX record for <B>*.a.b.c.</B>
+
+</P>
+<P>
+ . There is a host called <B>x.y.z</B> that has an A record and no MX record.
+
+</P>
+<P>
+ . Somebody on a machine <B>m.a.b.c</B> domain tries to mail to <B><B>user@x.y.z.</B></B>
+
+</P>
+<P>
+ . Exim calls the DNS to look for an MX record for <B>x.y.z.</B>
+
+</P>
+<P>
+ . The DNS doesn't find any MX record. Because <TT>search_parents</TT> is true,
+ it then tries searching the current host's parent domain, so it
+ looks for <B>x.y.z.a.b.c</B> and picks up the wildcard MX record.
+
+</P>
+<P>
+ Setting <TT>search_parents</TT> false makes this case work while retaining the
+ wildcard MX record. However, anybody on the machine <B>m.a.b.c</B> who mails to
+ <B><B>user@n.a</B></B> (expecting it to go to <B><B>user@n.a.b.c</B>)</B> now has a problem. The
+ <TT>widen_domains</TT> option of the <B>lookuphost</B> router may be helpful in this
+ circumstance.
+
+</P>
+<A NAME="SEC144" HREF="FAQ.html#TOC144">Q0503</A>: How should Exim be configured when it is acting as a temporary storage
+ system for a domain on a dial-up host?
+
+
+<P>
+A0503: See
+ <A HREF="FAQ.html#SEC262">Q1403</A>,
+ <A HREF="FAQ.html#SEC162">Q0521</A>, and
+ <A HREF="FAQ.html#SEC283">Q5014</A>.
+
+</P>
+<A NAME="SEC145" HREF="FAQ.html#TOC145">Q0504</A>: I would like to deliver mail addressed to a given domain normally, but
+ also to generate a message to the envelope sender.
+
+
+<P>
+A0504: If the domain is a local one, you can do this with an "unseen" <B>smartuser</B>
+ director and an autoreply transport, along the following lines:
+
+</P>
+<PRE>
+ # Transport
+ warning_t:
+ driver = autoreply
+ file = /usr/local/mail/warning.txt
+ file_expand
+ from = postmaster@your.domain
+ to = $sender_address
+ user = exim
+ subject = Re: Your mail to $local_part@$domain</PRE>
+<PRE>
+ # Director
+ auto_warning_d:
+ driver = smartuser
+ domains = <domains you want to do this for>
+ condition = ${if eq{$sender_address}{}{no}{yes}}
+ transport = warning_t
+ no_verify
+ unseen</PRE>
+<P>
+ Note the use of the <TT>condition</TT> option to avoid attempting to send a
+ message when there is no sender (that is, when the incoming message is a
+ delivery error report). You can of course extend this to include other
+ conditions. If you want to log the sending of messages, you can add
+
+</P>
+<PRE>
+ log = /some/file</PRE>
+<P>
+ to the transport and also make use of the "once" option if you want to
+ send only one message to each sender.
+
+</P>
+<A NAME="SEC146" HREF="FAQ.html#TOC146">Q0505</A>: Exim keeps crashing with segmentation errors (signal 11 or 139) during
+ delivery. This seems to happen when it is about to contact a remote
+ host or when a delivery is deferred.
<P>
file is distributed with it.
</P>
-<A NAME="SEC121" HREF="FAQ.html#TOC121">Q0506</A>: Whenever Exim tries to do a local delivery, it gives a permission denied
+<A NAME="SEC147" HREF="FAQ.html#TOC147">Q0506</A>: Whenever Exim tries to do a local delivery, it gives a permission denied
error for the <B>.forward</B> file, like this:
A0506: Have you remembered to make Exim setuid root?
</P>
-<A NAME="SEC122" HREF="FAQ.html#TOC122">Q0507</A>: I have installed Exim, but now I can't mail to root any more. Why is
+<A NAME="SEC148" HREF="FAQ.html#TOC148">Q0507</A>: I have installed Exim, but now I can't mail to root any more. Why is
this?
an alias for root instead.
</P>
-<A NAME="SEC123" HREF="FAQ.html#TOC123">Q0508</A>: How can I stop undeliverable bounce messages (e.g. to routeable, but
+<A NAME="SEC149" HREF="FAQ.html#TOC149">Q0508</A>: How can I stop undeliverable bounce messages (e.g. to routeable, but
undeliverable, spammer senders) from clogging up the queue for days?
that I notice them, but they go away relatively quickly.
</P>
-<A NAME="SEC124" HREF="FAQ.html#TOC124">Q0509</A>: How can mails that are being routed through directors other than
+<A NAME="SEC150" HREF="FAQ.html#TOC150">Q0509</A>: How can mails that are being routed through directors other than
localuser be delivered under the uid of the recipient?
<P>
A0509:
- <A HREF="FAQ.html#SEC116">A0501</A> contains background information on this. If you are using, say, an
+ <A HREF="FAQ.html#SEC142">A0501</A> contains background information on this. If you are using, say, an
alias file to direct messages to specific mailboxes, then you can use
the "user" option on either the <B>aliasfile</B> director or the appendfile
transport to set the uid. What you put in the setting depends on how
computed somehow from the local part, for example.
</P>
-<A NAME="SEC125" HREF="FAQ.html#TOC125">Q0510</A>: I want to use MMDF-style mailboxes. How can I get Exim to append the
+<A NAME="SEC151" HREF="FAQ.html#TOC151">Q0510</A>: I want to use MMDF-style mailboxes. How can I get Exim to append the
ctrl-A characters that separate indvidual emails?
separator.
</P>
-<A NAME="SEC126" HREF="FAQ.html#TOC126">Q0511</A>: I have an ISDN connection and would like a way of running the queue
+<A NAME="SEC152" HREF="FAQ.html#TOC152">Q0511</A>: I have an ISDN connection and would like a way of running the queue
automatically when it is up.
Linux, you could put the call to exim in that script.
</P>
-<A NAME="SEC127" HREF="FAQ.html#TOC127">Q0512</A>: If a user's mailbox is over quota, is there a way for me to set it up so
+<A NAME="SEC153" HREF="FAQ.html#TOC153">Q0512</A>: If a user's mailbox is over quota, is there a way for me to set it up so
that the mail bounces to the sender and is NOT stored in the mail queue?
failure.
</P>
-<A NAME="SEC128" HREF="FAQ.html#TOC128">Q0513</A>: I'm using tmail to do local deliveries, but when I turned on the
+<A NAME="SEC154" HREF="FAQ.html#TOC154">Q0513</A>: I'm using tmail to do local deliveries, but when I turned on the
<TT>use_crlf</TT> option on the pipe transport (tmail prefers \r\n terminations)
message bodies started to vanish.
<P>
-A0513: You need to unset the prefix option (or change it so that its default
- \n terminator becomes \r\n). For example, the transport could be:
+A0513: You need to unset the prefix option, or change it so that its default
+ \n terminator becomes \r\n. For example, the transport could be:
</P>
<PRE>
local_delivery_mbx:
driver = pipe
- command = "/usr/local/bin/tmail ${local_part}"
+ command = /usr/local/bin/tmail $local_part
user = exim
current_directory = /
use_crlf
doubled \r\r\n lines and corrupt mbx mailboxes.
</P>
-<A NAME="SEC129" HREF="FAQ.html#TOC129">Q0514</A>: What does the message "Unable to get root to set uid and gid
+<A NAME="SEC155" HREF="FAQ.html#TOC155">Q0514</A>: What does the message "Unable to get root to set uid and gid
for local delivery to <I>xxx</I>: uid=<I>yyy</I> euid=<I>zzz</I>" mean?
it is to do any local deliveries, because it does them "as the user".
</P>
-<A NAME="SEC130" HREF="FAQ.html#TOC130">Q0515</A>: I upgraded to 2.04 and now my Envelope-To: header for my virtual domains
+<A NAME="SEC156" HREF="FAQ.html#TOC156">Q0515</A>: I upgraded to 2.04 and now my Envelope-To: header for my virtual domains
is gone. Any idea how to get it back?
also want to set <TT>return_path_add</TT> and <TT>delivery_date_add</TT>.
</P>
-<A NAME="SEC131" HREF="FAQ.html#TOC131">Q0516</A>: The Exim log records the arrival of a message, and then "Completed",
+<A NAME="SEC157" HREF="FAQ.html#TOC157">Q0516</A>: The Exim log records the arrival of a message, and then "Completed",
without logging any deliveries. What's going on?
possibility, prior to version 2.053, was that the message was injected
using the <B>-t</B> option, but all the addresses in the message were also on
the command line. See
- <A HREF="FAQ.html#SEC245">A5020</A> for more detail. Current versions of Exim
+ <A HREF="FAQ.html#SEC289">A5020</A> for more detail. Current versions of Exim
generate a bounce message in this case.
</P>
-<A NAME="SEC132" HREF="FAQ.html#TOC132">Q0517</A>: When I activate "return receipt" for example in Netscape Mailbox
+<A NAME="SEC158" HREF="FAQ.html#TOC158">Q0517</A>: When I activate "return receipt" for example in Netscape Mailbox
sending options, then I get an error message from Exim... something
like "not supported". Can I activate delivery confirmations?
many questions that don't have obvious answers.
</P>
-<A NAME="SEC133" HREF="FAQ.html#TOC133">Q0518</A>: When I dial up to collect mail from my ISP, only the first 10 messages
+<A NAME="SEC159" HREF="FAQ.html#TOC159">Q0518</A>: When I dial up to collect mail from my ISP, only the first 10 messages
get delivered immediately; the remainder just sit on the queue until a
queue runner process finds them.
some number larger than 10.
</P>
-<A NAME="SEC134" HREF="FAQ.html#TOC134">Q0519</A>: My ISP's mail server is rejecting bounce messages from Exim, complaining
+<A NAME="SEC160" HREF="FAQ.html#TOC160">Q0519</A>: 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?
SHOULD be stripped down to its final hop.
</P>
-<A NAME="SEC135" HREF="FAQ.html#TOC135">Q0520</A>: What does the message "retry time not reached [for any host]" on the log
+<A NAME="SEC161" HREF="FAQ.html#TOC161">Q0520</A>: What does the message "retry time not reached [for any host]" on the log
mean? Why won't Exim try to deliver the message?
local as well as to remote deliveries. For remote deliveries, each host
(if there are several) has its own retry time.
+</P>
+<P>
+ If you are running on a dial-up host, the rest of this answer probably
+ does not apply to you. Go and read
+ <A HREF="FAQ.html#SEC263">Q1404</A> instead. If your host is
+ permanently online, read on...
+
</P>
<P>
Some MTAs have a retrying schedule for each message. Exim does not work
<P>
If you want to do this for the entire queue, use the <B>-qf</B> option. See
also
- <A HREF="FAQ.html#SEC148">Q0533</A>.
+ <A HREF="FAQ.html#SEC174">Q0533</A>.
</P>
-<A NAME="SEC136" HREF="FAQ.html#TOC136">Q0521</A>: RFC 1985 specifies that the SMTP command "ETRN <B>host.domain"</B> causes all
+<A NAME="SEC162" HREF="FAQ.html#TOC162">Q0521</A>: RFC 1985 specifies that the SMTP command "ETRN <B>host.domain"</B> causes all
mail queued for that host, no matter what domain it's for, to be
dequeued. Why doesn't Exim support this?
connection to the host and shovels the waiting mail down it. That seems
to me to be a much neater way of doing this. It means you can easily add
additional functionality such as archiving or throwing away uncollected
- mail. One program that has this functionality is "ssmtp", which can be
+ mail.
+
+</P>
+<P>
+ One program that has this functionality is "ssmtp", which can be
found in <B><A HREF="ftp://metalab.unc.edu/pub/Linux/system/mail/mta/.">ftp://metalab.unc.edu/pub/Linux/system/mail/mta/.</A></B>
+ Alternatively, sample configuration C037 demonstrates an elegant way of
+ using Exim itself to deliver the saved messages when the client issues
+ an ETRN.
</P>
-<A NAME="SEC137" HREF="FAQ.html#TOC137">Q0522</A>: If email has been deferred to a member on a local mailing list
+<A NAME="SEC163" HREF="FAQ.html#TOC163">Q0522</A>: If email has been deferred to a member on a local mailing list
(implemented through forward files), and one of our ETRN clients is on
this mailing list, the <B>-R</B> won't "flush" the mailing list message for
that client.
specify pipe or file deliveries. However, the problem will then still be
present for any user who sets up a <B>.forward</B> file to redirect to any of
the ETRN domains. See the last 3 paragraphs of
- <A HREF="FAQ.html#SEC136">A0521</A> for a discussion of
+ <A HREF="FAQ.html#SEC162">A0521</A> for a discussion of
an alternative approach.
</P>
-<A NAME="SEC138" HREF="FAQ.html#TOC138">Q0523</A>: Exim seems to be sending the same message twice, according to the log,
+<A NAME="SEC164" HREF="FAQ.html#TOC164">Q0523</A>: Exim seems to be sending the same message twice, according to the log,
although there is a difference in capitalization of the local part of
the address.
local-parts impedes interoperability and is discouraged.
</P>
-<A NAME="SEC139" HREF="FAQ.html#TOC139">Q0524</A>: How can I force the next retry time for a host to be now?
+<A NAME="SEC165" HREF="FAQ.html#TOC165">Q0524</A>: How can I force the next retry time for a host to be now?
<P>
interface is very clumsy.
</P>
-<A NAME="SEC140" HREF="FAQ.html#TOC140">Q0525</A>: I set up "|/bin/grep Subject|/usr/bin/smbclient <B>-M</B> <netbiosname>" as an
+<A NAME="SEC166" HREF="FAQ.html#TOC166">Q0525</A>: I set up "|/bin/grep Subject|/usr/bin/smbclient <B>-M</B> <netbiosname>" as an
alias but it doesn't work.
</P>
<PRE>
"|/bin/sh -c '/bin/grep Subject|/usr/bin/smbclient -M <netbiosname>'"</PRE>
-<A NAME="SEC141" HREF="FAQ.html#TOC141">Q0526</A>: Why does the pipe transport add a line starting with ">From" to
+<A NAME="SEC167" HREF="FAQ.html#TOC167">Q0526</A>: Why does the pipe transport add a line starting with ">From" to
messages?
of "prefix".
</P>
-<A NAME="SEC142" HREF="FAQ.html#TOC142">Q0527</A>: I have set <TT>fallback_hosts</TT> on my smtp transport, but after the error
- <B>"sem@chat.ru</B> cannot be resolved at this time" Exim isn't using them.
+<A NAME="SEC168" HREF="FAQ.html#TOC168">Q0527</A>: I have set <TT>fallback_hosts</TT> on my smtp transport, but after the error
+ <B><B>"sem@chat.ru</B></B> cannot be resolved at this time" Exim isn't using them.
<P>
host(s) fails. In this case, Exim couldn't even resolve the domain
<B>chat.ru</B> to discover what the original hosts were, so it never got as far
as the transport. However, see
- <A HREF="FAQ.html#SEC73">Q0322</A> for a possible solution.
+ <A HREF="FAQ.html#SEC89">Q0322</A> for a possible solution.
</P>
-<A NAME="SEC143" HREF="FAQ.html#TOC143">Q0528</A>: After the holidays my ISP has always hundreds of e-mails waiting for me.
+<A NAME="SEC169" HREF="FAQ.html#TOC169">Q0528</A>: After the holidays my ISP has always hundreds of e-mails waiting for me.
These are forced down Exim's throat in one go. Exim spawns a lot of
kids, but is there some limit to the number of processes it creates?
is limited by <TT>smtp_accept_max</TT>.
</P>
-<A NAME="SEC144" HREF="FAQ.html#TOC144">Q0529</A>: When a message in the queue got to 12h old, Exim wrote 'retry timeout
+<A NAME="SEC170" HREF="FAQ.html#TOC170">Q0529</A>: When a message in the queue got to 12h old, Exim wrote 'retry timeout
exceeded' and removed <EM>all</EM> messages in the queue to this host - even
recent messages. How I can avoid this behaviour? I only want to remove
messages that have exceeded the maximum retry time.
want, but it might help.
</P>
-<A NAME="SEC145" HREF="FAQ.html#TOC145">Q0530</A>: Can Exim add a Content-Length: header to messages it delivers?
+<A NAME="SEC171" HREF="FAQ.html#TOC171">Q0530</A>: Can Exim add a Content-Length: header to messages it delivers?
<P>
<B><A HREF="http://home.netscape.com/eng/mozilla/2.0/relnotes/demo/content-length.html">http://home.netscape.com/eng/mozilla/2.0/relnotes/demo/content-length.html</A></B>
</P>
-<A NAME="SEC146" HREF="FAQ.html#TOC146">Q0531</A>: Exim seems to be trying to deliver a message every 10 minutes, though
+<A NAME="SEC172" HREF="FAQ.html#TOC172">Q0531</A>: Exim seems to be trying to deliver a message every 10 minutes, though
the retry rules specify longer times after a while, because it is
writing a log entry every time, like this:
reached, which accounts for "retry time not reached for other hosts".
</P>
-<A NAME="SEC147" HREF="FAQ.html#TOC147">Q0532</A>: I am trying to set exim up to have a automatic failover if it sees that
+<A NAME="SEC173" HREF="FAQ.html#TOC173">Q0532</A>: I am trying to set exim up to have a automatic failover if it sees that
the system that it is sending all mail to is down.
If there are several names, they must be separated by colons.
</P>
-<A NAME="SEC148" HREF="FAQ.html#TOC148">Q0533</A>: I can't get Exim to deliver over NFS. I get the error "fcntl() failed:
+<A NAME="SEC174" HREF="FAQ.html#TOC174">Q0533</A>: I can't get Exim to deliver over NFS. I get the error "fcntl() failed:
No locks available", though the lock daemon is running on the NFS server
and other hosts are able to access it.
such system).
</P>
-<A NAME="SEC149" HREF="FAQ.html#TOC149">Q0534</A>: Why does Exim bounce messages without even attempting delivery, giving
+<A NAME="SEC175" HREF="FAQ.html#TOC175">Q0534</A>: Why does Exim bounce messages without even attempting delivery, giving
the error "retry time not reached for any host after a long failure
period"?
will try most messages for those hosts once before giving up.
</P>
-<A NAME="SEC150" HREF="FAQ.html#TOC150">Q0535</A>: My <B>.forward</B> file is "|/usr/bin/procmail <B>-f-"</B> and mail gets delivered,
+<A NAME="SEC176" HREF="FAQ.html#TOC176">Q0535</A>: My <B>.forward</B> file is "|/usr/bin/procmail <B>-f-"</B> and mail gets delivered,
but there was a bounce to the sender, sending him the output of procmail.
How can I prevent this?
any output when it succeeds.
</P>
-<BR><H2><A NAME="SEC151" HREF="FAQ.html#TOC151">6. UUCP
+<A NAME="SEC177" HREF="FAQ.html#TOC177">Q0536</A>: Can I write an ordinary file when I running a perl script as a transport
+ filter for <TT>remote_smtp</TT> and <TT>address_pipe</TT> transports?
+
+
+<P>
+A0536: Yes, provided the file is writeable by the Exim user. However, if two
+ messages are being delivered at once, their data will get mixed up in
+ the file unless you implement your own locking scheme. If all you want
+ to do is to take a copy of the message, another approach that avoids
+ the locking problem is to use a system filter to set up an "unseen"
+ delivery to a file. If you only want the message's headers, you can
+ set <TT>message_filter_file_transport</TT> to point to a special appendfile
+ transport that has <TT>headers_only</TT> set.
+
+</P>
+<A NAME="SEC178" HREF="FAQ.html#TOC178">Q0537</A>: I have some mails on my queues that are sticking around longer than
+ the retry time indicates they should. They are all getting frozen
+ because some remote admin has set their MX record to 127.0.0.1.
+
+
+<P>
+A0537: The admin in question is an idiot. Exim will always freeze such messages
+ because they are apparently routed to the local host. There are two
+ router options that can help you deal with them.
+
+</P>
+<P>
+ (1) Set
+
+</P>
+<PRE>
+ self = fail</PRE>
+<P>
+ on the router which handles the domain - in a simple configuration this
+ will be the <B>lookuphost</B> router. This will cause the relevant addresses to
+ bounce, instead of freezing the message.
+
+</P>
+<P>
+ (2) If you are running Exim 3.20 or later, you can set
+
+</P>
+<PRE>
+ ignore_target_hosts = 127.0.0.1</PRE>
+<P>
+ on the router instead. This causes Exim to completely ignore any hosts
+ with that IP address.
+
+</P>
+<A NAME="SEC179" HREF="FAQ.html#TOC179">Q0538</A>: My <B>/var/spool/mail</B> has grown drastically. Is there any possibility of
+ using two files in <B>exim.cfg</B> ?
+
+
+<P>
+A0538: You can use an expansion string to split mailboxes between two
+ directories. For example,
+
+</P>
+<PRE>
+ file = /var/spool/mail${nhash_2:$local_part}/$local_part</PRE>
+<P>
+ which does a hash on the local part, producing either 0 or 1, thereby
+ using mail0 or mail1. But remember, the MUAs that read these mailboxes
+ also have to know where they are.
+
+</P>
+<A NAME="SEC180" HREF="FAQ.html#TOC180">Q0539</A>: Sendmail has a program called smrsh that restricts what binaries
+ can be run from sendmail aliases. Is there someting like this in Exim ?
+
+
+<P>
+A0539: Check out the <TT>allow_commands</TT> option in the pipe transport.
+
+</P>
+<A NAME="SEC181" HREF="FAQ.html#TOC181">Q0540</A>: I wish to have large emails go out one at a time.
+
+
+<P>
+A0540: One possibility is to set up a router that defers all large messages,
+ except in queue runs. Since queue runners deliver just one
+ message at a time, if you limited the number of simultaneous queue
+ runners to 1, you would get the effect you wanted. A suitable router
+ might be
+
+</P>
+<PRE>
+ defer_if_large_unless_queue_run:
+ driver = domainlist
+ self = defer
+ condition = ${if or{{queue_running}{<{$message_size}{200K}}}{no}{yes}}
+ route_list = * 127.0.0.1 byname</PRE>
+<P>
+ Of course, this would always delay any large message until the next
+ queue runner, but if you run them fairly regularly, this shouldn't be a
+ huge problem. (May even be desirable!)
+
+</P>
+<BR><H2><A NAME="SEC182" HREF="FAQ.html#TOC182">6. UUCP
</A></H2>
-<A NAME="SEC152" HREF="FAQ.html#TOC152">Q0601</A>: The MX records for some UUCP domains point to my local host. How do I
+<A NAME="SEC183" HREF="FAQ.html#TOC183">Q0601</A>: The MX records for some UUCP domains point to my local host. How do I
get it to pass the messages on to UUCP?
the domain name.
</P>
-<A NAME="SEC153" HREF="FAQ.html#TOC153">Q0602</A>: How can I get Exim to handle "bang path" addresses?
+<A NAME="SEC184" HREF="FAQ.html#TOC184">Q0602</A>: How can I get Exim to handle "bang path" addresses?
<P>
the message.
</P>
-<A NAME="SEC154" HREF="FAQ.html#TOC154">Q0603</A>: We see something strange on our system in regards to mail comming in via
+<A NAME="SEC185" HREF="FAQ.html#TOC185">Q0603</A>: We see something strange on our system in regards to mail comming in via
rmail from a UUCP link. The sender is being set to mailmaster instead of
the real sender, and a Sender: header is being added to the message.
command line.
</P>
-<BR><H2><A NAME="SEC155" HREF="FAQ.html#TOC155">7. PERFORMANCE
+<BR><H2><A NAME="SEC186" HREF="FAQ.html#TOC186">7. PERFORMANCE
</A></H2>
-<A NAME="SEC156" HREF="FAQ.html#TOC156">Q0701</A>: I'm running a large mail server. Should I set <TT>split_spool_directory</TT> to
+<A NAME="SEC187" HREF="FAQ.html#TOC187">Q0701</A>: I'm running a large mail server. Should I set <TT>split_spool_directory</TT> to
improve performance?
???? Other operating systems ????
</P>
-<A NAME="SEC157" HREF="FAQ.html#TOC157">Q0702</A>: How well does Exim scale?
+<A NAME="SEC188" HREF="FAQ.html#TOC188">Q0702</A>: How well does Exim scale?
<P>
considerable performance <B>--</B> 10000 m/hour."
</P>
-<A NAME="SEC158" HREF="FAQ.html#TOC158">Q0703</A>: We have a large password file. Can Exim use alternative lookups during
+<A NAME="SEC189" HREF="FAQ.html#TOC189">Q0703</A>: We have a large password file. Can Exim use alternative lookups during
delivery to speed things up?
these could equally be DBM or cdb or NIS or LDAP lookups.)
</P>
-<BR><H2><A NAME="SEC159" HREF="FAQ.html#TOC159">8. POLICY CONTROLS
+<P>
+ If you are using FreeBSD, this problem should not arise, because it
+ automatically uses an indexed password file. In some other operating
+ systems you can arrange for this to happen too. On Linux, for example,
+ all you need to do is
+
+</P>
+<PRE>
+ # cd /var/db
+ # make</PRE>
+<P>
+ and put "db" before "files" in any <B><B>/etc/nsswitch.conf</B></B> lines you want to
+ use db for.
+
+</P>
+<A NAME="SEC190" HREF="FAQ.html#TOC190">Q0704</A>: I just wondered if it might be helpful to put the hints database on a
+ RAM disk during regular operation. Did anybody try that yet?
+
+
+<P>
+A0704: A user reported thus: I have found that this works GREAT under Solaris.
+ Make a RAM disk partition and keep everything in the "db" directory on
+ it. However, when I try the same thing on Linux, I don't see the same
+ boost. I think that Linux's file buffer cache works about the same.
+ Plus, this leave more room for processes to run.
+
+</P>
+<BR><H2><A NAME="SEC191" HREF="FAQ.html#TOC191">8. POLICY CONTROLS
</A></H2>
-<A NAME="SEC160" HREF="FAQ.html#TOC160">Q0801</A>: How do I block unwanted messages from outside my host?
+<A NAME="SEC192" HREF="FAQ.html#TOC192">Q0801</A>: How do I block unwanted messages from outside my host?
<P>
recipient.
</P>
-<A NAME="SEC161" HREF="FAQ.html#TOC161">Q0802</A>: I don't want to block spam entirely; how can I inspect each message
+<A NAME="SEC193" HREF="FAQ.html#TOC193">Q0802</A>: I don't want to block spam entirely; how can I inspect each message
before deciding whether to deliver it or not?
F003.
</P>
-<A NAME="SEC162" HREF="FAQ.html#TOC162">Q0803</A>: How can I test that my spam blocks are working?
+<A NAME="SEC194" HREF="FAQ.html#TOC194">Q0803</A>: How can I test that my spam blocks are working?
<P>
which tests have succeeded or failed.
</P>
-<A NAME="SEC163" HREF="FAQ.html#TOC163">Q0804</A>: How can I test that Exim is correctly configured to use the Realtime
+<A NAME="SEC195" HREF="FAQ.html#TOC195">Q0804</A>: How can I test that Exim is correctly configured to use the Realtime
Blocking List (RBL)?
server looks from the view of someone on the RBL.
</P>
-<A NAME="SEC164" HREF="FAQ.html#TOC164">Q0805</A>: How can I use <B>tcpwrappers</B> in conjunction with Exim?
+<A NAME="SEC196" HREF="FAQ.html#TOC196">Q0805</A>: How can I use <B>tcpwrappers</B> in conjunction with Exim?
<P>
including ports, <B>etc.,</B> and on logging connections.
</P>
-<A NAME="SEC165" HREF="FAQ.html#TOC165">Q0806</A>: How can I get POP-auth-before-relay support in Exim?
+<A NAME="SEC197" HREF="FAQ.html#TOC197">Q0806</A>: How can I get POP-auth-before-relay support in Exim?
<P>
A0806: See <B><A HREF="http://cc.ysu.edu/~doug/exim-pop.tar.Z">http://cc.ysu.edu/~doug/exim-pop.tar.Z</A></B> which has some scripts for
- this, courtesy of Doug S <B><B><doug@cc.ysu.edu</B>>.</B>
+ this, courtesy of Doug S <B><B><doug@cc.ysu.edu</B>>.</B> See also
+ <A HREF="FAQ.html#SEC226">Q0835</A>.
</P>
-<A NAME="SEC166" HREF="FAQ.html#TOC166">Q0807</A>: I have one or two cases where my machine correctly rejects messages, but
+<A NAME="SEC198" HREF="FAQ.html#TOC198">Q0807</A>: I have one or two cases where my machine correctly rejects messages, but
the remote machine is quite persistent, and keeps trying over and over.
result in an error code after the data has been received.
</P>
-<A NAME="SEC167" HREF="FAQ.html#TOC167">Q0808</A>: I am seeing the error "no valid sender in message headers: return path
+<A NAME="SEC199" HREF="FAQ.html#TOC199">Q0808</A>: I am seeing the error "no valid sender in message headers: return path
is <>" in the reject log. Isn't <> a valid return path for error
messages?
verification of those addresses failed.
</P>
-<A NAME="SEC168" HREF="FAQ.html#TOC168">Q0809</A>: Let's say that we want to run a mail server that does not care if you
+<A NAME="SEC200" HREF="FAQ.html#TOC200">Q0809</A>: Let's say that we want to run a mail server that does not care if you
have proper reverse DNS. If you include <TT>host_reject</TT> lines in your
config file, Exim will always reject connections from such hosts. How
can this be avoided?
same, but every time the exception is invoked, it is logged.
</P>
-<A NAME="SEC169" HREF="FAQ.html#TOC169">Q0810</A>: Is there a way to prevent lookups in the RBL for local hosts?
+<A NAME="SEC201" HREF="FAQ.html#TOC201">Q0810</A>: Is there a way to prevent lookups in the RBL for local hosts?
<P>
A0810: Check out the <TT>rbl_hosts</TT> option.
</P>
-<A NAME="SEC170" HREF="FAQ.html#TOC170">Q0811</A>: How can I set up the <TT>sender_reject</TT> option in my config file so I can
+<A NAME="SEC202" HREF="FAQ.html#TOC202">Q0811</A>: How can I set up the <TT>sender_reject</TT> option in my config file so I can
reject mail by matching regular expressions?
<P>
See the manual section entitled "Address lists" for a description of the
@@ type of split domain/local part lookup. See also
- <A HREF="FAQ.html#SEC160">Q0801</A>.
+ <A HREF="FAQ.html#SEC192">Q0801</A>.
</P>
-<A NAME="SEC171" HREF="FAQ.html#TOC171">Q0812</A>: Normally <TT>sender_reject_recipients</TT> works fine, but addresses that have
+<A NAME="SEC203" HREF="FAQ.html#TOC203">Q0812</A>: Normally <TT>sender_reject_recipients</TT> works fine, but addresses that have
some uppercase letters in them seem to come through.
caselessly, so Exim now does this by default.
</P>
-<A NAME="SEC172" HREF="FAQ.html#TOC172">Q0813</A>: I want to accept some sender addresses, even though they do not verify.
+<A NAME="SEC204" HREF="FAQ.html#TOC204">Q0813</A>: I want to accept some sender addresses, even though they do not verify.
There doesn't seem to be an option for verification exceptions, so how
can I do this?
domains = some.domain.com
local_parts = root
route_list = *</PRE>
-<A NAME="SEC173" HREF="FAQ.html#TOC173">Q0814</A>: We are being plagued by forged mail coming from a number of different
+<A NAME="SEC205" HREF="FAQ.html#TOC205">Q0814</A>: We are being plagued by forged mail coming from a number of different
hosts and sender addresses. The guy however leaves a fingerprint. The
first received line always contains 'Received: from baby'. What is the
best suggested way for eliminiating him from our systems?
<PRE>
# Exim filter
if $h_Received: contains "from baby" then seen finish endif</PRE>
-<A NAME="SEC174" HREF="FAQ.html#TOC174">Q0815</A>: I have set <TT>host_accept_relay</TT>, but my host still refuses to relay from
+<A NAME="SEC206" HREF="FAQ.html#TOC206">Q0815</A>: I have set <TT>host_accept_relay</TT>, but my host still refuses to relay from
matching hosts.
fails, relaying is rejected. However, if the list were in the
opposite order, the IP check would succeed, and no DNS lookup would
be done. See also
- <A HREF="FAQ.html#SEC168">Q0809</A>.
+ <A HREF="FAQ.html#SEC200">Q0809</A>.
</P>
-<A NAME="SEC175" HREF="FAQ.html#TOC175">Q0816</A>: How can I run customized verification checks on incoming addresses?
+<A NAME="SEC207" HREF="FAQ.html#TOC207">Q0816</A>: How can I run customized verification checks on incoming addresses?
<P>
<P>
Remote addresses can be handled in a similar way by using a <B>domainlist</B>
router that matches all domains. See also
- <A HREF="FAQ.html#SEC172">Q0813</A>.
+ <A HREF="FAQ.html#SEC204">Q0813</A>.
</P>
<P>
for doing what you want before going down this road.
</P>
-<A NAME="SEC176" HREF="FAQ.html#TOC176">Q0817</A>: Does Exim apply RBL checks to error messages, those with an envelope
+<A NAME="SEC208" HREF="FAQ.html#TOC208">Q0817</A>: Does Exim apply RBL checks to error messages, those with an envelope
sender of "<>" ?
that the envelope sender is "<>".
</P>
-<A NAME="SEC177" HREF="FAQ.html#TOC177">Q0818</A>: I want to be able to set up a list, similar to <TT>sender_reject_recipients</TT>,
+<A NAME="SEC209" HREF="FAQ.html#TOC209">Q0818</A>: I want to be able to set up a list, similar to <TT>sender_reject_recipients</TT>,
but with a user-defined message. I believe I have to use a director for
this.
treated as a line separator in prohibition texts.
</P>
-<A NAME="SEC178" HREF="FAQ.html#TOC178">Q0819</A>: I want to reject certain sender-recipient combinations, with a specific
+<A NAME="SEC210" HREF="FAQ.html#TOC210">Q0819</A>: I want to reject certain sender-recipient combinations, with a specific
message for each such combination.
because the bounce message you generate will get stuck.
</P>
-<A NAME="SEC179" HREF="FAQ.html#TOC179">Q0820</A>: Will Exim allow me to create a file of regexs and match incoming
+<A NAME="SEC211" HREF="FAQ.html#TOC211">Q0820</A>: Will Exim allow me to create a file of regexs and match incoming
external email to the list - and if a match is found file the offending
message into a special location? Also is it possible to make exim only
filter parts of an incoming email - e.g. ignore large MIME attachments
algorithm it liked for deciding what should be done.
</P>
-<A NAME="SEC180" HREF="FAQ.html#TOC180">Q0821</A>: I've hacked sendmail to make an ioctl call at the time of the SMTP RCPT
+<A NAME="SEC212" HREF="FAQ.html#TOC212">Q0821</A>: I've hacked sendmail to make an ioctl call at the time of the SMTP RCPT
command, to check if a user has exceeded their email quota. If they have
I issue a temporary failure and a message - can I do this with Exim?
immediately, otherwise try every hour for one day, then bounce").
</P>
-<A NAME="SEC181" HREF="FAQ.html#TOC181">Q0822</A>: I'm looking for a rule to reject special unknown recipients.
+<A NAME="SEC213" HREF="FAQ.html#TOC213">Q0822</A>: I'm looking for a rule to reject special unknown recipients.
<P>
router with a <TT>condition</TT> setting to send such messages to an autoreply
transport that sends back an error message to the sender. See also
- <A HREF="FAQ.html#SEC185">Q0826</A>.
+ <A HREF="FAQ.html#SEC217">Q0826</A>.
</P>
-<A NAME="SEC182" HREF="FAQ.html#TOC182">Q0823</A>: I'd like to pass all messages through a virus-scanning system before
+<A NAME="SEC214" HREF="FAQ.html#TOC214">Q0823</A>: I'd like to pass all messages through a virus-scanning system before
delivery. Can Exim do this?
suitable checking program or script which runs as a trusted user. This
can then re-submit the message to Exim, using <B>-oMr</B> to set the received
protocol to "scanned-ok", and the <B>-f</B> option to set the correct envelope
- sender address.
+ sender address. WARNING: If you forget to make the resubmitting process
+ run as a trusted user, the received protocol does not get set, and you
+ are likely to generate a loop.
</P>
-<A NAME="SEC183" HREF="FAQ.html#TOC183">Q0824</A>: How can I accomplish this: a message sent from any host must either be
+<A NAME="SEC215" HREF="FAQ.html#TOC215">Q0824</A>: How can I accomplish this: a message sent from any host must either be
sending to a domain in a list (a dbm file) or the sender's address
domain must be in the list.
host may end up on one of the open relay blocking lists as a result.
</P>
-<A NAME="SEC184" HREF="FAQ.html#TOC184">Q0825</A>: I've set <TT>relay_domains</TT> and <TT>sender_address_relay</TT>, but if <B>user@mydomain</B>
+<A NAME="SEC216" HREF="FAQ.html#TOC216">Q0825</A>: I've set <TT>relay_domains</TT> and <TT>sender_address_relay</TT>, but if <B>user@mydomain</B>
tries sending to an arbitrary domain, Exim rejects it.
host may end up on one of the open relay blocking lists as a result.
</P>
-<A NAME="SEC185" HREF="FAQ.html#TOC185">Q0826</A>: I set <TT>sender_reject_recipients</TT>, but Exim is not rejecting those
+<A NAME="SEC217" HREF="FAQ.html#TOC217">Q0826</A>: I set <TT>sender_reject_recipients</TT>, but Exim is not rejecting those
recipients.
approach is to set up a router to send the address to your directors,
and then use an alias file to generate a :fail: message as above.
Alternatively, you can use the verification mechanism: see
- <A HREF="FAQ.html#SEC181">Q0822</A>.
+ <A HREF="FAQ.html#SEC213">Q0822</A>.
</P>
-<A NAME="SEC186" HREF="FAQ.html#TOC186">Q0827</A>: I can't find an option to deny "RCPT TO:" addresses.
+<A NAME="SEC218" HREF="FAQ.html#TOC218">Q0827</A>: I can't find an option to deny "RCPT TO:" addresses.
<P>
A0827: Denying RCPT TO addresses is the job of verifying. You can set up
directors and routers that are run only when verifying and not when
delivering. This gives you a great deal of flexibility. See
- <A HREF="FAQ.html#SEC181">Q0822</A>.
+ <A HREF="FAQ.html#SEC213">Q0822</A>.
</P>
-<A NAME="SEC187" HREF="FAQ.html#TOC187">Q0828</A>: My problem is that Exim replaces <B>$local_part</B> with an empty string in the
+<A NAME="SEC219" HREF="FAQ.html#TOC219">Q0828</A>: My problem is that Exim replaces <B>$local_part</B> with an empty string in the
system filtering. What's wrong or what did I miss?
called <B><B>$recipients.</B></B>
</P>
-<A NAME="SEC188" HREF="FAQ.html#TOC188">Q0829</A>: Using <B>$recipients</B> in a system filter gives me another problem: how can
+<A NAME="SEC220" HREF="FAQ.html#TOC220">Q0829</A>: Using <B>$recipients</B> in a system filter gives me another problem: how can
I do a string lookup if <B>$recipients</B> is a list of addresses?
embedded Perl interpreter - but that is expensive.
</P>
-<A NAME="SEC189" HREF="FAQ.html#TOC189">Q0830</A>: Is there a way to configure Exim to reject mail to a certain local host?
+<A NAME="SEC221" HREF="FAQ.html#TOC221">Q0830</A>: Is there a way to configure Exim to reject mail to a certain local host?
<P>
domains = rejected.domain
verify_only
fail_verify</PRE>
-<A NAME="SEC190" HREF="FAQ.html#TOC190">Q0831</A>: Exim sometimes rejects messages with bad senders after the DATA and
+<A NAME="SEC222" HREF="FAQ.html#TOC222">Q0831</A>: Exim sometimes rejects messages with bad senders after the DATA and
sometimes after the MAIL command. What is the difference?
rejects every RCPT command instead.
</P>
-<A NAME="SEC191" HREF="FAQ.html#TOC191">Q0832</A>: How can I get Exim to remove attachments from messages?
+<A NAME="SEC223" HREF="FAQ.html#TOC223">Q0832</A>: How can I get Exim to remove attachments from messages?
<P>
headers.
</P>
-<A NAME="SEC192" HREF="FAQ.html#TOC192">Q0833</A>: I ran a relay test against my host and it failed with an address
+<A NAME="SEC224" HREF="FAQ.html#TOC224">Q0833</A>: I ran a relay test against my host and it failed with an address
containing a %, though I don't have <TT>percent_hack_domains</TT> set. Is Exim
broken? This is what the tester said:
these particular sender or recipient domains from receiver verification.
</P>
-<BR><H2><A NAME="SEC193" HREF="FAQ.html#TOC193">9. MAJORDOMO
+<A NAME="SEC225" HREF="FAQ.html#TOC225">Q0834</A>: How can I arrange for each user to have a file listing the only sender
+ addresses from which she will accept mail? I want to do this so my
+ family members don't get any spam (or other inappropriate mail).
+
+
+<P>
+A0834: Arrange for each user you want to control to have a file called
+ .acceptlist, ignoring for the moment how this gets maintained. Then,
+ turn on <TT>receiver_verify</TT> and make the following your first director:
+
+</P>
+<PRE>
+ verify_known_sender:
+ driver = smartuser
+ require_files = /home/$local_part/.acceptlist
+ senders = ! /home/$local_part/.acceptlist
+ new_address = :fail: Sender unknown</PRE>
+<P>
+ That will stop such messages even getting into your host. (Replace
+ <B>/home/$local_part</B> with whatever the correct path to your user's home
+ directories is.) As written above, the accept list is interpolated into
+ the senders list and can contain wild cards. If there are no wild cards
+ and the lists get very long, it would be more efficient to convert them
+ into some indexed format, e.g. cdb and use a cdb lookup.
+
+</P>
+<P>
+ One problem with this is that it will block bounce messages, which have
+ empty senders. You can get round this, by changing the "senders" line to
+
+</P>
+<PRE>
+ senders = ! : ! /home/$local_part/.acceptlist</PRE>
+<P>
+ However, this will, of course, let in spam that has a null sender. Since
+ the "senders" option is expanded, you could perhaps include something
+ that tested a message without a sender for being a plausible bounce
+ message before including the null sender in the list. Another approach
+ would be to use a <TT>condition</TT> option to do various tests, including
+ looking up <B>$sender_address</B> in <B><B>/home/$local_part/.acceptlist</B>.</B>
+
+</P>
+<A NAME="SEC226" HREF="FAQ.html#TOC226">Q0835</A>: I have the POP-auth-before-relay support in, but I see that Exim still
+ does an RBL lookup before checking the POP authorisation file. How can I
+ prevent it doing an RBL check if the caller is authorized by virtue of a
+ recent POP authentication?
+
+
+<P>
+A0835: If the file containing a list of recent POP-authenticated hosts is
+ <B>/usr/local/etc/exim/popauth</B>, say, set
+
+</P>
+<PRE>
+ rbl_hosts = !/usr/local/etc/exim/popauth</PRE>
+<P>
+ so that hosts in the list are exempted from RBL checking.
+
+</P>
+<A NAME="SEC227" HREF="FAQ.html#TOC227">Q0836</A>: When using Nessus on a system that runs exim, a number of security
+ issues are raised. Nessus complains that exim answers to EXPN and/or
+ VRFY; sometimes it even complains that exim allows relaying.
+
+
+<P>
+A0836: Exim supports EXPN only if you permit it to do so by setting
+ <TT>smtp_expn_hosts</TT>. Likewise, it supports to VRFY only if you set
+ <TT>smtp_verify</TT>. Without these settings, its responses are
+
+</P>
+<PRE>
+ 550 EXPN not available
+ 252 VRFY not available</PRE>
+<P>
+ Maybe the use of 252 is the "problem". It is recommended that this be
+ done (by those that discuss these things) because there are stupid
+ clients that attempt VRFY before sending a message.
+
+</P>
+<A NAME="SEC228" HREF="FAQ.html#TOC228">Q0837</A>: Could anyone points me to right rules to prevent sending/receiving
+ messages to/for domains which have one MX to localhost or only have
+ address 127.0.0.1 ?
+
+
+<P>
+A0837: You need to turn on <TT>sender_verify</TT>. With the default configuration, this
+ will result in a temporary verification failure for these domains. You
+ can make this into a permanent failure by adding
+
+</P>
+<PRE>
+ self = fail</PRE>
+<P>
+ to your <B>lookuphost</B> router. The default action on encountering a routing
+ to the local host is to defer, and freeze the message if it is a
+ delivery address. Making this change applies to any routing to the local
+ host, not just to 127.0.0.1.
+
+</P>
+<P>
+ If you are running Exim release 3.16 or later, an alternative approach
+ is to set <TT>ignore_target_hosts</TT> = 127.0.0.1 on the relevant routers.
+
+</P>
+<A NAME="SEC229" HREF="FAQ.html#TOC229">Q0838</A>: How can I lock out domains that do not have any MX records?
+
+
+<P>
+A0838: You can do this by means of the <TT>mx_domains</TT> option, but you should NOT do
+ this for Internet domains in general. There are still a large number of
+ legitimate domains that do not have MX records.
+
+</P>
+<A NAME="SEC230" HREF="FAQ.html#TOC230">Q0839</A>: I would like to have a per-user limit for the maximum size of messages
+ that can be sent.
+
+
+<P>
+A0839: The simplest way to do this is to put something in a system filter along
+ these lines:
+
+</P>
+<PRE>
+ if $message_size is above
+ "${lookup{$sender_address}lsearch{/some/file}{$value}{10M}}"
+ then
+ fail "Message is larger than $sender_address is allowed to send"
+ endif</PRE>
+<A NAME="SEC231" HREF="FAQ.html#TOC231">Q0840</A>: I have set up a DBM (or cdb, or lsearch, or MySQL or whatever) file
+ containing a list of IP addresses for the hosts I want to allow to
+ relay, but when I set <TT>host_accept_relay</TT> to do a lookup on that data, it
+ doesn't work.
+
+
+<P>
+A0840: If you include any kind of lookup in a host list, it will by default
+ search on the host <EM>name</EM>, not on the IP address. What you want is
+ something like
+
+</P>
+<PRE>
+ host_accept_relay = net-dbm;/some/file</PRE>
+<P>
+ The prefix net- makes it look up the IP address instead of the name. You
+ can also look up IP networks by using entries like
+
+</P>
+<PRE>
+ host_accept_relay = net24-dbm;/some/file</PRE>
+<P>
+ For a host with IP address 192.168.45.23 this would do the lookup using
+ the key "192.168.45.0/24".
+
+</P>
+<BR><H2><A NAME="SEC232" HREF="FAQ.html#TOC232">9. MAJORDOMO
</A></H2>
-<A NAME="SEC194" HREF="FAQ.html#TOC194">Q0901</A>: How do I set up Majordomo to work with Exim?
+<A NAME="SEC233" HREF="FAQ.html#TOC233">Q0901</A>: How do I set up Majordomo to work with Exim?
<P>
greater than 1 in the Exim configuration.
</P>
-<A NAME="SEC195" HREF="FAQ.html#TOC195">Q0902</A>: I have set <B>$mailer</B> in <B>majordomo.cf,</B> but it still isn't setting the
+<A NAME="SEC234" HREF="FAQ.html#TOC234">Q0902</A>: I have set <B>$mailer</B> in <B>majordomo.cf,</B> but it still isn't setting the
sender correctly in the messages it sends.
example,
</P>
-<P>
- <B>$mailer</B> = "$sendmail_command <B>-oi</B> <B>-oee</B> <B><B>-f$sender\@lists.mydomain.de</B>";</B>
-
-</P>
+<PRE>
+ $mailer = "$sendmail_command -oi -oee -f$sender\@lists.mydomain.de";</PRE>
<P>
is not correct. It needs three backslashes, not one, and the $ at the
start of <B>$sender</B> has to be escaped with a backslash.
</P>
-<A NAME="SEC196" HREF="FAQ.html#TOC196">Q0903</A>: I'm trying to set up majordomo, but I'm getting a "wrong mode" error
+<A NAME="SEC235" HREF="FAQ.html#TOC235">Q0903</A>: I'm trying to set up majordomo, but I'm getting a "wrong mode" error
when I try to send it mail. The panic log entry reads:
-<P>
- 1999-01-05 11:23:34 0zxZGY-0000vB-00 <TT>majordomo_aliases</TT> director:
- <B><B>/var/lib/majordomo/lists/lists.aliases</B></B> (lsearch lookup): wrong mode
-
-</P>
+<PRE>
+ 1999-01-05 11:23:34 0zxZGY-0000vB-00 majordomo_aliases director:
+ /var/lib/majordomo/lists/lists.aliases (lsearch lookup): wrong mode</PRE>
<P>
A0903: Check the mode of <B><B>/var/lib/majordomo/lists/lists.aliases</B></B> and compare it
with the setting of the modemask option in the <TT>majordomo_aliases</TT>
file, and it defaults to 022.
</P>
-<A NAME="SEC197" HREF="FAQ.html#TOC197">Q0904</A>: I'm getting return code 9 from <B><B>/home/majordomo/majordomo-1.94.4/wrapper</B></B>
+<A NAME="SEC236" HREF="FAQ.html#TOC236">Q0904</A>: I'm getting return code 9 from <B><B>/home/majordomo/majordomo-1.94.4/wrapper</B></B>
when it is passed a message from Exim.
RedHat 5.2. Rebuilding Perl 5.005x solved it.
</P>
-<BR><H2><A NAME="SEC198" HREF="FAQ.html#TOC198">10. REWRITING
+<A NAME="SEC237" HREF="FAQ.html#TOC237">Q0905</A>: Exim is complaining about an invalid command line when Majordomo tries
+ to send it a message for delivery.
+
+
+<P>
+A0905: Take a look at your <B>majordomo.cf</B> file, It should have something that
+ looks like
+
+</P>
+<PRE>
+ $sendmail_command = "/usr/lib/sendmail";</PRE>
+<P>
+ and another line like
+
+</P>
+<PRE>
+ $mailer = "$sendmail_command -oi -oee -f\$sender";</PRE>
+<P>
+ If you have modified resend (one of the majordomo programs) to use
+ <B>$sendmail_command</B> instead of <B>$mailer</B> you will be calling Exim with no
+ command line arguments.
+
+</P>
+<BR><H2><A NAME="SEC238" HREF="FAQ.html#TOC238">10. REWRITING ADDRESSES
</A></H2>
-<A NAME="SEC199" HREF="FAQ.html#TOC199">Q1001</A>: How can I get Exim to strip the hostname from the sender's address?
+<A NAME="SEC239" HREF="FAQ.html#TOC239">Q1001</A>: How can I get Exim to strip the hostname from the sender's address?
<P>
From:, Reply-to:, and Sender: headers.
</P>
-<A NAME="SEC200" HREF="FAQ.html#TOC200">Q1002</A>: I have Exim configured to remove the hostname portion of the domain on
+<A NAME="SEC240" HREF="FAQ.html#TOC240">Q1002</A>: I have Exim configured to remove the hostname portion of the domain on
outgoing mail, and yet the hostname is present when the mail gets
delivered.
CNAME record.
</P>
-<A NAME="SEC201" HREF="FAQ.html#TOC201">Q1003</A>: I want to rewrite local addresses in mail that goes to the outside
+<A NAME="SEC241" HREF="FAQ.html#TOC241">Q1003</A>: I want to rewrite local addresses in mail that goes to the outside
world, but not for messages that remain within the local intranet.
<P>
-A1003: Exim wasn't really designed to handle this kind of split world. Because
- it keeps only one copy of a message, and does all the rewriting at the
- time of reception, a standard configuration cannot handle this kind of
- rewriting in a message that has both internal and external recipients.
+A1003: Exim wasn't really designed to handle this kind of split world, and
+ doing this is not entirely straightforward.
+
+</P>
+<P>
+ (A) If you are running version 3.20 or later, you can use the
+ <TT>headers_rewrite</TT> option on a transport. This will apply to just those
+ copies of a message that pass through the transport. The <TT>return_path</TT>
+ option can similarly be used to rewrite the sender address, but there is
+ no way of rewriting recipient addresses at transport time. However, as
+ these are by definition remote addresses, you probably don't want to
+ rewrite them.
+
+</P>
+<P>
+ You have to set up the configuration so that it uses different SMTP
+ transports for internal and external mail. Typically this would be done
+ by setting the <TT>domains</TT> option on a router for handling your internal
+ domains. However, if all domains are routed in the same way (for
+ example, using a DNS lookup), another approach is to use a string
+ expansion for the transport name. For example:
+
+</P>
+<PRE>
+ lookuphost:
+ driver = lookuphost
+ transport = ${if match{$domain}{\\.my\\.domain\$}{int_smtp}{ext_smtp}}</PRE>
+<P>
+ This example uses the <TT>int_smtp</TT> transport for domains ending in
+ .<B>my.domain,</B> and <TT>ext_smtp</TT> for everything else. The <TT>ext_smtp</TT> transport
+ could be something like this:
+
+</P>
+<PRE>
+ ext_smtp:
+ driver = smtp
+ headers_rewrite = *@*.my.domain \
+ ${lookup{$1}cdb{/etc/$2/mail.handles.cdb}{$value}fail}
+ return_path = \
+ ${if match{$return_path}{^([^@]+)@(.*)\\.my\\.domain\$}\
+ {\
+ ${lookup{$1}cdb{/etc/$2/mail.handles.cdb}{$value}fail}\
+ }\
+ fail}</PRE>
+<P>
+ This example uses a separate file of local-to-external address
+ translations for each domain. This is not the only possibility, of
+ course. The <TT>headers_rewrite</TT> and <TT>return_path</TT> options apply the same
+ rewriting to the header lines and the envelope sender address,
+ respectively.
+
+</P>
+<P>
+ (B) If you are running a version of Exim that is earlier than 3.20,
+ doing this kind of rewriting is very much more difficult. Until the
+ <TT>headers_rewrite</TT> option was added, all header rewriting was done at the
+ time a message was received. A standard configuration cannot handle
+ rewriting that is specific to certain recipients only.
+
+</P>
+<P>
+ The simplest thing to do is to upgrade to the latest current Exim
+ release. For those that cannot do that, this old information from the
+ <B>pre-3.20</B> FAQ is retained:
</P>
<P>
- However, what can be done is to split off a copy of the message to be
- sent to all external recipients, and do the rewriting on that. This can
- be achieved by running two differently-configured versions of Exim,
- either on a single host, or on two different hosts. If you have a
- gateway or firewall machine, that is the natural place to run the
- rewriting version.
+ The trick is to split off a copy of the message to be sent to all
+ external recipients, and do the rewriting on that. This can be achieved
+ by running two differently-configured versions of Exim, either on a
+ single host, or on two different hosts. If you have a gateway or
+ firewall machine, that is the natural place to run the rewriting
+ version.
</P>
<P>
message, it will use the rewritten sender address.
</P>
-<A NAME="SEC202" HREF="FAQ.html#TOC202">Q1004</A>: I'm using this rewriting rule to change login names into "friendly"
+<A NAME="SEC242" HREF="FAQ.html#TOC242">Q1004</A>: I'm using this rewriting rule to change login names into "friendly"
names, but if mail comes in for an upper case login name, it doesn't
get rewritten.
case before it is used as a lookup key.
</P>
-<A NAME="SEC203" HREF="FAQ.html#TOC203">Q1005</A>: Is it possible to completely fail a message if the rewrite rules fail?
+<A NAME="SEC243" HREF="FAQ.html#TOC243">Q1005</A>: Is it possible to completely fail a message if the rewrite rules fail?
<P>
This fails a single recipient - others are processed independently.
</P>
-<A NAME="SEC204" HREF="FAQ.html#TOC204">Q1006</A>: I'm using <B>$domain</B> as the key for a lookup in a rewriting rule, but its
+<A NAME="SEC244" HREF="FAQ.html#TOC244">Q1006</A>: I'm using <B>$domain</B> as the key for a lookup in a rewriting rule, but its
contents are not being lowercased. Aren't domains supposed to be handled
caselessly?
Instead of "$domain" write "${lc:$domain}".
</P>
-<A NAME="SEC205" HREF="FAQ.html#TOC205">Q1007</A>: I want to rewrite local sender addresses depending on the domain of the
+<A NAME="SEC245" HREF="FAQ.html#TOC245">Q1007</A>: I want to rewrite local sender addresses depending on the domain of the
recipient.
<P>
A1007: In general, this is not possible, because a message may have more than
- one recipient and Exim keeps just a single copy of each message. You can
- do an incomplete job by using a regular expression match in a rewrite
- rule to test, for example, the contents of the To: header. This would
- work except in cases of multiple recipients. See also
- <A HREF="FAQ.html#SEC201">Q1003</A>.
+ one recipient and Exim keeps just a single copy of each message. It may
+ also deliver one copy of a message with several recipient addresses.
+ You can do an incomplete job by using a regular expression match in a
+ rewrite rule to test, for example, the contents of the To: header. This
+ would work except in cases of multiple recipients. See also
+ <A HREF="FAQ.html#SEC241">Q1003</A>.
</P>
-<BR><H2><A NAME="SEC206" HREF="FAQ.html#TOC206">11. HEADERS
+<BR><H2><A NAME="SEC246" HREF="FAQ.html#TOC246">11. HEADERS
</A></H2>
-<A NAME="SEC207" HREF="FAQ.html#TOC207">Q1101</A>: I would like add some custom headers to selected outgoing mail based on
+<A NAME="SEC247" HREF="FAQ.html#TOC247">Q1101</A>: I would like add some custom headers to selected outgoing mail based on
a specific domain and the subject line.
like, and multiple headers can be inserted by using \n to separate them.
</P>
-<A NAME="SEC208" HREF="FAQ.html#TOC208">Q1102</A>: Is it possible to have Exim add a header to only certain <TT>local_parts</TT> of
+<A NAME="SEC248" HREF="FAQ.html#TOC248">Q1102</A>: Is it possible to have Exim add a header to only certain <TT>local_parts</TT> of
outgoing mail?
conditions in an expansion string to add or not add a header.
</P>
-<A NAME="SEC209" HREF="FAQ.html#TOC209">Q1103</A>: How can I remove some part of the Received: header?
+<A NAME="SEC249" HREF="FAQ.html#TOC249">Q1103</A>: How can I remove some part of the Received: header?
<P>
A1103: Set <TT>received_header_text</TT>.
</P>
-<A NAME="SEC210" HREF="FAQ.html#TOC210">Q1104</A>: How I can insert the PGP header line using exim filters?
+<A NAME="SEC250" HREF="FAQ.html#TOC250">Q1104</A>: How I can insert the PGP header line using exim filters?
+
+
+<P>
+A1104: You can't insert headers in a user filter. A system filter can do so,
+ but the inserted lines then are included for all recipients.
+
+</P>
+<A NAME="SEC251" HREF="FAQ.html#TOC251">Q1105</A>: I know I can use a system filter to replace certain headers in messages,
+ but how can I add text to existing headers? I want to add [SPAM] to
+ the subject line of messages that appear to be spam.
+
+<P>
+A1105: You can only do this in a round about way, using filter commands like
+ this:
+</P>
+<PRE>
+ headers add "New-Subject: SPAM: $h_subject:"
+ headers remove subject
+ neaders add "Subject: $h_new-subject:"
+ headers remove new-subject</PRE>
<P>
-A1104: You can't insert headers in a user filter. A system filter can do so,
- but the inserted lines then are included for all recipients.
+ This trick works only in system filters, where the commands are obeyed
+ in order, and affect the master list of headers that apply to the whole
+ message. You cannot do this with the <TT>headers_add</TT> and <TT>headers_remove</TT>
+ options on drivers.
</P>
-<BR><H2><A NAME="SEC211" HREF="FAQ.html#TOC211">12. FETCHMAIL
+<BR><H2><A NAME="SEC252" HREF="FAQ.html#TOC252">12. FETCHMAIL
</A></H2>
-<A NAME="SEC212" HREF="FAQ.html#TOC212">Q1201</A>: When I run fetchmail, I get the error "SMTP listener doesn't like
+<A NAME="SEC253" HREF="FAQ.html#TOC253">Q1201</A>: When I run fetchmail, I get the error "SMTP listener doesn't like
recipient address <B><I>xxx</I>@localhost</B>".
<TT>local_domains</TT> option in your Exim configuration file.
</P>
-<A NAME="SEC213" HREF="FAQ.html#TOC213">Q1202</A>: Fetchmail is passing on bounce messages to Exim with the sender address
+<A NAME="SEC254" HREF="FAQ.html#TOC254">Q1202</A>: Fetchmail is passing on bounce messages to Exim with the sender address
set to <B><B><@some.domain</B>></B> which causes Exim to complain, because there is no
local part.
with mangled addresses coming in over SMTP.
</P>
-<A NAME="SEC214" HREF="FAQ.html#TOC214">Q1203</A>: I'm currently using Exim with fetchmail and I'd like to use the RBL on
+<A NAME="SEC255" HREF="FAQ.html#TOC255">Q1203</A>: I'm currently using Exim with fetchmail and I'd like to use the RBL on
Exim, but will it work? Do I need to configure fetchmail any particular
way? As far as Exim knows, all mail is coming from 127.0.01. Will it
check the source address against RBL? Or will it check the From: header?
Exim does if you run RBL checks in warning mode.
</P>
-<BR><H2><A NAME="SEC215" HREF="FAQ.html#TOC215">13. PERL
+<BR><H2><A NAME="SEC256" HREF="FAQ.html#TOC256">13. PERL
</A></H2>
-<A NAME="SEC216" HREF="FAQ.html#TOC216">Q1301</A>: Exim built with Perl support exits with the error message <B>"./exim:</B> can't
+<A NAME="SEC257" HREF="FAQ.html#TOC257">Q1301</A>: Exim built with Perl support exits with the error message <B>"./exim:</B> can't
load library <B>'libperl.so'".</B>
<P>
A1301: If you are using BSDI, see
- <A HREF="FAQ.html#SEC270">Q9401</A>.
+ <A HREF="FAQ.html#SEC324">Q9401</A>.
</P>
-<A NAME="SEC217" HREF="FAQ.html#TOC217">Q1302</A>: Exim built with Perl support exits with several error messages of the
+<A NAME="SEC258" HREF="FAQ.html#TOC258">Q1302</A>: Exim built with Perl support exits with several error messages of the
form "undefined reference to `PL_stack_sp'".
ELF library. Ensure that the older package is removed.
</P>
-<BR><H2><A NAME="SEC218" HREF="FAQ.html#TOC218">14. DIAL-UP
+<BR><H2><A NAME="SEC259" HREF="FAQ.html#TOC259">14. DIAL-UP
</A></H2>
-<A NAME="SEC219" HREF="FAQ.html#TOC219">Q1401</A>: How can I arrange for mail to other hosts on my local network to be
+<A NAME="SEC260" HREF="FAQ.html#TOC260">Q1401</A>: How can I arrange for mail to other hosts on my local network to be
delivered when I'm not connected to the Internet?
others.
</P>
-<A NAME="SEC220" HREF="FAQ.html#TOC220">Q1402</A>: I have a dial-up machine, and I use the <TT>queue_smtp_domains</TT> option so
+<A NAME="SEC261" HREF="FAQ.html#TOC261">Q1402</A>: I have a dial-up machine, and I use the <TT>queue_smtp_domains</TT> option so
that remote mail only goes out when I do a queue run. However, any email
I send with an address <B><B><anything>@aol.com</B></B> is returned within about 15
minutes saying 'retry time exceeded', and all addresses are affected.
found without the need of a DNS lookup. Then you can use <TT>queue_smtp_</TT>
domains so that Exim does the routing for every message, but doesn't try
to deliver it. See also
- <A HREF="FAQ.html#SEC221">Q1403</A>.
+ <A HREF="FAQ.html#SEC262">Q1403</A>.
</P>
-<A NAME="SEC221" HREF="FAQ.html#TOC221">Q1403</A>: How should Exim be configured when it is acting as a temporary storage
+<A NAME="SEC262" HREF="FAQ.html#TOC262">Q1403</A>: How should Exim be configured when it is acting as a temporary storage
system for a domain on a dial-up host?
the mail for the dial-in hosts into some local files which then get
transmitted by other software when the host connects. See the manual
chapter entitled "Intermittently connected hosts" and also
- <A HREF="FAQ.html#SEC239">Q5014</A> and
+ <A HREF="FAQ.html#SEC283">Q5014</A> and
- <A HREF="FAQ.html#SEC136">Q0521</A>.
+ <A HREF="FAQ.html#SEC162">Q0521</A>.
</P>
-<A NAME="SEC222" HREF="FAQ.html#TOC222">Q1404</A>: I have <TT>queue_remote_domains</TT> or <TT>queue_smtp_domains</TT> set, and use <B>-qf</B> to
+<A NAME="SEC263" HREF="FAQ.html#TOC263">Q1404</A>: I have <TT>queue_remote_domains</TT> or <TT>queue_smtp_domains</TT> set, and use <B>-qf</B> to
force delivery of waiting mail when I dial in. How can I arrange for any
new messages that arrive while I'm connected to be delivered immediately?
switch that file appropriately.
</P>
-<BR><H2><A NAME="SEC223" HREF="FAQ.html#TOC223">20. MILLENNIUM
+<BR><H2><A NAME="SEC264" HREF="FAQ.html#TOC264">15. MODIFYING MESSAGE BODIES
+
+</A></H2>
+<A NAME="SEC265" HREF="FAQ.html#TOC265">Q1501</A>: How can I add a disclaimer or an advertisement to a message?
+
+
+<P>
+A1501: There are a number of technical and potential legal problems that arise
+ in connection with message modification. Some of them are listed below.
+ If, despite these considerations, you still want to modify messages, you
+ can do so using Exim, but not directly in Exim itself. It is not the job
+ of an MTA to modify messages, something that requires understanding of
+ their content and format.
+
+</P>
+<P>
+ Exim provides a hook in the form of a "transport filter" that lets you
+ pass any outgoing message through a program or script of your choice. It
+ is the job of this script to make any changes to the message that you
+ require. By this means, you have full control over what changes are
+ made, and Exim does not need to know anything about message bodies.
+ However, using a transport filter requires additional resources, and may
+ slow down mail delivery.
+
+</P>
+<P>
+ You can use Exim's directors and routers to arrange for those messages
+ that you want to modify to be delivered via a transport filter. For
+ example, suppose you want to do this for messages from addresses in
+ your domain that are being delivered to a remote host. Place the
+ following router before the standard <B>lookuphost</B> router:
+
+</P>
+<PRE>
+ filter_remote:
+ driver = lookuphost
+ transport = remote_smtp_filter
+ condition = ${if eq {$sender_address_domain}{your.domain}{yes}{no}}</PRE>
+<P>
+ This routes the relevant addresses to a transport called
+ <TT>remote_smtp_filter</TT>. Other addresses fall through to the normal router,
+ and are routed to the standard <TT>remote_smtp</TT> transport. Another way to do
+ this would be to use a single router, with an expanded string for the
+ transport setting. The new transport is defined thus:
+
+</P>
+<PRE>
+ remote_smtp_filter:
+ driver = smtp
+ transport_filter = /your/filter/command</PRE>
+<P>
+ The entire message is passed to your filter command on its standard
+ input. It must write the modified version to the standard output, taking
+ care not to break the RFC 822 syntax. The command is run as the Exim
+ user, if one is defined; otherwise it is run as root.
+
+</P>
+<P>
+ There are a number of potential problems in doing this kind of
+ modification in an MTA. Many people believe that to attempt is it wrong,
+ because:
+
+</P>
+<P>
+ 1. It breaks digital signatures, which are becoming legally binding
+ in some countries (already in the UK, likely to be 1 October 2000 in
+ the USA). It may well also break encryption.
+
+</P>
+<P>
+ 2. It is likely to break MIME encoding, that is, it is likely to wreck
+ attachments, unless great care is taken. And what about the case of a
+ message containing only binary MIME parts?
+
+</P>
+<P>
+ 3. It is illegal under German and Dutch law to change the body of
+ a mail message in transit. It might potentially be illegal in
+ the UK under European law. This consideration applies to ISPs and
+ other "common carriers". It would presumably not apply in a corporate
+ environment where modification was done only to messages originating
+ from the employees, before they left the company's network. It might
+ also not apply if the senders have explicitly given their consent
+ (e.g. agreed to have advertisements added to their incoming mail).
+
+</P>
+<P>
+ 4. Since the delivered message body was produced by the MTA (not the
+ originator, because it was modified), the MTA operator could
+ potentially be sued for any content. This again applies to "common
+ carrier" MTAs. It's interesting that adding a disclaimer of liability
+ could be making you liable for the message, but this case seems
+ more likely to involve adding advertisements than disclaimers. After
+ all, no postal service in the world opens all the mail it carries to
+ add disclaimers.
+
+</P>
+<P>
+ 5. Some mail clients (old versions of MS outlook) crash if the message
+ body of an incoming MIME message has been tampered with.
+
+</P>
+<P>
+ There are also potential problems that could arise if a scheme to add
+ disclaimers goes wrong for some messages:
+
+</P>
+<P>
+ 1. False negatives: "Ah, this guy usually says he does not represent
+ their views, but in this message he doesn't have the disclaimer".
+
+</P>
+<P>
+ 2. False positives: "This official announcement does not represent our
+ views, oh no".
+
+</P>
+<P>
+ An alternative approach to the disclaimer problem would be to insist
+ that all relevant messages have the disclaimer appended by the MUA. The
+ MTA should refuse to accept any that do not. Again, however, the MTA
+ must understand the format of messages in order to do this. Simply
+ checking for appropriate wording at the end of the body is not good
+ enough. It would probably be necessary to run a Perl script from within
+ an Exim system filter in order to adopt this approach.
+
+</P>
+<P>
+ Finally, it's a trivial matter to add customized headers of the sort:
+
+</P>
+<PRE>
+ X-Disclaimer: This is a standard disclaimer that says that the views
+ X-Disclaimer: contained within this message are somebody elses.</PRE>
+<P>
+ which is a much easier alternative to modifying message bodies.
+
+</P>
+<A NAME="SEC266" HREF="FAQ.html#TOC266">Q1502</A>: How can I remove attachments from messages?
+
+
+<P>
+A1502: The answer to this is essentially the same as for
+ <A HREF="FAQ.html#SEC265">Q1501</A>.
+
+</P>
+<BR><H2><A NAME="SEC267" HREF="FAQ.html#TOC267">20. MILLENNIUM
</A></H2>
-<A NAME="SEC224" HREF="FAQ.html#TOC224">Q2000</A>: Are there any Y2K issues with Exim?
+<A NAME="SEC268" HREF="FAQ.html#TOC268">Q2000</A>: Are there any Y2K issues with Exim?
<P>
been done are not available.
</P>
-<BR><H2><A NAME="SEC225" HREF="FAQ.html#TOC225">50. MISCELLANEOUS
+<P>
+ Well, it's now August 2000, and no Y2K problems have been reported, so
+ it looks like I was right.
+
+</P>
+<BR><H2><A NAME="SEC269" HREF="FAQ.html#TOC269">50. MISCELLANEOUS
</A></H2>
-<A NAME="SEC226" HREF="FAQ.html#TOC226">Q5001</A>: What does the error "Unable to get interface configuration: 22 Invalid
+<A NAME="SEC270" HREF="FAQ.html#TOC270">Q5001</A>: What does the error "Unable to get interface configuration: 22 Invalid
argument" mean?
connections.
</P>
-<A NAME="SEC227" HREF="FAQ.html#TOC227">Q5002</A>: How can I arrange to allow a limited set of users to perform a limited
+<A NAME="SEC271" HREF="FAQ.html#TOC271">Q5002</A>: How can I arrange to allow a limited set of users to perform a limited
set of Exim administration functions? I don't want to put them all in
the exim group.
`unparsing' properly in shell or Perl it will be secure.
</P>
-<A NAME="SEC228" HREF="FAQ.html#TOC228">Q5003</A>: How can I test for a message's size being greater or less than a given
+<A NAME="SEC272" HREF="FAQ.html#TOC272">Q5003</A>: How can I test for a message's size being greater or less than a given
value in an expansion string?
</P>
<PRE>
${if eq{${expand:\$\{substr_-1000000_$message_size:x\}}} {} {yes} {no}}</PRE>
-<A NAME="SEC229" HREF="FAQ.html#TOC229">Q5004</A>: I want to "tail" the Exim log, but I have a number of other logs I also
+<A NAME="SEC273" HREF="FAQ.html#TOC273">Q5004</A>: I want to "tail" the Exim log, but I have a number of other logs I also
want to "tail", and the number of tailing windows is getting to be a
nuisance.
entire directories.
</P>
-<A NAME="SEC230" HREF="FAQ.html#TOC230">Q5005</A>: I would like to have Exim log information written to syslog.
+<A NAME="SEC274" HREF="FAQ.html#TOC274">Q5005</A>: I would like to have Exim log information written to syslog.
<P>
A5005: Support for this is available from version 3.10 onwards.
</P>
-<A NAME="SEC231" HREF="FAQ.html#TOC231">Q5006</A>: What does the error "Failed to create spool file" mean?
+<A NAME="SEC275" HREF="FAQ.html#TOC275">Q5006</A>: What does the error "Failed to create spool file" mean?
<P>
permission must be "s" rather than "x".
</P>
-<A NAME="SEC232" HREF="FAQ.html#TOC232">Q5007</A>: Exim keeps crashing with segmentation errors (signal 11 or 139).
+<A NAME="SEC276" HREF="FAQ.html#TOC276">Q5007</A>: Exim keeps crashing with segmentation errors (signal 11 or 139).
<P>
A5007: This might be a problem with the db library. See
- <A HREF="FAQ.html#SEC120">Q0505</A>.
+ <A HREF="FAQ.html#SEC146">Q0505</A>.
</P>
-<A NAME="SEC233" HREF="FAQ.html#TOC233">Q5008</A>: Exim's databases keep getting corrupted.
+<A NAME="SEC277" HREF="FAQ.html#TOC277">Q5008</A>: Exim's databases keep getting corrupted.
<P>
A5008: See
- <A HREF="FAQ.html#SEC120">Q0505</A>.
+ <A HREF="FAQ.html#SEC146">Q0505</A>.
</P>
-<A NAME="SEC234" HREF="FAQ.html#TOC234">Q5009</A>: I've been using an autoreply director to try and mimic a bounce message,
+<A NAME="SEC278" HREF="FAQ.html#TOC278">Q5009</A>: I've been using an autoreply director to try and mimic a bounce message,
but I can't get it to have an envelope from of <>.
you?
</P>
-<A NAME="SEC235" HREF="FAQ.html#TOC235">Q5010</A>: I see entries in the log that mention two different IP addresses for the
+<A NAME="SEC279" HREF="FAQ.html#TOC279">Q5010</A>: I see entries in the log that mention two different IP addresses for the
same connection. Why is this? For example:
misleading.
</P>
-<A NAME="SEC236" HREF="FAQ.html#TOC236">Q5011</A>: How can I persuade Exim to accept ETRN commands without the leading
+<A NAME="SEC280" HREF="FAQ.html#TOC280">Q5011</A>: How can I persuade Exim to accept ETRN commands without the leading
# character?
serialization lock (which is set by default) never gets removed.
</P>
-<A NAME="SEC237" HREF="FAQ.html#TOC237">Q5012</A>: I've recently noticed that emails I send with a Bcc: line are being
+<A NAME="SEC281" HREF="FAQ.html#TOC281">Q5012</A>: I've recently noticed that emails I send with a Bcc: line are being
delivered to their final destination with the Bcc: line still present.
Bcc; any MTA software has to leave it alone.
</P>
-<A NAME="SEC238" HREF="FAQ.html#TOC238">Q5013</A>: I used gv <B>v3.5.8</B> (ghostview) to try printing <B>spec.ps.</B> After every
+<A NAME="SEC282" HREF="FAQ.html#TOC282">Q5013</A>: I used gv <B>v3.5.8</B> (ghostview) to try printing <B>spec.ps.</B> After every
printed page, the printer ejects a blank sheet. Is this something to do
with using "letter" rather than A4 paper?
ghostview.
</P>
-<A NAME="SEC239" HREF="FAQ.html#TOC239">Q5014</A>: I would like to have a separate queue per domain for hosts which dial
+<A NAME="SEC283" HREF="FAQ.html#TOC283">Q5014</A>: I would like to have a separate queue per domain for hosts which dial
in to collect their mail.
</P>
<P>
- An alternative approach would be to get Exim to deliver mail for such
- hosts in batch SMTP format into some directory, and have the ETRN run
+ An alternative approach id to get Exim to deliver mail for such hosts
+ in batch SMTP format into some directory, and have the ETRN run
something to pass such messages to the dialled-in host. See also
- <A HREF="FAQ.html#SEC118">Q0503</A>
+ <A HREF="FAQ.html#SEC144">Q0503</A>
and
- <A HREF="FAQ.html#SEC136">Q0521</A>.
+ <A HREF="FAQ.html#SEC162">Q0521</A>.
</P>
-<A NAME="SEC240" HREF="FAQ.html#TOC240">Q5015</A>: A short time after I start Exim I see a <defunct> process. What is
- causing this?
+<A NAME="SEC284" HREF="FAQ.html#TOC284">Q5015</A>: A short time after I start Exim I see a <defunct> zombie process. What
+ is causing this?
<P>
perfectly normal.
</P>
-<A NAME="SEC241" HREF="FAQ.html#TOC241">Q5016</A>: On a reboot, or a restart of the mail system, I see the message "Mailer
+<A NAME="SEC285" HREF="FAQ.html#TOC285">Q5016</A>: On a reboot, or a restart of the mail system, I see the message "Mailer
daemons: exim abandoned: unknown, malformed, or incomplete option
<B>-bz</B> sendmail". What does this mean?
The first of these lines should be commented out.
</P>
-<A NAME="SEC242" HREF="FAQ.html#TOC242">Q5017</A>: I would like to restrict e-mail usage for some users to the local
+<A NAME="SEC286" HREF="FAQ.html#TOC286">Q5017</A>: I would like to restrict e-mail usage for some users to the local
machine, ideally on a group basis.
<P>
A5017: See
- <A HREF="FAQ.html#SEC293">A9802</A>
+ <A HREF="FAQ.html#SEC349">A9802</A>
</P>
-<A NAME="SEC243" HREF="FAQ.html#TOC243">Q5018</A>: Whenever exim restarts it takes up to 3-5 minutes to start responding on
+<A NAME="SEC287" HREF="FAQ.html#TOC287">Q5018</A>: Whenever exim restarts it takes up to 3-5 minutes to start responding on
the SMTP port. Why is this?
configured there.
</P>
-<A NAME="SEC244" HREF="FAQ.html#TOC244">Q5019</A>: Why aren't there any man pages for Exim? I don't always carry my printed
+<A NAME="SEC288" HREF="FAQ.html#TOC288">Q5019</A>: Why aren't there any man pages for Exim? I don't always carry my printed
documentation.
This contains some introductory text and the command line options only.
</P>
-<A NAME="SEC245" HREF="FAQ.html#TOC245">Q5020</A>: When I send a message using the <B>-t</B> command line option, Exim sends only
+<A NAME="SEC289" HREF="FAQ.html#TOC289">Q5020</A>: When I send a message using the <B>-t</B> command line option, Exim sends only
to the addresses within the message, not to those on the command line.
the ambiguity differently.
</P>
-<A NAME="SEC246" HREF="FAQ.html#TOC246">Q5021</A>: If I set up, for example,
+<A NAME="SEC290" HREF="FAQ.html#TOC290">Q5021</A>: If I set up, for example,
<TT>local_domains = *customer.com</TT>, then it matches
<B>"customer.com"</B> and <B>"abc.customer.com"</B> as required, but it also matches
<B>"noncustomer.com",</B> which is wrong. How can I get round this?
the same as when it appears directly in a domain list.
</P>
-<A NAME="SEC247" HREF="FAQ.html#TOC247">Q5022</A>: I want to match all local domains of the form <B>*.oyoy.org</B> but want a few
+<A NAME="SEC291" HREF="FAQ.html#TOC291">Q5022</A>: I want to match all local domains of the form <B>*.oyoy.org</B> but want a few
exceptions. For instance I don't want <B>foo.oyoy.org</B> or <B>bar.oyoy.org</B> to be
treated as local. What is the best way to do this?
upgrading!
</P>
-<A NAME="SEC248" HREF="FAQ.html#TOC248">Q5023</A>: I can't seem to find a pre-built version of Exim anywhere. The machine
+<A NAME="SEC292" HREF="FAQ.html#TOC292">Q5023</A>: I can't seem to find a pre-built version of Exim anywhere. The machine
is a Sparc 5 running Solaris 2.6.
would probably please nobody.
</P>
-<A NAME="SEC249" HREF="FAQ.html#TOC249">Q5024</A>: Is there a Windows NT version of Exim available?
+<A NAME="SEC293" HREF="FAQ.html#TOC293">Q5024</A>: Is there a Windows NT version of Exim available?
<P>
trying to port it to NT. However, I never heard anything more.
</P>
-<A NAME="SEC250" HREF="FAQ.html#TOC250">Q5025</A>: Does Exim support Delivery Status Notificaion (DSN), Message Status
+<A NAME="SEC294" HREF="FAQ.html#TOC294">Q5025</A>: Does Exim support Delivery Status Notificaion (DSN), Message Status
Notification (MSN), or any other form of delivery acknowledgement?
<P>
A5025: See
- <A HREF="FAQ.html#SEC132">A0517</A>.
+ <A HREF="FAQ.html#SEC158">A0517</A>.
</P>
-<A NAME="SEC251" HREF="FAQ.html#TOC251">Q5026</A>: What does "Exim" stand for?
+<A NAME="SEC295" HREF="FAQ.html#TOC295">Q5026</A>: What does "Exim" stand for?
<P>
to start using it, and told other people about it...
</P>
-<A NAME="SEC252" HREF="FAQ.html#TOC252">Q5027</A>: What does the log message "no immediate delivery: more than 10 messages
+<A NAME="SEC296" HREF="FAQ.html#TOC296">Q5027</A>: What does the log message "no immediate delivery: more than 10 messages
received in one connection" mean?
<P>
A5027: See
- <A HREF="FAQ.html#SEC133">A0518</A>.
+ <A HREF="FAQ.html#SEC159">A0518</A>.
</P>
-<A NAME="SEC253" HREF="FAQ.html#TOC253">Q5028</A>: Although I haven't set <TT>check_spool_space</TT>, Exim is still checking the
+<A NAME="SEC297" HREF="FAQ.html#TOC297">Q5028</A>: Although I haven't set <TT>check_spool_space</TT>, Exim is still checking the
amount of space on the spool for incoming SMTP messages that use the
SIZE option. Can I suppress this?
<TT>smtp_check_spool_space</TT>.
</P>
-<A NAME="SEC254" HREF="FAQ.html#TOC254">Q5029</A>: I just noticed log entries that start off "<= <>". Am I correct in
+<A NAME="SEC298" HREF="FAQ.html#TOC298">Q5029</A>: I just noticed log entries that start off "<= <>". Am I correct in
assuming that the "<>" indicates that the envelope did not contain any
"From" data?
uses them when sending out warnings about delivery delays.
</P>
-<A NAME="SEC255" HREF="FAQ.html#TOC255">Q5030</A>: I've received a message which does not have my address in the To:
+<A NAME="SEC299" HREF="FAQ.html#TOC299">Q5030</A>: I've received a message which does not have my address in the To:
line. It is a spam message with the same address in both the From: and
the To: headers. How can this happen, and why doesn't Exim reject it?
messages forwarded from mailing lists and delivery failure reports.
</P>
-<A NAME="SEC256" HREF="FAQ.html#TOC256">Q5031</A>: Can (or will) Exim ever handle a message delivery purely in memory,
+<A NAME="SEC300" HREF="FAQ.html#TOC300">Q5031</A>: Can (or will) Exim ever handle a message delivery purely in memory,
that is, it is handled without it ever hitting the disc?
writing/reading the message on the disc.
</P>
-<A NAME="SEC257" HREF="FAQ.html#TOC257">Q5032</A>: If I am using dbm files for data that Exim reads, can I rebuild them
+<A NAME="SEC301" HREF="FAQ.html#TOC301">Q5032</A>: If I am using dbm files for data that Exim reads, can I rebuild them
on the fly, or do I need to restart Exim every time I make a change?
inconsistent. On lightly loaded systems this may not matter.
</P>
-<A NAME="SEC258" HREF="FAQ.html#TOC258">Q5033</A>: What are the main differences between using an Exim filter and using
+<A NAME="SEC302" HREF="FAQ.html#TOC302">Q5033</A>: What are the main differences between using an Exim filter and using
procmail?
both.
</P>
-<A NAME="SEC259" HREF="FAQ.html#TOC259">Q5034</A>: I need an option that is the opposite of <B>-bpa,</B> that is, a listing of
+<A NAME="SEC303" HREF="FAQ.html#TOC303">Q5034</A>: I need an option that is the opposite of <B>-bpa,</B> that is, a listing of
those addresses generated from a top-level address that have not yet
been delivered.
are pipes, files, or autoreplies.
</P>
-<A NAME="SEC260" HREF="FAQ.html#TOC260">Q5035</A>: I am getting complaints from a customer who uses my EXIM server for
+<A NAME="SEC304" HREF="FAQ.html#TOC304">Q5035</A>: 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.
A5035: See <TT>smtp_accept_max</TT> and related options such as <TT>smtp_accept_reserve</TT>.
</P>
-<A NAME="SEC261" HREF="FAQ.html#TOC261">Q5036</A>: When I try "exim <B>-bf"</B> to test a system filter, I received the following
+<A NAME="SEC305" HREF="FAQ.html#TOC305">Q5036</A>: When I try "exim <B>-bf"</B> to test a system filter, I received the following
error message: "Filter error: unavailable filtering command "fail" near
line 8 of filter file".
freeze and fail actions.
</P>
-<A NAME="SEC262" HREF="FAQ.html#TOC262">Q5037</A>: How can I make Exim receive incoming mail, queue it, but NOT attempt to
+<A NAME="SEC306" HREF="FAQ.html#TOC306">Q5037</A>: How can I make Exim receive incoming mail, queue it, but NOT attempt to
deliver it? I want to be in this state while moving some mailboxes.
was not available for use in <B>smartuser</B>.
</P>
-<A NAME="SEC263" HREF="FAQ.html#TOC263">Q5038</A>: What does the rejection message "reject all recipients: 3 times bad
+<A NAME="SEC307" HREF="FAQ.html#TOC307">Q5038</A>: What does the rejection message "reject all recipients: 3 times bad
sender" mean?
24 hours.
</P>
-<A NAME="SEC264" HREF="FAQ.html#TOC264">Q5039</A>: The menu in Eximon isn't working. It displays, but I can't select
+<A NAME="SEC308" HREF="FAQ.html#TOC308">Q5039</A>: The menu in Eximon isn't working. It displays, but I can't select
anything from it.
encountered.
</P>
-<A NAME="SEC265" HREF="FAQ.html#TOC265">Q5040</A>: What does "ridiculously long message header" in an error report mean?
+<A NAME="SEC309" HREF="FAQ.html#TOC309">Q5040</A>: What does "ridiculously long message header" in an error report mean?
<P>
of an individual header line and one on the total number of header
lines. A header line longer than 8192 used to provoke the error "Header
line is ridiculously overlong". In subsequent releases there is no limit
- on individual header lines; only the total matters.
+ on individual header lines; only the total header size matters.
</P>
-<A NAME="SEC266" HREF="FAQ.html#TOC266">Q5041</A>: What does Exim use for POP as a default? Do I have to install anything
+<A NAME="SEC310" HREF="FAQ.html#TOC310">Q5041</A>: What does Exim use for POP as a default? Do I have to install anything
else?
provide that functionality.
</P>
-<BR><H2><A NAME="SEC267" HREF="FAQ.html#TOC267">93. HP-UX
+<A NAME="SEC311" HREF="FAQ.html#TOC311">Q5042</A>: I see that Exim doesn't support SSL. Can it be made to work with stunnel?
+
+
+<P>
+A5042: From release 3.20, Exim does support SSL/TLS, by making use of the
+ OpenSSL library.
+
+</P>
+<P>
+ The problem with using stunnel is that all your SSL connections look
+ like they come from 127.0.0.1 - none of your IP based policies will
+ have any effect. This means that you are basically an open relay,
+ anyone who connects to your server via SSL can relay through you,
+ whether they are local or not (and who knows, spammers may someday
+ evolve brains enough to try using SSL ports).
+
+</P>
+<P>
+ One solution to this is to force all SSL connections to authenticate
+ before relaying. This is how one user has done this:
+
+</P>
+<P>
+ First make sure you are set up to do SMTP AUTH properly (see the sample
+ configuration C034). Then add MUSTAUTH to the <TT>auth_hosts</TT> line in your
+ configure file. If you don't already have a list of IPs there, it will
+ look like this:
+
+</P>
+<PRE>
+ auth_hosts = MUSTAUTH</PRE>
+<P>
+ If you have some IPs you want to authenticate, add them like this:
+
+</P>
+<PRE>
+ auth_hosts = MUSTAUTH:10.1.1.1:10.1.1.2</PRE>
+<P>
+ Then invoke stunnel like this:
+
+</P>
+<PRE>
+ /usr/local/sbin/stunnel -d 465 -l /usr/exim/bin/exim \
+ -p /usr/local/ssl/certs/exim.pem -- exim -bs -DMUSTAUTH=127.0.0.1</PRE>
+<P>
+ Whenever an SSL connection is established, Exim is invoked with the
+ macro MUSTAUTH defined as 127.0.0.1, which forces that one particular
+ instance to authenticate, without disrupting normal 127.0.0.1 operations
+ via non-SSL sessions.
+
+</P>
+<A NAME="SEC312" HREF="FAQ.html#TOC312">Q5043</A>: Is there an easy way of removing all queued messages at once in a safe
+ way?
+
+
+<P>
+A5043: Try this command:
+
+</P>
+<PRE>
+ exim -bp | awk '/^ *[0-9]+[mhd]/{print "exim -Mrm " $3}' | sh</PRE>
+<A NAME="SEC313" HREF="FAQ.html#TOC313">Q5044</A>: What is the best way to provide backup MX for clients?
+
+
+<P>
+A5044: If the clients are always online, all you need to do is to have MX
+ records for their domains pointing to your host, with suitable
+ preference values, and ensure that their domains are listed in
+ <TT>relay_domains</TT>. If the clients are not always online, see
+ <A HREF="FAQ.html#SEC262">Q1403</A>.
+
+</P>
+<A NAME="SEC314" HREF="FAQ.html#TOC314">Q5045</A>: Why does Exim do "ident" callbacks by default? Isn't this just a waste
+ of resources? I've been told this is an ancient way of authentication.
+ Is it obsolete?
+
+
+<P>
+A5045: This is a common mistake, at least partially resulting from the
+ incorrect naming of the protocol when it was first published.
+ The service on port 113 is an identification service, which allows a
+ target host to record information identifying the user responsible for
+ making a connection to it. The information may not be intelligible to
+ the recording host - it could, for example, be encrypted so that only
+ someone on the calling host can make sense of it. It is useful for
+ providing additional information in an audit trail.
+
+</P>
+<P>
+ The data should not be used for authentication in any form except
+ on a closed secure network between cooperating hosts (probably not
+ even then). The information from the source host is only as reliable
+ as the host itself - if it's not under your control then you have to
+ treat the information as opaque data that can be used by the sysadmin
+ of the source system to trace back connection data - and some ident
+ implementations send out opaque cookies or DES encrypted information.
+ Ident is hugely useful at times - especially for checking back on
+ connections from multiuser machines (as opposed to one-person desktop
+ boxes).
+
+</P>
+<P>
+ You can stop Exim making ident calls by adding
+
+</P>
+<PRE>
+ rfc1413_query_timeout = 0s</PRE>
+<P>
+ to its configuration, but it is better to leave it active (reducing the
+ timeout if it is causing problems) - it costs very little, and in cases
+ of mail forgery from a multiuser system can track the sinner concerned
+ very quickly.
+
+</P>
+<A NAME="SEC315" HREF="FAQ.html#TOC315">Q5046</A>: I often have the problem that a message gets stuck in the mailq and I
+ want it to be bounced to a certain address.
+
+
+<P>
+A5046: You can do this using a combination of four command line options, like
+ this:
+
+</P>
+<PRE>
+ exim -Mf 14Fdlq-0003kM-00
+ exim -Mmad 14Fdlq-0003kM-00
+ exim -Mar 14Fdlq-0003kM-00 new@ddress
+ exim -M 14Fdlq-0003kM-00</PRE>
+<P>
+ The first command freezes the message so that a queue runner won't start
+ to deliver it while you are changing things. The second command marks
+ all existing recipients as delivered. The third command adds a new
+ recipient, and the fourth command forces a delivery of the message,
+ which will cause it to be delivered to the new address, and then
+ deleted.
+
+</P>
+<A NAME="SEC316" HREF="FAQ.html#TOC316">Q5047</A>: What precautions should I take when editing <B>exim.conf?</B>
+
+
+<P>
+A5047: Edit <B>exim.conf</B> to <B>exim.conf.new.</B> Then run
+
+</P>
+<PRE>
+ exim -bV -C exim.conf.new</PRE>
+<P>
+ That will check for syntax errors without disturbing your running
+ configuration. If you are paranoid enough, <EM>as</EM> <EM>root</EM> run
+
+</P>
+<PRE>
+ exim -C exim.conf.new <some address>
+ <some message>
+ .</PRE>
+<P>
+ and see if it delivers it. Carry on testing until happy. When happy,
+
+</P>
+<PRE>
+ mv exim.conf.new exim.conf
+ kill -HUP `cat /var/spool/exim/exim-daemon.pid`</PRE>
+<P>
+ Then check the Exim log to be sure the daemon restarted OK. Watch the
+ log for a bit to see that mail is flowing.
+
+</P>
+<A NAME="SEC317" HREF="FAQ.html#TOC317">Q5048</A>: Is exim able to use RFC 2645, On-demand Mail Relay (ODMR)?
+
+
+<P>
+A5048: No.
+
+</P>
+<A NAME="SEC318" HREF="FAQ.html#TOC318">Q5049</A>: I want to send every bounced mail that is received by my server, as
+ "headers-only" to the sysadmin. How can I do this?
+
+
+<P>
+A5049: 1. Set up a transport with <TT>headers_only</TT> to do the delivery.
+
+</P>
+<P>
+ 2. Set up a <B>smartuser</B> director that directs messages to a special local
+ alias (e.g. "sysadmin-header") to that transport.
+
+</P>
+<P>
+ 3. Set up a system filter file, containing something like
+
+</P>
+<PRE>
+ if first_delivery and error_message then
+ unseen deliver sysadmin-header@your.domain
+ endif</PRE>
+<A NAME="SEC319" HREF="FAQ.html#TOC319">Q5050</A>: What POP3 daemon should I use with Exim? I want something with
+ configurable authentication mechanisms.
+
+
+<P>
+A5050: Qmail-pop has a checkpasswd part that can be hacked to add whatever
+ authentication you want. There is also Solid POP which has a lot of
+ Exim support in it (e.g. nhash). There is also Cyrus, which is
+ self-contained, so you don't have to worry about ownership of mailboxes
+ and also it can be poked into authenticating from just about anything.
+ However, in general, YMMV, and really what suits one user may not suit
+ another. There is a mailing list at <B><B>pop-imap@exim.org</B></B> for the discussion
+ of POP/IMAP issues. More information can be found in its archives.
+
+</P>
+<A NAME="SEC320" HREF="FAQ.html#TOC320">Q5051</A>: Is there any way I can send bounces to the postmaster, and nobody else?
+ Basically, I want to recieve them, and I don't want the reply/from
+ person to get them. If I think they need it I will forward it myself.
+
+
+<P>
+A5051: Put <TT>errors_to=postmaster</TT> on every router and director.
+
+</P>
+<BR><H2><A NAME="SEC321" HREF="FAQ.html#TOC321">93. HP-UX
</A></H2>
-<A NAME="SEC268" HREF="FAQ.html#TOC268">Q9301</A>: I'm trying to compile on an HP machine and I don't have gcc there. So I
+<A NAME="SEC322" HREF="FAQ.html#TOC322">Q9301</A>: I'm trying to compile on an HP machine and I don't have gcc there. So I
put <TT>CC=cc</TT> in the <B>Local/Makefile</B>, but I got this error:
HP workstation, that usually isn't a problem."
</P>
-<BR><H2><A NAME="SEC269" HREF="FAQ.html#TOC269">94. BSDI
+<BR><H2><A NAME="SEC323" HREF="FAQ.html#TOC323">94. BSDI
</A></H2>
-<A NAME="SEC270" HREF="FAQ.html#TOC270">Q9401</A>: On BSDI 4.0, Exim built with Perl support exits with the error message
- <B>"./exim:</B> can't load library <B>'libperl.so'".</B>
+<A NAME="SEC324" HREF="FAQ.html#TOC324">Q9401</A>: On BSDI 4.0, Exim built with Perl support exits with the error message
+<PRE>
+ ./exim: can't load library 'libperl.so'</PRE>
<P>
A9401: You probably compiled perl5 yourself, without looking into
guys did to compile perl5 which comes with BSDI 4.0 distribution.
</P>
-<BR><H2><A NAME="SEC271" HREF="FAQ.html#TOC271">95. IRIX
+<BR><H2><A NAME="SEC325" HREF="FAQ.html#TOC325">95. IRIX
</A></H2>
-<A NAME="SEC272" HREF="FAQ.html#TOC272">Q9501</A>: I'm running IRIX 6.2 with a number of alias IP addresses set up, but
+<A NAME="SEC326" HREF="FAQ.html#TOC326">Q9501</A>: I'm running IRIX 6.2 with a number of alias IP addresses set up, but
Exim doesn't seem to recognize them as local addresses.
all your IP addresses explicitly.
</P>
-<A NAME="SEC273" HREF="FAQ.html#TOC273">Q9502</A>: The IP addresses for incoming calls are all being given as
- 255.255.255.255.
+<A NAME="SEC327" HREF="FAQ.html#TOC327">Q9502</A>: The IP addresses for incoming calls are all being given as
+ 255.255.255.255 or 0.0.0.0.
<P>
-A9502: If you used the gcc compiler 2.8.x there is a known bug with the
- "gethost" function under Irix. SGI recommends using either their cc
- compiler in Irix 6.5, or a lesser version of the gnu compiler (2.6.x).
+A9502: From release 3.21, Exim contains a workaround that should fix this
+ problem. If you are using an earlier release, read on...
</P>
<P>
- Alternatively, there is an Inst-able port of exim for Irix at
+ If you used the gcc compiler 2.8.x or a version in the 2.95 series,
+ there is a known bug with the "gethost" function under Irix. SGI
+ recommends using either their cc compiler in Irix 6.5, or a lesser
+ version of the gnu compiler. Version 2.7.2.3 is known to work.
+ Alternatively, there is an Inst-able port of Exim for Irix at
<B><A HREF="http://freeware.sgi.com">http://freeware.sgi.com</A>,</B> but it is not likely to be the latest release.
+ There is further information about this problem, which is described as a
+ "classic gcc structure-in-a-register bug" at this URL:
+
+</P>
+<P>
+ <B><A HREF="http://www.ccp14.ac.uk/ccp14admin/apache13/apache255error.html">http://www.ccp14.ac.uk/ccp14admin/apache13/apache255error.html</A></B>
</P>
-<BR><H2><A NAME="SEC274" HREF="FAQ.html#TOC274">96. LINUX
+<P>
+ This is a summary that I was sent:
+
+</P>
+<P>
+ "Gcc does not correctly pass/return structures which are smaller than
+ 16 bytes and which are not 8 bytes. The problem is very involved and
+ difficult to fix. It affects a number of other targets also, but irix6
+ is affected the most, because it is a 64 bit target, and 4 byte
+ structures are common. The exact problem is that structures are being
+ padded at the wrong end, e.g. a 4 byte structure is loaded into the
+ lower 4 bytes of the register when it should be loaded into the upper
+ 4 bytes of the register."
+
+</P>
+<BR><H2><A NAME="SEC328" HREF="FAQ.html#TOC328">96. LINUX
</A></H2>
-<A NAME="SEC275" HREF="FAQ.html#TOC275">Q9601</A>: Exim is mysteriously crashing, usually when forking to send a delivery
+<A NAME="SEC329" HREF="FAQ.html#TOC329">Q9601</A>: Exim is mysteriously crashing, usually when forking to send a delivery
error message.
process stops with signal 11, your hardware is to blame.
</P>
-<A NAME="SEC276" HREF="FAQ.html#TOC276">Q9602</A>: Exim has created a directory called <B>build-Linux-libc5-i386</B> but is
+<A NAME="SEC330" HREF="FAQ.html#TOC330">Q9602</A>: Exim has created a directory called <B>build-Linux-libc5-i386</B> but is
trying to reference <B>build-Linux-libc5-i386-linux</B> while building.
preferentially.
</P>
-<A NAME="SEC277" HREF="FAQ.html#TOC277">Q9603</A>: I want to use logrotate which is standard with <B>RH5.2</B> Linux to rotate
+<A NAME="SEC331" HREF="FAQ.html#TOC331">Q9603</A>: I want to use logrotate which is standard with <B>RH5.2</B> Linux to rotate
my mail logs. Anyone worked out the logrotate config file that will
do this?
reject log, of course.
</P>
-<A NAME="SEC278" HREF="FAQ.html#TOC278">Q9604</A>: I'm seeing the message "<B>inetd</B>[334]: imap/tcp server failing (looping),
+<A NAME="SEC332" HREF="FAQ.html#TOC332">Q9604</A>: I'm seeing the message "<B>inetd</B>[334]: imap/tcp server failing (looping),
service terminated" on a RedHat 5.2 system, causing imap connections to
be refused. The imapd in use is Washington Uni vers 12.250. Could this
be anything to do with Exim?
provide similar functionality, but in different ways.
</P>
-<A NAME="SEC279" HREF="FAQ.html#TOC279">Q9605</A>: I get the "too many open files" error especially when a lot of messages
+<A NAME="SEC333" HREF="FAQ.html#TOC333">Q9605</A>: I get the "too many open files" error especially when a lot of messages
land for majordomo at the same time.
you actually change the kernel parameters.
</P>
-<A NAME="SEC280" HREF="FAQ.html#TOC280">Q9606</A>: I'm having a problem with an Exim RPM.
+<A NAME="SEC334" HREF="FAQ.html#TOC334">Q9606</A>: I'm having a problem with an Exim RPM.
<P>
debs, tarballs, and POSIX packages.
</P>
-<BR><H2><A NAME="SEC281" HREF="FAQ.html#TOC281">97. SUN SYSTEMS
+<A NAME="SEC335" HREF="FAQ.html#TOC335">Q9607</A>: I installed debian 2.2 linux on a small 325mb 486 laptop. When I try
+ to test the Mail program, I get the following error: "Failed to open
+ configuration file <B><B>/etc/exim.conf</B>".</B>
+
+
+<P>
+A9607: The Debian installation should have given you <B>/usr/sbin/eximconfig</B>,
+ which asks you some questions and then sets up the configuration file
+ in <B><B>/etc/exim.conf</B>.</B> Try running that (you'll probably need root) and see
+ how it goes. In any case you get a thoroughly commented conf file at
+ the end, which will give you a sample from which to work if you need
+ further modification.
+
+</P>
+<P>
+ The exim docs in the Debian package are in <B>/usr/doc/exim</B> and the full
+ reference manual is <B>spec.txt.gz</B>
+
+</P>
+<A NAME="SEC336" HREF="FAQ.html#TOC336">Q9608</A>: I'm getting the error <B>"db.h:</B> No such file or directory" when I try to
+ build Exim under RedHat 7.0.
+
+
+<P>
+A9608: See
+ <A HREF="FAQ.html#SEC62">Q0113</A>.
+
+</P>
+<BR><H2><A NAME="SEC337" HREF="FAQ.html#TOC337">97. SUN SYSTEMS
</A></H2>
-<A NAME="SEC282" HREF="FAQ.html#TOC282">Q9701</A>: Exim builds fine with gcc on SunOS 4 but crashes inside <B>sscanf()</B>.
+<A NAME="SEC338" HREF="FAQ.html#TOC338">Q9701</A>: Exim builds fine with gcc on SunOS 4 but crashes inside <B>sscanf()</B>.
<P>
version of <B>ld</B>.
</P>
-<A NAME="SEC283" HREF="FAQ.html#TOC283">Q9702</A>: How can I get rid of spurious ^M characters in messages sent from
+<A NAME="SEC339" HREF="FAQ.html#TOC339">Q9702</A>: How can I get rid of spurious ^M characters in messages sent from
CDE <B>dtmail</B>?
before passing it to Exim.
</P>
-<A NAME="SEC284" HREF="FAQ.html#TOC284">Q9703</A>: On SunOS 4 Exim crashes when looking up domains in the DNS that have
+<A NAME="SEC340" HREF="FAQ.html#TOC340">Q9703</A>: On SunOS 4 Exim crashes when looking up domains in the DNS that have
more than 10 A records.
those.
</P>
-<A NAME="SEC285" HREF="FAQ.html#TOC285">Q9704</A>: The menu in Eximon isn't working on my Sun system.
+<A NAME="SEC341" HREF="FAQ.html#TOC341">Q9704</A>: The menu in Eximon isn't working on my Sun system.
<P>
be encountered.
</P>
-<A NAME="SEC286" HREF="FAQ.html#TOC286">Q9705</A>: I am experiencing mailbox locking problems with Sun's <B>mailtool</B> used
+<A NAME="SEC342" HREF="FAQ.html#TOC342">Q9705</A>: I am experiencing mailbox locking problems with Sun's <B>mailtool</B> used
over a network.
to hit the "done" button to make it release the lock.
</P>
-<A NAME="SEC287" HREF="FAQ.html#TOC287">Q9706</A>: Exim has been crashing on my Solaris x86 system, apparently while
+<A NAME="SEC343" HREF="FAQ.html#TOC343">Q9706</A>: Exim has been crashing on my Solaris x86 system, apparently while
running DBM functions.
WS compiler with ndbm, has fixed this in the past.
</P>
-<A NAME="SEC288" HREF="FAQ.html#TOC288">Q9707</A>: The exiwhat utility isn't working for me on a Solaris 2 system.
+<A NAME="SEC344" HREF="FAQ.html#TOC344">Q9707</A>: The exiwhat utility isn't working for me on a Solaris 2 system.
<P>
Solaris to expect the normal Solaris version of <B>ps</B>.
</P>
-<A NAME="SEC289" HREF="FAQ.html#TOC289">Q9708</A>: How do I stop Sun's <B>dtcm</B> from hanging?
+<A NAME="SEC345" HREF="FAQ.html#TOC345">Q9708</A>: How do I stop Sun's <B>dtcm</B> from hanging?
<P>
at the time of this writing, not yet provided a patch."
</P>
-<A NAME="SEC290" HREF="FAQ.html#TOC290">Q9709</A>: I want Exim to use only the resolver (i.e. ignore <B>/etc/hosts</B>), but don't
+<A NAME="SEC346" HREF="FAQ.html#TOC346">Q9709</A>: I want Exim to use only the resolver (i.e. ignore <B>/etc/hosts</B>), but don't
want to alter the <B>nsswitch.conf</B> file in Solaris 2.
that Exim uses.
</P>
-<BR><H2><A NAME="SEC291" HREF="FAQ.html#TOC291">98. COOKBOOK
+<BR><H2><A NAME="SEC347" HREF="FAQ.html#TOC347">98. COOKBOOK
</A></H2>
-<A NAME="SEC292" HREF="FAQ.html#TOC292">Q9801</A>: How do I configure Exim as part of TPC <B>(<A HREF="http://www.tpc.int">http://www.tpc.int</A>)?</B>
+<A NAME="SEC348" HREF="FAQ.html#TOC348">Q9801</A>: How do I configure Exim as part of TPC <B>(<A HREF="http://www.tpc.int">http://www.tpc.int</A>)?</B>
<P>
<PRE>
tpc:
driver = pipe
- command = "/usr/local/tpc/tpcmailer.pl ${local_part}@${domain} \
- ${sender_address}"
+ command = /usr/local/tpc/tpcmailer.pl ${local_part}@${domain} \
+ ${sender_address}
pipe_as_creator</PRE>
<P>
<B><B>/usr/local/tpc/tpcmailer.pl</B></B> is the mail processing script that can
tpc_director:
driver = smartuser
transport = tpc
- domains = "partial-lsearch;/etc/mail/tpc.domains"</PRE>
+ domains = partial-lsearch;/etc/mail/tpc.domains</PRE>
<P>
Of course, there are other things to do as well before your system is
a functioning TPC server.
</P>
-<A NAME="SEC293" HREF="FAQ.html#TOC293">Q9802</A>: How do I configure Exim so that it sends mail to the outside world only
+<A NAME="SEC349" HREF="FAQ.html#TOC349">Q9802</A>: How do I configure Exim so that it sends mail to the outside world only
from a restricted list of our local users?
</P>
<PRE>
- senders = ":^[^@]+@(?!${rxquote:your.domain}\\$):\
- lsearch;/permitted/senders"</PRE>
+ senders = :^[^@]+@(?!${rxquote:your.domain}\$):\
+ lsearch;/permitted/senders</PRE>
<P>
The first item in this list is empty, to match the empty sender.
This is necessary because bounce messages have null senders. The
</P>
<PRE>
- condition = "\
+ condition = \
${lookup{${domain:$sender_address}}lsearch{/domain/list}\
{\
${lookup{${local_part:$sender_address}}lsearch\
{/permitted/senders}{yes}{no}}\
}\
- {yes}}"</PRE>
+ {yes}}</PRE>
<P>
Obviously other means of testing the domain and local part could be
substituted, for example, by having separate files of valid local
</P>
<PRE>
- condition = "\
+ condition = \
${lookup{groupname}lsearch{/etc/group}\
{${if match {$value}\
- {[:,]${rxquote:${local_part:$sender_address}}(,|\\\$)}\
- {yes}{no}}}{no}}"</PRE>
+ {[:,]${rxquote:${local_part:$sender_address}}(,|\$)}\
+ {yes}{no}}}{no}}</PRE>
<P>
This is checking the local part of the sender; a alternative might
be to check <B><B>$sender_ident.</B></B> However, you should really also check
part of <B><B>user@your.domain</B>.</B>
</P>
-<A NAME="SEC294" HREF="FAQ.html#TOC294">Q9803</A>: How do I configure Exim to run with SmartList?
+<A NAME="SEC350" HREF="FAQ.html#TOC350">Q9803</A>: How do I configure Exim to run with SmartList?
<P>
<PRE>
list_transport:
driver = pipe
- command = "/var/spool/slist/.bin/flist \
- ${local_part}${local_part_suffix}"
+ command = /var/spool/slist/.bin/flist \
+ ${local_part}${local_part_suffix}
current_directory = /var/spool/slist
home_directory = /var/spool/slist
user = slist
and was written by Michelle Dick.
</P>
-<A NAME="SEC295" HREF="FAQ.html#TOC295">Q9804</A>: How do I configure Exim to minic PP's "tripnote" facility?
+<A NAME="SEC351" HREF="FAQ.html#TOC351">Q9804</A>: How do I configure Exim to minic PP's "tripnote" facility?
<P>
-A9804: See C005.
+A9804: See C006.
</P>
-<A NAME="SEC296" HREF="FAQ.html#TOC296">Q9805</A>: How do I configure Exim to handle local parts with extensions?
+<A NAME="SEC352" HREF="FAQ.html#TOC352">Q9805</A>: How do I configure Exim to handle local parts with extensions?
<P>
A9805: See C010.
</P>
-<A NAME="SEC297" HREF="FAQ.html#TOC297">Q9806</A>: How do I configure Exim so that only a restricted list of users can
+<A NAME="SEC353" HREF="FAQ.html#TOC353">Q9806</A>: How do I configure Exim so that only a restricted list of users can
receive mail from external domains?
A9806: See C013.
</P>
-<A NAME="SEC298" HREF="FAQ.html#TOC298">Q9807</A>: I have <B><B>someuser@mydomain.com</B></B> that I only want certain users to be able
+<A NAME="SEC354" HREF="FAQ.html#TOC354">Q9807</A>: I have <B><B>someuser@mydomain.com</B></B> that I only want certain users to be able
to mail to. How do I accomplish this?
file as complete addresses, including a domain.
</P>
-<A NAME="SEC299" HREF="FAQ.html#TOC299">Q9808</A>: A site for which I provide secondary MX is down for some time. Is there
+<A NAME="SEC355" HREF="FAQ.html#TOC355">Q9808</A>: A site for which I provide secondary MX is down for some time. Is there
a way to run the queue for that destination separately from the main
queue?
BSMTP files. There is an example of the latter approach in C014.
</P>
-<A NAME="SEC300" HREF="FAQ.html#TOC300">Q9809</A>: How do I implement VERP (Variable Envelope Return Paths) in Exim?
+<A NAME="SEC356" HREF="FAQ.html#TOC356">Q9809</A>: How do I implement VERP (Variable Envelope Return Paths) in Exim?
<P>
A9809: See C017.
</P>
-<A NAME="SEC301" HREF="FAQ.html#TOC301">Q9810</A>: I'd like to make a copy of all outgoing messages to a local mailbox. Is
+<A NAME="SEC357" HREF="FAQ.html#TOC357">Q9810</A>: I'd like to make a copy of all outgoing messages to a local mailbox. Is
there a solution for this using an Exim filter?
This takes copies of messages whose From: header contains <B>your.domain</B>
and whose To: and Cc: headers contain at least one address that does not
contain <B>your.domain.</B> See also
- <A HREF="FAQ.html#SEC308">Q9817</A>.
+ <A HREF="FAQ.html#SEC364">Q9817</A>.
</P>
-<A NAME="SEC302" HREF="FAQ.html#TOC302">Q9811</A>: I want to make a copy of outgoing messages to a specific file for each
+<A NAME="SEC358" HREF="FAQ.html#TOC358">Q9811</A>: I want to make a copy of outgoing messages to a specific file for each
user in a specific directory, using a "save" command in a system filter.
How can I arrange for Exim to write to these files under the correct
UID/GID?
use <TT>user=exim</TT> and do all the writing under the same UID/GID.
</P>
-<A NAME="SEC303" HREF="FAQ.html#TOC303">Q9812</A>: How can I keep an archive of all mail for some specific local email
+<A NAME="SEC359" HREF="FAQ.html#TOC359">Q9812</A>: How can I keep an archive of all mail for some specific local email
addresses?
this, you will need to set <TT>message_filter_file_transport</TT> to point to an
appropriate transport which includes a setting of "user" to specify
which uid to run the saving under, as is described in
- <A HREF="FAQ.html#SEC302">Q9811</A>.
+ <A HREF="FAQ.html#SEC358">Q9811</A>.
</P>
-<A NAME="SEC304" HREF="FAQ.html#TOC304">Q9813</A>: How can I configure Exim to provide a vacation message when there are
+<A NAME="SEC360" HREF="FAQ.html#TOC360">Q9813</A>: How can I configure Exim to provide a vacation message when there are
no local users on my mail hub?
A9813: See C019.
</P>
-<A NAME="SEC305" HREF="FAQ.html#TOC305">Q9814</A>: We want to be able to temporarily lock out a user by disabling the
+<A NAME="SEC361" HREF="FAQ.html#TOC361">Q9814</A>: We want to be able to temporarily lock out a user by disabling the
password and moving the home directory to another place. How can we
arrange to reject mail for users in this state?
instead of setting <TT>match_directory</TT>.
</P>
-<A NAME="SEC306" HREF="FAQ.html#TOC306">Q9815</A>: I need an alias, say "fakeaddress" that should receive a message,
+<A NAME="SEC362" HREF="FAQ.html#TOC362">Q9815</A>: I need an alias, say "fakeaddress" that should receive a message,
strip all reply-to: headers present, substitute another one pointing to
"otheraddress" and forward a message to "realaddress".
the fixed values shown above.
</P>
-<A NAME="SEC307" HREF="FAQ.html#TOC307">Q9816</A>: How can I set up Exim to work with Listar?
+<A NAME="SEC363" HREF="FAQ.html#TOC363">Q9816</A>: How can I set up Exim to work with Listar?
<P>
A9816: See <B><A HREF="http://www.cs.huji.ac.il/~vadik/listar-exim/.">http://www.cs.huji.ac.il/~vadik/listar-exim/.</A></B>
</P>
-<A NAME="SEC308" HREF="FAQ.html#TOC308">Q9817</A>: I need to take copies of all incoming and outgoing mail for certain
+<A NAME="SEC364" HREF="FAQ.html#TOC364">Q9817</A>: I need to take copies of all incoming and outgoing mail for certain
users. For each user there may be a different monitoring address.
<P>
A9817: You can adapt the filter solution given in
- <A HREF="FAQ.html#SEC301">Q9810</A> by adding a test for
+ <A HREF="FAQ.html#SEC357">Q9810</A> by adding a test for
the relevant local parts. Create a file containing lines like this:
</P>
because Exim caches the results of successful lookups.
</P>
-<A NAME="SEC309" HREF="FAQ.html#TOC309">Q9818</A>: How can I add a disclaimer to the end of every message?
+<A NAME="SEC365" HREF="FAQ.html#TOC365">Q9818</A>: How can I add a disclaimer to the end of every message?
<P>
-A9818: This isn't as easy as it appears. You cannot just add text to the bottom
- of messages because of the possibility of MIME attachments. In any case,
- it is not the job of an MTA to mess with the contents of messages. You
- can perhaps do things with Exim's transport filters if you really have
- to, but if the messages originate locally, it would be better to do
- what you want in the MUA (e.g. force all your local users to have it in
- their .sig files).
+A9818: See
+ <A HREF="FAQ.html#SEC265">Q1501</A>.
</P>
-<A NAME="SEC310" HREF="FAQ.html#TOC310">Q9819</A>: I would like to append a simple advertisement text to all outgoing
+<A NAME="SEC366" HREF="FAQ.html#TOC366">Q9819</A>: I would like to append a simple advertisement text to all outgoing
and local mails.
<P>
A9819: See
- <A HREF="FAQ.html#SEC309">Q9818</A>.
+ <A HREF="FAQ.html#SEC265">Q1501</A>.
</P>
-<A NAME="SEC311" HREF="FAQ.html#TOC311">Q9820</A>: How can I configure Exim so that all mails adressed to
+<A NAME="SEC367" HREF="FAQ.html#TOC367">Q9820</A>: How can I configure Exim so that all mails adressed to
<B><B>something@username.domain.net</B></B> get delivered to <B>/var/spool/mail/username</B>?
This should be the first director.
</P>
-<A NAME="SEC312" HREF="FAQ.html#TOC312">Q9821</A>: How do I get exim not to add a Sender: header to locally originated
+<A NAME="SEC368" HREF="FAQ.html#TOC368">Q9821</A>: How do I get exim not to add a Sender: header to locally originated
mail?
<P>
A9821: It only adds it if the From: header doesn't correspond to the user
- sending the message. You can't remove it in general (but this may be
- possible in a future release). However:
+ sending the message. From release 3.14 onwards, you can suppress this
+ by setting <TT>no_local_from_check</TT>. Alternatively,
</P>
<P>
<P>
(2) If your <EM>real</EM> question "how do I submit mail from UUCP
without it adding Sender:?" Then see
- <A HREF="FAQ.html#SEC154">Q0603</A>.
+ <A HREF="FAQ.html#SEC185">Q0603</A>.
</P>
-<A NAME="SEC313" HREF="FAQ.html#TOC313">Q9822</A>: How can I get Exim to work with mailman?
+<A NAME="SEC369" HREF="FAQ.html#TOC369">Q9822</A>: How can I get Exim to work with mailman?
<P>
-A9822: The Exim mailing list uses the configuration that is given in the "how
- to" information at <B><A HREF="http://www.exim.org/howto/mailman.html.">http://www.exim.org/howto/mailman.html.</A></B>
+A9822: The configuration in <B><A HREF="http://www.exim.org/howto/mailman.html">http://www.exim.org/howto/mailman.html</A></B> was used for
+ the Exim mailing list before it switched to SmartList.
</P>
-<A NAME="SEC314" HREF="FAQ.html#TOC314">Q9823</A>: Is there any way to have messages sent to a specific local address
+<A NAME="SEC370" HREF="FAQ.html#TOC370">Q9823</A>: Is there any way to have messages sent to a specific local address
delayed by - say - 24 hours?
the address. You may want to set a special retry rule for it.
</P>
-<BR><H2><A NAME="SEC315" HREF="FAQ.html#TOC315">99. LIST OF SAMPLE CONFIGURATIONS
+<A NAME="SEC371" HREF="FAQ.html#TOC371">Q9824</A>: I have a mailing list exploder on one host, and three other hosts where
+ I want to do the actual deliveries from. How can I get Exim to split
+ a message into groups of recipients between the three hosts?
+
+
+<P>
+A9824: Splitting into groups of recipients can be done by setting <TT>max_rcpt</TT> in
+ the SMTP transport. Persuading Exim to spread the groups between three
+ hosts is a little harder. Suppose you have 300 addresses, and <TT>max_rcpt</TT>
+ is set to 100. One approach is to try <TT>hosts_randomize</TT> in a <B>domainlist</B>
+ router, like this:
+
+</P>
+<PRE>
+ split:
+ driver = domainlist
+ transport = remote_smtp
+ hosts_randomize
+ route_list = * hostA:hostB:hostC byname</PRE>
+<P>
+ Unfortunately, this doesn't work quite as you might expect. There are
+ six different permutations of the host list, and so if the randomizing
+ works perfectly, Exim will end up with
+
+</P>
+<PRE>
+ 50 addresses routed to hostA:hostB:hostC
+ 50 addresses routed to hostA:hostC:hostB
+ 50 addresses routed to hostB:hostC:hostA
+ 50 addresses routed to hostB:hostA:hostC
+ 50 addresses routed to hostC:hostA:hostB
+ 50 addresses routed to hostC:hostB:hostA</PRE>
+<P>
+ Although a total of 100 addresses have hostA as their first host, Exim
+ will still send them in two separate SMTP calls, because it can only
+ batch up addresses that have identical host lists. If hostA is down, it
+ will send 50 of these to host B and 50 to host C. It will aways send six
+ copies of the message.
+
+</P>
+<P>
+ With only three hosts, this isn't a major problem, but if the number of
+ hosts increases, it becomes more serious. If there are four delivery
+ hosts, there are 24 different permuations, and with five hosts there are
+ 120, so 120 messages are sent. When the hosts are not all of the same
+ power, you might want to use a list like
+
+</P>
+<PRE>
+ hostA:hostA:hostA:hostB:hostB:hostC</PRE>
+<P>
+ to send more to hostA, and this makes the situation worse. There is,
+ however, a way to solve this. Instead of putting the host list on the
+ router, put it on the transport. The router just contains one host:
+
+</P>
+<PRE>
+ split:
+ driver = domainlist
+ transport = special_smtp
+ route_list = * hostA byname</PRE>
+<P>
+ and the transport has the full list, set to override the router's host:
+
+</P>
+<PRE>
+ special_smtp:
+ driver = smtp
+ hosts = hostA:hostA:hostA:hostB:hostB:hostC
+ hosts_override
+ hosts_randomize
+ max_rcpt = 100</PRE>
+<P>
+ Now all 300 addresses are routed to the same host, so they are sent to
+ the transport 100 at a time. The transport overrides the router's host
+ with its own list, which it randomizes each time. (This works only for
+ releases of Exim after 3.16 - up to and including that release, there is
+ a bug that prevents it re-randomizing for each group.) See also C040.
+
+</P>
+<BR><H2><A NAME="SEC372" HREF="FAQ.html#TOC372">99. LIST OF SAMPLE CONFIGURATIONS
</A></H2>
<P>
</P>
<P>
-<a href="config.samples/C001">C001:</a> "This config will support delivery across multiple systems using NIS to
+C001: "This config will support delivery across multiple systems using NIS to
look up delivery addresses from the <B>mail.aliases</B> database."
</P>
<P>
-<a href="config.samples/C002">C002:</a> "Although exim not intended for use in UUCP environment (it doesn't
+C002: "Although exim not intended for use in UUCP environment (it doesn't
know anything about bang!path addresses), I'm successfully using it for
delivering mail to UUCP clients."
</P>
<P>
-<a href="config.samples/C003">C003:</a> "I've read down through
- <A HREF="FAQ.html#SEC152">Q0601</A> and your request for UUCP examples. Here's
+C003: "I've read down through
+ <A HREF="FAQ.html#SEC183">Q0601</A> and your request for UUCP examples. Here's
how I'm doing it." (This example uses routers.)
</P>
<P>
-<a href="config.samples/C004">C004:</a> "Here's a BSMTP over UUCP [configuration] - the transport is Taylor/GNU
+C004: "Here's a BSMTP over UUCP [configuration] - the transport is Taylor/GNU
UUCP - which takes the long option types." (This example uses
directors.)
</P>
<P>
-<a href="config.samples/C005">C005:</a> "I am using a virus scanner program that is invoked by a pipe, scans the
+C005: "I am using a virus scanner program that is invoked by a pipe, scans the
mail and re-invokes Exim to do the delivery. The pipe is invoking a perl
script that tries to unpack and MIME, zip and other archives and then
applies the McAfee scanner on the results."
</P>
<P>
-<a href="config.samples/C006">C006:</a> "This is how I have configured a PP-inspired vacationnote, there is
+C006: "This is how I have configured a PP-inspired vacationnote, there is
(was?) such a feature in PP. The user makes a file "tripnote" in his/her
home directory, the message is passed to the sender once with a short
leading text."
</P>
<P>
-<a href="config.samples/C007">C007:</a> "If I host a domain <B>foo.dom</B> on my machine as a virtual domain I expect
+C007: "If I host a domain <B>foo.dom</B> on my machine as a virtual domain I expect
it to be completely virtual and separate from other mail domains that
end up on my machine."
</P>
<P>
-<a href="config.samples/C008">C008:</a> "And of course it is possible to do a very interesting solution to
+C008: "And of course it is possible to do a very interesting solution to
this [virtual domains] using LDAP."
</P>
<P>
-<a href="config.samples/C009">C009:</a> "These are suggested parts of a configuration for looking up users in
+C009: "These are suggested parts of a configuration for looking up users in
<B><B>/etc/passwd.domain</B></B> rather than in <B>/etc/passwd</B> ..."
</P>
<P>
-<a href="config.samples/C010">C010:</a> "One of our customers is looking for us to support addresses of the form
+C010: "One of our customers is looking for us to support addresses of the form
<B><B>username+extension@domain.com</B>,</B> primarily for use with procmail."
</P>
<P>
-<a href="config.samples/C011">C011:</a> "Thanks to Philip and others I now have my ISP style config built and
+C011: "Thanks to Philip and others I now have my ISP style config built and
therefore am posting the final configuration fragments to the list in
case anyone else wants to do a similar thing."
</P>
<P>
-<a href="config.samples/C012">C012:</a> "I've written a small chapter how-to configure Exim for use with UUCP
+C012: "I've written a small chapter how-to configure Exim for use with UUCP
(mostly condensed from the exim-user mailing list plus some
experimenting) and would be glad if it could be included in the Exim
documentation."
</P>
<P>
-<a href="config.samples/C013">C013:</a> "I've take some tips from the FAQ about permitting only certain users
+C013: "I've take some tips from the FAQ about permitting only certain users
to send to external mail and came up with my own for the receiving
part."
</P>
<P>
-<a href="config.samples/C014">C014:</a> "If I have a situation where a site I MX for has a known outage I stash
+C014: "If I have a situation where a site I MX for has a known outage I stash
all their mail into a directory in BSMTP format."
</P>
<P>
-<a href="config.samples/C015">C015:</a> "This approach to virtual domains has helped me a great deal, and is so
+C015: "This approach to virtual domains has helped me a great deal, and is so
easy to maintain (add and modify as appropriate)."
</P>
<P>
-<a href="config.samples/C016">C016:</a> "Herewith my configuration." (A complete configuration, including simple
+C016: "Herewith my configuration." (A complete configuration, including simple
virtual domains, along the lines of C015).
</P>
<P>
-<a href="config.samples/C017">C017:</a> "I have gotten the new VERP feature of Exim 2.054 working in test, along
+C017: "I have gotten the new VERP feature of Exim 2.054 working in test, along
with some supporting programs to handle bounces that do come back."
</P>
<P>
-<a href="config.samples/C018">C018:</a> "This Majordomo configuration removes a lot of the aliases, and
+C018: "This Majordomo configuration removes a lot of the aliases, and
automates a lot of the other functions based on whether the files or
directories exist."
</P>
<P>
-<a href="config.samples/C019">C019:</a> "The following configuration file entries can be used to provide a
+C019: "The following configuration file entries can be used to provide a
'vacation'-style function for a mailhub which has no local users."
</P>
<P>
-<a href="config.samples/C020">C020:</a> "I was asked for a copy of the programs we were using to mail
+C020: "I was asked for a copy of the programs we were using to mail
everybody."
</P>
<P>
-<a href="config.samples/C021">C021:</a> "Here is some sample code that might be useful for handling
+C021: "Here is some sample code that might be useful for handling
X-Failed-Recipients headers generated by Exim, with mailing lists."
</P>
<P>
-<a href="config.samples/C022">C022:</a> "This is the Exim configuration file of a machine which delivers mail to
+C022: "This is the Exim configuration file of a machine which delivers mail to
several local domains where the mail is delivered locally, several hairy
domains, handled as described below, and a half-virtual domain, which is
first processed by its special alias file, then processed as other local
</P>
<P>
-<a href="config.samples/C023">C023:</a> A Perl script and instructions for hooking it into Exim in order to
+C023: A Perl script and instructions for hooking it into Exim in order to
handle disposition-notification-to and return-receipt-to by using a
shadow transport to send copies of delivered messages to the script.
</P>
<P>
-<a href="config.samples/C024">C024:</a> "In case anybody wants to use a MySql database to store aliases this is
+C024: "In case anybody wants to use a MySql database to store aliases this is
how I managed to get my site working."
</P>
<P>
-<a href="config.samples/C025">C025:</a> "As promised here is the way I got Exim to delver to Cyrus mailboxes if
+C025: "As promised here is the way I got Exim to delver to Cyrus mailboxes if
the user exists in the MySql database."
</P>
<P>
-<a href="config.samples/C026">C026:</a> "The following configuration and program will allow messages going to
+C026: "The following configuration and program will allow messages going to
AOL only, to be filtered thru a Perl script. This Perl script will
convert any URL's to the HTML syntax. In addition, the transport will
use VERP to send a unique envelope sender with each message."
</P>
<P>
-<a href="config.samples/C027">C027:</a> "This is an FYI to demonstrate how to have exim work with SSL using the
+C027: "This is an FYI to demonstrate how to have exim work with SSL using the
stunnel wrapper and its underlying OpenSSL libraries and toolkit."
</P>
<P>
-<a href="config.samples/C028">C028:</a> "This Python script reads from stdin and writes to stdout. It strips all
+C028: "This Python script reads from stdin and writes to stdout. It strips all
the MIME attachments from a mail message that are one of the mime types
listed on the command line. Exim can use it in its configuration file,
for example, as follows:"
</P>
<P>
-<a href="config.samples/C029">C029:</a> "The standard way to connect one's MTA to a list manager seems to be to
+C029: "The standard way to connect one's MTA to a list manager seems to be to
add a set of aliases for <EM>every</EM> list one creates. Once upon a time, I
crufted a set of configs from Smail to work with majordomo, to
automaticaly recognize the standard patterns, for all lists in
</P>
<P>
-<a href="config.samples/C030">C030:</a> "I am currently configuring an exim for a site that will to mail
+C030: "I am currently configuring an exim for a site that will to mail
hosting for several domains. I want the domain holders to have control
over 'their' alias files, being able to create their own aliases.
However, I don't want them to have postmaster, abuse and other role
</P>
<P>
-<a href="config.samples/C031">C031:</a> "These are config file snippets for handling certain remote addresses as
+C031: "These are config file snippets for handling certain remote addresses as
local, and making only real external addresses visible to users."
</P>
<P>
-<a href="config.samples/C032">C032:</a> "This is the Exim Nervous Mailbox Quota Suite. It does not impose
+C032: "This is the Exim Nervous Mailbox Quota Suite. It does not impose
hard quotas on users' mailboxes, but it makes a user nervous by
putting all his mail in a secondary mailbox, inaccessible to the
user, when he is over his quota. When the user clears his
</P>
<P>
-<a href="config.samples/C033">C033:</a> "Here's our current automatic vacation recipe".
+C033: "Here's our current automatic vacation recipe".
</P>
<P>
-<a href="config.samples/C034">C034:</a> "This is a HOW-TO for setting up Exim to support SMTP authentication
+C034: "This is a HOW-TO for setting up Exim to support SMTP authentication
under different environments, including regular password files, PAM
and NIS."
</P>
<P>
-<a href="config.samples/F001">F001:</a> "I thought that the rest of the list may be interested in reviewing our
+C035: "These configurations enable exim and hylafax <B>(www.hylafax.org)</B> work
+ together, I mean sending fax by email <B><B>(user@123456.fax</B>)."</B>
+
+</P>
+<P>
+C036: "My aim was to have an LDAP-driven system for mail delivery."
+
+</P>
+<P>
+C037: An elegant way of using ETRN, which does immediate delivery if the host
+ is online, but saves mail in a BSMTP file after some time on the queue.
+ ETRN then re-injects the mail.
+
+</P>
+<P>
+C038: Amavis virus scanning: "Here ya go. This is the config we use... this
+ box is our main MX host then relays it to our real server for delivery."
+
+</P>
+<P>
+C039: "For reference, this is how I got PAM authentication from a standard
+ UNIX password database with Eudora 4.3 clients to work on a Debian 2.2
+ (Intel) system. This configuration assumes that you are using standard
+ UNIX crypt passwords; pam-pwdfile is NOT compatible with MD5 encrypted
+ passwords."
+
+</P>
+<P>
+C040: "Exim 3.20 has a feature that allows a large mailing of a single message
+ to be sent to many different relays. This is useful for mailing lists,
+ as it allows the message to be relayed to multiple machines, in groups
+ of 100 addresses, for final delivery."
+
+</P>
+<P>
+C041: "Attached you will find a plain text file where I explain how to set up
+ mailman to use virtual environment (single setup for many domains)."
+
+</P>
+<P>
+F001: "I thought that the rest of the list may be interested in reviewing our
filter as a starting point for their own system message filter."
</P>
<P>
-<a href="config.samples/F002">F002:</a> "... program which refused mail from unknown addresses until they mailed
+F002: "... program which refused mail from unknown addresses until they mailed
me promising not to spam me ... since I'd already thought through how
to do it in Exim, and knew it'd be slightly easier than falling out of
bed, I went ahead and did it."
</P>
<P>
-<a href="config.samples/F003">F003:</a> "Here's four checks installed in our system wide filter that knock out
+F003: "Here's four checks installed in our system wide filter that knock out
a lot of otherwise hard to detect rubbish."
</P>
<P>
-<a href="config.samples/F004">F004:</a> "This is an Exim filter snippet to change locally-generated Message-Id:
+F004: "This is an Exim filter snippet to change locally-generated Message-Id:
and Resent-Message-Id: headers to world-unique values."
</P>