aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fetchmail-FAQ.html830
1 files changed, 830 insertions, 0 deletions
diff --git a/fetchmail-FAQ.html b/fetchmail-FAQ.html
new file mode 100644
index 00000000..374abbd7
--- /dev/null
+++ b/fetchmail-FAQ.html
@@ -0,0 +1,830 @@
+<!doctype HTML public "-//W3O//DTD W3 HTML 2.0//EN">
+<HTML>
+<HEAD>
+<TITLE>The Fetchmail FAQ</TITLE>
+<link rev=made href=mailto:esr@snark.thyrsus.com>
+<meta name="description" content="Frequently asked questions about fetchmail.">
+<meta name="keywords" content="fetchmail, POP, IMAP, remote mail">
+</HEAD>
+<BODY>
+<H1>Frequently Asked Questions About Fetchmail</H1>
+
+$Id: fetchmail-FAQ.html,v 1.1 1997/04/16 20:05:46 esr Exp $<p>
+
+(Add a link to Chris Cheyney's <em>atexit</em> patch.)<p>
+
+Before reporting any bug, please read <a href="#G3">G3</a> for advice
+on how to include diagnostic information that will get your bug fixed
+as quickly as possible.
+<p>
+If you have a question or answer you think ought to be added to this FAQ list,
+mail it to fetchmail's maintainer, Eric S. Raymond, at
+<A HREF="mailto:esr@thyrsus.com">esr@snark.thyrsus.com</A>.
+<p>
+There is a fetchmail-friends reflector for people who want to discuss fixes
+and improvements in fetchmail. It's at
+<a href="mail:fetchmail-friends@thyrsus.com">fetchmail-friends@thyrsus.com</a>;
+Eric
+can put you on it.
+<p>
+<h1>General questions:</h1>
+
+<a href="#G1">G1. What is fetchmail and why should I bother?</a><br>
+<a href="#G2">G2. Where do I find the latest FAQ and fetchmail sources?</a><br>
+<a href="#G3">G3. I think I've found a bug. Will you fix it?</a><br>
+<a href="#G4">G4. I have this idea for a neat feature. Will you add it?</a><br>
+
+<h1>Build-time problems:</h1>
+
+<a href="#B1">B1. My C compiler libraries don't seem to have atexit(3).</a><br>
+<a href="#B2">B2. Building fetchmail fails with compiler errors in error.c.</a><br>
+
+<h1>Fetchmail configuration file grammar questions:</h1>
+
+<a href="#F1">F1. Why does my .fetchmailrc from 2.8 or earlier no longer work?</a><br>
+<a href="#F2">F2. The .fetchmailrc parser won't accept my all-numeric user name.</a><br>
+<a href="#F3">F3. What does "Warning: user entry with no `user' keyword" mean?</a><br>
+<a href="#F4">F4. I'm migrating from popclient. How do I need to modify my .poprc?</a><br>
+
+<h1>Configuration questions:</h1>
+
+<a href="#C1">C1. Why do I need a .fetchmailrc when running as root on my own machine?</a><br>
+<a href="#C2">C2. How can I arrange for a fetchmail daemon to get killed when I log out?</a><br>
+<a href="#C3">C3. How do I know what interface and address to use with --interface?</a><br>
+<a href="#C4">C4. How can I get fetchmail to work with ssh?</a><br>
+<a href="#C5">C5. How can I set up support for sendmail's anti-spam 571 response?</a><br>
+
+<h1>Runtime fatal errors:</h1>
+
+<a href="#R1">R1. I think I've set up fetchmail correctly, but I'm not getting any mail.</a><br>
+<a href="#R2">R2. Fetchmail isn't working, and -v shows `SMTP connect failed' messages.</a><br>
+<a href="#R3">R3. When I try to configure an MDA, fetchmail doesn't work.</a><br>
+<a href="#R4">R4. Fetchmail dumps core in -V mode, but operates normally otherwise.</a><br>
+<a href="#R5">R5. Fetchmail dumps core when I use a .netrc file but works otherwise.</a><br>
+<a href="#R6">R6. Mail that was being fetched when I interrupted my fetchmail seems to have been vanished.</a></br>
+
+<h1>Multidrop-mode problems:</h1>
+
+<a href="#M1">M1. I've declared local names, but all my multidrop mail is going to root anyway.</a><br>
+<a href="#M2">M2. I can't seem to get fetchmail to route to a local domain properly.</a><br>
+<a href="#M3">M3. I tried to run a mailing list using multidrop, and I have a mail loop!</a><br>
+<a href="#M4">M4. My multidrop fetchmail seems to be having DNS problems.</a><br>
+<a href="#M5">M5. I'm seeing long DNS delays before each message is processed.</a><br>
+
+<h1>Mangled mail:</h1>
+
+<a href="#X1">X1. Why is fetched mail being logged with my name, not the real From address?</a><br>
+<a href="#X2">X2. Spurious blank lines are appearing in the headers of fetched mail.</a><br>
+<a href="#X3">X3. My mail client can't see a Subject line.</a><br>
+<a href="#X4">X4. Messages containing "From" at start of line are being split.</a><br>
+
+<h1>Answers:</h1>
+<hr>
+<h2><a name="G1">G1. What is fetchmail and why should I bother?</a></h2>
+
+Fetchmail is a one-stop solution to the remote mail retrieval problem
+for Unix machines, quite useful to anyone with an intermittent PPP or
+SLIP connection to a remote mailserver. It can collect mail using any
+variant of POP or IMAP and forwards via port 25 to the local SMTP
+listener, enabling all the normal forwarding/filtering/aliasing
+mechanisms that would apply to local mail or mail arriving via a
+full-time TCP/IP connection.<p>
+
+Fetchmail is not a toy or a coder's learning exercise, but an
+industrial-strength tool capable of transparently handling every
+retrieval demand from those of a simple single-user ISP connection up
+to mail retrieval and rerouting for an entire client domain.
+Fetchmail is easy to configure, unobtrusive in operation, powerful,
+feature-rich, and well documented. Extensive testing by a large,
+multi-platform user community has shown that it is as near bulletproof
+as the underlying protocols permit.<p>
+
+If you found this FAQ in the distribution, see the README for fetchmail's
+full feature list.<p>
+
+<hr>
+<h2><a name="G2">G2. Where do I find the latest FAQ and fetchmail
+sources?</a></h2>
+
+The latest HTML faq is available alongside the latest fetchmail
+sources at Eric S. Raymond's free software page:
+<a href="http://www.ccil.org/~esr/esr-freeware.html">
+http://www.ccil.org/~esr/esr-freeware.html</a>. You can also find
+both in the <a
+href="http://sunsite.unc.edu/pub/Linux/system/mail/pop/!INDEX.html">POP
+mail tools directory on Sunsite</a>.<p>
+
+A text dump of this FAQ is included in the fetchmail
+distribution. Because it freezes at distribution release time, it may
+not be completely current.<p>
+
+<hr>
+<h2><a name="G3">G3. I think I've found a bug. Will you fix it?</a></h2>
+
+Yes I will, provided you include enough diagnostic information for me
+to go on. When reporting bugs, please include the following:
+
+<ol>
+<li>Your operating system and compiler version.
+<li>The release and patch level of the fetchmail you are running. You can see
+ your patchlevel by typing `fetchmail -V'.
+<li>The output of fetchmail -V (this will not reveal your password).
+<li>Any command-line options you used.
+</ol>
+
+It is helpful if you include your .fetchmailrc, but not necessary
+unless your symptom seems to involve an error in configuration parsing.<p>
+
+A transcript of the failed session with -v on is almost always useful.
+If the bug involves a core dump or hang, a gdb stack trace is good to have.
+(Bear in mind that you can attach gdb to a running but hung process by
+giving the process ID as a second argument.)<p>
+
+Best of all is a mail file which, when fetched, will reproduce the bug.<p>
+
+<hr>
+<h2><a name="G4">G4. I have this idea for a neat feature. Will you add it?</a></h2>
+
+Probably not. Most of the feature suggestions I get are for ways to
+set various kinds of administrative policy or add more spam filtering
+(the most common one, which I used to get about four million times a week
+and got <em>really</em> tired of, is for tin-like kill files).<p>
+
+You can do spam filtering better with procmail or mailagent on the
+server side and (if you're the server sysadmin) sendmail.cf domain
+exclusions. You can do other policy things better with the
+<tt>mda</tt> option and script wrappers around fetchmail. If
+it's a prime-time-vs.-non-prime-time issue, ask yourself whether a
+wrapper script called from crontab would do the job.<p>
+
+I'm not going to do these; fetchmail's job is transport, not policy, and I
+refuse to change it from doing one thing well to attempting many things badly.
+One of my objectives is to keep fetchmail simple so it stays reliable.<p>
+
+All that said, if you have a feature idea that really is about a transport
+problem that can't be handled anywhere but fetchmail, lay it on me. I'm
+very accommodating about good ideas.<p>
+
+<hr>
+<h2><a name="B1">B1. My C compiler libraries don't seem to have atexit(3).</a></h2>
+
+Your compiler libraries are deficient (this has been reported from a
+bunch of older Solaris and SCO boxes). The <em>atexit(3)</em>
+function is part of the ANSI C standard and should be there.<p>
+
+You may be able to find a linkable object for <em>atexit(3)</em> in your C++
+library. If not, I recommend installing the GNU C library and/or GCC
+itself. You can find a copy of the GNU C library (which is fully
+ANSI-compliant and supplies ANSI-compliant headers as well) at <a
+href="ftp://prep.ai.mit.edu/pub/gnu/glibc-1.09.1.tar.gz">ftp://prep.ai.mit.edu/pub/gnu/glibc-1.09.1.tar.gz</a><p>
+
+If you are a SunOS user and cannot install glibc, Chris Cheyney &lt;<A
+HREF="mailto:cheyney@netcom.com">cheyney@netcom.com</A>&gt; has
+developed a <A
+HREF="http://www.cjnetworks.com/~cheyney/me/atexit.html"> patch</A>
+that adds <em>atexit</em> to the fetchmail code itself. <p>
+
+<hr>
+<h2><a name="B2">B2. Building fetchmail fails with compiler errors in error.c</a></h2>
+
+We've had reports of this from under SunOS, Solaris 2.5, HP-UX and
+NEXTSTEP 3.3. All but the HP-UX problem seems to have abated after
+3.8. You may have to turn off HAVE_VSYSLOG manually.<p>
+
+<hr>
+<h2><a name="F1">F1. Why does my .fetchmailrc from 2.8 or earlier no longer work?</a></h2>
+
+The `<tt>interface</tt>', `<tt>monitor</tt>' and
+`<tt>batchlimit</tt>' options have changed.<p>
+
+They used to be global options with `set' syntax like the batchlimit
+and logfile options. Now they're per-server options, like `protocol'.<p>
+
+If you had something like<p>
+
+<pre>
+ set interface = "sl0/10.0.2.15"
+</pre>
+
+in your .fetchmailrc file, simply delete that line and insert
+`interface sl0/10.0.2.15' in the server options part of your `defaults'
+declaration.<p>
+
+Do similarly for any `<tt>monitor</tt>' or `<tt>batchlimit</tt>' options.<p>
+
+<hr>
+<h2><a name="F2">F2. The .fetchmailrc parser won't accept my all-numeric user name.</a></h2>
+
+So put string quotes around it. :-)<p>
+
+The configuration file parser treats any all-numeric token as a
+number, which will confuse it when it's expecting a name. String
+quoting forces the token's class.<p>
+
+<hr>
+<h2><a name="F3">F3. What does "Warning: user entry with no `user' keyword" mean?</a></h2>
+
+This warning means that you're using a .fetchmailrc that's
+written in the old popclient syntax without an explicit `username'
+keyword leading the first user entry attached to a server entry.<p>
+
+This can be triggered by having a user option such as `<tt>keep</tt>'
+or `<tt>fetchall</tt>' before the first explicit username. For
+example, if you write<p>
+
+<pre>
+poll openmail protocol pop3
+ keep user "Hal DeVore" there is hdevore here
+</pre>
+
+the `<tt>keep</tt>' option will generate an entire user entry with the default
+username (the name of fetchmail's invoking user).<p>
+
+The popclient compatibility syntax is deprecated and may be removed in
+a future version. (It complicates the configuration file grammar and
+confuses users.)<p>
+
+<hr>
+<h2><a name="F4">F4. I'm migrating from popclient. How do I need to modify my .poprc?</a></h2>
+
+If you have been using popclient (the ancestor of this program)
+at version 3.0b6 or later, start with this<p>
+
+<pre>
+(cd ~; mv ~/.poprc ~/.fetchmailrc)
+</pre>
+
+in order to migrate. Be aware that some of popclient's unnecessary
+options have been removed (see the NOTES file in the distribution for
+explanation). You can't deliver to a local mail file anymore or to
+standard output any more, and using an MDA for delivery is
+discouraged. If you throw those options away, fetchmail will now
+forward your mail into your system's normal Internet-mail delivery
+path.<p>
+
+Actually, using an MDA is now almost always the wrong thing; the MDA
+facility has been retained only for people who can't or won't run a
+sendmail-like SMTP listener on port 25. The default, SMTP forwarding
+to port 25, is better for at least two major reasons. One: it feeds
+retrieved POP and IMAP mail into your system's normal delivery path
+along with local mail and normal Internet mail, so all your normal
+filtering/aliasing/forwarding setup for local mail works. Two:
+because the port 25 listener returns a positive acknowledge, fetchmail
+can be sure you're not going to lose mail to a disk-full or some other
+resource-exhaustion problem.<p>
+
+If you used to use <tt>-mda "procmail -d</tt>
+<em>&lt;you&gt;</em><tt>"</tt> or something similar, forward to port
+25 and do "<tt>| procmail -d</tt> <em>&lt;you&gt;</em><tt>"</tt> in
+your ~/.forward file.<p>
+
+As long as your new .fetchmailrc file does not use the removed
+`localfolder' option or `<tt>limit</tt>' (which now takes a maximum byte size
+rather than a line count), a straight move or copy of your .poprc will
+often work. (The new run control file syntax also has to be a little
+stricter about the order of options than the old, in order to support
+multiple user descriptions per server; thus you may have to rearrange
+things a bit.)<p>
+
+Run control files in the minimal .poprc format (without the `username'
+token) will trigger a warning. To eliminate this warning, add the
+`<tt>username</tt>' keyword before your first user entry per server (it is
+already required before second and subsequent user entries per server.<p>
+
+In some future version the `<tt>username</tt>' keyword will be required.<p>
+
+<hr>
+<h2><a name="C1">C1. Why do I need a .fetchmailrc when running as root on my own machine?</a></h2>
+
+Ian T. Zimmerman &lt;itz@rahul.net&gt; asked:<p>
+
+On the machine where I'm the only real user, I run fetchmail as root
+from a cron job, like this:<p>
+
+<pre>
+ fetchmail -u "itz" -p POP3 -s bolero.rahul.net
+</pre>
+
+This used to work as is (with no .fetchmailrc file in root's home
+directory) with the last version I had (1.7 or 1.8, I don't
+remember). But with 2.0, it RECPs all mail to the local root user,
+unless I create a .fetchmailrc in root's home directory containing:<p>
+
+<pre>
+ skip bolero.rahul.net proto POP3
+ user itz is itz
+</pre>
+
+It won't work if the second line is just "<tt>user itz</tt>". This is silly.<p>
+
+It seems fetchmail decides to RECP the `default local user' (ie. the
+uid running fetchmail) unless there are local aliases, and the
+`default' aliases (itz->itz) don't count. They should.<p>
+
+Answer:<p>
+
+No they shouldn't. I thought about this for a while, and I don't much
+like the conclusion I reached, but it's unavoidable. The problem is
+that fetchmail has no way to know, in general, that a local user `itz'
+actually exists.<p>
+
+"Ah!" you say, "Why doesn't it check the password file to see if the remote
+name matches a local one?" Well, there are two reasons.<p>
+
+One: it's not always possible. Suppose you have an SMTP host declared
+that's not the machine fetchmail is running on? You lose.<p>
+
+Two: How do you know server itz and SMTP-host itz are the same person?
+They might not be, and fetchmail shouldn't assume they are unless
+local-itz can explicitly produce credentials to prove it (that is, the
+server-itz password in local-itz's .fetchmailrc file.).<p>
+
+Once you start running down possible failure modes and thinking about
+ways to tinker with the mapping rules, you'll quickly find that all the
+alternatives to the present default are worse or unacceptably
+more complicated or both.<p>
+
+<hr>
+<h2><a name="C2">C2. How can I arrange for a fetchmail daemon to get killed when I log out?</a></h2>
+
+Fetchmail versions before 2.3 actually used SIGHUP as a wakeup signal.
+Newer versions use SIGUSR1 for wakeup (and SIGHUP only in
+background-daemon mode) in order to avoid any potential confusion
+about logout-time behavior. The right way to dispatch fetchmail on
+logout is to arrange for the command `fetchmail -q' to be called on
+logout.<p>
+
+Under bash, you can arrange this by putting `fetchmail -q' in the file
+`~/.bash_logout'. Most csh variants execute `~/.logout' on logout.
+For other shells, consult your shell manual page.<p>
+
+<hr>
+<h2><a name="C3">C3. How do I know what interface and address to use with --interface?</a></h2>
+
+This depends a lot on your local networking configuration (and right
+now you can't use it at all except under Linux). However, here are
+some important rules of thumb that can help. If they don't work, ask
+your local sysop or your Internet provider.<p>
+
+First, you may not need to use --interface at all. If your machine
+only ever does SLIP or PPP to one provider, it's almost certainly by a
+point to point modem connection to your provider's local subnet that's
+pretty secure against snooping (unless someone can tap your phone or
+the provider's local subnet!). Under these circumstances, specifying
+an interface address is fairly pointless.<p>
+
+What the option is really for is sites that use more than one
+provider. Under these circumstances, typically one of your provider
+IP addresses is your mailserver (reachable fairly securely via the
+modem and provider's subnet) but the others might ship your packets
+(including your password) over unknown portions of the general
+Internet that could be vulnerable to snooping. What you'll use
+--interface for is to make sure your password only goes over the
+one secure link.<p>
+
+To determine the device:<p>
+
+<ol>
+<li> If you're using a SLIP link, the correct device is probably sl0.
+<li> If you're using a PPP link, the correct device is probably ppp0.
+<li> If you're using a direct connection over a local network such as
+ an ethernet, use the command `netstat -r' to look at your routing table.
+ Try to match your mailserver name to a destination entry; if you don't
+ see it in the first column, use the `default' entry. The device name
+ will be in the rightmost column.
+</ol>
+
+To determine the address and netmask:<p>
+
+<ol>
+<li> If you're talking to slirp, the correct address is probably 10.0.2.15,
+ with no netmask specified. (It's possible to configure slirp to present
+ other addresses, but that's the default.)
+
+<li> If you have a static IP address, run `ifconfig <device>', where <device>
+ is whichever one you've determined. Use the IP address given after
+ "inet addr:". That is the IP address for your end of the link, and is
+ what you need. You won't need to specify a netmask.
+
+<li> If you have a dynamic IP address, your connection IP will vary randomly
+ over some given range (that is, some number of the least significant bits
+ change from connection to connection). You need to declare an address
+ with the variable bits zero and a complementary netmask that sets
+ the range.
+</ol>
+
+To illustrate the rule for dynamic IP addresses, let's suppose you're
+hooked up via SLIP and your IP provider tells you that the dynamic
+address pool is 255 addresses ranging from 205.164.136.1 to
+205.164.136.255. Then<p>
+
+<pre>
+ interface "sl0/205.164.136.0/255.255.255.0"
+</pre>
+
+would work. To range over any value of the last two octets
+(65536 addresses) you would use<p>
+
+<pre>
+ interface "sl0/205.164.0.0/255.255.0.0"
+</pre>
+
+<hr>
+<h2><a name="C4">C4. How can I get fetchmail to work with ssh?</a></h2>
+
+This is a lightly edited version of a recipe from Masafumi NAKANE.<p>
+
+1. You must have ssh (the ssh client) on the local host and sshd (ssh
+server) on the remote mail server. And, you have to configure ssh so
+you can login to the sshd server host without a password. (Refer to ssh
+man page for several authentication methods.)<p>
+
+2. Add something like following to your .fetchmailrc file: <p>
+
+<pre>
+poll localhost port 1234 with pop3:
+ preconnect "ssh -f -L 1234:mailhost:110 mailhost sleep 20 </dev/null >/dev/null";
+</pre>
+
+(Note that 1234 can be an arbitrary port number. Privileged ports can
+be specified only by root.) The effect of this ssh command is to
+forward connections made to localhost port 1234 (in above example) to
+mailhost's 110.<p>
+
+This configuration will enable secure mail transfer. All the
+conversation between fetchmail and remote pop server will be
+encrypted.<p>
+
+If sshd is not running on the remote mail server, you can specify
+intermediate host running it. If you do this, however, communication
+between the machine running sshd and the POP server will not be encrypted.
+And the preconnect line would be like this:<p>
+
+<pre>
+preconnect "ssh -f -L 1234:mailhost:110 sshdhost sleep 20 </dev/null >/dev/null"
+</pre>
+
+You can work this trick with IMAP too, but the port number 110 in the
+above would need to become 143.<p>
+
+<hr>
+<h2><a name="C5">C5. How can I set up support for sendmail's anti-spam 571 response?</a></h2>
+
+Rachel Polanskis <r.polanskis@nepean.uws.edu.au> writes:<p>
+
+Basically you need to use the "check_*" rules in sendmail.
+These are rules introduced since version 8.8.2<p>
+
+The idea is to generate a list of domains and addresses that are placed into
+a file - I call mine "sendmail.rej" and you place just one domain
+or email address on each line. During the SMTP transaction, this file
+is checked and if there is a match, the message is refused, with
+a suitable "Service not available" message sent back to the sender.<p>
+
+With the feature enabled in fetchmail, the mail is simply deleted,
+with no further processing.<p>
+
+The only drawback when blocking spam with fetchmail is that you
+do not get the satisfaction of sending an error back to the sender.<p>
+
+To actually use the check_mail rules in sendmail 8.8.2 or better,
+you need to know how to generate a sendmail.cf file from the m4
+config files distributed with sendmail.<p>
+
+The actual rules can be found at the following URLS:<p>
+
+<a href="http://www.informatik.uni-kiel.de/%7Eca/email/check.html">
+http://www.informatik.uni-kiel.de/%7Eca/email/check.html</a><p>
+
+This one is by Claus A&szlig;man, who has documented more of sendmail then
+I can digest!
+
+The actual setup I used though was by David Begley, who has put together
+a WWW page describing how to quickly implement these rules yourself.<p>
+
+<a href="http://www.nepean.uws.edu.au/users/david/pe/blockmail.html">
+http://www.nepean.uws.edu.au/users/david/pe/blockmail.html</a><p>
+
+David's pages could be moving shortly. I will post an update if it happens.<p>
+
+Remember, when copying these rulesets off the web, that there are tabs
+embedded in them, that may not be preserved. You <em>must</em> reintroduce
+these tabs into the rules to make them work properly. <p>
+
+Once you have your ruleset in place, and have generated a nice sendmail.cf
+file, and the list of blocked sites, try telneting to your
+SMTP port to test it, and send a message with a blocked address in it.<p>
+
+You should see a message similar to:<p>
+
+<pre>
+ "571 unsolicited email is refused"
+</pre>
+
+Next, if you have access to a host that you can send mail from, that
+is <em>not</em> your mail host, add that host to your spamlist and
+restart sendmail.<p>
+
+Send a message to your mailing address from that host and then pop off
+the message with fetchmail, using the -v argument. You can monitor
+the SMTP transaction, and when the FROM address is parsed, if sendmail
+sees that it is an address in spamlist, fetchmail will flush and
+delete it.<p>
+
+Under no circumstances put your <strong>mailhost</strong> or <strong>any host
+you accept mail from</strong> using fetchmail into your reject file. You
+<strong>will</strong> lose mail if you do this!!!<p>
+
+The check_ rules work, and they work well. Coupled with fetchmail's
+ability to respond to the appropriate error messages, you can be assured
+of never seeing a spam from any address you put in the reject list.<p>
+
+The only thing that is missing, as mentioned previously, is the ability
+to allow sendmail to process the message further and generate an error
+message to the sender. <p>
+
+<hr>
+<h2><a name="">R1. I think I've set up fetchmail correctly, but I'm not getting any mail.</a></h2>
+
+Maybe you have a .forward or alias set up that you've forgotten about. You
+should probably remove it.<p>
+
+Or maybe you're trying to run fetchmail in multidrop mode as root
+without a .fetchmailrc file. This doesn't do what you think it
+should; see question <a href="#C1">C1</a>.<p>
+
+Or you may not be connecting to the SMTP listener. Run fetchmail -v
+and see the next question.<p>
+
+<hr>
+<h2>R2. Fetchmail isn't working, and -v shows `SMTP connect failed' messages.</a></h2>
+
+Fetchmail is working, but your SMTP port 25 listener is down or inaccessible.
+The first thing to check is if you can telnet to port 25 and get a greeting
+line from the listener. If the listener is down, bring it back up.<p>
+
+If the listener seems to be up when you test with telnet, it could
+have had a momentary problem due to resource exhaustion (process table
+full or some other problem that stopped the listener process from
+forking). If your SMTP host is not `localhost' or something else in
+/etc/hosts, the glitch could also have been caused by transient
+nameserver failure, or the SMTP host's actually being down.<p>
+
+If the listener tests up, you can usually ignore the glitch (except as
+a symptom of other problems) because a future fetchmail run will get
+the mail through. If this is a recurring or constant failure mode,
+OTOH, you may have more serious problems in your network layer which I
+can't diagnose in this FAQ.<p>
+
+One way to work around chronic SMTP connect problems is to use --mda.
+But this only attacks the symptom. You should really try to figure
+out what's going on underneath before it bites you some other way. <p>
+
+We have one report from a Linux user of 2.1 who solved his SMTP
+connection problem by removing the reference to -lresolv from his link
+line and relinking. Apparently in some recent Linux distributions the
+libc bind library version works better.<p>
+
+As of 2.2, the configure script has been hacked so the bind library is
+linked only if it is actually needed. So under Linux it won't be, and
+this particular cause should go away.<p>
+
+<hr>
+<h2><a name="R3">R3. When I try to configure an MDA, fetchmail doesn't work.</a></h2>
+
+(I hear this one from people who have run into the blank-line problem in <a href="#X2">X2</a>.)<p>
+
+Try sending yourself test mail and retrieving it using the
+command-line options `<tt>-k -m cat</tt>'. This will dump exactly what
+fetchmail retrieves to standard output. <p>
+
+If the dump doesn't match what shows up in your mailbox when you
+configure an MDA, your MDA is mangling the message. If it doesn't
+match what you sent, then fetchmail or something on the server is
+broken.<p>
+
+<hr>
+<h2><a name="R4">R4. Fetchmail dumps core in -V mode, but operates normally otherwise.</a></h2>
+
+We've had this reported to us under Linux using libc-5.4.17 and gcc-2.7.2.
+It does not occur with libc-5.3.12 or earlier versions.<p>
+
+Workaround: link with GNU malloc rather than the stock C library malloc.<p>
+
+We're told there is some problem with the malloc() code in that
+version which makes it fragile in the presence of multiple free()
+calls on the same pointer (the malloc arena gets corrupted).
+Unfortunately it appears from doing gdb traces that whatever free()
+calls producing the problem are being made by the C library itself, not the
+fetchmail code (they're all from within fclose, and not an fclose called
+by fetchmail, either).<p>
+
+<hr>
+<h2><a name="R5">R5. Fetchmail dumps core when I use a .netrc file but works otherwise.</a></h2>
+
+We have a report that under Solaris 2.5, if fetchmail is compiled with -O2
+or -O3, it segfaults on startup when reading a .netrc.<p>
+
+You can work around this by dropping back to -O.<p>
+
+There may be an actual bug here that the optimizer exposes; the stack
+trace says the segfault is in free() and has all the earmarks of a heap-
+corruption screw. But the symptom doesn't reproduce under Linux with the
+same .fetchmailrc and .netrc.<p>
+
+<hr>
+<h2><a name="R6">R6. Mail that was being fetched when I interrupted my fetchmail seems to have been vanished.</a></h2>
+
+Fetchmail only sends a delete mail request to the server when either
+(a) it gets a positive delivery acknowledgement from the SMTP
+listener, or (b) it gets an error 571 (the spam-filter error) from the
+listener. No interrupt can cause it to lose mail.<p>
+
+However, POP3 has a design problem in that its servers mark a message
+`seen' as soon as the fetch command to get it is sent down. If for
+some reason the message isn't actually delivered (you take a line hit
+during the download, or your port 25 listener can't find enough free
+disk space, or you interrupt the delivery in mid-message) that `seen'
+message can lurk invisibly in your server mailbox forever.<p>
+
+Workaround: add the `<tt>fetchall</tt>' keyword to your POP3 fetch options.<p>
+
+Solution: switch to an IMAP server.<p>
+
+<hr>
+<h2><a name="M1">M1. I've declared local names, but all my multidrop
+mail is going to root anyway.</a></h2>
+
+Somehow your fetchmail is never matching the hostname part of
+recipient names to the name of the mailserver machine. This probably
+means it is unable to recognize hostname parts as being DNS names of
+the mailserver, and may indicate some kind of DNS configuration
+problem either on the server or your client machine. <p>
+
+The easiest workaround is to write enough aka declarations to cover
+all of your mailserver's aliases, then say `no dns'. This will take
+DNS out of the picture (though it means mail may be uncollected if
+it's sent to an alias of the server that you don't have listed). <p>
+
+<hr>
+<h2><a name="M2">M2. I can't seem to get fetchmail to route to a local domain properly.</a></h2>
+
+A lot of people want to use fetchmail as a poor man's internetwork
+mail gateway, picking up mail accumulated for a whole domain in a single
+server mailbox and then routing based on what's in the To/Cc/Bcc lines.<p>
+
+This is one of the things multidrop mode is for (though you
+<em>are</em> going to get hurt by some mailing list software; see the
+caveats under THE USE AND ABUSE OF MULTIDROP MAILBOXES on the man
+page). If you want to try it, the way to do it is with the
+`<tt>localdomains</tt>' option.<p>
+
+In general, if you use localdomains you need to make sure of two other
+things: <p>
+
+<strong>1. You've actually set up your .fetchmailrc entry to invoke multidrop mode.</strong><p>
+
+Many people set a `<tt>localdomains</tt>' list and then forget that fetchmail
+wants to see more than one name (or the wildcard `*') in a `<tt>here</tt>' list
+before it will do multidrop routing.<p>
+
+<strong>2. You may have to set `no envelope'.</strong><p>
+
+Normally, multidrop mode tries to deduce an envelope address from a message
+before parsing the To/Cc/Bcc lines (this enables it to avoid losing to mailing
+list software that doesn't put a recipient addess in the To lines).<p>
+
+Some ways of accumulating a whole domain's messages in a single server
+mailbox mean it all ends up with a single envelope address that is
+useless for rerouting purposes. You may have to set `<tt>no
+envelope</tt>' to prevent fetchmail from being bamboozled by this.<p>
+
+<hr>
+<h2><a name="M3">M3. I tried to run a mailing list using multidrop, and I have a mail loop!</a></h2>
+
+This isn't fetchmail's fault. Check your mailing list. If the list
+expansion includes yourself or anybody else at your mailserver (that is, not on
+the client side) you've created a mail loop. Just chop the host part off any
+local addresses in the list.<p>
+
+If you use sendmail, you can check the list expansion with
+<tt>sendmail -bv</tt>.<p>
+
+<hr>
+<h2><a name="M4">M4. My multidrop fetchmail seems to be having DNS problems.</a></h2>
+
+We have one report from a Linux user (not the same one as in <a
+href="#R2">R2</a>!) who solved this problem by removing the reference
+to -lresolv from his link line and relinking. Apparently in some
+recent Linux distributions the libc bind library version works
+better.<p>
+
+As of 2.2, the configure script has been hacked so the bind library is linked
+only if it is actually needed. So under Linux it won't be, and this problem
+should go away.<p>
+
+<hr>
+<h2><a name="M5">M5. I'm seeing long DNS delays before each message is processed.</a></h2>
+
+Use the `<tt>aka</tt>' option to pre-declare as many of your
+mailserver's DNS names as you can. When an address's host part
+matches an aka name, no DNS lookup needs to be done to check it.<p>
+
+If you're sure you've pre-declared all of your mailserver's DNS dames,
+you can use the `<tt>no dns</tt>' option to prevent other hostname
+parts from being looked up at all.<p>
+
+Sometimes delays are unavoidable. Some SMTP listeners try to call DNS
+on the From-address hostname as a way of checking that the address is valid.<p>
+
+<hr>
+<h2><a name="X1">X1. Why is fetched mail being logged with my name, not the real From address?</a></h2>
+
+Because logging is done based on the address indicated by the sending
+SMTP's MAIL FROM, and some listeners are picky about that address.<p>
+
+Some SMTP listeners get upset if you try to hand them a MAIL FROM
+address naming a different host than the originating site for your
+connection. This is a feature, not a bug -- it's supposed to help
+prevent people from forging mail with a bogus origin site. (RFC 1123
+says you shouldn't do this exclusion...)<p>
+
+Since the originating site of a fetchmail delivery connection is
+localhost, this effectively means these picky listeners will barf on
+any MAIL FROM address fetchmail hands them with an @ in it!<p>
+
+In versions up to 1.9.9 this led to pesky errors at some sites.
+Because of this, I hacked 2.0 to just use the calling user ID
+as the MAIL FROM address.<p>
+
+Versions 2.1 and up try the header From address first and fall back to
+the calling-user ID. So if your SMTP listener isn't picky, the log
+will look right.<p>
+
+<hr>
+<h2><a name="X2">X2. Spurious blank lines are appearing in the headers of fetched mail.</a></h2>
+
+What's probably happening is that the POP/IMAP daemon on your
+mailserver is inserting a non-RFC822 header (like X-POP3-Rcpt:) and
+something in your delivery path (most likely an old version of the
+<em>deliver</em> program, which sendmail often calls to do local delivery) is
+failing to recognize it as a header.<p>
+
+This is not fetchmail's problem. The first thing to try is installing
+a current version of <em>deliver</em>. If this doesn't work, try to
+figure out which other program in your mail path is inserting the
+blank line and replace that. If you can't do either of these things,
+pick a different MDA (such as procmail) and declare it with the
+`<tt>mda</tt>' option.<p>
+
+<hr>
+<h2><a name="X3">X3. My mail client can't see a Subject line.</a></h2>
+
+First, see <a href="#X2">X2</a>. This is quite probably the same
+problem (X-POP3-Rcpt header or something similar being inserted by
+the server and choked on by an old version of <em>deliver</em>).<p>
+
+The O'Reilly sendmail book does warn that IDA sendmail doesn't process
+X- headers correctly. If this is your problem, all I can suggest is
+replacing IDA sendmail, because it's broken and not RFC822 conformant.<p>
+
+<hr>
+<h2>X4. Messages containing "From" at start of line are being split.</a></h2>
+
+If you know the messages aren't split in your server mailbox, then this
+is a problem with your POP/IMAP server, your client-side SMTP listener or
+your local delivery agent. Fetchmail cannot split messages.<p>
+
+Some POP daemons ignore Content-Length headers and split messages on
+From lines. We have one report that the 2.1 version of the BSD popper
+program (as distributed on Solaris 2.5 and elsewhere) is broken this way.<p>
+
+You can test this. Declare an mda of `cat' and send yourself one
+piece of mail containing "From" at start of a line. If you see a
+split message, your POP/IMAP server is at fault. Upgrade to a more
+recent version.<p>
+
+Sendmail and other SMTP listeners don't split RFC822 messages either.
+What's probably happening is either sendmail's local delivery agent or
+your mail reader are not quite RFC822-conformant and are breaking
+messages on what it thinks are Unix-style From headers. You can
+figure out which by looking at your client-side mailbox with vi or
+more. If the message is already split in your mailbox, your local
+delivery agent is the problem. If it's not, your mailreader is the
+problem.<p>
+
+If you can't replace the offending program, take a look at your
+sendmail.cf file. There will likely be a line something like<p>
+
+<pre>
+Mlocal, P=/usr/bin/procmail, F=lsDFMShP, S=10, R=20/40, A=procmail -Y -d $u
+</pre>
+
+describing your local delivery agent. Try inserting the `E' option in the
+flags part (the F= string). This will make sendmail turn each dangerous
+start-of-line From into a >From, preventing programs further downstream
+from acting up.<p>
+<HR>
+<ADDRESS>Eric S. Raymond <A HREF="mailto:esr@thyrsus.com">&lt;esr@snark.thyrsus.com&gt;</A></ADDRESS>
+</BODY>
+</HTML>