]> Pileus Git - ~andy/fetchmail/blob - fetchmail-FAQ.html
Revise debug options to --nosyslog --nodetach -vvv.
[~andy/fetchmail] / fetchmail-FAQ.html
1 <?xml version="1.0" encoding="ISO-8859-1"?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
3     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4 <!--
5
6 ##########################################################################
7 WARNING!
8
9 Be sure that <h1> tags are in the leftmost column so that the awk
10 postprocessor can skip the Contents section that HTMLDOC will insert
11 in a much better way.
12 ##########################################################################
13
14 -->
15 <html xmlns="http://www.w3.org/1999/xhtml">
16 <head>
17 <title>The Fetchmail FAQ</title>
18 <meta name="description"
19 content="Frequently asked questions about fetchmail."/>
20 <meta name="keywords" content="fetchmail, POP, POP2, POP3, IMAP, remote mail"/>
21 </head>
22 <body>
23 <table width="100%" cellpadding="0" summary="Canned page footer">
24 <tr>
25 <td width="30%">Back to <a href="index.html">Fetchmail Home
26 Page</a></td>
27 <td width="30%" align="right">$Date$</td>
28 </tr>
29 </table>
30
31 <hr/>
32 <h1 id="FAQ">Frequently Asked Questions About Fetchmail</h1>
33
34 <p>Before reporting any bug, please read <a href="#G3">G3</a> for
35 advice on how to include diagnostic information that will get your
36 bug fixed as quickly as possible.</p>
37
38 <p>Note that this FAQ is occasionally updated from the SVN repository
39 and speaks in the past tense ("since") about a fetchmail release that is
40 not yet available. Please try a release candidate for that version in
41 case you need the new option.</p>
42
43 <p>If you have a question or answer you think ought to be added to
44 this FAQ list, file it to one of the trackers at <a
45     href="http://developer.berlios.de/projects/fetchmail/">our BerliOS
46     project site</a> or post to one of the fetchmail mailing lists (see
47 below).</p>
48
49 <h1 id="Contents">Contents</h1>
50
51 <a href="#Contentdetail">Detailed Contents</a><br/>
52 <a href="#C_G">G. General problems</a><br/>
53 <a href="#C_B">B. Build-time problems</a><br/>
54 <a href="#C_F">F. Fetchmail configuration file grammar questions</a><br/>
55 <a href="#C_C">C. Configuration questions</a><br/>
56 <a href="#C_T">T. How to make fetchmail play nice with various MTAs</a><br/>
57 <a href="#C_S">S. How to make fetchmail work with various servers</a><br/>
58 <a href="#C_I">I. How to fetchmail work with specific ISPs</a><br/>
59 <a href="#C_K">K. How to set up well-known security and authentication</a><br/>
60 <a href="#C_R">R. Runtime fatal errors</a><br/>
61 <a href="#C_H">H. Hangs and lockups</a><br/>
62 <a href="#C_D">D. Disappearing mail</a><br/>
63 <a href="#C_M">M. Multidrop-mode problems</a><br/>
64 <a href="#C_X">X. Mangled mail</a><br/>
65 <a href="#C_O">O. Other problems</a><br/>
66
67 <h1 id="Contentdetail">Detailed Contents</h1>
68
69 <h2 id="C_G">General problems</h2>
70
71 <a href="#G1">G1. What is fetchmail and why should I bother?</a><br/>
72 <a href="#G2">G2. Where do I find the latest FAQ and fetchmail sources?</a><br/>
73 <a href="#G3">G3. I think I've found a bug. Will you fix it?</a><br/>
74 <a href="#G4">G4. I have this idea for a neat feature. Will you add it?</a><br/>
75 <a href="#G5">G5. I want to make fetchmail behave like Outlook Express.</a><br/>
76 <a href="#G6">G6. Is there a mailing list for exchanging tips?</a><br/>
77 <a href="#G7">G7. So, what's this I hear about a fetchmail paper?</a><br/>
78 <a href="#G8">G8. What is the best server to use with fetchmail?</a><br/>
79 <a href="#G9">G9. What is the best mail program to use with fetchmail?</a><br/>
80 <a href="#G10">G10. How can I avoid sending my password en clair?</a><br/>
81 <a href="#G11">G11. Is any special configuration needed to use a dynamic IP address?</a><br/>
82 <a href="#G12">G12. Is any special configuration needed to use firewalls?</a><br/>
83 <a href="#G13">G13. Is any special configuration needed to <em>send</em> mail?</a><br/>
84 <a href="#G14">G14. Is fetchmail Y2K-compliant?</a><br/>
85 <a href="#G15">G15. Is there a way in fetchmail to support disconnected IMAP mode?</a><br/>
86 <a href="#G16">G16. How will fetchmail perform under heavy loads?</a><br/>
87
88
89 <h2 id="C_B">Build-time problems</h2>
90
91 <a href="#B1"><strike>B1. Make coughs and dies when building on FreeBSD.</strike></a><br/>
92 <a href="#B2">B2. Lex bombs out while building the fetchmail lexer.</a><br/>
93 <a href="#B3">B3. I get link failures when I try to build fetchmail.</a><br/>
94 <a href="#B4">B4. I get build failures in the intl directory.</a><br/>
95
96 <h2 id="C_F">Fetchmail configuration file grammar questions</h2>
97
98 <a href="#F1">F1. Why does my old .fetchmailrc no longer work?</a><br/>
99 <a href="#F2">F2. The .fetchmailrc parser won't accept my all-numeric user name.</a><br/>
100 <a href="#F3">F3. The .fetchmailrc parser won't accept my host or username beginning with 'no'.</a><br/>
101 <a href="#F4">F4. I'm getting a 'parse error' message I don't understand.</a><br/>
102
103 <h2 id="C_C">Configuration questions</h2>
104
105 <a href="#C1">C1. Why do I need a .fetchmailrc when running as root
106 on my own machine?</a><br/>
107 <a href="#C2">C2. How can I arrange for a fetchmail daemon to get
108 killed when I log out?</a><br/>
109 <a href="#C3">C3. How do I know what interface and address to use
110 with --interface?</a><br/>
111 <a href="#C4">C4. How can I set up support for sendmail's anti-spam
112 features?</a><br/>
113 <a href="#C5">C5. How can I poll some of my mailboxes more/less
114 often than others?</a><br/>
115 <a href="#C6">C6. Fetchmail works OK started up manually, but not
116 from an init script.</a><br/>
117 <a href="#C7">C7. How can I forward mail to another
118 host?.</a><br/>
119
120
121 <h2 id="C_T">How to make fetchmail play nice with various MTAs</h2>
122
123 <a href="#T1">T1. How can I use fetchmail with sendmail?</a><br/>
124 <a href="#T2">T2. How can I use fetchmail with qmail?</a><br/>
125 <a href="#T3">T3. How can I use fetchmail with exim?</a><br/>
126 <a href="#T4">T4. How can I use fetchmail with smail?</a><br/>
127 <a href="#T5">T5. How can I use fetchmail with SCO's MMDF?</a><br/>
128 <a href="#T6">T6. How can I use fetchmail with Lotus Notes?</a><br/>
129 <a href="#T7">T7. How can I use fetchmail with Courier IMAP?</a><br/>
130 <a href="#T8">T8. How can I use fetchmail with vbmailshield?</a><br/>
131
132 <h2 id="C_S">How to make fetchmail work with various servers</h2>
133
134 <a href="#S1">S1. How can I use fetchmail with qpopper?</a><br/>
135 <a href="#S2">S2. How can I use fetchmail with Microsoft Exchange?</a><br/>
136 <a href="#S3">S3. How can I use fetchmail with HP OpenMail?</a><br/>
137 <a href="#S4">S4. How can I use fetchmail with Novell GroupWise?</a><br/>
138 <a href="#S5">S5. How can I use fetchmail with InterChange?</a><br/>
139 <a href="#S6">S6. How can I use fetchmail with MailMax?</a><br/>
140 <a href="#S7">S7. How can I use fetchmail with FTGate?</a><br/>
141
142 <h2 id="C_I">How to fetchmail work with specific ISPs</h2>
143
144 <a href="#I1">I1. How can I use fetchmail with Compuserve RPA?</a><br/>
145 <a href="#I2">I2. How can I use fetchmail with Demon Internet's SDPS?</a><br/>
146 <a href="#I3">I3. How can I use fetchmail with usa.net's servers?</a><br/>
147 <a href="#I4">I4. How can I use fetchmail with geocities POP3 servers?</a><br/>
148 <a href="#I5">I5. How can I use fetchmail with Hotmail or Lycos Webmail?</a><br/>
149 <a href="#I6">I6. How can I use fetchmail with MSN?</a><br/>
150 <a href="#I7">I7. How can I use fetchmail with SpryNet?</a><br/>
151 <a href="#I8">I8. How can I use fetchmail with comcast.net or other
152     Maillennium servers?</a><br/>
153
154 <h2 id="C_K">How to set up well-known security and authentication
155 methods</h2>
156
157 <a href="#K1">K1. How can I use fetchmail with SOCKS?</a><br/>
158 <a href="#K2">K2. How can I use fetchmail with IPv6 and IPsec?</a><br/>
159 <a href="#K3">K3. How can I get fetchmail to work with ssh?</a><br/>
160 <a href="#K4">K4. What do I have to do to use the IMAP-GSS protocol?</a><br/>
161 <a href="#K5">K5. How can I use fetchmail with SSL?</a><br/>
162 <a href="#K6">K6. How can I tell fetchmail not to try TLS if the server
163     advertises it?</a><br/>
164
165 <h2 id="C_R">Runtime fatal errors</h2>
166
167 <a href="#R1">R1. Fetchmail isn't working, and -v shows 'SMTP
168 connect failed' messages.</a><br/>
169 <a href="#R2">R2. When I try to configure an MDA, fetchmail doesn't
170 work.</a><br/>
171 <a href="#R3">R3. Fetchmail dumps core when given an invalid rc
172 file.</a><br/>
173 <a href="#R4">R4. Fetchmail dumps core in -V mode, but operates
174 normally otherwise.</a><br/>
175 <a href="#R5">R5. Running fetchmail in daemon mode doesn't
176 work.</a><br/>
177 <a href="#R6">R6. Fetchmail randomly dies with socket errors.</a><br/>
178 <a href="#R7">R7. Fetchmail running as root stopped working after
179 an OS upgrade</a><br/>
180 <a href="#R8">R8. Fetchmail is timing out after fetching certain
181 messages but before deleting them</a><br/>
182 <a href="#R9">R9. Fetchmail is timing out during message fetches</a><br/>
183 <a href="#R10">R10. Fetchmail is dying with SIGPIPE.</a><br/>
184 <a href="#R11">R11. My server is hanging or emitting errors on CAPA.</a><br/>
185 <a href="#R12">R12. Fetchmail isn't working and reports getaddrinfo
186     errors.</a>
187
188 <h2 id="C_H">Hangs and lockups</h2>
189
190 <a href="#H1">H1. Fetchmail hangs when used with pppd.</a><br/>
191 <a href="#H2">H2. Fetchmail hangs during the MAIL FROM
192 exchange.</a><br/>
193 <a href="#H3">H3. Fetchmail hangs while fetching mail.</a><br/>
194
195
196 <h2 id="C_D">Disappearing mail</h2>
197
198 <a href="#D1">D1. I think I've set up fetchmail correctly, but I'm
199 not getting any mail.</a><br/>
200 <a href="#D2">D2. All my mail seems to disappear after a dropped
201 connection.</a><br/>
202 <a href="#D3">D3. Mail that was being fetched when I interrupted my
203 fetchmail seems to have been vanished.</a><br/>
204
205
206 <h2 id="C_M">Multidrop-mode problems</h2>
207
208 <a href="#M1">M1. I've declared local names, but all my multidrop
209 mail is going to root anyway.</a><br/>
210 <a href="#M2">M2. I can't seem to get fetchmail to route to a local
211 domain properly.</a><br/>
212 <a href="#M3">M3. I tried to run a mailing list using multidrop,
213 and I have a mail loop!</a><br/>
214 <a href="#M4">M4. My multidrop fetchmail seems to be having DNS
215 problems.</a><br/>
216 <a href="#M5">M5. I'm seeing long DNS delays before each message is
217 processed.</a><br/>
218 <a href="#M6">M6. How do I get multidrop mode to work with
219 majordomo?</a><br/>
220 <a href="#M7">M7. Multidrop mode isn't parsing envelope addresses
221 from my Received headers as it should.</a><br/>
222 <a href="#M8">M8. Users are getting multiple copies of
223 messages.</a><br/>
224
225
226 <h2 id="C_X">Mangled mail</h2>
227
228 <a href="#X1">X1. Spurious blank lines are appearing in the headers
229 of fetched mail.</a><br/>
230 <a href="#X2">X2. My mail client can't see a Subject
231 line.</a><br/>
232 <a href="#X3">X3. Messages containing "From" at start of line are
233 being split.</a><br/>
234 <a href="#X4">X4. My mail is being mangled in a new and different
235 way.</a><br/>
236 <a href="#X5">X5. Using POP3, retrievals seems to be fetching too
237 much!</a><br/>
238 <a href="#X6">X6. My mail attachments are being dropped or
239 mangled.</a><br/>
240 <a href="#X7">X7. Some mail attachments are hanging
241 fetchmail.</a><br/>
242 <a href="#X8">X8. A spurious ) is being appended to my
243 messages.</a><br/>
244 <a href="#X9">X9. Missing "Content-Transfer-Encoding" header
245 with Domino IMAP</a><br/>
246 <h2 id="C_O">Other problems</h2>
247
248 <a href="#O1">O1. The --logfile option doesn't work if the logfile
249 doesn't exist.</a><br/>
250 <a href="#O2">O2. Every time I get a POP or IMAP message the header
251 is dumped to all my terminal sessions.</a><br/>
252 <a href="#O3">O3. Does fetchmail reread its rc file every poll
253 cycle?</a><br/>
254 <a href="#O4">O4. Why do deleted messages show up again when I take
255 a line hit while downloading?</a><br/>
256 <a href="#O5">O5. Why is fetched mail being logged with my name,
257 not the real From address?</a><br/>
258 <a href="#O6">O6. I'm seeing long sendmail delays or hangs near the
259 start of each poll cycle.</a><br/>
260 <a href="#O7">O7. Why doesn't fetchmail deliver mail in date-sorted
261 order?</a><br/>
262 <a href="#O8">O8. I'm using pppd. Why isn't my monitor option
263 working?</a><br/>
264 <a href="#O9">O9. Why does fetchmail keep retrieving the same
265 messages over and over?</a><br/>
266 <a href="#O10">O10. Why is the received date on all my messages the
267 same?</a><br/>
268 <a href="#O11">O11. I keep getting messages that say "Repoll
269 immediately" in my logs.</a><br/>
270 <a href="#O12">O12. Fetchmail no longer expunges mail on a 451 SMTP response.</a><br/>
271 <a href="#O13">O13. I want timestamp information in my fetchmail logs.</a><br/>
272 <a href="#O14">O14. Fetchmail no longer deletes oversized mails with
273     --flush.</a><br/>
274 <a href="#O15">O15. Fetchmail always retains the first message in the
275     mailbox.</a><br/>
276 <a href="#O16">O16. Why is the Fetchmail FAQ only available in
277         ISO-216 A4 format? How do I get the FAQ in Letter
278         format?</a><br/>
279
280 <hr/>
281 <h1 id="G">General problems</h1>
282 <h2><a id="G1" name="G1">G1. What is fetchmail and why should I
283 bother?</a></h2>
284
285 <p>Fetchmail is a one-stop solution to the remote mail retrieval
286 problem for Unix machines, quite useful to anyone with an
287 intermittent PPP or SLIP connection to a remote mailserver. It can
288 collect mail using any variant of POP or IMAP and forwards via port
289 25 to the local SMTP listener, enabling all the normal
290 forwarding/filtering/aliasing mechanisms that would apply to local
291 mail or mail arriving via a full-time TCP/IP connection.</p>
292
293 <p>Fetchmail is not a toy or a coder's learning exercise, but an
294 industrial-strength tool capable of transparently handling every
295 retrieval demand from those of a simple single-user ISP connection
296 up to mail retrieval and rerouting for an entire client domain.
297 Fetchmail is easy to configure, unobtrusive in operation, powerful,
298 feature-rich, and well documented.</p>
299
300 <p>Fetchmail is <a href="http://www.opensource.org">open-source</a>
301 software. The openness of the sources is the strongest assurance of
302 quality you can have. Extensive peer review by a large,
303 multi-platform user community has shown that fetchmail is as near
304 bulletproof as the underlying protocols permit.</p>
305
306 <p>Fetchmail is licensed under the <a
307 href="http://www.gnu.org/copyleft/gpl.html">GNU General Public
308 License</a>.</p>
309
310 <p>If you found this FAQ in the distribution, see the README for
311 fetchmail's full feature list.</p>
312
313 <h2><a id="G2" name="G2">G2. Where do I find the latest FAQ and
314 fetchmail sources?</a></h2>
315
316 <p>The latest HTML FAQ is available alongside the latest fetchmail
317 sources at the fetchmail home page: <a
318 href="http://fetchmail.berlios.de/">http://fetchmail.berlios.de/</a>.
319 You can also usually find both in the <a
320 href="http://www.ibiblio.org/pub/Linux/system/mail/pop/!INDEX.short.html">
321 POP mail tools directory on iBiblio</a>.</p>
322
323 <p>A text dump of this FAQ is included in the fetchmail
324 distribution. Because it freezes at distribution release time, it
325 may not be completely current.</p>
326
327 <h2><a id="G3" name="G3">G3. I think I've found a bug. Will you fix
328 it?</a></h2>
329
330 <p>The first thing you should to is to upgrade to the newest version of
331 fetchmail, and then see if the problem reproduces. So you'll probably
332 save us both time if you upgrade and test with <a href="#G2">the latest
333     version</a> <em>before</em> sending in a bug report.</p>
334
335 <p>I will fix bugs, provided you include enough diagnostic information
336 for me to go on. Send bugs to <a
337 href="mailto:fetchmail-users@lists.berlios.de">fetchmail-users</a>.
338 When reporting bugs, please include the following:</p>
339
340 <ol>
341 <li>Your operating system.</li>
342
343 <li>Your compiler version, if you built from source; otherwise, the
344 name and origin of the RPM or other binary package you
345 installed.</li>
346
347 <li>A copy of your POP or IMAP server's greeting line.</li>
348
349 <li>The name and version of the SMTP listener or MDA you are
350 forwarding to.</li>
351
352 <li>Any command-line options you used.</li>
353
354 <li>The output of fetchmail -V called with whatever other
355 command-line options you used.</li>
356 </ol>
357
358 <p>If you have FTP access to your remote mail account, and you have
359 any suspicion that the bug was triggered by a particular message,
360 please include a copy of the message that triggered the bug.</p>
361
362 <p>If your bug is something that used to work but stopped working
363 when you upgraded, then you can help pin the bug down by trying <a
364 href="http://download.berlios.de/fetchmail/">intermediate versions
365 of fetchmail</a> until you identify the revision that broke your
366 feature. The smart way to do this is by binary search on the
367 version sequence. First, try the version halfway between your last
368 good one and the current one. If it works, the failure was
369 introduced in the upper half of the sequence; if it doesn't, the
370 failure was introduced in the lower half. Now bisect that half in
371 the same way. In a very few tries, you should be able to identify
372 the exact adjacent pair of versions between which your bug was
373 introduced -- and with information like that, I can usually come up
374 with a fix very quickly.</p>
375
376 <p>Another useful thing you can do, if you're using POP3, is to
377 test for IMAP4 support on your mailserver using the autoprobe
378 function of fetchmailconf. If you have IMAP4, and fetchmailconf
379 doesn't tell you it's broken, switch immediately. POP3 is a weak,
380 poorly-designed protocol with chronic problems, and the later
381 versions after RFC1725 actually get worse rather than better.
382 Changing over to IMAP4 may well make your problem go away -- and if
383 your ISP doesn't have IMAP4 support, bug them to supply it.</p>
384
385 <p>It is helpful if you include your .fetchmailrc file, but not
386 necessary unless your symptom seems to involve an error in
387 configuration parsing. If you do send in your .fetchmailrc, mask
388 the passwords first!</p>
389
390 <p>If fetchmail seems to run and fetch mail, but the headers look
391 mangled (that is, headers are missing or blank lines are inserted
392 in the headers) then read the FAQ items in section <a
393 href="#X1">X</a> before submitting a bug report. Pay special
394 attention to the item on <a href="#generic_mangling">diagnosing
395 mail mangling</a>. There are lots of ways for other programs in the
396 mail chain to screw up that look like fetchmail's fault, but you
397 may be able to fix these by tweaking your configuration.</p>
398
399 <p>A transcript of the failed session with "--nosyslog --nodetach -vvv"
400 (yes, that's <em>three</em> -v options, enabling debug mode) will almost
401 always be useful. It is very important that the transcript include your
402 POP/IMAP server's greeting line, so I can identify it in case of server
403 problems. This transcript will not reveal your passwords, which are
404 specially masked out precisely so transcripts can be passed around.</p>
405
406 <p>If you upgraded your fetchmail and something broke, you should
407 include session transcripts with "--nosyslog --nodetach -vvv" of both
408 the working and failing versions. Very often, the source of the problem
409 can instantly identified by looking at the differences in protocol
410 transactions.</p>
411
412 <p>If the bug involves a core dump or hang, a gdb stack trace is
413 good to have. (Bear in mind that you can attach gdb to a running
414 but hung process by giving the process ID as a second argument.)
415 You will need to reconfigure with:</p>
416
417 <pre>
418 CFLAGS=-g LDFLAGS=" " ./configure
419 </pre>
420
421 <p>Then rebuild in order to generate a version that can be
422 gdb-traced.</p>
423
424 <p>Best of all is a mail file which, when fetched, will reproduce
425 the bug under the latest (current) version.</p>
426
427 <p>Any bug I can reproduce will usually get fixed very quickly,
428 often within 48 hours. Bugs I can't reproduce are a crapshoot. If
429 the solution isn't obvious when I first look, it may evade me for a
430 long time (or to put it another way, fetchmail is well enough
431 tested that the easy bugs have long since been found). So if you
432 want your bug fixed rapidly, it is not just sufficient but nearly
433 <em>necessary</em> that you give me a way to reproduce it.</p>
434
435 <h2><a id="G4" name="G4">G4. I have this idea for a neat feature.
436 Will you add it?</a></h2>
437
438 <p>If it's reasonable for fetchmail and cannot be solved with reasonable
439 effort outside of fetchmail, perhaps.</p>
440
441 <p>You can do spam filtering better with procmail or maildrop on
442 the server side and (if you're the server sysadmin) sendmail.cf
443 domain exclusions. If you really want fetchmail to do it from the
444 client side, use a <code>preconnect</code> command to call
445 <a href='http://mailfilter.sourceforge.net/'>mailfilter</a>.</p>
446
447 <p>You can do other policy things better with the
448 <code>mda</code> option and script wrappers around fetchmail. If
449 it's a prime-time-vs.-non-prime-time issue, ask yourself whether a
450 wrapper script called from crontab would do the job.</p>
451
452 <p>fetchmail's first job is transport though, and it should do this
453 well. If a feature would cause fetchmail to deteriorate in other
454 respects, the feature will probably not be added.</p>
455
456 <p>For reasons fetchmail doesn't have other commonly-requested
457 features (such as password encryption, or multiple concurrent polls
458 from the same instance of fetchmail) see <a
459 href="esrs-design-notes.html">ESR's design
460 notes</a>. Note that this document is partially obsoleted by the
461 <a href="design-notes.html">updated design notes.</a></p>
462
463 <h2><a id="G5" name="G5">G5. I want to make fetchmail behave like
464 Outlook Express.</a></h2>
465
466 <p>The second-most-requested feature for fetchmail, after
467 content-based filtering, is the ability to have it remove messages
468 from a maildrop after N days, typically to be used with the
469 <code>keep</code> option as a sort of poor man's newsgroup
470 facility. Microsoft's Outlook Express supports this.</p>
471
472 <p>This feature is not yet implemented. It may be at a future date,
473 spare time of developers permitting.</p>
474
475 <h2><a id="G6" name="G6">G6. Is there a mailing list for exchanging
476 tips?</a></h2>
477
478 <p>There is a fetchmail-users list (fetchmail-users@lists.berlios.de)
479 for bug reports and people who want to discuss configuration issues of
480 fetchmail. It's a Mailman list, see <a
481     href="http://lists.berlios.de/mailman/listinfo/fetchmail-users">http://lists.berlios.de/mailman/listinfo/fetchmail-users</a>.</p>
482 <p>There is a fetchmail-devel list
483 (fetchmail-devel@lists.berlios.de) for people who want to discuss
484 fixes and improvements in fetchmail and help co-develop it. It's a
485 Mailman list, which you can sign up for at <a
486 href="http://lists.berlios.de/mailman/listinfo/fetchmail-devel">http://lists.berlios.de/mailman/listinfo/fetchmail-devel</a>.
487 There is also an announcements-only list,
488 fetchmail-announce@lists.berlios.de, which you can sign up for at <a
489 href="http://lists.berlios.de/mailman/listinfo/fetchmail-announce">http://lists.berlios.de/mailman/listinfo/fetchmail-announce</a>.</p>
490
491 <h2><a id="G7" name="G7">G7. So, what's this I hear about a
492 fetchmail paper?</a></h2>
493
494 <p>The fetchmail development was also a sociological experiment, an
495 extended test to see if my theory about the critical features of
496 the Linux development model is correct.</p>
497
498 <p>The experiment was a success. I wrote a paper about it titled <a
499 href="http://www.catb.org/~esr/writings/cathedral.html">The
500 Cathedral and the Bazaar</a> which was first presented at Linux
501 Kongress '97 in Bavaria and very well received there. It was also
502 given at Atlanta Linux Expo, Linux Pro '97 in Warsaw, and the first
503 Perl Conference, at UniForum '98, and was the basis of an invited
504 presentation at Usenix '98. The folks at Netscape tell me it helped
505 them decide to <a
506 href="http://wp.netscape.com/newsref/pr/newsrelease558.html">give
507 away the source for Netscape Communicator</a>.</p>
508
509 <p>If you're reading a non-HTML dump of this FAQ, you can find the
510 paper on the Web with a search for that title.</p>
511
512 <h2><a id="G8" name="G8">G8. What is the best server to use with
513 fetchmail?</a></h2>
514
515 <p>Fetchmail will work with any POP, IMAP, ETRN, or ODMR server
516 that conforms to the relevant RFCs (and even some outright broken
517 ones like <a href="#S2">Microsoft Exchange</a> and <a
518 href="#S6">Novell GroupWise</a>). This doesn't mean it works
519 equally well with all, however. POP2 servers, and POP3 servers
520 without UIDL, limit fetchmail's capabilities in various ways
521 described on the manual page.</p>
522
523 <p>Most modern Unixes (and effectively all Linux/*BSD systems) come
524 with POP3 support preconfigured (but beware of the horribly broken
525 POP3 server mentioned in <a href="#D2">D2</a>). An increasing
526 minority also feature IMAP (you can detect IMAP support by running
527 fetchmail in AUTO mode, or by using the 'Probe for supported
528 protocols' function in the fetchmailconf utility).</p>
529
530 <p>If you have the option, we recommend using or installing an
531 IMAP4rev1 server; it has the best facilities for tracking message
532 'seen' states. It also recovers from interrupted connections more
533 gracefully than POP3, and enables some significant performance
534 optimizations.</p>
535
536 <p>Don't be fooled by NT/Exchange propaganda. M$ Exchange is just
537 plain broken (see item <a href="#S2">S2</a>) and NT cannot handle
538 the sustained load of a high-volume remote mail server. Even
539 Microsoft itself knows better than to try this; their own Hotmail
540 service runs over Solaris! For extended discussion, see John
541 Kirch's excellent <a href="http://unix-vs-nt.org/kirch/">white
542 paper</a> on Unix vs. NT performance.</p>
543
544 <p>A decent POP3/IMAP server that has recently become popular is <a
545     href="http://dovecot.org/">Dovecot</a>.</p>
546
547 <p>Avoid <a href="http://home.pages.de/~mandree/qmail-bugs.html">qmail,
548     it's broken.</a></p>
549
550 <h2><a id="G9" name="G9">G9. What is the best mail program to use
551 with fetchmail?</a></h2>
552
553 <p>Fetchmail will work with all popular <a href="#T1">mail
554 transport programs</a>. It also doesn't care which user agent you
555 use, and user agents are as a rule almost equally indifferent to
556 how mail is delivered into your system mailbox. So any of the
557 popular Unix mail agents -- <a
558 href="http://www.instinct.org/elm/">elm</a>, <a
559 href="http://www.washington.edu/pine/">pine</a>, <a
560 href="http://www.cs.indiana.edu/docproject/mail/mh.html">mh</a>, or
561 <a href="http://www.mutt.org">mutt</a> -- will work fine with
562 fetchmail.</p>
563
564 <p>All this having been said, I can't resist putting in a discreet
565 plug for <a href="http://www.mutt.org">mutt</a>.  Mutt's interface
566 is only a little different from that of its now-moribund ancestor
567 elm, but its flexibility and excellent handling of MIME and PGP put it
568 in a class by itself. You won't need its built-in POP3 support, though;
569 most of the mutt developers will cheerfully admit that fetchmail's is
570 better :-).</p>
571
572 <h2><a id="G10" name="G10">G10. How can I avoid sending my password
573 en clair?</a></h2>
574
575 <p>Depending on what your mail server you are talking to, this
576 ranges from trivial to impossible. It may even be next to
577 useless.</p>
578
579 <p>Most people use fetchmail over phone wires (whether plain old
580 copper or DSL), which are hard to tap. Anybody with the skill and
581 resources to do this could get into your server mailbox with much less
582 effort by subverting the server host. So if your provider setup is
583 phone-company wire going straight into a service box, you probably
584 don't need to worry.</p>
585
586 <p>In general there is little point in trying to secure your fetchmail
587 transaction unless you trust the security of the server host you are
588 retrieving mail from. Your vulnerability is more likely to be an
589 insecure local network on the server end (e.g. to somebody with a
590 TCP/IP packet sniffer intercepting Ethernet traffic between the modem
591 concentrator or DSL POP you dial in to and the mailserver host).</p>
592
593 <p>Having realized this, you need to ask whether password
594 encryption alone will really address your security exposure. If you
595 think you might be snooped between server and client, it's better
596 to use end-to-end encryption on your whole mail stream so none of
597 it can be read. One of the advantages of fetchmail over
598 conventional SMTP-push delivery is that you may be able to arrange
599 this by using ssh(1); see <a href="#K3">K3</a>.</p>
600
601 <p>Note that ssh is not a complete privacy solution either, as your
602 mail could have been snooped in transit to your POP server from
603 wherever it originated. For best security, agree with your
604 correspondents to use a tool such as <a
605 href="http://www.gnupg.org/">GPG</a> (Gnu Privacy Guard) or PGP
606 (Pretty Good Privacy).</p>
607
608 <p>If ssh/sshd isn't available, or you find it too complicated for
609 you to set up, password encryption will at least keep a malicious
610 cracker from deleting your mail, and require him to either tap your
611 connection continuously or crack root on the server in order to
612 read it.</p>
613
614 <p>You can deduce what encryptions your mail server has available
615 by looking at the server greeting line (and, for IMAP, the response
616 to a CAPABILITY query). Do a <code>fetchmail -v</code> to see
617 these, or telnet direct to the server port (110 for POP3, 143 for
618 IMAP).</p>
619
620 <p>If your mailserver is using IMAP 2000, you'll have CRAM-MD5
621 support built in. Fetchmail autodetects this; you can skip the rest
622 of this section.</p>
623
624 <p>The POP3 facility you are most likely to have available is APOP.
625 This is a POP3 feature supported by many servers (fetchmailconf's
626 autoprobe facility will detect it and tell you if you have it). If
627 you see something in the greeting line that looks like an
628 angle-bracket-enclosed Internet address with a numeric left-hand
629 part, that's an APOP challenge (it will vary each time you log in).
630 You can register a secret on the host (using
631 <code>popauth(8)</code> or some program like it). Specify the
632 secret as your password in your .fetchmailrc; it will be used to
633 encrypt the current challenge, and the encrypted form will be sent
634 back the the server for verification.</p>
635
636 <p>Alternatively, you may have Kerberos available. This may require
637 you to set up some magic files in your home directory on your
638 client machine, but means you can omit specifying any password at
639 all.</p>
640
641 <p>Fetchmail supports two different Kerberos schemes. One is a POP3
642 variant called KPOP; consult the documentation of your mail server
643 to see if you have it (one clue is the string "krb-IV" in the
644 greeting line on port 110). The other is an IMAP and POP3 facility
645 described by RFC1731 and RFC1734. You can tell if this one is
646 present by looking for AUTH=KERBEROS_V4 in the CAPABILITY
647 response.</p>
648
649 <p>If you are fetching mail from a CompuServe POP3 account, you can
650 use their RPA authentication (which works much like APOP). See <a
651 href="#I1">I1</a> for details. If you are fetching mail from
652 Microsoft Exchange using IMAP, you will be able to use NTLM.</p>
653
654 <p>Your POP3 server may have the RFC1938 OTP capability to use
655 one-time passwords (if it doesn't, you can get OTP patches for the
656 2.2 version of the Qualcomm popper from <a href="#cmetz">Craig
657 Metz</a>). To check this, look for the string "otp-" in the
658 greeting line. If you see it, and your fetchmail was built with
659 OPIE support compiled in (see the distribution INSTALL file),
660 fetchmail will detect it also. When using OTP, you will specify a
661 password but it will not be sent en clair.</p>
662
663 <p>You can get both POP3 and IMAP OTP patches from <a id="cmetz"
664 name="cmetz">Craig Metz</a> at <a
665 href="http://www.inner.net/opie">http://www.inner.net/opie</a>.</p>
666
667 <p>These patches use a SASL authentication method named "X-OTP"
668 because there is not currently a standard way to do this; fetchmail
669 also uses this method, so the two will interoperate happily. They
670 better, because this is how Craig gets his mail ;-)</p>
671
672 <p>Finally, you can use <a href="#K5">SSL</a> for complete
673 end-to-end encryption if you have an SSL-enabled mailserver.</p>
674
675 <h2><a id="G11" name="G11">G11. Is any special configuration needed
676 to use a dynamic IP address?</a></h2>
677
678 <p>Yes. In order to avoid giving indigestion to certain picky MTAs
679 (notably <a href="#T3">exim</a>), fetchmail always makes the RCPT
680 TO address it feeds the MTA a fully qualified one with a hostname
681 part. Normally it does this by appending @ and "localhost", but
682 when you are using Kerberos or ETRN mode it will append @ and your
683 machine's fully-qualified domain name (FQDN).</p>
684
685 <p>Appending the FQDN can create problems when fetchmail is running
686 in daemon mode and outlasts the dynamic IP address assignment your
687 client machine had when it started up.</p>
688
689 <p>Since the new IP address (looked up at RCPT TO interpretation
690 time) doesn't match the original, the most benign possible result
691 is that your MTA thinks it's seeing a relaying attempt and refuses.
692 More frequently, fetchmail will try to connect to a nonexistent
693 host address and time out. Worst case, you could up forwarding your
694 mail to the wrong machine!</p>
695
696 <p>Use the <code>smtpaddress</code> option to force the appended
697 hostname to one with a (fixed) IP address of 127.0.0.1 in your
698 <code>/etc/hosts</code>. (The name 'localhost' will usually work;
699 or you can use the IP address itself).</p>
700
701 <p>Only one fetchmail option interacts directly with your IP
702 address, '<code>interface</code>'. This option can be used to set
703 the gateway device and restrict the IP address range fetchmail will
704 use. Such a restriction is sometimes useful for security reasons,
705 especially on multihomed sites. See <a href="#C3">C3</a>.</p>
706
707 <p>I recommend against trying to set up the <code>interface</code>
708 option when initially developing your poll configuration -- it's
709 never necessary to do this just to get a link working. Get the link
710 working first, observe the actual address range you see on
711 connections, and add an <code>interface</code> option (if you need
712 one) later.</p>
713
714 <p>You can't use ETRN if you have a dynamic IP address (your ISP
715 changes your IP address occasionally, possibly with every connect).
716 You need to have your own registered domain and a definite IP
717 address registered for that domain. The server needs to be
718 configured to accept mail for your domain but then queue it to
719 forward to your machine. ETRN just tells to server to flush its
720 queue for your domain. Fetchmail doesn't actually get the mail in
721 that case.</p>
722
723 <p>You can use On-Demand Mail Relay (ODMR) with a dynamic IP
724 address; that's what it was designed for, and it provides
725 capabilities very similar to ETRN. Unfortunately ODMR servers are
726 not yet widely deployed, as of early 2001.</p>
727
728 <p>If you're using a dynamic-IP configuration, one other
729 (non-fetchmail) problem you may run into with outgoing mail is that
730 some sites will bounce your email because the hostname your giving
731 them isn't real (and doesn't match what they get doing a reverse
732 DNS on your dynamically-assigned IP address). If this happens, you
733 need to hack your sendmail so it masquerades as your host.
734 Setting</p>
735
736 <pre>
737 DMsmarthost.here
738 </pre>
739
740 <p>in your <code>sendmail.cf</code> will work, or you can set</p>
741
742 <pre>
743 MASQUERADE_AS(smarthost.here)
744 </pre>
745
746 <p>in the m4 configuration and do a reconfigure. (In both cases,
747 replace <code>smarthost.here</code> with the actual name of your
748 mailhost.) See the <a
749 href="http://www.lege.com/sendmail-FAQ.txt">sendmail FAQ</a> for
750 more details.</p>
751
752 <h2><a id="G12" name="G12">G12. Is any special configuration needed
753 to use firewalls?</a></h2>
754
755 <p>No. You can use fetchmail with SOCKS, the standard tool for
756 indirecting TCP/IP through a firewall. You can find out about
757 SOCKS, and download the SOCKS software including server and client
758 code, at the <a href="http://www.socks.nec.com/">SOCKS distribution
759 site</a>.</p>
760
761 <p>The specific recipe for using fetchmail with a firewall is at <a
762 href="#K1">K1</a></p>
763
764 <h2><a id="G13" name="G13">G13. Is any special configuration needed
765 to <em>send</em> mail?</a></h2>
766
767 <p>A user asks: but how do we send mail out to the POP3 server? Do
768 I need to implement another tool or will fetchmail do this too?</p>
769
770 <p>Fetchmail only handles the receiving side. The sendmail or other
771 preinstalled MTA on your client machine will handle sending mail
772 automatically; it will ship mail that is submitted while the
773 connection is active, and put mail that is submitted while the
774 connection is inactive into the outgoing queue.</p>
775
776 <p>Normally, sendmail is also run periodically (every 15 minutes on
777 most Linux systems) in a mode that tries to ship all the mail in
778 the outgoing queue. If you have set up something like pppd to
779 automatically dial out when your kernel is called to open a TCP/IP
780 connection, this will ensure that the mail gets out.</p>
781
782 <h2><a id="G14" name="G14">G14. Is fetchmail
783 Y2K-compliant?</a></h2>
784
785 <p>Fetchmail is fully Y2K-compliant.</p>
786
787 <p>Fetchmail could theoretically have problems when the 32-bit
788 time_t counters roll over in 2038, but I doubt it. Timestamps
789 aren't used for anything but log entry generation. Anyway, if you
790 aren't running on a 64-bit machine by then, you'll deserve to
791 lose.</p>
792
793 <h2><a id="G15" name="G15">G15. Is there a way in fetchmail to
794 support disconnected IMAP mode?</a></h2>
795
796 <p>No. Fetchmail is a mail transport agent, best understood as a
797 protocol gateway between POP3/IMAP servers and SMTP. Disconnected
798 operation requires an elaborate interactive client. It's a very
799 different problem.</p>
800
801 <h2><a id="G16" name="G16">G16. How will fetchmail perform under
802 heavy loads?</a></h2>
803
804 <p>Fetchmail streams message bodies line-by-line; the most core it
805 ever requires per message is enough memory to hold the RFC822
806 header, and that storage is freed when body processing begins. It
807 is, accordingly, quite economical in its use of memory.</p>
808
809 <p>After startup time, a fetchmail running in daemon mode stats its
810 configuration file once per poll cycle to see whether it has
811 changed and should be rescanned. Other than that, a fetchmail in
812 normal operation doesn't touch the disk at all; that job is left up
813 to the MTA or MDA the fetchmail talks to.</p>
814
815 <p>Fetchmail's performance is usually bottlenecked by latency on
816 the POP server or (less often) on the TCP/IP link to the server.
817 This is not a problem readily solved by tuning fetchmail, or even
818 by buying more TCP/IP capacity (which tends to improve bandwidth
819 but not necessarily latency).</p>
820
821 <hr/>
822 <h1>Build-time problems</h1>
823 <h2><a id="B1" name="B1"><strike>B1. Make coughs and dies when building on
824 FreeBSD.</strike></a></h2>
825
826 <p style="font-style:italic;">As of release 6.3.0, fetchmail's
827 Makefile[.in] should work flawlessly with BSD's portable make used on
828 FreeBSD. With older releases, use GNU make (usually installed as
829 <code>gmake</code>).</p>
830
831 <h2><a id="B2" name="B2">B2. Lex bombs out while building the
832 fetchmail lexer.</a></h2>
833
834 <p>fetchmail 6.3.0 and newer ship with the lexer and parser in .c
835 formats, so you do not need to use lex unless you hacked the .l or .y
836 files.</p>
837
838 <p>fetchmail's lexer has been developed with GNU flex, and the lex tools
839 shipped by some UNIX vendors (HP, SGI, Sun) are known to be incapable of
840 compiling fetchmail's lexer.</p>
841
842 <h2><a id="B3" name="B3">B3. I get link failures when I try to
843 build fetchmail.</a></h2>
844
845 <p>If you get errors resembling these:</p>
846
847 <pre>
848 mxget.o(.text+0x35): undefined referenceto '__res_search'
849 mxget.o(.text+0x99): undefined reference to '__dn_skipname'
850 mxget.o(.text+0x11c): undefined reference to '__dn_expand'
851 mxget.o(.text+0x187): undefined reference to '__dn_expand'
852 make: *** [fetchmail] Error 1
853 </pre>
854
855 <p>then you must add "-lresolv" to the LOADLIBS line in your
856 Makefile once you have installed the 'bind' package.</p>
857
858 <p>If you get link errors involving <tt>dcgettext</tt>, like
859 these:</p>
860
861 <pre>
862 rcfile_y.o: In function 'yyparse':
863 rcfile_y.o(.text+0x3aa): undefined reference to 'dcgettext__'
864 rcfile_y.o(.text+0x4f2): undefined reference to 'dcgettext__'
865 rcfile_y.o(.text+0x5ee): undefined reference to 'dcgettext__'
866 rcfile_y.o: In function 'yyerror':
867 rcfile_y.o(.text+0xc7c): undefined reference to 'dcgettext__'
868 rcfile_y.o(.text+0xcc8): undefined reference to 'dcgettext__'
869 rcfile_y.o(.text+0xdf9): more undefined references to 'dcgettext__' follow
870 </pre>
871
872 <p>install an up to date version of GNU gettext, reconfigure and rebuild
873 fetchmail. If that does not help, reconfigure with '--disable-nls' added
874 to the "./configure" command and rebuild.</p>
875
876 <h2><a id="B4" name="B4">B4. I get build failures in the intl
877 directory.</a></h2>
878
879 <p>Reconfigure with <tt>--disable-nls</tt> and recompile.</p>
880
881 <hr/>
882 <h1>Fetchmail configuration file grammar questions</h1>
883 <h2><a id="F1" name="F1">F1. Why does my old .fetchmailrc file no
884 longer work?</a></h2>
885
886 <h3>If your file predates 5.8.9</h3>
887
888 <p>If you were using ETRN mode, change your <tt>smtphost</tt>
889 option to a <tt>fetchdomains</tt> option.</p>
890
891 <h3>If your file predates 5.8.3</h3>
892
893 <p>The 'via localhost' special case for use with ssh tunnelling is
894 gone. Use the %h feature of <tt>plugin</tt> instead.</p>
895
896 <h3>If your file predates 5.6.8</h3>
897
898 <p>In 5.6.8, the <tt>preauth</tt> keyword and option were changed
899 back to <tt>auth</tt>. The <tt>preauth</tt> synonym will still be
900 supported through a few more point releases.</p>
901
902 <h3>If your file predates 5.6.5</h3>
903
904 <p>The <tt>imap-gss</tt>, <tt>imap-k4</tt>, and <tt>imap-login</tt>
905 protocol types are gone. This is a result of a major re-factoring
906 of the authentication machinery; fetchmail can now use Kerberos V4
907 and GSSAPI not just with IMAP but with POP3 servers that have
908 RFC1734 support for the AUTH command.</p>
909
910 <p>When trying to identify you to an IMAP or POP mailserver,
911 fetchmail now first tries methods that don't require a password
912 (GSSAPI, KERBEROS_IV); then it looks for methods that mask your
913 password (CRAM-MD5, X-OTP); and only if it the server doesn't
914 support any of those will it ship your password en clair.</p>
915
916 <p>Setting the <tt>preauth</tt> option to any value other than
917 'password' will prevent from looking for a password in your
918 <tt>.netrc</tt> file or querying for it at startup time.</p>
919
920 <h3>If your file predates 5.1.0</h3>
921
922 <p>In 5.1.0, the <tt>auth</tt> keyword and option were changed to
923 <tt>preauth</tt>.</p>
924
925 <h3>If your file predates 4.5.5</h3>
926
927 <p>If the <code>dns</code> option is on (the default), you may need
928 to make sure that any hostname you specify (for mail hosts or for
929 an SMTP target) is a canonical fully-qualified hostname). In order
930 to avoid DNS overhead and complications, fetchmail no longer tries
931 to derive the fetchmail client machine's canonical DNS name at
932 startup.</p>
933
934 <h3>If your file predates 4.0.6:</h3>
935
936 <p>Just after the '<code>via</code>' option was introduced, I
937 realized that the interactions between the '<code>via</code>',
938 '<code>aka</code>', and '<code>localdomains</code>' options were
939 out of control. Their behavior had become complex and confusing, so
940 much so that I was no longer sure I understood it myself. Users
941 were being unpleasantly surprised.</p>
942
943 <p>Rather than add more options or crock the code, I re-thought it.
944 The redesign simplified the code and made the options more
945 orthogonal, but may have broken some complex multidrop
946 configurations.</p>
947
948 <p>Any multidrop configurations that depended on the name just
949 after the '<code>poll</code>' or '<code>skip</code>' keyword being
950 still interpreted as a DNS name for address-matching purposes, even
951 in the presence of a '<code>via</code>' option, will break.</p>
952
953 <p>It is theoretically possible that other unusual configurations
954 (such as those using a non-FQDN poll name to generate Kerberos IV
955 tickets) might also break; the old behavior was sufficiently murky
956 that we can't be sure. If you think this has happened to you,
957 contact the maintainer.</p>
958
959 <h3>If your file predates 3.9.5:</h3>
960
961 <p>The '<code>remote</code>' keyword has been changed to
962 '<code>folder</code>'. If you try to use the old keyword, the
963 parser will utter a warning.</p>
964
965 <h3>If your file predates 3.9:</h3>
966
967 <p>It could be because you're using a .fetchmailrc that's written
968 in the old popclient syntax without an explicit
969 '<code>username</code>' keyword leading the first user entry
970 attached to a server entry.</p>
971
972 <p>This error can be triggered by having a user option such as
973 '<code>keep</code>' or '<code>fetchall</code>' before the first
974 explicit username. For example, if you write</p>
975
976 <pre>
977 poll openmail protocol pop3
978     keep user "Hal DeVore" there is hdevore here
979 </pre>
980
981 <p>the '<code>keep</code>' option will generate an entire user
982 entry with the default username (the name of fetchmail's invoking
983 user).</p>
984
985 <p>The popclient compatibility syntax was removed in 4.0. It
986 complicated the configuration file grammar and confused users.</p>
987
988 <h3>If your file predates 2.8:</h3>
989
990 <p>The '<code>interface</code>', '<code>monitor</code>' and
991 '<code>batchlimit</code>' options changed after 2.8.</p>
992
993 <p>They used to be global options with '<code>set</code>' syntax
994 like the batchlimit and logfile options. Now they're per-server
995 options, like '<code>protocol</code>'.</p>
996
997 <p>If you had something like</p>
998
999 <pre>
1000     set interface = "sl0/10.0.2.15"
1001 </pre>
1002
1003 <p>in your .fetchmailrc file, simply delete that line and insert
1004 'interface sl0/10.0.2.15' in the server options part of your
1005 'defaults' declaration.</p>
1006
1007 <p>Do similarly for any '<code>monitor</code>' or
1008 '<code>batchlimit</code>' options.</p>
1009
1010 <h2><a id="F2" name="F2">F2. The .fetchmailrc parser won't accept
1011 my all-numeric user name.</a></h2>
1012
1013 <p>Either upgrade to a post-5.0.5 fetchmail or put string quotes
1014 around it. :-)</p>
1015
1016 <p>The configuration file parser in older fetchmail versions
1017 treated any all-numeric token as a number, which confused it when
1018 it was expecting a name. String quoting forces the token's
1019 class.</p>
1020
1021 <p>The lexical analyzer in 5.0.6 and beyond is smarter and assumes
1022 any token following "username" or "password" is a string.</p>
1023
1024 <h2><a id="F3" name="F3">F3. The .fetchmailrc parser won't accept
1025 my host or username beginning with 'no'.</a></h2>
1026
1027 <p>See <a href="#F2">F2</a>. You're caught in an unfortunate crack
1028 between the newer-style syntax for negated options ('no keep', 'no
1029 rewrite' etc.) and the older style run-on syntax ('nokeep',
1030 'norewrite' etc.).</p>
1031
1032 <p>Upgrade to a 5.0.6 or later fetchmail, or put string quotes
1033 around your token.</p>
1034
1035 <h2><a id="F4" name="F4">F4. I'm getting a 'parse error' message I
1036 don't understand.</a></h2>
1037
1038 <p>The most common cause of mysterious parse errors is putting a
1039 server option after a user option. Check the manual page; you'll
1040 probably find that by moving one or more options closer to the
1041 'poll' keyword you can eliminate the problem.</p>
1042
1043 <p>Yes, I know these ordering restrictions are hard to understand.
1044 Unfortunately, they're necessary in order to allow the 'defaults'
1045 feature to work.</p>
1046
1047 <hr/>
1048 <h1>Configuration questions</h1>
1049 <h2><a id="C1" name="C1">C1. Why do I need a .fetchmailrc when
1050 running as root on my own machine?</a></h2>
1051
1052 <p>Ian T. Zimmerman &lt;itz@rahul.net&gt; asked:</p>
1053
1054 <p>On the machine where I'm the only real user, I run fetchmail as
1055 root from a cron job, like this:</p>
1056
1057 <pre>
1058     fetchmail -u "itz" -p POP3 -s bolero.rahul.net
1059 </pre>
1060
1061 <p>This used to work as is (with no .fetchmailrc file in root's
1062 home directory) with the last version I had (1.7 or 1.8, I don't
1063 remember). But with 2.0, it RECPs all mail to the local root user,
1064 unless I create a .fetchmailrc in root's home directory
1065 containing:</p>
1066
1067 <pre>
1068      skip bolero.rahul.net proto POP3
1069           user itz is itz
1070 </pre>
1071
1072 <p>It won't work if the second line is just "<code>user
1073 itz</code>". This is silly.</p>
1074
1075 <p>It seems fetchmail decides to RECP the 'default local user'
1076 (i.e. the uid running fetchmail) unless there are local aliases,
1077 and the 'default' aliases (itz-&gt;itz) don't count. They
1078 should.</p>
1079
1080 <p>Answer:</p>
1081
1082 <p>No they shouldn't. I thought about this for a while, and I don't
1083 much like the conclusion I reached, but it's unavoidable. The
1084 problem is that fetchmail has no way to know, in general, that a
1085 local user 'itz' actually exists.</p>
1086
1087 <p>"Ah!" you say, "Why doesn't it check the password file to see if
1088 the remote name matches a local one?" Well, there are two
1089 reasons.</p>
1090
1091 <p>One: it's not always possible. Suppose you have an SMTP host
1092 declared that's not the machine fetchmail is running on? You
1093 lose.</p>
1094
1095 <p>Two: How do you know server itz and SMTP-host itz are the same
1096 person? They might not be, and fetchmail shouldn't assume they are
1097 unless local-itz can explicitly produce credentials to prove it
1098 (that is, the server-itz password in local-itz's .fetchmailrc
1099 file.).</p>
1100
1101 <p>Once you start running down possible failure modes and thinking
1102 about ways to tinker with the mapping rules, you'll quickly find
1103 that all the alternatives to the present default are worse or
1104 unacceptably more complicated or both.</p>
1105
1106 <h2><a id="C2" name="C2">C2. How can I arrange for a fetchmail
1107 daemon to get killed when I log out?</a></h2>
1108
1109 <p>The easiest way to dispatch fetchmail on logout (which will work
1110 reliably only if you have just one login going at any time) is to
1111 arrange for the command 'fetchmail -q' to be called on logout.
1112 Under bash, you can arrange this by putting 'fetchmail -q' in the
1113 file '~/.bash_logout'. Most csh variants execute '~/.logout' on
1114 logout. For other shells, consult your shell manual page.</p>
1115
1116 <p>Automatic startup/shutdown of fetchmail is a little harder to
1117 arrange if you may have multiple login sessions going. In the
1118 contrib subdirectory of the fetchmail distribution there is some
1119 shell code you can add to your .bash_login and .bash_logout
1120 profiles that will accomplish this. Thank James Laferriere
1121 &lt;babydr@nwrain.net&gt; for it.</p>
1122
1123 <p>Some people start up and shut down fetchmail using the ppp-up
1124 and ppp-down scripts of pppd.</p>
1125
1126 <h2><a id="C3" name="C3">C3. How do I know what interface and
1127 address to use with --interface?</a></h2>
1128
1129 <p>This depends a lot on your local networking configuration (and
1130 right now you can't use it at all except under Linux and the newer
1131 BSDs). However, here are some important rules of thumb that can
1132 help. If they don't work, ask your local sysop or your Internet
1133 provider.</p>
1134
1135 <p>First, you may not need to use --interface at all. If your
1136 machine only ever does SLIP or PPP to one provider, it's almost
1137 certainly by a point to point modem connection to your provider's
1138 local subnet that's pretty secure against snooping (unless someone
1139 can tap your phone or the provider's local subnet!). Under these
1140 circumstances, specifying an interface address is fairly
1141 pointless.</p>
1142
1143 <p>What the option is really for is sites that use more than one
1144 provider. Under these circumstances, typically one of your provider
1145 IP addresses is your mailserver (reachable fairly securely via the
1146 modem and provider's subnet) but the others might ship your packets
1147 (including your password) over unknown portions of the general
1148 Internet that could be vulnerable to snooping. What you'll use
1149 --interface for is to make sure your password only goes over the
1150 one secure link.</p>
1151
1152 <p>To determine the device:</p>
1153
1154 <ol>
1155 <li>If you're using a SLIP link, the correct device is probably
1156 sl0.</li>
1157
1158 <li>If you're using a PPP link, the correct device is probably
1159 ppp0.</li>
1160
1161 <li>If you're using a direct connection over a local network such
1162 as an ethernet, use the command 'netstat -r' to look at your
1163 routing table. Try to match your mailserver name to a destination
1164 entry; if you don't see it in the first column, use the 'default'
1165 entry. The device name will be in the rightmost column.</li>
1166 </ol>
1167
1168 <p>To determine the address and netmask:</p>
1169
1170 <ol>
1171 <li>If you're talking to slirp, the correct address is probably
1172 10.0.2.15, with no netmask specified. (It's possible to configure
1173 slirp to present other addresses, but that's the default.)</li>
1174
1175 <li>If you have a static IP address, run 'ifconfig &lt;device&gt;',
1176 where &lt;device&gt; is whichever one you've determined. Use the IP
1177 address given after "inet addr:". That is the IP address for your
1178 end of the link, and is what you need. You won't need to specify a
1179 netmask.</li>
1180
1181 <li>If you have a dynamic IP address, your connection IP will vary
1182 randomly over some given range (that is, some number of the least
1183 significant bits change from connection to connection). You need to
1184 declare an address with the variable bits zero and a complementary
1185 netmask that sets the range.</li>
1186 </ol>
1187
1188 <p>To illustrate the rule for dynamic IP addresses, let's suppose
1189 you're hooked up via SLIP and your IP provider tells you that the
1190 dynamic address pool is 255 addresses ranging from 205.164.136.1 to
1191 205.164.136.255. Then</p>
1192
1193 <pre>
1194     interface "sl0/205.164.136.0/255.255.255.0"
1195 </pre>
1196
1197 <p>would work. To range over any value of the last two octets
1198 (65536 addresses) you would use</p>
1199
1200 <pre>
1201     interface "sl0/205.164.0.0/255.255.0.0"
1202 </pre>
1203
1204 <h2><a id="C4" name="C4">C4. How can I set up support for
1205 sendmail's anti-spam features?</a></h2>
1206
1207 <p>This answer covers versions of sendmail from 8.9.3-20 (the
1208 version installed in Red Hat 6.2) upwards. If you have an older
1209 version, upgrade to sendmail 8.9.</p>
1210
1211 <p>Stock sendmails can now do anti-spam exclusions based on a
1212 database of filter rules. The human-readable form of the database
1213 is at <tt>/etc/mail/access</tt>. The database itself is at
1214 <tt>/etc/mail/access.db</tt>.</p>
1215
1216 <p>The table itself uses email addresses, domain names, and network
1217 numbers as keys. For example,</p>
1218
1219 <pre>
1220 spammer@aol.com         REJECT
1221 cyberspammer.com        REJECT
1222 192.168.212             REJECT
1223 </pre>
1224
1225 <p>would refuse mail from spammer@aol.com, any user from
1226 cyberspammer.com (or any host within the cyberspammer.com domain),
1227 and any host on the 192.168.212.* network. (This feature can be
1228 used to do other things as well; see the <a
1229 href="http://www.sendmail.org/m4/anti_spam.html">sendmail
1230 documentation</a> for details)</p>
1231
1232 <p>To actually set up the database, run</p>
1233
1234 <pre>
1235 makemap hash deny &lt;deny
1236 </pre>
1237
1238 <p>in /etc/mail.</p>
1239
1240 <p>To test, send a message to your mailing address from that host
1241 and then pop off the message with fetchmail, using the -v argument.
1242 You can monitor the SMTP transaction, and when the FROM address is
1243 parsed, if sendmail sees that it is an address in spamlist,
1244 fetchmail will flush and delete it.</p>
1245
1246 <p>Under no circumstances put your <strong>mailhost</strong> or
1247 <strong>any host you accept mail from</strong> using fetchmail into
1248 your reject file. You <strong>will</strong> lose mail if you do
1249 this!!!</p>
1250
1251 <h2><a id="C5" name="C5">C5. How can I poll some of my mailboxes
1252 more/less often than others?</a></h2>
1253
1254 <p>Use the <cite>interval</cite> keyword on the ones that should be
1255 checked less often. For example, if you do a poll every 5 minutes,
1256 and want to poll some mailboxes every 5 minutes and some every 30
1257 minutes, use something like this:</p>
1258
1259 <pre>
1260 poll mainsite.example.com  proto pop3 user ....
1261 poll secondary.example.com proto pop3 interval 6 user ...
1262 </pre>
1263
1264 <p>Then secondary.example.com will be polled every 6th time that
1265 mainsite.example.com is polled, which with a polling interval of
1266 every 5 minutes means that secondary.example.com will be polled
1267 every 30 minutes.</p>
1268
1269 <h2><a id="C6" name="C6">Fetchmail works OK started up manually,
1270 but not from an init script.</a></h2>
1271
1272 <p>Often, startup scripts have a different environment than an
1273 interactive login shell. For instance, $HOME might point to "/root"
1274 when you are logged in as root, but it might be either unset, or
1275 set to "/" when the startup scripts are running. That means
1276 fetchmail at startup can't find the .fetchmailrc.</p>
1277
1278 <p>Pick a location (such as /etc/fetchmailrc) and use fetchmail's
1279 -f option to point fetchmail at it. That should solve the
1280 problem.</p>
1281
1282 <h2><a id="C7" name="C7">C7. How can I forward mail to another
1283 host?</a></h2>
1284
1285 <p>To forward mail to a host other than the one you are running
1286 fetchmail on, use the <code>smtphost</code> or
1287 <code>smtpname</code> option. See the manual page for details.</p>
1288
1289 <hr/>
1290 <h1>How to make fetchmail play nice with various MTAs</h1>
1291 <h2><a id="T1" name="T1">T1. How can I use fetchmail with
1292 sendmail?</a></h2>
1293
1294 <p>For most sendmails, no special configuration is required. Eric
1295 Allman tells me that if <code>FEATURE(always_add_domain)</code> is
1296 included in sendmail's configuration, you can leave the
1297 <code>rewrite</code> option off.</p>
1298
1299 <p>If your sendmail complains "sendmail does not relay", make
1300 sure your sendmail.cf file says <code>Cwlocalhost</code> so that
1301 sendmail recognizes 'localhost' as a name of its host.</p>
1302
1303 <p>If you're mailing from another machine on your local network,
1304 also ensure that its IP address is listed in ip_allow or name in
1305 name_allow (usually in /etc/mail/)</p>
1306
1307 <p>If you find that your sendmail doesn't like the address
1308 'FETCHMAIL-DAEMON@localhost' (which is used in the bouncemail that
1309 fetchmail generates), you may have to set
1310 <code>FEATURE(accept_unqualified_senders)</code>.</p>
1311
1312 <p>G&uuml;nther Leber reports that Digital Unix sendmails won't
1313 work with fetchmail. The symptom is an error message "<code>553
1314 Local configuration error, hostname not recognized as
1315 local</code>". The problem is that fetchmail normally feeds
1316 sendmail with the client machine's host address in the MAIL FROM
1317 line. These sendmails think this means they're seeing the result of
1318 a mail loop and suppress the mail. You may be able to work around
1319 this by running in <code>--invisible</code> mode.</p>
1320
1321 <p>If you want to support multidrop mode, and you can get access to
1322 your mailserver's sendmail.cf file, it's a good idea to add this
1323 rule:</p>
1324
1325 <pre>
1326 H?l?Delivered-To: $h
1327 </pre>
1328
1329 <p>This will cause the mailserver's sendmail to reliably write the
1330 appropriate envelope address into each message before fetchmail
1331 sees it, and tell fetchmail which header it is.&#160; With this
1332 change, multidrop mode should work reliably even when the Received
1333 header omits the envelope address (which will typically be the case
1334 when the message has multiple recipients).&#160; However it will
1335 still not distinguish the recipients, your only advantage is that
1336 no bounce will be sent if a message is BCC addressed to multiple
1337 users at your site.&#160; To fix even that problem, you might want
1338 to try the following hack, which is however untested and quite
1339 experimental:</p>
1340
1341 <pre>
1342 H?J?Delivered-To: $u
1343
1344 Mmdrop, P=/usr/bin/procmail, F=lsDFMqSPfhnu9J,
1345     S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP/HdrToSMTP,
1346     T=DNS/RFC822/X-Unix,
1347     A=procmail -Y -a $u -d $h
1348 </pre>
1349
1350 <p>For both hacks, you have to declare '<code>envelope
1351 "Delivered-To:"</code>' on the fetchmail side, to put the virtual
1352 domain (e.g. 'domain.com') with RELAY permission into your access
1353 file and to add a line reading '<code>domain.com
1354 local:local-pop-user</code>' for the first and '<code>domain.com
1355 mdrop:local-pop-user</code>' for the second hack to your
1356 mailertable.</p>
1357
1358 <p>You will notice that if the mail already has a Delivered-To
1359 header, sendmail will not add another.&#160; Further, editing
1360 sendmail.cf directly is not very comfortable.&#160; Solutions for
1361 both problems can be found in Peter 'Rattacresh' Backes' 'hybrid'
1362 patch against sendmail.&#160; Have a look at it, you can find it in
1363 the contrib subdirectory.</p>
1364
1365 <p>Feel free to try Martijn Lievaart's detailed recipe in the
1366 contrib subdirectory of the fetchmail source distribution, it
1367 attempts to realize multidrop mailboxes with an external
1368 script.</p>
1369
1370 <p>If for some reason you are invoking sendmail via the
1371 <tt>mda</tt> option (rather than delivering to port 25 via smtp),
1372 don't forget to include the -i switch. Otherwise you will
1373 occasionally get mysterious delivery failures with a SIGPIPE as the
1374 sendmail instance dies. The problem is messages with a single dot
1375 at start of a text line.</p>
1376
1377 <h2><a id="T2" name="T2">T2. How can I use fetchmail with
1378 qmail?</a></h2>
1379
1380 <p>Turn on the <code>forcecr</code> option; qmail's listener mode
1381 doesn't like header or message lines terminated with bare
1382 linefeeds.</p>
1383
1384 <p>(This information is thanks to Robert de Bath
1385 &lt;robert@mayday.cix.co.uk&gt;.)</p>
1386
1387 <p>If a mailhost is using the qmail package, then, providing the local
1388 hosts are also using qmail, it is possible to set up one fetchmail link
1389 to be reliably collect the mail for an entire domain.</p>
1390
1391 <p>One of the basic features of qmail is the 'Delivered-To:'
1392 message header. Whenever qmail delivers a message to a local
1393 mailbox it puts the username and hostname of the envelope recipient
1394 on this line. The major reason for this is to prevent mail
1395 loops.</p>
1396
1397 <p>To set up qmail to batch mail for a disconnected site the
1398 ISP-mailhost will have normally put that site in its 'virtualhosts'
1399 control file so it will add a prefix to all mail addresses for this
1400 site. This results in mail sent to
1401 'username@userhost.userdom.dom.com' having a 'Delivered-To:' line
1402 of the form:</p>
1403
1404 <pre>
1405        Delivered-To: mbox-userstr-username@userhost.userdom.dom.com
1406 </pre>
1407
1408 <p>A single host maildrop will be slightly simpler:</p>
1409
1410 <pre>
1411        Delivered-To: mbox-userstr-username@userhost.dom.com
1412 </pre>
1413
1414 <p>The ISP can make the 'mbox-userstr-' prefix anything they choose
1415 but a string matching the user host name is likely.</p>
1416
1417 <p>To use this line you must:</p>
1418
1419 <ol>
1420 <li>Ensure the option 'envelope Delivered-To:' is in the fetchmail
1421 config file.</li>
1422
1423 <li>Ensure you have a localdomains containing 'userdom.dom.com' or
1424 'userhost.dom.com' respectively.</li>
1425 </ol>
1426
1427 <p>So far this reliably delivers messages to the correct machine of
1428 the local network, to deliver to the correct user the
1429 'mbox-userstr-' prefix must be stripped off of the user name. This
1430 can be done by setting up an alias within the qmail MTA on each
1431 local machine. Simply create a dot-qmail file called
1432 '.qmail-mbox-userstr-default' in the alias directory (normally
1433 /var/qmail/alias) with the contents:</p>
1434
1435 <pre>
1436       | ../bin/qmail-inject -a -f"$SENDER" "${LOCAL#mbox-userstr-}@$HOST"
1437 </pre>
1438
1439 <p>Note this <em>does</em> require a modern /bin/sh.</p>
1440
1441 <p>Peter Wilson adds:</p>
1442
1443 <p>"My ISP uses "alias-unzzippedcom-" as the prefix, which means
1444 that I need to name my file ".qmail-unzzippedcom-default". This is
1445 due to qmail's assumption that a message sent to user-xyz is
1446 handled by the file ~user/.qmail-xyz (or
1447 ~user/.qmail-default)."</p>
1448
1449 <p>Luca Olivetti adds:</p>
1450
1451 <p>If you aren't using qmail locally, or you don't want to set up
1452 the alias mechanism described above, you can use the option
1453 '<code>qvirtual "mbox-userstr-"</code>' in your fetchmail config
1454 file to strip the prefix from the local user name.</p>
1455
1456 <h2><a id="T3" name="T3">T3. How can I use fetchmail with
1457 exim?</a></h2>
1458
1459 <p>If you have <code>rewrite</code> on:</p>
1460
1461 <p>There is an RFC1123 requirement that MAIL FROM and RCPT TO
1462 addresses you pass to it have to be canonical (e.g. with a fully
1463 qualified hostname part). Therefore fetchmail tries to pass fully
1464 qualified RCPT TO addresses. But exim does not by default accept
1465 'localhost' as a fully qualified domain. This can be fixed.</p>
1466
1467 <p>In exim.conf, add 'localhost' to your local_domains declaration
1468 if it's not already present. For example, the author's site at
1469 thyrsus.com would have a line reading:</p>
1470
1471 <pre>
1472        local_domains = thyrsus.com:localhost
1473 </pre>
1474
1475 <p>If you have <code>rewrite</code> off:</p>
1476
1477 <p>MAIL FROM is a potential problem if the MTAs upstream from your
1478 fetchmail don't necessarily pass canonicalized From and Return-Path
1479 addresses, and fetchmail's <code>rewrite</code> option is off. The
1480 specific case where this has come up involves bounce messages
1481 generated by sendmail on your mailer host, which have the
1482 (un-canonicalized) origin address MAILER-DAEMON.</p>
1483
1484 <p>The right way to fix this is to enable the <code>rewrite</code>
1485 option and have fetchmail canonicalize From and Return-Path
1486 addresses with the mailserver hostname before exim sees them. This
1487 option is enabled by default, so it won't be off unless you turned
1488 it off.</p>
1489
1490 <p>If you must run with <code>rewrite</code> off, there is a switch
1491 in exim's configuration files that allows it to accept domainless
1492 MAIL FROM addresses; you will have to flip it by putting the
1493 line</p>
1494
1495 <pre>
1496         sender_unqualified_hosts = localhost
1497 </pre>
1498
1499 <p>in the main section of the exim configuration file. Note that
1500 this will result in such messages having an incorrect domain name
1501 attached to their return address (your SMTP listener's hostname
1502 rather than that of the remote mail server).</p>
1503
1504 <h2><a id="T4" name="T4">T4. How can I use fetchmail with
1505 smail?</a></h2>
1506
1507 <p>Smail 3.2 is very nearly plug-compatible with sendmail, and may
1508 work fine out of the box.</p>
1509
1510 <p>We have one report that when processing multiple messages from a
1511 single fetchmail session, smail sometimes delivers them in an order
1512 other than received-date order. This can be annoying because it
1513 scrambles conversational threads. This is not fetchmail's problem,
1514 it is an smail 'feature' and has been reported to the maintainers
1515 as a bug.</p>
1516
1517 <p>Very recent smail versions require an
1518 <code>-smtp_hello_verify</code> option in the smail config file.
1519 This overrides smail's check to see that the HELO address is
1520 actually that of the client machine, which is never going to be the
1521 case when fetchmail is in the picture. According to RFC1123 an SMTP
1522 listener <em>must</em> allow this mismatch, so smail's new behavior
1523 (introduced sometime between 3.2.0.90 and 3.2.0.95) is a bug.</p>
1524
1525 <p>You may also need to say
1526 <code>-smtp_hello_broken_allow=127.0.0.1</code> in order for smail
1527 to accept the "localhost" that fetchmail normally appends to
1528 recipient addresses.</p>
1529
1530 <h2><a id="T5" name="T5">T5. How can I use fetchmail with SCO's
1531 MMDF?</a></h2>
1532
1533 <p>MMDF itself is difficult to configure, but it turns out that
1534 connecting fetchmail to MMDF's SMTP channel isn't that hard. You
1535 can read an <a
1536 href="http://aplawrence.com/Unixart/uucptofetch.html">MMDF
1537 recipe</a> that describes replacing a UUCP link with fetchmail
1538 feeding MMDF.</p>
1539
1540 <h2><a id="T6" name="T6">T6. How can I use fetchmail with Lotus
1541 Notes?</a></h2>
1542
1543 <p>The Lotus Notes SMTP gateway tries to deduce when it should
1544 convert \n to \r\n, but its rules are not the intuitive and
1545 correct-for-RFC822 ones. Use 'forcecr'.</p>
1546
1547 <h2><a id="T7" name="T7">T7. How can I use fetchmail with Courier
1548 IMAP?</a></h2>
1549
1550 <p>The courier mta doesn't like RCPT addresses that look like
1551 <code>someone@localhost</code>. Work around this with an
1552 <code>smtphost</code> or <code>smtpaddress</code>.</p>
1553
1554 <h2><a name="T8">T8. How can I use fetchmail with vbmailshield?</a></h2>
1555
1556 <p>vbmailshield's SMTP interpreter is broken.  It doesn't understand RSET.</p>
1557
1558 <p>As a workaround, you can set batchlimit to 1 so RSET is never used.</p>
1559
1560 <hr/>
1561 <h1>How to make fetchmail work with various servers</h1>
1562 <h2><a id="S1" name="S1">S1. How can I use fetchmail with
1563 qpopper?</a></h2>
1564
1565 <p>Qualcomm's qpopper is probably the best-of-breed among POP3
1566 servers, and is very widely deployed. Nevertheless, it has some
1567 problems which fetchmail exposes. We recommend using <a
1568 href="#G8">IMAP</a> instead if at all possible. If you must talk to
1569 qpopper, here are some problems to be aware of:</p>
1570
1571 <h3>Problems with retrieving large messages from qpopper 2.53</h3>
1572
1573 <p>Tony Tang <a
1574 href="mailto:tony@atn.com.hk">&lt;tony@atn.com.hk&gt;</a> reports
1575 that there is a bad intercation between fetchmail and qpopper 2.5.3
1576 under Red Hat Linux versions 5.0 to 5.2, kernels 2.0.34 to 2.0.35.
1577 When fetching very large messages (over 700K) from 2.5.3, fetchmail
1578 will hang with a socket error.</p>
1579
1580 <p>This is probably not a fetchmail bug, but rather a symptom of
1581 some problem in the networking stack that qpopper's transmission
1582 pattern is tickling, as fetchpop (another Linux POP client) also
1583 displays the hang but Netscape running under Win95 does not. The
1584 problem can also be banished by <a
1585 href="http://www.eudora.com/freeware/qpop.html">upgrading to
1586 qpopper 3.0b1</a>.</p>
1587
1588 <h3>Bad interaction with fetchmail 4.4.2 to 4.4.7</h3>
1589
1590 <p>Versions of fetchmail from 4.4.2 through 4.4.7 had a bad
1591 interaction with Eudora qpopper versions 2.3 and later. See <a
1592 href="#X5">X5</a> for details. The solution is to upgrade your
1593 fetchmail.</p>
1594
1595 <h2><a id="S2" name="S2">S2. How can I use fetchmail with Microsoft
1596 Exchange?</a></h2>
1597
1598 <p>It's been reliably reported that Exchange 2000's POP3 support is
1599 so broken that it's unusable. One symptom is that messages without
1600 a terminating newline get the POP3 message termination dot emitted
1601 -- you guessed it -- right after the last character of the message,
1602 with no terminating newline added. This will hang fetchmail or any
1603 other RFC-compliant server. IMAP is alleged to work OK, though.</p>
1604
1605 <p>Older versions of Exchange are semi-usable.  They randomly drop
1606 attachments on the floor, though.  Microsoft acknowledges this
1607 as a known bug and apparently has no plans to fix it.</p>
1608
1609 <p>Fetchmail using IMAP supports the proprietary NTLM mode used
1610 with M$ Exchange servers. To enable this, configure fetchmail with
1611 the --enable-NTLM option and recompile it. Specify a user option
1612 value that looks like 'user@domain': the part to the left of the @
1613 will be passed as the username and the part to the right as the
1614 NTLM domain.</p>
1615
1616 <p>M$ Exchange violates the POP3 and IMAP RFCs. Its LIST command
1617 does not reveal the real sizes of mail in the pop mailbox, but the
1618 sizes of the compressed versions in the exchange mail database
1619 (thanks to Arjan De Vet and Guido Van Rooij for alerting us to this
1620 problem).</p>
1621
1622 <p>Fetchmail works with M$ Exchange, despite this brain damage. Two
1623 features are compromised. One is that the --limit option will not
1624 work right (it will check against compressed and not actual sizes).
1625 The other is that a too-small SIZE argument may be passed to your
1626 ESMTP listener, assuming you're using one (this should not be a
1627 problem unless the actual size of the message is above the
1628 listener's configured length limit).</p>
1629
1630 <p>Somewhat belatedly, I've learned that there's supposed to be a
1631 registry bit that can fix this breakage:</p>
1632
1633 <pre>
1634 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\MsExchangeIs\Parameters
1635 System\Pop3 Compatibility
1636 </pre>
1637
1638 <p>This is a bitmask that controls the variations from the standard
1639 protocol. The bits defined are:</p>
1640
1641 <dl>
1642 <dt>0x00000001:</dt>
1643
1644 <dd>Report exact message sizes for the LIST command</dd>
1645
1646 <dt>0x00000002:</dt>
1647
1648 <dd>Allow arbitrary linear whitespace between commands and
1649 arguments</dd>
1650
1651 <dt>0x00000004:</dt>
1652
1653 <dd>Enable the LAST command</dd>
1654
1655 <dt>0x00000008:</dt>
1656
1657 <dd>Allow an empty PASS command (needed for users with blank
1658 passwords, but illegal in the protocol)</dd>
1659
1660 <dt>0x00000010:</dt>
1661
1662 <dd>Relax the length restrictions for arguments to commands
1663 (protocol requires 40, but some user names may be longer than
1664 that).</dd>
1665
1666 <dt>0x00000020:</dt>
1667
1668 <dd>Allow spaces in the argument to the USER command.</dd>
1669 </dl>
1670
1671 <p>There's another one that may be useful to know about:</p>
1672
1673 <pre>
1674 KEY_LOCAL_MACHINE\System\CurrentControlSet\Services\MsExchangeIs\Parameters
1675 System\Pop3 Performance
1676 </pre>
1677
1678 <dl>
1679 <dt>0x00000001:</dt>
1680
1681 <dd>Render messages to a temporary stream instead of sending
1682 directly from the database (should always be on)</dd>
1683
1684 <dt>0x00000002: Flag unrenderable messages (instead of just failing
1685 commands) (should only be on if you are seeing the problems
1686 reported in KB Q168109)</dt>
1687
1688 <dt>0x00000004:</dt>
1689
1690 <dd>Return from the QUIT command before all messages have been
1691 deleted.</dd>
1692 </dl>
1693
1694 <p>The Microsoft pod-person who revealed this information to me
1695 admitted that he couldn't find it anywhere in their public
1696 knowledge base.</p>
1697
1698 <p>Another specific problem we have seen with Exchange servers has
1699 as its symptom a response to LOGIN that says "NO Ambiguous Alias".
1700 Grant Edwards writes:</p>
1701
1702 <p>This means that Exchange Server is too f*&amp;#ing stupid to
1703 figure out which mailbox belongs to you. Instead of actually
1704 keeping track of which inbox belongs to which user, it uses some
1705 half-witted, guess-o-matic heuristic to try to guess your mailbox
1706 name from your username.</p>
1707
1708 <p>In your case it doesn't work because your username maps to more
1709 than one mailbox. For some people it doesn't work because their
1710 username maps to zero mailboxes. This is yet another inept, lame,
1711 almost criminally negligent design decision from our friends in
1712 Redmond.</p>
1713
1714 <p>You've got several options:</p>
1715
1716 <ul>
1717 <li>Get your administrator to configure the server so that
1718 usernames and mailbox names are the same.</li>
1719
1720 <li>Get your administrator to add an alias that maps your username
1721 explicitly to your mailbox name.</li>
1722 </ul>
1723
1724 <p>But, the best option involves a tactical nuclear weapon (an old
1725 ASROC will do), pissing off a lot people who live downwind from
1726 Redmond, and your choice of any Linux, NetBSD, FreeBSD, or Solaris
1727 CD-ROM.</p>
1728
1729 <h2><a id="S3" name="S3">S3. How can I use fetchmail with HP
1730 OpenMail?</a></h2>
1731
1732 <p>No special configuration is required, but OpenMail versions
1733 prior to 6.0 have an annoying bug similar to the big one in <a
1734 href="#S2">Microsoft Exchange</a>. The message sizes it gives in
1735 the LIST are rounded to the nearest 1024 bytes. It also has a nasty
1736 habit of discarding headers it doesn't recognize, such as X- and
1737 Resent- headers.</p>
1738
1739 <p>As with M$ Exchange, the only real fix for these problems is to
1740 get a POP (or preferably IMAP) server that isn't brain-dead.
1741 OpenMail's project manager claims these bugs have been fixed in
1742 6.0.</p>
1743
1744 <p>We've had a more recent report (December 2001) that the TOP
1745 command fails, returning only one line regrardless of its argument,
1746 on something identifying itself as "OpenMail POP3 interface".</p>
1747
1748 <h2><a id="S4" name="S4">S4. How can I use fetchmail with Novell GroupWise?</a></h2>
1749
1750 <p>The Novell GroupWise IMAP server would be better named
1751 GroupFoolish; it is (according to the designer of IMAP) unusably
1752 broken. Among other things, it doesn't include a required content
1753 length in its BODY[TEXT] response.</p>
1754
1755 <p>Fetchmail works around this problem, but we strongly recommend
1756 voting with your dollars for a server that isn't brain-dead. If you
1757 stick with code as shoddy as GroupWise seems to be, you will
1758 probably pay for it with other problems.</p>
1759
1760 <h2><a id="S5" name="S5">S5. How can I use fetchmail with
1761 InterChange?</a></h2>
1762
1763 <p>You can't. At least not if you want to be able to see
1764 attachments. InterChange has a bug similar to the MailMax server;
1765 it reports the message length with attachments but doesn't download
1766 them on TOP or RETR.</p>
1767
1768 <p>On Jan 9 2001, the people at InfiniteMail sent me mail informing
1769 me that their new 3.61.08 release of InterChange fixes this
1770 problem. I don't have any reports one way or the other yet.</p>
1771
1772 <h2><a id="S6" name="S6">S6. How can I use fetchmail with MailMax?</a></h2>
1773
1774 <p>You can't. At least not if you want to be able to see
1775 attachments. MailMax has a bug; it reports the message length with
1776 attachments but doesn't download them on TOP or RETR.</p>
1777
1778 <p>Also, we're told that TOP sometimes fails to retrieve the entire
1779 message even when enough lines have been specified. The MailMax
1780 developers have acknowledged this bug as of 4 May 2000, but there
1781 is no fix yet. If you must use this server, force RETR with the
1782 <tt>fetchall</tt> option.</p>
1783
1784 <h2><a id="S7" name="S7">S7. How can I use fetchmail with FTGate?</a></h2>
1785
1786 <p>The FTGate V2 server (and possibly older versions as well) has a
1787 weird bug. It answers OK twice to a TOP request! Use the
1788 <code>fetchall</code> option to force use of RETR and work around
1789 this bug.</p>
1790
1791 <hr/>
1792 <h1>How to fetchmail work with specific ISPs</h1>
1793 <h2><a id="I1" name="I1">I1. How can I use fetchmail with CompuServe RPA?</a></h2>
1794
1795 <p>First, make sure your fetchmail has the RPA support compiled in.
1796 Stock fetchmail binaries (such as you might get from an RPM) don't.
1797 You can check this by looking at the output of <code>fetchmail
1798 -V</code>; if you see the string "+RPA" after the version ID you're
1799 good to go, otherwise you'll have to build your own from sources
1800 (see the INSTALL file in the source distribution for
1801 directions).</p>
1802
1803 <p>Give your CompuServe pass-phrase in lower case as your password.
1804 Add '@compuserve.com' to your user ID so that it looks like 'user
1805 &lt;UserID&gt;@compuserve.com', where &lt;UserID&gt; can be either
1806 your numerical userID or your E-mail nickname. An RPA-enabled
1807 fetchmail will automatically check for csi.com in the POP server's
1808 greeting line. If that's found, and your user ID ends with
1809 '@compuserve.com', it will query the server to see if it is
1810 RPA-capable, and if so do an RPA transaction rather than a
1811 plain-text password handshake.</p>
1812
1813 <p><strong>Warning:</strong> the debug (-v -v) output of fetchmail
1814 will show your pass-phrase in Unicode!</p>
1815
1816 <p>These two .fetchmailrc entries show the difference between an
1817 RPA and non-RPA configuration:</p>
1818
1819 <pre>
1820 # This version will use RPA
1821 poll csi.com via "pop.site1.csi.com" with proto POP3 and options no dns
1822     user "CSERVE_USER@compuserve.com" there with password "CSERVE_PASSWORD"
1823         is LOCAL_USER here options fetchall stripcr
1824
1825 # This version will not use RPA
1826 poll non-rpa.csi.com via "pop.site1.csi.com" with proto POP3 and options no dns
1827     user "CSERVE_USER" there with password "CSERVE_POP3_PASSWORD"
1828        is LOCAL_USER here options fetchall stripcr
1829 </pre>
1830
1831 <h2><a id="I2" name="I2">I2. How can I use fetchmail with Demon
1832 Internet's SDPS?</a></h2>
1833
1834 <h3>Single-drop mode</h3>
1835
1836 <p>You can get fetchmail to download the email for just one user
1837 from Demon Internet's POP3 server by giving it a username
1838 consisting of your Demon user name followed by your account name,
1839 with an at-sign between them.</p>
1840
1841 <p>For example, to download email for the user
1842 &lt;philh@vision25.demon.co.uk&gt;, you could use the following
1843 .fetchmailrc file:</p>
1844
1845 <pre>
1846 set postmaster "philh"
1847 poll pop3.demon.co.uk with protocol POP3:
1848     user "philh@vision25" is philh
1849 </pre>
1850
1851 <h3>Multi-drop mode</h3>
1852
1853 <p>Demon Internet's SDPS service is an implementation of POP3. All
1854 messages have a Received: header added when they enter the
1855 maildrop, like this:</p>
1856
1857 <pre>
1858    Received: from punt-1.mail.demon.net by mailstore for fred@xyz.demon.co.uk
1859              id 899963657:10:27896:0; Thu, 09 Jul 98 05:54:17 GMT
1860 </pre>
1861
1862 <p>To enable multi-drop mode you need to tell fetchmail that
1863 'mailstore' is the name of the host which accepted the mail, and
1864 let it know the hostname part(s) of your E-mail address. The
1865 following example assumes that your hostname is xyz.demon.co.uk,
1866 and that you have also bought "mail forwarding" for the domain
1867 my-company.co.uk (in which case your MTA must also be configured to
1868 accept mail sent to user@my-company.co.uk)</p>
1869
1870 <pre>
1871      poll pop3.demon.co.uk proto pop3 aka mailstore no dns:
1872        localdomains xyz.demon.co.uk my-company.co.uk
1873        user xyz is *
1874 </pre>
1875
1876 <p>Note that Demon may delete mail on the server which is more than
1877 30 days old; see their <a
1878 href="http://www.demon.net/helpdesk/producthelp/mail/sdps-tech.html/">POP3
1879 page</a> for details.</p>
1880
1881 <h3>The SDPS extension</h3>
1882
1883 <p>There's a different way to do multidrop. It's not necessary on
1884 Demon Internet, since fetchmail can parse Received addresses, but
1885 the person who implemented this didn't know that. It may be useful
1886 if Demon Internet ever changes mail transports.</p>
1887
1888 <p>SDPS includes a non-standard extension for retrieving the
1889 envelope of a message (*ENV), which fetchmail optionally supports
1890 if compiled with the --enable-SDPS option. If you have it, the
1891 first line of the fetchmail -V response will include the string
1892 "+SDPS".</p>
1893
1894 <p>Once you have SDPS compiled in, fetchmail in POP3 mode will
1895 automatically detect when it's talking to a Demon Internet host in
1896 multidrop mode, and use the *ENV extension to get an envelope To
1897 address.</p>
1898
1899 <p>The autodetection works by looking at the hostname in the POP3
1900 greeting line; if you're accessing Demon Internet through a proxy
1901 it may fail. To force SDPS mode, pick "sdps" as your protocol.</p>
1902
1903 <h2><a id="I3" name="I3">I3. How can I use fetchmail with usa.net's
1904 servers?</a></h2>
1905
1906 <p>Enable '<code>fetchall</code>'. A user reports that the 2.2
1907 version of USA.NET's POP server reports that you must use the
1908 '<code>fetchall</code>' option to make sure that all of the mail is
1909 retrieved, otherwise some may be left on the server. This is almost
1910 certainly a server bug.</p>
1911
1912 <p>The usa.net servers (at least in their 2.2 version, June 1998)
1913 don't handle the TOP command properly, either. Regardless of the
1914 argument you give it, they retrieve only about 10 lines of the
1915 message. Fetchmail normally uses TOP for message retrieval in order
1916 to avoid marking messages seen, but '<code>fetchall</code>' forces
1917 it to use RETR instead.</p>
1918
1919 <p>Also, we're told USA.NET adds a ton of hops to your messages.
1920 You may need to raise the MaxHopCount parameter in your sendmail.cf
1921 to avoid having fetched mail rejected.</p>
1922
1923 <p>(Note: Other failure modes have been reported on usa.net's
1924 servers. They seem to be chronically flaky. We recommend finding
1925 another provider.)</p>
1926
1927 <h2><a id="I4" name="I4">I4. How can I use fetchmail with geocities
1928 POP3 servers?</a></h2>
1929
1930 <p>Nathan Cutler reports that the the mail.geocities.com POP3
1931 servers fail to include the first Received line of the message in
1932 the send to fetchmail. This can solve problems if your MUA
1933 interprets Received continuations as body lines and doesn't parse
1934 any of the following headers.</p>
1935
1936 <p>Workaround is to use "mda" keyword or "--mda" switch:</p>
1937
1938 <pre>
1939 mda "sed -e '1s/^\t/Received: /' | formail | /usr/bin/procmail -d &lt;user&gt;"
1940 </pre>
1941
1942 <p>Replace \t with exactly one tabulation character.</p>
1943
1944 <p>You should also consider using "fetchall" option because
1945 Geocities' servers sometimes think that the first 45 messages have
1946 already been read.</p>
1947
1948 <p>Fix: Get an email provider that doesn't suck. The pop-up ads on
1949 Geocities are lame, you should boycott them anyway.</p>
1950
1951 <h2><a id="I5" name="I5">I5. How can I use fetchmail with Hotmail or Lycos Webmail?</a></h2>
1952
1953 <p>You can't directly. But you can use fetchmail with hotmail or lycos
1954 webmail with the help of the <a
1955 href='http://people.freenet.de/courierdave/'>HotWayDaemon</a>
1956 daemon. You don't even need to install hotwayd as a daemon in
1957 <samp>inetd.conf</samp> but can use it as a plugin. Your
1958 configuration should look like this:</p>
1959
1960 <pre>
1961 poll localhost protocol pop3 tracepolls
1962    plugin "/usr/local/sbin/hotwayd -l 0 -p yourproxy:yourproxyport"
1963    username "youremail@hotmail.com" password "yourpassword"
1964    fetchall
1965 </pre>
1966
1967 <p>As a second option you may consider using <a
1968 href="http://linux.cudeso.be/linuxdoc/gotmail.php">gotmail</a>.</p>
1969
1970 <h2><a id="I6" name="I6">I6. How can I use fetchmail with MSN?</a></h2>
1971
1972 <p>You can't. MSN uses something that looks like POP3, except the
1973 authentication part is nonstandard. And of course they don't
1974 document it, so nobody but their Windows clients can speak it.</p>
1975
1976 <p>This is a customer lock-in tactic; we recommend boycotting MSN
1977 as the only appropriate response.</p>
1978
1979 <p>As of 5.0.8, we have support for the client side of NTLM
1980 authentication. It's possible this may enable fetchmail to talk to
1981 MSN; if so, somebody should report it so this FAQ can be
1982 corrected.</p>
1983
1984 <h2><a id="I7" name="I7">I7. How can I use fetchmail with SpryNet?</a></h2>
1985
1986 <p>The SpryNet POP3 servers mark a message queried with TOP as
1987 seen. This means that if your connection drops in mid-message, it
1988 may end up invisibly stuck on your mail spool. Use the
1989 <code>fetchall</code> flag to ensure that it's recovered on the
1990 next cycle.</p>
1991
1992 <h2><a id="I8" name="I8">I8. How can I use fetchmail with comcast.net or
1993         other Maillennium servers?</a></h2>
1994
1995 <p>Stock fetchmail will work with a
1996 Maillennium&nbsp;POP3/PROXY&nbsp;server... <em>but</em> this server will
1997 truncate "TOP" responses after 64&nbsp;-&nbsp;82 kB (we have varying reports),
1998 in violation of Internet Standard #53 aka. RFC-1939 (POP3). Don't
1999 mistake this for a fetchmail bug. (Reported July 2003.) Comcast
2000 documented they haven't understood what this is about in <a
2001     href="http://lists.ccil.org/pipermail/fetchmail-friends/2004-April/008523.html">two
2002 messages from April 2004.</a></p>
2003
2004 <p>Beginning with version 6.3.2, fetchmail will fall back to the RETR
2005 command if the greeting string contains "Maillennium POP3/PROXY server",
2006 and print a warning message. This means however that fetchmail has no
2007 means to prevent the "seen" flag from being set on the server (Note that
2008 officially, POP3 has no notion of seen tracking, but it works for some
2009 sites.)</p>
2010
2011 <p>Workaround for older versions: use the <tt>fetchall</tt> option.</p>
2012
2013 <hr/>
2014 <h1>How to set up well-known security and authentication
2015 methods</h1>
2016 <h2><a id="K1" name="K1">K1. How can I use fetchmail with SOCKS?</a></h2>
2017
2018 <p>Giuseppe Guerini added a --with-socks option that supports
2019 linking with socks library. If you specify the value of this option
2020 as "yes", the configure script will try to find the Rconnect
2021 library and set the makefile up to link it. You can also specify a
2022 directory containing the Rconnect library.</p>
2023
2024 <p>Alan Schmitt has added a similar --with-socks5 option that may
2025 work better if you have a recent version of the SOCKS library.</p>
2026
2027 <h2><a id="K2" name="K2">K2. How can I use fetchmail with IPv6 and
2028 IPsec?</a></h2>
2029
2030 <p>To use fetchmail with IPv6, you need a system that supports
2031 IPv6, the "Basic Socket Interface Extensions for IPv6" (RFC 2133).
2032 </p>
2033
2034 <p>The NRL IPv6+IPsec software distribution can be obtained from:
2035 <a
2036 href="http://web.mit.edu/network/isakmp/">http://web.mit.edu/network/isakmp/</a></p>
2037
2038 <p>More information on using IPv6 with Linux can be obtained
2039 from:</p>
2040
2041 <ul>
2042 <li><a
2043 href="http://www.bieringer.de/linux/IPv6/IPv6-HOWTO/IPv6-HOWTO.html">
2044 http://www.bieringer.de/linux/IPv6/IPv6-HOWTO/IPv6-HOWTO.html</a></li>
2045 </ul>
2046
2047 <h2><a id="K3" name="K3">K3. How can I get fetchmail to work with
2048 ssh?</a></h2>
2049
2050 <p>Use the <tt>plugin</tt> option. This is dead simple with
2051 IMAP:</p>
2052
2053 <pre>
2054     plugin "ssh %h /usr/sbin/imapd"
2055 </pre>
2056
2057 <p>You may have to use a different absolute pathname, whatever the
2058 location of imapd on your mailserver is. This option tells
2059 fetchmail that instead of opening a connection on the server's port
2060 143 and doing standard IMAP authentication, fetchmail should ssh to
2061 the server and run imapd, using the more secure ssh authentication
2062 (as well as getting ssh's end-to-end encryption). Most IMAP daemons
2063 will detect that they've been called from the command line and
2064 assume the connection is preauthenticated.</p>
2065
2066 <p>POP3 daemons aren't quite as smart. They won't know they are
2067 preauthenticated in this mode, so you'll actually have to ship your
2068 password. It will be under ssh encryption, though, so that
2069 shouldn't be a problem.</p>
2070
2071 <h2><a id="K4" name="K4">K4. What do I have to do to use the
2072 IMAP-GSS protocol?</a></h2>
2073
2074 <p>Fetchmail can use RFC1731 GSSAPI authorization to safely
2075 identify you to your IMAP server, as long as you can share Kerberos
2076 V credentials with your mail host and you have a GSSAPI-capable
2077 IMAP server. UW-IMAP (available via FTP at <a
2078 href="ftp://ftp.cac.washington.edu/mail/">ftp.cac.washington.edu</a>)
2079 is the only one I'm aware of and the one I recommend anyway for
2080 other reasons. You'll need version 4.1-FINAL or greater though, and
2081 it has to have GSS support compiled in.</p>
2082
2083 <p>Neither UW-IMAP nor fetchmail compile in support for GSS by
2084 default, since it requires libraries from the Kerberos V
2085 distribution (available via FTP at <a
2086 href="ftp://athena-dist.mit.edu/pub/ATHENA/kerberos">athena-dist.mit.edu</a>).
2087 If you have these, compiling in GSS support is simple: add a
2088 <code>--with-gssapi=[/path/to/krb5/root]</code> option to
2089 configure. For instance, I have all of my Kerberos V libraries
2090 installed under /usr/krb5 so I run <code>configure
2091 --with-gssapi=/usr/krb5</code></p>
2092
2093 <p>Setting up Kerberos V authentication is beyond the scope of this
2094 FAQ (you may find Jim Rome's paper <a
2095 href="http://www.ornl.gov/~jar/HowToKerb.html">How to Kerberize
2096 your site</a> helpful), but you'll at least need to add a
2097 credential for imap/[mailhost] to the keytab of the mail server
2098 (IMAP doesn't just use the host key). Then you'll need to have your
2099 credentials ready on your machine (cf. kinit).</p>
2100
2101 <p>After that things are very simple. Set your protocol to imap-gss
2102 in your .fetchmailrc, and omit the password, since imap-gss doesn't
2103 need one. You can specify a username if you want, but this is only
2104 useful if your mailbox belongs to a username different from your
2105 Kerberos principal.</p>
2106
2107 <p>Now you don't have to worry about your password appearing in
2108 cleartext in your .fetchmailrc, or across the network.</p>
2109
2110 <h2><a id="K5" name="K5">K5. How can I use fetchmail with
2111 SSL?</a></h2>
2112
2113 <p>You'll need to have the <a
2114 href="http://www.openssl.org/">OpenSSL</a> libraries installed.
2115 Configure with --with-ssl. If you have the OpenSSL libraries
2116 installed in the default location (/usr/local/ssl) ths will
2117 suffice. If you have them installed in a non-default location,
2118 you'll need to specify it as an argument to --with-ssl after an
2119 equal sign.</p>
2120
2121 <p>Note that there is a known bug in the implementation of SSL_peek
2122 under OpenSSL versions 0.9.5 and older that fetchmail occasionally
2123 tripped over, causing hangs. It is recommended that you install
2124 0.9.6 or later.</p>
2125
2126 <p>Fetchmail binaries built this way support <code>ssl</code>,
2127 <code>sslkey</code>, and <code>sslcert</code> options that control
2128 SSL encryption. You will need to have an SSL-enabled mailserver to
2129 use these options. See the manual page for details and some words
2130 of care on the limited security provided.</p>
2131
2132 <p>If your open OpenSSL session dies with a message that complains
2133 "PRNG not seeded", update or improve your operating system. This
2134 means that the OpenSSL library on your machine has been unable to
2135 locate a source of random bits from which to seed its random-number
2136 generator; normally these come from the <tt>/dev/urandom</tt>, and
2137 this message probably means your OS doesn't have that device.</p>
2138
2139 <p>An interactive program could seed the random number generator
2140 from keystroke timings or some other form of user input. Because
2141 fetchmail is primarily designed to run forever as a background
2142 daemon, that option is not available in this case.</p>
2143
2144 <p>If you don't have the libraries installed, but do have the
2145 OpenSSL utility toolkit, something like this may work:</p>
2146
2147 <pre>
2148 poll MYSERVER port 993 plugin "openssl s_client -connect %h:%p"
2149         protocol imap username MYUSERNAME password MYPASSWORD
2150 </pre>
2151
2152 <p>You should note that SSL is only secure against a "man-in-the-middle"
2153 attack if the client is able to verify that the peer's public key is the
2154 correct one, and has not been substituted by an attacker. fetchmail can do
2155 this in one of two ways: by verifying the SSL certificate, or by checking
2156 the fingerprint of the peer's public key.</p>
2157
2158 <p>There are three parts to SSL certificate verification: checking that the
2159 domain name in the certificate matches the hostname you asked to connect to;
2160 checking that the certificate expiry date has not passed; and checking that
2161 the certificate has been signed by a known Certificate Authority (CA). This
2162 last step takes some preparation, as you need to install the root
2163 certificates of all the CA's which you might come across.</p>
2164
2165 <p>The easiest way to do this is using the root CA keys supplied in the
2166 OpenSSL distribution, which means you need to download and unpack the
2167 source tarball from www.openssl.org. Once you have done that:</p>
2168
2169 <ol>
2170 <li><code>mkdir /etc/ssl/certs</code></li>
2171 <li>in the openssl-x.x.x/certs directory: <code>cp *.pem /etc/ssl/certs/</code></li>
2172 <li>in the openssl-x.x.x/tools directory: edit c_rehash and set
2173 <code>$dir="/etc/ssl"</code></li>
2174 <li>run "perl c_rehash". This generates a number of symlinks within the
2175 /etc/ssl/certs/ directory</li>
2176 </ol>
2177
2178 <p>Now in .fetchmailrc, set option sslcertpath to point to this
2179 directory:</p>
2180
2181 <pre>
2182 poll pop3.example.com proto pop3 uidl no dns
2183   user foobar@example.com password xyzzy is foobar ssl sslcertpath /etc/ssl/certs
2184 </pre>
2185
2186 <p>If the server certificate has not been signed by a known CA (e.g. it is a
2187 self-signed certificate), then this certificate validation will always
2188 fail.</p>
2189
2190 <p>Certificate verification is always attempted. If it fails, by default a
2191 warning is printed but the connection carries on (which means you are not
2192 protected against attack). If your server's certificate has been properly
2193 set up and verifies correctly, then add the "sslcertck" option to enforce
2194 validation. If your server doesn't have a valid certificate though (e.g. it
2195 has a self-signed certificate) then it will never verify, and the only way
2196 you can protect yourself is by checking the fingerprint.</p>
2197
2198 <p>To check the peer fingerprint: first use fetchmail -v once to connect to
2199 the host, at a time when you are pretty sure that there is no attack in
2200 progress (e.g. you are not traversing any untrusted network to reach the
2201 server). Make a note of the fingerprint shown. Now embed this in your
2202 .fetchmailrc using the sslfingerprint option: e.g.</p>
2203
2204 <pre>
2205 poll pop3.example.com proto pop3 uidl no dns
2206   user foobar@example.com password xyzzy is foobar
2207   ssl sslfingerprint "67:3E:02:94:D3:5B:C3:16:86:71:37:01:B1:3B:BC:E2"
2208 </pre>
2209
2210 <p>When you next connect, the public key presented by the server will be
2211 verified against the fingerprint given. If it's different, it may mean that
2212 a man-in-the-middle attack is in progress - or it might just mean that the
2213 server changed its key. It's up to you to determine which has happened.</p>
2214
2215 <h2><a id="K6" name="K6">K6. How can I tell fetchmail not to use TLS
2216         if the server advertises it?</a></h2>
2217
2218 <p>Some servers advertise STLS (POP3) or STARTTLS (IMAP), and fetchmail
2219 will automatically attempt TLS negotiation if SSL was enabled at compile
2220 time.  This can however cause problems if the upstream didn't configure
2221 his certificates properly.</p>
2222
2223 <p>In order to prevent fetchmail from trying TLS (STLS, STARTTLS)
2224 negotiation, add this option:</p>
2225
2226 <pre>sslproto ssl23</pre>
2227
2228 <p>This restricts fetchmail's SSL/TLS protocol choice from the default
2229 "SSLv2, SSLv3, TLSv1" to the two SSL variants, disabling TLSv1. Note
2230 however that this causes the connection to be unencrypted unless an
2231 encrypting &quot;plugin&quot; is used or SSL is requested explicitly.</p>
2232
2233 <hr/>
2234 <h1>Runtime fatal errors</h1>
2235 <h2><a id="R1" name="R1">R1. Fetchmail isn't working, and -v shows
2236 'SMTP connect failed' messages.</a></h2>
2237
2238 <p>Fetchmail itself is probably working, but your SMTP port 25
2239 listener is down or inaccessible.</p>
2240
2241 <p>The first thing to check is if you can telnet to port 25 on your
2242 smtp host (which is normally 'localhost' unless you've specified an
2243 smtp option in your .fetchmailrc or on the command line) and get a
2244 greeting line from the listener. If the SMTP host is inaccessible
2245 or the listener is down, fix that first.</p>
2246
2247 <p>In Red Hat Linux 6.x, SMTP is disabled by default. To fix this,
2248 set "DAEMON=yes" in your /etc/sysconfig/sendmail file, then restart
2249 sendmail by running "/sbin/service sendmail restart".</p>
2250
2251 <p>If the listener seems to be up when you test with telnet, the
2252 most benign and typical problem is that the listener had a
2253 momentary seizure due to resource exhaustion while fetchmail was
2254 polling it -- process table full or some other problem that stopped
2255 the listener process from forking. If your SMTP host is not
2256 'localhost' or something else in /etc/hosts, the fetchmail glitch
2257 could also have been caused by transient nameserver failure.</p>
2258
2259 <p>Try running fetchmail -v again; if it succeeds, you had one of
2260 these kinds of transient glitch. You can ignore these hiccups,
2261 because a future fetchmail run will get the mail through.</p>
2262
2263 <p>If the listener tests up, but you have chronic failures trying
2264 to connect to it anyway, your problem is more serious. One way to
2265 work around chronic SMTP connect problems is to use --mda. But this
2266 only attacks the symptom; you may have a DNS or TCP routing
2267 problem. You should really try to figure out what's going on
2268 underneath before it bites you some other way.</p>
2269
2270 <p>We have one report (from toby@eskimo.com) that you can sometimes
2271 solve such problems by doing an <code>smtp</code> declaration with
2272 an IP address that your routing table maps to something other than
2273 the loopback device (he used ppp0).</p>
2274
2275 <p>We also have a report that this error can be caused by having an
2276 /etc/hosts file that associates your client host name with more
2277 than one IP address.</p>
2278
2279 <p>It's also possible that your DNS configuration isn't looking at
2280 <code>/etc/hosts</code> at all. If you're using libc5, look at
2281 <code>/etc/resolv.conf</code>; it should say something like:</p>
2282
2283 <pre>
2284         order hosts,bind
2285 </pre>
2286
2287 <p>so your <code>/etc/hosts</code> file is checked first. If you're
2288 running GNU libc6, check your <code>/etc/nsswitch.conf</code> file.
2289 Make sure it says something like</p>
2290
2291 <pre>
2292         hosts:  files dns
2293 </pre>
2294
2295 <p>again, in order to make sure <code>/etc/hosts</code> is seen
2296 first.</p>
2297
2298 <p>If you have a hostname set for your machine, and this hostname
2299 does not appear in /etc/hosts, you will be able to telnet to port
2300 25 and even send a mail with rcpt to: user@host-not-in-/etc/hosts,
2301 but fetchmail can't seem to get in touch with sendmail, no matter
2302 what you set smtpaddress to.</p>
2303
2304 <p>We had another report from a Linux user of fetchmail 2.1 who
2305 solved his SMTP connection problem by removing the reference to
2306 -lresolv from his link line and relinking. Apparently in some older
2307 Linux distributions the libc bind library version works better.</p>
2308
2309 <p>As of 2.2, the configure script has been hacked so the bind
2310 library is linked only if it is actually needed. So under Linux it
2311 won't be, and this particular cause should go away.</p>
2312
2313 <h2><a id="R2" name="R2">R2. When I try to configure an MDA,
2314 fetchmail doesn't work.</a></h2>
2315
2316 <p>(I hear this one from people who have run into the blank-line
2317 problem in <a href="#X1">X1</a>.)</p>
2318
2319 <p>Try sending yourself test mail and retrieving it using the
2320 command-line options '<code>-k -m cat</code>'. This will dump
2321 exactly what fetchmail retrieves to standard output (plus the
2322 Received line fetchmail itself adds to the headers).</p>
2323
2324 <p>If the dump doesn't match what shows up in your mailbox when you
2325 configure an MDA, your MDA is mangling the message. If it doesn't
2326 match what you sent, then fetchmail or something on the server is
2327 broken.</p>
2328
2329 <h2><a id="R3" name="R3">R3. Fetchmail dumps core when given an
2330 invalid rc file.</a></h2>
2331
2332 <p>This is usually reported from AIX or Ultrix, but has even been
2333 known to happen on Linuxes without a recent version of
2334 <code>flex</code> installed. The problem appears to be a result of
2335 building with an archaic version of lex.</p>
2336
2337 <p>Workaround: fix the syntax of your .fetchmailrc file.</p>
2338
2339 <p>Fix: build and install the latest version of <a
2340     href="http://flex.sourceforge.net/">flex</a>.</p>
2341
2342 <h2><a id="R4" name="R4">R4. Fetchmail dumps core in -V mode, but
2343 operates normally otherwise.</a></h2>
2344
2345 <p>We've had this reported to us under Linux using libc-5.4.17 and
2346 gcc-2.7.2. It does not occur with libc-5.3.12 or earlier
2347 versions.</p>
2348
2349 <p>Workaround: link with GNU malloc rather than the stock C library
2350 malloc.</p>
2351
2352 <p>We're told there is some problem with the malloc() code in that
2353 version which makes it fragile in the presence of multiple free()
2354 calls on the same pointer (the malloc arena gets corrupted).
2355 Unfortunately it appears from doing gdb traces that whatever free()
2356 calls producing the problem are being made by the C library itself,
2357 not the fetchmail code (they're all from within fclose, and not an
2358 fclose called directly by fetchmail, either).</p>
2359
2360 <h2><a id="R5" name="R5">R5. Running fetchmail in daemon mode
2361 doesn't work.</a><br/>
2362 </h2>
2363
2364 <p>We have one report from a SunOS 4.1.4 user that trying to run
2365 fetchmail in detached daemon mode doesn't work, but that using the
2366 same options with -N (nodetach) is OK. We have another report of
2367 similar behavior from one Linux user, but many other Linux users
2368 reportt no problem.</p>
2369
2370 <p>If this happens, you have a specific portability problem with
2371 the code in daemon.c that detaches and backgrounds the daemon
2372 fetchmail. The isolated Linux case has been chased down to a
2373 failure in dup(2) that may reflect a glibc bug.</p>
2374
2375 <p>As a workaround, you can start fetchmail with -N and an
2376 ampersand to background it. A Sun user recommends this:</p>
2377
2378 <pre>
2379 (fetchmail --nodetach &lt;other params&gt; &amp;)
2380 </pre>
2381
2382 <p>The extra pair of parens is significant --- it makes sure that
2383 the process detaches from the initial shell (one more shell is
2384 started and dies immediately, detaching fetchmail and making it
2385 child of PID 1). This is important when you start fetchmail
2386 interactively and than quit interactive shell. The line above makes
2387 sure fetchmail lives after that!</p>
2388
2389 <h2><a id="R6" name="R6">R6. Fetchmail randomly dies with socket
2390 errors.</a></h2>
2391
2392 <p>Check the MTU value in your PPP interface reported by
2393 <code>/sbin/ifconfig</code>. If it's over 600, change it in your
2394 PPP options file. (<code>/etc/ppp/options</code> on my box). Here
2395 are option values that work:</p>
2396
2397 <pre>
2398   mtu 552
2399   mru 552
2400 </pre>
2401
2402 <p>Another circumstance that can trigger this is if you are polling
2403 a virtual-mail-server name that is round-robin connected to
2404 different actual servers, so you get different IP addresses on
2405 different poll cycles. To work around this, change the poll name
2406 either to the real name of one of the servers in the ring or to a
2407 corresponding IP address.</p>
2408
2409 <h2><a id="R7" name="R7">R7. Fetchmail running as root stopped
2410 working after an OS upgrade</a></h2>
2411
2412 <p>In RH 6.0, the HOME value in the boot-time root environment
2413 changed from /root to / as the result of a change in init. Move
2414 your .fetchmailrc or use a -f option to explicitly point at the
2415 file. (Oddly, a similar problem has been reported from Debian
2416 systems.)</p>
2417
2418 <h2><a id="R8" name="R8">R8. Fetchmail is timing out after fetching
2419 certain messages but before deleting them</a></h2>
2420
2421 <p>There's a TCP/IP stalling problem under Redhat 6.0 (and possibly
2422 other recent Linuxes) that can cause this symptom. Brian Boutel
2423 writes:</p>
2424
2425 <blockquote>
2426 <p>TCP timestamps are turned on on my Linux boxes (I assume it's
2427 now the default). This uses 12 extra bytes per segment. When the
2428 tcp connection starts, the other end agrees a MSS of 1460, and then
2429 fragments 1460 byte chunks into 1448 and 12, because is is not
2430 allowing for the timestamp.</p>
2431
2432 <p>Then, for reasons I can't explain, it waits a long time
2433 (typically 2 minutes) after the ack is sent before sending the next
2434 (fragmented) packet. Turning off tcp timestamps avoids the
2435 fragmentation and restores normal behaviour. To do this,
2436 [execute]</p>
2437
2438 <p>echo 0 &gt; /proc/sys/net/ipv4/tcp_timestamps</p>
2439
2440 <p>I'm still unclear about the details of why this is happening. At
2441 least [now] I am now getting good performance and no queue
2442 blocking.</p>
2443 </blockquote>
2444
2445 <h2><a id="R9" name="R9">R9. Fetchmail is timing out during message
2446 fetches</a></h2>
2447
2448 <p>This is probably a general networking issue. Sending a "RETR"
2449 command will cause the server to start sending large amounts of
2450 data, which means large packets. If your networking layer has a
2451 packet-fragmentation problem, that's where you'll see it.</p>
2452
2453 <h2><a id="R10" name="R10">R10. Fetchmail is dying with
2454 SIGPIPE.</a></h2>
2455
2456 <p>This probably means you have an <code>mda</code> option. Your
2457 MDA is croaking while being passed a message. Best fix is to remove
2458 the <code>mda</code> option and pass mail to your port 25 SMTP
2459 listener.</p>
2460
2461 <p>If for some reason you are invoking sendmail via the
2462 <tt>mda</tt> option (rather than delivering to port 25 via smtp),
2463 don't forget to include the -i switch. Otherwise you will
2464 occasionally get mysterious delivery failures with a SIGPIPE as the
2465 sendmail instance dies. The problem is messages with a single dot
2466 at start of a text line.</p>
2467
2468 <h2><a id="R11" name="R11">R11. My server is hanging or emitting
2469 errors on CAPA.</a></h2>
2470
2471 <p>Your POP3 server is broken. You can work around this with the
2472 declaration <tt>auth password</tt> in your .fetchmailrc.</p>
2473
2474 <h2><a id="R12" name="R12">R12. Fetchmail isn't working and reports
2475         getaddrinfo errors.</a></h2>
2476 <ol><li>Make sure you haven't mistyped the host name or address, and that
2477     your DNS is working. If you cannot fix DNS, give the numeric host
2478     literal, for instance, 192.168.0.1</li>
2479     <li>Make sure your <code>/etc/services</code> file (or other
2480     services database) contains the necessary service entries. If you
2481     cannot fix the services database, use the --service option and give the
2482     numeric port address. Common port addresses are:<table
2483         summary="Common port addresses for IMAP, POP3 and their SSL
2484         complements.">
2485         <tr><th>service</th><th>port</th></tr>
2486         <tr><td>IMAP</td><td>143</td></tr>
2487         <tr><td>IMAP+SSL</td><td>993</td></tr>
2488         <tr><td>POP3</td><td>110</td></tr>
2489         <tr><td>POP3+SSL</td><td>995</td></tr>
2490 </table></li></ol>
2491
2492 <hr/>
2493 <h1>Hangs and lockups</h1>
2494 <h2><a id="H1" name="H1">H1. Fetchmail hangs when used with
2495 pppd.</a></h2>
2496
2497 <p>Your problem may be with pppd's 'demand' option. We have a
2498 report that fetchmail doesn't play well with it, but works with
2499 pppd if 'demand' is turned off. We have no idea why this is.</p>
2500
2501 <h2><a id="H2" name="H2">H2. Fetchmail hangs during the MAIL FROM
2502 exchange.</a></h2>
2503
2504 <p>The symptom: 'fetchmail -v' retrieves mail fine, but appears to
2505 hang after sending the MAIL FROM command</p>
2506
2507 <pre>
2508 SMTP&gt; MAIL FROM: &lt;someone@somewhere&gt;
2509 </pre>
2510
2511 <p>The hang is actually occuring when sendmail looks up a sender's
2512 address in DNS. The problem isn't in fetchmail but in the
2513 configuration of sendmail. You must enable the 'nodns' and
2514 'nocanonify' features of sendmail.</p>
2515
2516 <p>Here was my fix for RedHat 7.2:</p>
2517
2518 <ol>
2519 <li># cd /etc/mail</li>
2520
2521 <li># cp sendmail.mc sendmail-mine.mc</li>
2522
2523 <li>Edit sendmail-mine.mc and add lines:
2524
2525 <pre>
2526    FEATURE(nodns)
2527    FEATURE(nocanonify)
2528 </pre>
2529 </li>
2530
2531 <li>Build a new sendmail.cf
2532
2533 <pre>
2534    # m4 sendmail-mine.cf &gt; /etc/sendmail.cf
2535 </pre>
2536 </li>
2537
2538 <li>Restart sendmail.</li>
2539 </ol>
2540
2541 <p>For more details consult the file
2542 /usr/share/sendmail-cf/README.</p>
2543
2544 <h2><a id="H3" name="H3">H3. Fetchmail hangs while fetching
2545 mail.</a></h2>
2546
2547 <p>The symption: 'fetchmail -v' retrieves the first few messages,
2548 but hangs returning:</p>
2549
2550 <pre>
2551  fetchmail: SMTP&lt; 550 5.0.0 Access denied
2552  fetchmail: SMTP&gt; RSET
2553  fetchmail: SMTP&lt; 250 2.0.0 Reset state
2554  .......fetchmail:  flushed
2555  fetchmail: POP3&gt; DELE 1
2556  fetchmail: POP3&lt; +OK marked deleted
2557 </pre>
2558
2559 <p>Check and see if you're allowing sendmail connections through
2560 TCP wrappers.</p>
2561
2562 <p>Adding 'sendmail : 127.0.0.1' to /etc/hosts.allow could solve
2563 this problem.</p>
2564
2565 <hr/>
2566 <h1>Disappearing mail</h1>
2567 <h2><a id="D1" name="D1">D1. I think I've set up fetchmail
2568 correctly, but I'm not getting any mail.</a></h2>
2569
2570 <p>Maybe you have a .forward or alias set up that you've forgotten
2571 about. You should probably remove it.</p>
2572
2573 <p>Or maybe you're trying to run fetchmail in multidrop mode as
2574 root without a .fetchmailrc file. This doesn't do what you think it
2575 should; see question <a href="#C1">C1</a>.</p>
2576
2577 <p>Or you may not be connecting to the SMTP listener. Run fetchmail
2578 -v and see <a href="#R1">R1</a>.</p>
2579
2580 <p>Or you may have your local user set incorrectly. In the
2581 following line</p>
2582
2583 <pre>
2584         user 'remoteuser' there with password '*' is 'localuser' here
2585 </pre>
2586
2587 <p>make sure that 'localuser' does exist and can receive mail.</p>
2588
2589 <h2><a id="D2" name="D2">D2. All my mail seems to disappear after a
2590 dropped connection.</a></h2>
2591
2592 <p>One POP3 daemon used in the Berkeley Unix world that reports
2593 itself as POP3 version 1.004 actually throws the queue away. 1.005
2594 fixed that. If you're running this one, upgrade immediately. (It
2595 also truncates long lines at column 1024)</p>
2596
2597 <p>Many POP servers, if an interruption occurs, will restore the
2598 whole mail queue after about 10 minutes. Others will restore it
2599 right away. If you have an interruption and don't see it right
2600 away, cross your fingers and wait ten minutes before retrying.</p>
2601
2602 <p>Some servers (such as Microsoft's NTMail) are mis-designed to
2603 restore the entire queue, including messages you have deleted. If
2604 you have one of these and it flakes out on you a lot, try setting a
2605 small <code>--fetchlimit</code> value. This will result in more IP
2606 connects to the server, but will mean it actually executes changes
2607 to the queue more often.</p>
2608
2609 <p>Qualcomm's qpopper, used at many BSD Unix sites, is better
2610 behaved. If its connection is dropped, it will first execute all
2611 DELE commands as though you had issued a QUIT (this is a technical
2612 violation of the POP3 RFCs, but a good idea in a world of flaky
2613 phone lines). Then it will re-queue any message that was being
2614 downloaded at hangup time. Still, qpopper may require a noticeable
2615 amount of time to do deletions and clean up its queue. (Fetchmail
2616 waits a bit before retrying in order to avoid a 'lock busy'
2617 error.)</p>
2618
2619 <h2><a id="D3" name="D3">D3. Mail that was being fetched when I
2620 interrupted my fetchmail seems to have been vanished.</a></h2>
2621
2622 <p>Fetchmail only sends a delete mail request to the server when
2623 either (a) it gets a positive delivery acknowledgment from the SMTP
2624 listener, or (b) it gets one of the spam-filter errors (see the
2625 description of the <code>antispam&gt;</code> option) from the
2626 listener. No interrupt can cause it to lose mail.</p>
2627
2628 <p>However, IMAP2bis has a design problem in that its normal fetch
2629 command marks a message 'seen' as soon as the fetch command to get
2630 it is sent down. If for some reason the message isn't actually
2631 delivered (you take a line hit during the download, or your port 25
2632 listener can't find enough free disk space, or you interrupt the
2633 delivery in mid-message) that 'seen' message can lurk invisibly in
2634 your server mailbox forever.</p>
2635
2636 <p>Workaround: add the '<code>fetchall</code>' keyword to your
2637 fetch options.</p>
2638
2639 <p>Solution: switch to an <a href="http://www.imap.org">IMAP4</a>
2640 server.</p>
2641
2642 <hr/>
2643 <h1>Multidrop-mode problems</h1>
2644 <h2><a id="M1" name="M1">M1. I've declared local names, but all my
2645 multidrop mail is going to root anyway.</a></h2>
2646
2647 <p>Somehow your fetchmail is never recognizing the hostname part of
2648 recipient names it parses out of To/Cc/envelope-header lines as
2649 matching the name of the mailserver machine. To check this, run
2650 fetchmail in foreground with -v -v on. You will probably see a lot
2651 of messages with the format "line rejected, %s is not an alias of
2652 the mailserver" or "no address matches; forwarding to %s."</p>
2653
2654 <p>These errors usually indicate some kind of DNS configuration
2655 problem either on the server or your client machine.</p>
2656
2657 <p>The easiest workaround is to add a '<code>via</code>' option (if
2658 necessary) and add enough aka declarations to cover all of your
2659 mailserver's aliases, then say '<code>no dns</code>'. This will
2660 take DNS out of the picture (though it means mail may be
2661 uncollected if it's sent to an alias of the mailserver that you
2662 don't have listed).</p>
2663
2664 <p>It would be better to fix your DNS, however. DNS problems can
2665 hurt you in lots of ways, for example by making your machines
2666 intermittently or permanently unreachable to the rest of the
2667 net.</p>
2668
2669 <p>Occasionally these errors indicate the sort of header-parsing
2670 problem described in <a href="#M7">M7</a>.</p>
2671
2672 <h2><a id="M2" name="M2">M2. I can't seem to get fetchmail to route
2673 to a local domain properly.</a></h2>
2674
2675 <p>A lot of people want to use fetchmail as a poor man's
2676 internetwork mail gateway, picking up mail accumulated for a whole
2677 domain in a single server mailbox and then routing based on what's
2678 in the To/Cc/Bcc lines.</p>
2679
2680 <p>In general, this is not really a good idea. It would be smarter
2681 to just let the mail sit in the mailserver's queue and use
2682 fetchmail's ETRN or ODMR modes to trigger SMTP sends periodically
2683 (of course, this means you have to poll more frequently than the
2684 mailserver's expiration period). If you can't arrange this, try
2685 setting up a UUCP feed.</p>
2686
2687 <p>If neither of these alternatives is available, multidrop mode
2688 may do (though you <em>are</em> going to get hurt by some mailing
2689 list software; see the caveats under THE USE AND ABUSE OF MULTIDROP
2690 MAILBOXES on the man page). If you want to try it, the way to do it
2691 is with the '<code>localdomains</code>' option.</p>
2692
2693 <p>In general, if you use localdomains you need to make sure of two
2694 other things:</p>
2695
2696 <p><strong>1. You've actually set up your .fetchmailrc entry to
2697 invoke multidrop mode.</strong></p>
2698
2699 <p>Many people set a '<code>localdomains</code>' list and then
2700 forget that fetchmail wants to see more than one name (or the
2701 wildcard '*') in a '<code>here</code>' list before it will do
2702 multidrop routing.</p>
2703
2704 <p><strong>2. You may have to set 'no envelope'.</strong></p>
2705
2706 <p>Normally, multidrop mode tries to deduce an envelope address
2707 from a message before parsing the To/Cc/Bcc lines (this enables it
2708 to avoid losing to mailing list software that doesn't put a
2709 recipient address in the To lines).</p>
2710
2711 <p>Some ways of accumulating a whole domain's messages in a single
2712 server mailbox mean it all ends up with a single envelope address
2713 that is useless for rerouting purposes. You may have to set
2714 '<code>no envelope</code>' to prevent fetchmail from being
2715 bamboozled by this.</p>
2716
2717 <p>Check also answer <a href="#T1">T1</a> on a reliable way to do
2718 multidrop delivery if your ISP (or your mail redirection provider)
2719 is using qmail.</p>
2720
2721 <h2><a id="M3" name="M3">M3. I tried to run a mailing list using
2722 multidrop, and I have a mail loop!</a></h2>
2723
2724 <p>This isn't fetchmail's fault. Check your mailing list. If the
2725 list expansion includes yourself or anybody else at your mailserver
2726 (that is, not on the client side) you've created a mail loop. Just
2727 chop the host part off any local addresses in the list.</p>
2728
2729 <p>If you use sendmail, you can check the list expansion with
2730 <code>sendmail -bv</code>.</p>
2731
2732 <h2><a id="M4" name="M4">M4. My multidrop fetchmail seems to be
2733 having DNS problems.</a></h2>
2734
2735 <p>We have one report from a Linux user (not the same one as in <a
2736 href="#R1">R1</a>!) who solved this problem by removing the
2737 reference to -lresolv from his link line and relinking. Apparently
2738 in some older Linux distributions the libc5 bind library version
2739 works better.</p>
2740
2741 <p>As of 2.2, the configure script has been hacked so the bind
2742 library is linked only if it is actually needed. So under Linux it
2743 won't be, and this problem should go away.</p>
2744
2745 <h2><a id="M5" name="M5">M5. I'm seeing long DNS delays before each
2746 message is processed.</a></h2>
2747
2748 <p>Use the '<code>aka</code>' option to pre-declare as many of your
2749 mailserver's DNS names as you can. When an address's host part
2750 matches an aka name, no DNS lookup needs to be done to check
2751 it.</p>
2752
2753 <p>If you're sure you've pre-declared all of your mailserver's DNS
2754 names, you can use the '<code>no dns</code>' option to prevent
2755 other hostname parts from being looked up at all.</p>
2756
2757 <p>Sometimes delays are unavoidable. Some SMTP listeners try to
2758 call DNS on the From-address hostname as a way of checking that the
2759 address is valid.</p>
2760
2761 <h2><a id="M6" name="M6">M6. How do I get multidrop mode to work
2762 with majordomo?</a></h2>
2763
2764 <p>In order for sendmail to execute the command strings in the
2765 majordomo alias file, it is necessary for sendmail to think that
2766 the mail it receives via SMTP really is destined for a local user
2767 name. A normal virtual-domain setup results in delivery to the
2768 default mailbox, rather than expansion through majordomo.</p>
2769
2770 <p>Michael &lt;michael@bizsystems.com&gt; gave us a recipe for
2771 dealing with this case that pairs a run control file like this:</p>
2772
2773 <pre>
2774 poll your.pop3.server proto pop3:
2775     no envelope no dns
2776     localdomains virtual.localdomain1.com virtual.localdomain2.com ...
2777     user yourISPusername is root * here,
2778     password yourISPpassword fetchall
2779 </pre>
2780
2781 <p>with a hack on your local sendmail.cf like this:</p>
2782
2783 <pre>
2784 #############################################
2785 #  virtual info, local hack for ruleset 98  #
2786 #############################################
2787
2788 # domains to treat as direct mapped local domain
2789
2790 CVvirtual.localdomain1.com virtual.localdomain2.com ...
2791 ---------------------------
2792 in ruleset 98 add
2793 -------------------------
2794 # handle virtual users
2795
2796 R$+ &lt;@ $=V . &gt;          $: $1 &lt; @ $j . &gt;
2797 R&lt; @ &gt; $+ &lt; @ $=V . &gt;   $: $1 &lt; @ $j . &gt;
2798 R&lt; @ &gt; $+               $: $1
2799 R&lt; error : $- $+ &gt; $*   $#error $@ $1 $: $2
2800 R&lt; $+ &gt; $+ &lt; @ $+ &gt;     $: $&gt;97 $1
2801 </pre>
2802
2803 <p>This ruleset just strips virtual domain names off the addresses
2804 of incoming mail. Your sendmail must be 8.8 or newer for this to
2805 work. Michael says:</p>
2806
2807 <blockquote>I use this scheme with 2 virtual domains and the
2808 default ISP user+domain and service about 30 mail accounts +
2809 majordomo on my inside pop3 server with fetchmail and sendmail
2810 8.83</blockquote>
2811
2812 <h2><a id="M7" name="M7">M7. Multidrop mode isn't parsing envelope
2813 addresses from my Received headers as it should.</a></h2>
2814
2815 <p>It may happen that you're getting what appear to be well-formed
2816 sendmail Received headers, but fetchmail can't seem to extract an
2817 envelope address from them. There can be a couple of reasons for
2818 this.</p>
2819
2820 <h3>Spurious Received lines need to be skipped:</h3>
2821
2822 <p>First, fetchmail might be looking at the wrong Received header.
2823 Normally it looks only on the first one it sees, on the theory that
2824 that one was last added and is going to be the one containing your
2825 mailserver's theory of who the message was addressed to.</p>
2826
2827 <p>Some (unusual) mailserver configurations will generate extra
2828 Received lines which you need to skip. To arrange this, use the
2829 optional skip prefix argument of the 'envelope' option; you may
2830 need to say something like '<code>envelope 1 Received</code>' or
2831 '<code>envelope 2 Received</code>'.</p>
2832
2833 <h3>The 'by' clause doesn't contain a mailserver alias:</h3>
2834
2835 <p>When fetchmail parses a Received line that looks like</p>
2836
2837 <pre>
2838 Received: from send103.yahoomail.com (send103.yahoomail.com [205.180.60.92])
2839     by iserv.ttns.net (8.8.5/8.8.5) with SMTP id RAA10088
2840     for &lt;ksturgeon@fbceg.org&gt;; Wed, 9 Sep 1998 17:01:59 -0700
2841 </pre>
2842
2843 <p>it checks to see if 'iserv.ttns.net' is a DNS alias of your
2844 mailserver before accepting 'ksturgeon@fbceg.org' as an envelope
2845 address. This check might fail if your DNS were misconfigured, or
2846 if you were using 'no dns' and had failed to declare iserv.ttns.net
2847 as an alias of your server.</p>
2848
2849 <h2><a id="M8" name="M8">M8. Users are getting multiple copies of
2850 messages.</a></h2>
2851
2852 <p>It's a consequence of multidrop. What's happening is that you
2853 have N users subscribed to the same list. The list software sends N
2854 copies, not knowing they will end up in the same multidrop box.
2855 Since they are both locally addressed to all N users, fetchmail
2856 delivers N copies to each user.</p>
2857
2858 <p>Fetchmail tries to eliminate adjacent duplicate messages in a
2859 multidrop mailbox. However, this logic depends on the message-ID
2860 being identical in both copies. It also depends on the two copies
2861 being adjacent in the server mailbox. The former is usually the
2862 case, but the latter condition sometimes fails in a
2863 timing-dependent way if the server was processing multiple incoming
2864 mail streams.</p>
2865
2866 <p>I could eliminate this problem by keeping a list of all
2867 message-IDs received during a poll so far and dropping any message
2868 that matches a seen mail ID. The trouble is that this is an O(N**2)
2869 operation that might significantly slow down the retrieval of large
2870 mail batches.</p>
2871
2872 <hr/>
2873 <h1>Mangled mail</h1>
2874 <h2><a id="X1" name="X1">X1. Spurious blank lines are appearing in
2875 the headers of fetched mail.</a></h2>
2876
2877 <p>What's probably happening is that the POP/IMAP daemon on your
2878 mailserver is inserting a non-RFC822 header (like X-POP3-Rcpt:) and
2879 something in your delivery path (most likely an old version of the
2880 <em>deliver</em> program, which sendmail often calls to do local
2881 delivery) is failing to recognize it as a header.</p>
2882
2883 <p>This is not fetchmail's problem. The first thing to try is
2884 installing a current version of <em>deliver</em>. If this doesn't
2885 work, try to figure out which other program in your mail path is
2886 inserting the blank line and replace that. If you can't do either
2887 of these things, pick a different MDA (such as maildrop) and
2888 declare it with the '<code>mda</code>' option.</p>
2889
2890 <h2><a id="X2" name="X2">X2. My mail client can't see a Subject
2891 line.</a></h2>
2892
2893 <p>First, see <a href="#X1">X1</a>. This is quite probably the same
2894 problem (X-POP3-Rcpt header or something similar being inserted by
2895 the server and choked on by an old version of
2896 <em>deliver</em>).</p>
2897
2898 <p>The O'Reilly sendmail book does warn that IDA sendmail doesn't
2899 process X- headers correctly. If this is your problem, all I can
2900 suggest is replacing IDA sendmail, because it's broken and not
2901 RFC822 conformant.</p>
2902
2903 <h2><a id="X3" name="X3">X3. Messages containing "From" at start of
2904 line are being split.</a></h2>
2905
2906 <p>If you know the messages aren't split in your server mailbox,
2907 then this is a problem with your POP/IMAP server, your client-side
2908 SMTP listener or your local delivery agent. Fetchmail cannot split
2909 messages.</p>
2910
2911 <p>Some POP server daemons ignore Content-Length headers and split
2912 messages on From lines. We have one report that the 2.1 version of
2913 the BSD popper program (as distributed on Solaris 2.5 and
2914 elsewhere) is broken this way.</p>
2915
2916 <p>You can test this. Declare an mda of 'cat' and send yourself one
2917 piece of mail containing "From" at start of a line. If you see a
2918 split message, your POP/IMAP server is at fault. Upgrade to a more
2919 recent version.</p>
2920
2921 <p>Sendmail and other SMTP listeners don't split RFC822 messages
2922 either. What's probably happening is either sendmail's local
2923 delivery agent or your mail reader are not quite RFC822-conformant
2924 and are breaking messages on what it thinks are Unix-style From
2925 headers. You can figure out which by looking at your client-side
2926 mailbox with vi or more. If the message is already split in your
2927 mailbox, your local delivery agent is the problem. If it's not,
2928 your mailreader is the problem.</p>
2929
2930 <p>If you can't replace the offending program, take a look at your
2931 sendmail.cf file. There will likely be a line something like</p>
2932
2933 <pre>
2934 Mlocal, P=/usr/bin/procmail, F=lsDFMShP, S=10, R=20/40, A=procmail -Y -d $u
2935 </pre>
2936
2937 <p>describing your local delivery agent. Try inserting the 'E'
2938 option in the flags part (the F= string). This will make sendmail
2939 turn each dangerous start-of-line From into a &gt;From, preventing
2940 programs further downstream from acting up.</p>
2941
2942 <h2><a id="X4" name="X4">X4.</a> <a id="generic_mangling"
2943 name="generic_mangling">My mail is being mangled in a new and
2944 different way</a></h2>
2945
2946 <p>The first thing you need to do is pin down what program is doing
2947 the mangling. We don't like getting bug reports about fetchmail
2948 that are actually due to some other program's malfeasance, so
2949 please go through this diagnostic sequence before sending us a
2950 complaint.</p>
2951
2952 <p>There are five possible culprits to consider, listed here in the
2953 order they pass your mail:</p>
2954
2955 <ol>
2956 <li>Programs upstream of your server mailbox.</li>
2957
2958 <li>The POP or IMAP server on your mailserver host.</li>
2959
2960 <li>The fetchmail program itself.</li>
2961
2962 <li>Your local sendmail.</li>
2963
2964 <li>Your LDA (local delivery agent), as called by sendmail or
2965 specified by <code>mda</code>.</li>
2966 </ol>
2967
2968 <p>Often it happens that fetchmail itself is OK, but using it
2969 exposes pre-existing bugs in your downstream software, or your
2970 downstream software has a bad interaction with POP/IMAP. You need
2971 to pin down exactly where the message is being garbled in order to
2972 deduce what is actually going on.</p>
2973
2974 <p>The first thing to do is send yourself a test message, and
2975 retrieve it with a .fetchmailrc entry containing the following (or
2976 by running with the equivalent command-line options):</p>
2977
2978 <pre>
2979     mda "cat &gt;MBOX" keep fetchall
2980 </pre>
2981
2982 <p>This will capture what fetchmail gets from the server, except
2983 for (a) the extra Received header line fetchmail prepends, (b)
2984 header address changes due to <code>rewrite</code>, and (c) any
2985 end-of-line changes due to the <code>forcecr</code> and
2986 <code>stripcr</code> options. MBOX will in fact contain what
2987 programs downstream of fetchmail see.</p>
2988
2989 <p>The most common causes of mangling are bugs and
2990 misconfigurations in those downstream programs. If MBOX looks
2991 unmangled, you will know that is what is going on and that it is
2992 not fetchmail's problem. Take a look at the other FAQ items in this
2993 section for possible clues about how to fix your problem.</p>
2994
2995 <p>If MBOX looks mangled, the next thing to do is compare it with
2996 your actual server mailbox (if possible). That's why you specified
2997 <code>keep</code>, so the server copy would not be deleted. If your
2998 server mailbox looks mangled, programs upstream of your server
2999 mailbox are at fault. Unfortunately there is probably little you
3000 can do about this aside from complaining to your site postmaster,
3001 and nothing at all fetchmail can do about it!</p>
3002
3003 <p>More likely you'll find that the server copy looks OK. In that
3004 case either the POP/IMAP server or fetchmail is doing the mangling.
3005 To determine which, you'll need to telnet to the server port and
3006 simulate a fetchmail session yourself. This is not actually hard
3007 (both POP3 and IMAP are simple, text-only, line-oriented protocols)
3008 but requires some attention to detail. You should be able to use a
3009 fetchmail -v log as a model for a session, but remember that the
3010 "*" in your LOGIN or PASS command dump has to be replaced with your
3011 actual password.</p>
3012
3013 <p>The objective of manually simulating fetchmail is so you can see
3014 exactly what fetchmail sees. If you see a mangled message, then
3015 your server is at fault, and you probably need to complain to your
3016 mailserver administrators. However, we like to know what the broken
3017 servers are so we can warn people away from them. So please send us
3018 a transcript of the session including the mangling <em>and the
3019 server's initial greeting line</em>. Please tell us anything else
3020 you think might be useful about the server, like the server host's
3021 operating system.</p>
3022
3023 <p>If your manual fetchmail simulation shows an unmangled message,
3024 congratulations. You've found an actual fetchmail bug, which is a
3025 pretty rare thing these days. Complain to us and we'll fix it.
3026 Please include the session transcript of your manual fetchmail
3027 simulation along with the other things described in the FAQ entry
3028 on <a href="#G3">reporting bugs</a>.</p>
3029
3030 <h2><a id="X5" name="X5">X5. Using POP3, retrievals seems to be
3031 fetching too much!</a></h2>
3032
3033 <p>This may happen in versions of fetchmail after 4.4.1 and before
3034 4.4.8. Versions after 4.4.1 use POP3's TOP command rather than
3035 RETR, in order to avoid marking the message seen (leaving it unseen
3036 is helpful for later recovery if you lose your connection in the
3037 middle of a retrieval).</p>
3038
3039 <p>Versions of fetchmail from 4.4.2 through 4.4.7 had a bad
3040 interaction with Eudora qpopper versions 2.3 and later. The TOP
3041 bounds check was fooled by an overflow condition in the TOP
3042 argument. Decrementing the TOP argument in 4.4.7 fixed this.</p>
3043
3044 <p>Fix: Upgrade to a later version of fetchmail.</p>
3045
3046 <p>Workaround: set the <code>fetchall</code> option. Under POP3
3047 this has the side effect of forcing RETR use.</p>
3048
3049 <h2><a id="X6" name="X6">X6. My mail attachments are being dropped
3050 or mangled.</a></h2>
3051
3052 <p>Fetchmail doesn't discard attachments; fetchmail doesn't have any idea
3053 that attachments are there.  Fetchmail treats the body of each message as
3054 an uninterpreted byte stream and passes it through without alteration.
3055 If you are not receiving attachments through fetchmail, it is because
3056 your mailserver is not sending them to you.</p>
3057
3058 <p>The fix for this is to replace your mailserver with one that works.
3059 If its operating system makes this difficult, you should replace its
3060 operating system with one that works. Windows- and NT-based POP servers
3061 seem especially prone to mangle attachments. If you are running one
3062 of these, replacing your server with a Unix machine is probably the
3063 only effective solution.</p>
3064
3065 <p>We've had sporadic reports of problems with Microsoft Exchange and
3066 Outlook servers.  These sometimes randomly fail to ship
3067 attachments to your client.  This is a known bug, acknowledged by
3068 Microsft.</p>
3069
3070 <p>They may also mangle the attachments they do pass through.  If you
3071 see unreadable attachments with a ContentType of "application/x-tnef",
3072 you're having this problem.  The <a
3073 href="http://world.std.com/~damned/software.html">TNEF</a> utility may
3074 help.</p>
3075
3076 <p>The Mail Max POP3 server and the InterChange and Imail IMAP
3077 servers are known to simply drop MIME attachments when uploading
3078 messages.</p>
3079
3080 <p>We've also had a report that Lotus Notes sometimes trashes the
3081 MIME type of messages. In particular, it seems to modify MIME
3082 headers of type application/pdf, mangling the type to
3083 application/octet-stream. It may corrupt other MIME types as
3084 well.</p>
3085
3086 <p>The IMAP service of Lotus Domino has a known bug in the way it
3087 generates MIME Content-type headers (observed on Lotus Domino
3088 5.0.2b). It's a subtle one that doesn't show up when Netscape
3089 Messenger and other clients use a FETCH BODY[] to grab the whole
3090 message. When fetchmail uses FETCH RFC822.HEADER and FETCH
3091 RFC822.TEXT to get first the header and then the body, Domino
3092 generates different Boundary tags for each part, .e.g. one tag is
3093 declared in the Content-type header and another is used to separate
3094 the MIME parts in the body. This doesn't work. (I have heard a
3095 rumor that this bug is scheduled to be fixed in Domino release 6;
3096 you can find a workaround at contrib/domino.)</p>
3097
3098 <p>Rob Funk explains: Unfortunately there also remain many mail
3099 user agents that don't write correct MIME messages. One big
3100 offender is Sun MailTool attachments, which are formatted enough
3101 like MIME that some programs could get confused; these are
3102 generated by the mailtool and dtmail programs (the mail programs in
3103 Sun's OpenWindows and CDE environments).</p>
3104
3105 <p>One solution to problems related to misformatted MIME
3106 attachments is the <a
3107 href="ftp://ftp.uu.se/pub/unix/networking/mail/emil/">emil</a>
3108 program; see its <a
3109 href="ftp://ftp.uu.se/pub/unix/networking/mail/emil/TUTORIAL.html">tutorial</a>
3110 file at that site for details on emil. It is useful for converting
3111 character sets, attachment encodings, and attachment formats. At
3112 this writing, emil does not appear to have been maintained since a
3113 patch to version 2.1.0beta9 in late 1997, but it is still
3114 useful.</p>
3115
3116 <p>One good way of using emil is from within procmail. You can have
3117 procmail look for signs of problematic message formatting, and pipe
3118 those messages through emil to be fixed. emil will not always be
3119 able to fix the problem, in which case the message is
3120 unchanged.</p>
3121
3122 <p>A possible rule to be inserted into a .procmailrc file for using
3123 emil would be:</p>
3124
3125 <pre>
3126 :0HB
3127 * 1^1 ^Content-Type: \/X-sun[^;]*
3128 * 1^1 ^Content-Type: \/application/mac-binhex[^;]*
3129 * 1^1 ^Content-Transfer-Encoding: \/x-binhex[^;]*
3130 * 1^1 ^Content-Transfer-Encoding: \/x-uuencode[^;]*
3131 {
3132   LOG="Converting $MATCH
3133 "
3134   :0fw
3135   | emil -A B -T Q -B BA -C iso-8859-1 -H Q -F MIME \
3136   | gawk '{gsub(/\r\n?/,"\n");print $0}'
3137 }
3138 </pre>
3139
3140 <p>The "1^1" in the conditions is a way of specifying to procmail
3141 that if any one of the four listed expressions is found in the
3142 message, the total condition is considered true, and the message
3143 gets passed into emil. These four subconditions check whether the
3144 message has a Sun attachment, a binhex attachment, or a uuencoded
3145 attachment; there are others that could be added to check these
3146 things better and to check other relevant conditions. The "LOG="
3147 line writes a line into the procmail log; the lone double-quote
3148 beginning the following line makes sure the log entry gets an
3149 end-of-line character. The call to gawk (GNU awk) is for fixing
3150 end-of-line conventions, since emil sometimes leaves those in the
3151 format of the originating machine; it could probably be replaced
3152 with a sed subsitution.</p>
3153
3154 <p>The emil call itself tries to ensure that the message uses:</p>
3155
3156 <ul>
3157 <li>BinHex encoding for any Apple Macintosh-only attachments</li>
3158
3159 <li>Quoted-Printable encoding for text (when necessary)</li>
3160
3161 <li>Base64 Encoding for binary attachments</li>
3162
3163 <li>iso-8859-1 character set for text (unfortunately emil can't yet
3164 convert from windows-1252 to iso-8859-1)</li>
3165
3166 <li>Quoted-Printable encoding for headers</li>
3167
3168 <li>MIME attachment format</li>
3169 </ul>
3170
3171 <p>Most of these (the primary exceptions being the character set
3172 and the Apple binary format) are as they should be for good
3173 internet interoperability.</p>
3174
3175 <p>Some mail servers (Lotus Domino is a suspect here) mangle
3176 Sun-formatted messages, so the conversion to MIME needs to happen
3177 before such programs see the message. The ideal is to rid the world
3178 of Sun-formatted messages: don't use mailtool for sending
3179 attachments (it doesn't understand MIME anyway, and most of the
3180 world doesn't understand its attachments, so it really shouldn't be
3181 used at all), and make sure dtmail is set to use MIME rather than
3182 mailtool's format.</p>
3183
3184 <h2><a id="X7" name="X7">X7. Some mail attachments are hanging
3185 fetchmail.</a></h2>
3186
3187 <p>This isn't fetchmail's problem either; fetchmail doesn't know
3188 anything about mail attachments and doesn't treat them any
3189 differently from plain message data.</p>
3190
3191 <p>The most usual cause of this problem seems to be bugs in your
3192 network transport layer's capability to handle the very large
3193 TCP/IP packets that attachments tend to turn into. You can test
3194 this theory by trying to download the offending message through a
3195 webmail account; using HTTP for the message tends to simulate
3196 large-packet stress rather well, and you will probably find that
3197 the messages that seem to be choking fetchmail will make your HTTP
3198 download speed drop to zero.</p>
3199
3200 <p>This problem can be caused by subtle bugs in the
3201 packet-reassembly layer of your TCP/IP stack; these often don't
3202 manifest at normal packet sizes. It may also be caused by
3203 malfunctioning path-MTU discovery on the mailserver. Or, if there's
3204 a modem in the link, it may be because the attachment contains the
3205 Hayes mode escape "+++".</p>
3206
3207 <h2><a id="X8" name="X8">X8. A spurious ) is being appended to my
3208 messages.</a></h2>
3209
3210 <p>Blame it on that rancid pile of dung and offal called Microsoft
3211 Exchange. Due to the problem described in <a href="#S2">S2</a>, the
3212 IMAP support in fetchmail cannot follow the IMAP protocol 100%.
3213 Most of the time it doesn't matter, but if you combine it with an
3214 SMTP server that behaves unusually, you'll get a spurious ) at
3215 message end.</p>
3216
3217 <p>One piece of software that can trigger this is the Interchange
3218 mail server, as used by, e.g., mailandnews.com. Here's what
3219 happens:</p>
3220
3221 <p>1. Someone sends mail to your account. The last line of the
3222 message contains text. So at the SMTP level, the message ends with,
3223 e.g. "blahblah\r\n.\r\n"</p>
3224
3225 <p>2. The SMTP handler sees the final "\r\n.\r\n" and recognizes
3226 the end of the message. However, instead of doing the normal thing,
3227 which is tossing out the ".\r\n" and leaving the first '\r\n' as
3228 part of the email body, Interchange throws out the whole
3229 "\r\n.\r\n", and leaves the email body without any line terminator
3230 at the end of it. RFC821 does not forbid this, though it probably
3231 should.</p>
3232
3233 <p>3. Fetchmail, or some other IMAP client, asks for the message.
3234 IMAP returns it, but it's enclosed inside parentheses, according to
3235 the protocol. The message size in bytes is also present. Because
3236 the message doesn't end with a line terminator, the IMAP client
3237 sees:</p>
3238
3239 <pre>
3240
3241  ....blahblah)...
3242 </pre>
3243
3244 <p>where the ')' is from IMAP.</p>
3245
3246 <p>4. Fetchmail only deals with complete lines, and can't trust the
3247 stated message size because Microsoft Exchange fscks it up.</p>
3248
3249 <p>5. As a result, fetchmail takes the final 'blahblah)' and puts
3250 it at the end of the message it forwards on. If you have verbosity
3251 on, you'll get a message about actual != expected.</p>
3252
3253 <p>There is no fix for this. The nuke mentioned in <a
3254 href="#S2">S2</a> looks more tempting all the time.</p>
3255
3256 <h2><a id="X9" name="X9">X9. Missing "Content-Transfer-Encoding" header
3257         with Domino IMAP</a></h2>
3258
3259 <p>Domino 6 IMAP was found by Anthony Kim in February 2006 to
3260 erroneously omit the "Content-Transfer-Encoding" header in messages
3261 downloaded through IMAP, causing messages to display improperly. This
3262 happened with Domino's incoming mail format configured to "Prefers
3263 MIME". Solution: switch Domino to "Keep in Sender's format".</p>
3264
3265 <p>Reference: <a
3266     href="http://lists.ccil.org/pipermail/fetchmail-friends/2006-March/010015.html">Anthony
3267     Kim's list post</a>
3268 </p>
3269
3270 <hr/>
3271 <h1>Other problems</h1>
3272 <h2><a id="O1" name="O1">O1. The --logfile option doesn't work if
3273 the logfile doesn't exist.</a></h2>
3274
3275 <p>This is a feature, not a bug. It's in line with normal practice
3276 for system daemons and allows you to suppress logging by removing
3277 the log, without hacking potentially fragile startup scripts. To
3278 get around it, just touch(1) the logfile before you run fetchmail
3279 (this will have no effect on the contents of the logfile if it
3280 already exists).</p>
3281
3282 <h2><a id="O2" name="O2">O2. Every time I get a POP or IMAP message
3283 the header is dumped to all my terminal sessions.</a></h2>
3284
3285 <p>Fetchmail uses the local sendmail to perform final delivery,
3286 which Netscape and other clients doesn't do; the announcement of
3287 new messages is done by a daemon that sendmail pokes. There should
3288 be a "biff" command to control this. Type</p>
3289
3290 <pre>
3291 biff n
3292 </pre>
3293
3294 <p>to turn it off. If this doesn't work, try the command</p>
3295
3296 <pre>
3297 chmod -x $(tty)
3298 </pre>
3299
3300 <p>which is essentially what <code>biff -n</code> will do. If this
3301 doesn't work, comment out any reference to "comsat" in your
3302 /etc/inetd.conf file and restart inetd.</p>
3303
3304 <p>In Slackware Linux distributions, the last line in /etc/profile
3305 is</p>
3306
3307 <pre>
3308 biff y
3309 </pre>
3310
3311 Change this to
3312
3313 <pre>
3314 biff n
3315 </pre>
3316
3317 to solve the problem system-wide.
3318
3319 <h2><a id="O3" name="O3">O3. Does fetchmail reread its rc file
3320 every poll cycle?</a></h2>
3321
3322 <p>No, but versions 5.2.2 and later will notice when you modify
3323 your rc file and restart, reading it.</p>
3324
3325 <h2><a id="O4" name="O4">O4. Why do deleted messages show up again
3326 when I take a line hit while downloading?</a></h2>
3327
3328 <p>Because you're using a POP3 other than Qualcomm qpopper, or an
3329 IMAP with a long expunge interval.</p>
3330
3331 <p>According to the POP3 RFCs, deletes aren't actually performed
3332 until you issue the end-of-session QUIT command. Fetchmail cannot
3333 fix this, because doing it right takes cooperation from the server.
3334 There are two possible remedies:</p>
3335
3336 <p>One is to switch to qpopper (the free POP3 server from Qualcomm,
3337 the Eudora people). The qpopper software violates the POP3 RFCs by
3338 doing an expunge (removing deleted messages) on a line hangup, as
3339 well as on processing a QUIT command.</p>
3340
3341 <p>The other (which we recommend) is to switch to <a
3342 href="http://www.imap.org">IMAP</a>. IMAP has an explicit expunge
3343 command and fetchmail normally uses it to delete messages
3344 immediately after they are downloaded.</p>
3345
3346 <p>If you get very unlucky, you might take a line hit in the window
3347 between the delete and the expunge. If you've set a longer expunge
3348 interval, the window gets wider. This problem should correct itself
3349 the next time you complete a successful query.</p>
3350
3351 <h2><a id="O5" name="O5">O5. Why is fetched mail being logged with
3352 my name, not the real From address?</a></h2>
3353
3354 <p>Because logging is done based on the address indicated by the
3355 sending SMTP's MAIL FROM, and some listeners are picky about that
3356 address.</p>
3357
3358 <p>Some SMTP listeners get upset if you try to hand them a MAIL
3359 FROM address naming a different host than the originating site for
3360 your connection. This is a feature, not a bug -- it's supposed to
3361 help prevent people from forging mail with a bogus origin site.
3362 (RFC 1123 says you shouldn't do this exclusion...)</p>
3363
3364 <p>Since the originating site of a fetchmail delivery connection is
3365 localhost, this effectively means these picky listeners will barf
3366 on any MAIL FROM address fetchmail hands them with an @ in it!</p>
3367
3368 <p>Versions 2.1 and up try the header From address first and fall
3369 back to the calling-user ID. So if your SMTP listener isn't picky,
3370 the log will look right.</p>
3371
3372 <h2><a id="O6" name="O6">O6. I'm seeing long sendmail delays or
3373 hangs near the start of each poll cycle.</a></h2>
3374
3375 <p>Sendmail does a hostname lookup when it first starts up, and
3376 also each time it gets a HELO in listener mode.</p>
3377
3378 <p>Your resolver configuration may be causing one of these lookups
3379 to fail and time out. Check <code>/etc/resolv.conf</code> and
3380 <code>/etc/hosts</code> file. Make sure your hostname and
3381 fully-qualified domain name are both in <code>/etc/hosts</code>,
3382 and that hosts is looked at before DNS is queried. You probably
3383 also want your remote mail server(s) to be in the hosts file.</p>
3384
3385 <p>You can suppress the startup-time lookup if need to by
3386 reconfiguring with <code>FEATURE(nodns)</code>.</p>
3387
3388 <p>Configuring your bind library to cache DNS lookups locally may
3389 help, and is a good idea for speeding up other services as well.
3390 Switching to a faster MTA like qmail or exim might help.</p>
3391
3392 <h2><a id="O7" name="O7">O7. Why doesn't fetchmail deliver mail in
3393 date-sorted order?</a></h2>
3394
3395 <p>Because that's not the order the server hands it to fetchmail
3396 in.</p>
3397
3398 <p>Fetchmail getting mail from a POP server delivers mail in the
3399 order that your server delivers mail. Fetchmail can't do anything
3400 about this; it's a limitation of the underlying POP protocol.</p>
3401
3402 <p>In theory it might be possible for fetchmail in IMAP mode to
3403 sort messages by date, but this would be in violation of two basics
3404 of fetchmail's design philosophy: (a) to be as simple and
3405 transparent a pipe as possible, and (b) to <em>hide</em>, rather
3406 than emphasize, the differences between the remote-fetch protocols
3407 it uses.</p>
3408
3409 <p>Re-ordering messages is a user-agent function, anyway.</p>
3410
3411 <h2><a id="O8" name="O8">O8. I'm using pppd. Why isn't my monitor
3412 option working?</a></h2>
3413
3414 <p>There is a combination of circumstances that can confuse
3415 fetchmail. If you have set up demand dialing with pppd, and pppd
3416 has an idle timeout, and you have lcp-echo-interval set, then the
3417 lcp-echo-interval time must be longer than the pppd idle timeout.
3418 Otherwise it is going keep increasing the packet counters that
3419 fetchmail relies upon, triggering fetchmail into polling after its
3420 own delay interval and thus preventing the pppd link from ever
3421 reaching its inactivity timeout.</p>
3422
3423 <h2><a id="O9" name="O9">O9. Why does fetchmail keep retrieving the
3424 same messages over and over?</a></h2>
3425
3426 <p>First, check to see that you haven't enabled the
3427 <cite>keep</cite> and <cite>fetchall</cite> option. If you have,
3428 turn <cite>keep</cite> off.</p>
3429
3430 <p>There are various forms of lossage involving the POP3 UIDL
3431 feature that can lead to all your old messages being seen again
3432 after a line drop. I have given up trying to fix these, as the UIDL
3433 code breaks worse every time I touch it. The problem is
3434 fundamental; maintaining and garbage-collecting the right kind of
3435 client-side state is just hard. Whoever put UIDLs in RFC1725 and
3436 removed LAST should be hung up by his thumbs and whipped with
3437 scorpions. The right answers are either (a) live with the
3438 occasional breakage, (b) switch to IMAP4, or (c) fix the code
3439 yourself and send me a patch. Unless you choose (c), I don't want
3440 to hear about it.</p>
3441
3442 <p>This can also happen when some other mail client is logged in to
3443 your mail server, if it uses a simple exclusive-locking scheme (and
3444 many, especially most POP3 servers, do exactly that). Your
3445 fetchmail is able to retrieve the messages, but because the mailbox
3446 is write-locked by the other instance yours can neither mark
3447 messages seen or delete them. The solution is to either (a) wait
3448 for the other client to finish, or (b) terminate it.</p>
3449
3450 <p>James Stevens &lt;James.Stevens at kyzo.com&gt; writes:</p>
3451
3452 <p><em>We had a Linux box dialing the Net and collecting mail from
3453 an NT POP3 server. Fetchmail was correctly collecting and deleting
3454 each e-mail one by one. However,the dial-up connection was very
3455 unreliable and would often just drop out in the middle of a
3456 session.</em></p>
3457
3458 <p><em>Interestingly, unless the TCP POP3 connection was terminated
3459 normally (I guess with a POP3 "QUIT" command) NT would then roll
3460 back all the deletes !!!</em></p>
3461
3462 <p><em>This meant if the first e-mail was very large it might just
3463 end up continuously collecting it, basically jamming the queue. Or,
3464 if the queue became very full itmight never get a long enough phone
3465 connection to retrieve the entire mailbox, and NT would roll back
3466 any deletes, so it would end up collecting (and delivering) the
3467 first few e-mails again and again. As the POP3 mailbox became
3468 fuller and fuller the chances of getting a connection long enough
3469 to collect theentire mailbox became smaller and smaller.</em></p>
3470
3471 <p><em>Our solution was to make fetchmail only collect a few (say 5
3472 or 10) e-mails at atime, thus trying to ensure that the POP3
3473 connection is terminated correctly.</em></p>
3474
3475 <p>Unfortunately, this is exactly the way POP3 servers are supposed
3476 to behave on a line drop, according to the RFCs. I recommend
3477 switching to IMAP and using a short expunge interval.</p>
3478
3479 <h2><a id="O10" name="O10">O10. Why is the received date on all my
3480 messages the same?</a></h2>
3481
3482 <p>This is a design choice in your MTA, not fetchmail. It's taking
3483 the received date from the last Received header.</p>
3484
3485 <h2><a name="O11">O11. I keep getting messages that say "Repoll
3486 immediately" in my logs.</a></h2>
3487
3488 <p>This is your server barfing on the CAPA probe that fetchmail sends.</p>
3489
3490 <p>If you run fetchmail in daemon mode (say "set daemon 600"), you will
3491 get the message only once per run.</p>
3492
3493 <p>If you set an authentication method explicitly (say, with
3494 <code>auth password</code>), you will never get the message.</p>
3495
3496 <h2><a name="O12">O12. Fetchmail no longer expunges mail on a 451 SMTP response.</a></h2>
3497
3498 <p>This is a feature, not a bug.</p>
3499
3500 <p>Any 4xx response (like 451) indicates a transient (temporary) error.
3501 This means that the mail could be accepted if retried later. Lookup
3502 failures are normally transient errors as a mail should not get
3503 rejected if a dns server is unreachable or down.</p>
3504
3505 <p>A permanent reject response is of the form 5xx (like 550).</p>
3506
3507 <p>You could tell your SMTP server to not lookup any addresses if you are
3508 not keen on checking the sender addresses. This problem typically
3509 occurs if your mail server is not checking the sender addresses, but
3510 your local server is.</p>
3511
3512 <p>Or you could declare <code>antispam 451</code>.</p>
3513
3514 <p>Or, you could check your nameserver configuration and query logs for
3515 dns errors.</p>
3516
3517 <p>All these issues are not related to fetchmail directly.</p>
3518
3519 <h2><a name="O13">O13. I want timestamp information in my fetchmail logs.</a></h2>
3520
3521 <p>Write a <code>preconnect</code> command in your configuration file that
3522 does something like "date &gt;&gt; $HOME/Procmail/fetchmail.log".</p>
3523
3524 <h2><a name="O14">O14. Fetchmail no longer deletes oversized mails with
3525 --flush.</a></h2>
3526
3527 <p>Use <code>--limitflush</code> (available since release 6.3.0) to
3528 delete oversized mails along with the <code>--limit</code> option. If
3529 you are already having <code>flush</code> in your rcfile to delete
3530 oversized mails, <em>replace</em> it with <code>limitflush</code> to
3531 avoid losing mails unintentionally.</p>
3532
3533 <p>The <code>--flush</code> option is primarily designed to delete
3534 mails which have been read/downloaded but not deleted yet. This option
3535 cannot be overloaded to delete oversized mails as it cannot be guessed
3536 whether the user wants to delete only read/downloaded mails or only
3537 oversized mails or both when a user specifies both
3538 <code>--limit</code> and <code>--flush</code>. Hence, a separate
3539 <code>--limitflush</code> has been added to resolve the ambiguity.</p>
3540
3541 <h2><a name="O15">O15. Fetchmail always retains the first message in the
3542     mailbox.</a></h2>
3543
3544 <p>This happens when fetchmail sees an "X-IMAP:" header in the very
3545 first message in your mailbox. This usually stems from a message like
3546 the one shown below, which is automatically created on your server. This
3547 message shows up if the University of Washington IMAP or PINE software
3548 is used on the server together with a POP2 or POP3 daemon that is not
3549 aware of these messages, such as some versions of Qualcomm Popper
3550 (QPOP):</p>
3551
3552 <blockquote>
3553 <pre>
3554 From MAILER-DAEMON Wed Nov 23 11:38:42 2005
3555 Date: 23 Nov 2005 11:38:42 +0100
3556 From: Mail System Internal Data &lt;MAILER-DAEMON@imap.example.org&gt;
3557 Subject: DON'T DELETE THIS MESSAGE -- FOLDER INTERNAL DATA
3558 Message-ID: &lt;1132742322@imap.example.org&gt;
3559 X-IMAP: 1132742306 0000000001
3560 Status: RO
3561
3562 This text is part of the internal format of your mail folder, and is not
3563 a real message.  It is created automatically by the mail system software.
3564 If deleted, important folder data will be lost, and it will be re-created
3565 with the data reset to initial values.
3566 </pre>
3567 </blockquote>
3568
3569 <p>As this message does not contain useful information, fetchmail is not
3570 retrieving it. And deleting it might slow down the server if you are
3571 keeping messages on the server, and the server would recreate it
3572 anyways, that's why fetchmail does not bother to delete it either.</p>
3573
3574 <h2><a name="O16">O16. Why is the Fetchmail FAQ only available in
3575         ISO-216 A4 format? How do I get the FAQ in Letter format?</a></h2>
3576
3577 <p>All the world uses ISO-216:1975 "A4" paper except for North America.
3578 Using A4 format reaches far more people than (formerly known as DIN A4,
3579 from DIN&nbsp;476) format. Besides that, A4 paper <em>is</em> available in North
3580 America.
3581 For further information on the Letter-vs-A4 story, see:</p>
3582 <ul><li><a href="http://www.cl.cam.ac.uk/~mgk25/iso-paper.html">Markus
3583         Kuhn: "International standard paper sizes"</a></li>
3584     <li><a
3585         href="http://betweenborders.com/wordsmithing/a4-vs-us-letter/">Brian
3586         Forte: "A4 vs US Letter"</a></li></ul>
3587
3588 <p>Offering the document formatted for two different paper sizes would
3589 bloat the package beyond reason, and formatting in a way that fits A4
3590 and Letter paper formats would be a waste of paper in most parts of the
3591 world. For that reason, fetchmail only ships with an A4 formatted PDF
3592 document.</p>
3593
3594 <p>To create a letter-sized PDF, install <a
3595     href="http://www.htmldoc.org/">HTMLDOC</a>, edit
3596 <code>fetchmail-FAQ.book</code> in the source directory with your
3597 favorite text editor, replace <samp>--size A4</samp> by <samp>--size
3598     letter</samp>, and type:
3599 </p>
3600 <pre>
3601 make fetchmail-FAQ.pdf
3602 </pre>
3603
3604 <hr/>
3605
3606 <table width="100%" cellpadding="0" summary="Canned page footer">
3607 <tr>
3608 <td width="30%">Back to <a href="index.html">Fetchmail Home
3609 Page</a></td>
3610 <td width="30%" align="right">$Date$</td>
3611 </tr>
3612 </table>
3613
3614 <br clear="left"/>
3615 <address>Eric S. Raymond <a
3616         href="mailto:esr@thyrsus.com">&lt;esr@thyrsus.com&gt;</a><br />
3617 Matthias Andree</address>
3618
3619 </body>
3620 </html>