]> Pileus Git - ~andy/fetchmail/blob - fetchmail.man
Default antispam code list to empy.
[~andy/fetchmail] / fetchmail.man
1 '\" t
2 .\" ** The above line should force tbl to be used as a preprocessor **
3 .\"
4 .\" Man page for fetchmail
5 .\"
6 .\" For license terms, see the file COPYING in this directory.
7 .TH fetchmail 1
8 .SH NAME
9 fetchmail \- fetch mail from a POP, IMAP, ETRN, or ODMR-capable server
10
11 .SH SYNOPSIS
12 \fBfetchmail\fR [\fIoption...\fR] [\fImailserver...\fR]
13 .br
14 \fBfetchmailconf\fR
15
16 .SH DESCRIPTION
17 .I fetchmail
18 is a mail-retrieval and forwarding utility; it fetches mail from
19 remote mailservers and forwards it to your local (client) machine's
20 delivery system.  You can then handle the retrieved mail using normal
21 mail user agents such as \fImutt\fR(1), \fIelm\fR(1) or \fIMail\fR(1).
22 The \fIfetchmail\fR utility can be run in a daemon mode to repeatedly
23 poll one or more systems at a specified interval.
24 .PP
25 The
26 .I fetchmail
27 program can gather mail from servers supporting any of the common
28 mail-retrieval protocols: POP2, POP3, IMAP2bis, IMAP4, and IMAPrev1.
29 It can also use the ESMTP ETRN extension and ODMR.  (The RFCs describing all
30 these protocols are listed at the end of this manual page.)
31 .PP
32 While
33 .I fetchmail
34 is primarily intended to be used over on-demand TCP/IP links (such as
35 SLIP or PPP connections), it may also be useful as a message transfer
36 agent for sites which refuse for security reasons to permit
37 (sender-initiated) SMTP transactions with sendmail.
38 .PP
39 As each message is retrieved \fIfetchmail\fR normally delivers it via SMTP to
40 port 25 on the machine it is running on (localhost), just as though it
41 were being passed in over a normal TCP/IP link.  The mail will then be
42 delivered locally via your system's MDA (Mail Delivery Agent, usually
43 \fIsendmail\fR(8) but your system may use a different one such
44 as \fIsmail\fR, \fImmdf\fR, \fIexim\fR, or \fIqmail\fR).  All the
45 delivery-control mechanisms (such as \fI.forward\fR files) normally
46 available through your system MDA and local delivery agents will
47 therefore work.
48 .PP
49 If no port 25 listener is available, but your fetchmail configuration
50 was told about a reliable local MDA, it will use that MDA for local
51 delivery instead.  At build time, fetchmail normally looks for
52 executable
53 .IR procmail (1)
54 and 
55 .IR sendmail (1)
56 binaries.
57 .PP
58 If the program
59 .I fetchmailconf
60 is available, it will assist you in setting up and editing a
61 fetchmailrc configuration.  It runs under X and requires that the
62 language Python and the Tk toolkit be present on your system.  If
63 you are first setting up fetchmail for single-user mode, it is
64 recommended that you use Novice mode.  Expert mode provides
65 complete control of fetchmail configuration, including the
66 multidrop features.  In either case, the `Autoprobe' button
67 will tell you the most capable protocol a given mailserver
68 supports, and warn you of potential problems with that server.
69
70 .SH GENERAL OPERATION
71 The behavior of
72 .I fetchmail
73 is controlled by command-line options and a run control file,
74 .IR ~/.fetchmailrc\fR ,
75 the syntax of which we describe in a later section (this file is what
76 the \fIfetchmailconf\fR program edits).  Command-line options override
77 .I ~/.fetchmailrc
78 declarations.
79 .PP
80 Each server name that you specify following the options on the
81 command line will be queried.  If you don't specify any servers
82 on the command line, each `poll' entry in your 
83 .I ~/.fetchmailrc
84 file will be queried.
85 .PP
86 To facilitate the use of
87 .I fetchmail
88 in scripts and pipelines, it returns an appropriate exit code upon 
89 termination -- see EXIT CODES below.
90 .PP
91 The following options modify the behavior of \fIfetchmail\fR.  It is
92 seldom necessary to specify any of these once you have a
93 working \fI.fetchmailrc\fR file set up.
94 .PP
95 Almost all options have a corresponding keyword which can be used to
96 declare them in a 
97 .I .fetchmailrc
98 file.
99 .PP
100 Some special options are not covered here, but are documented instead
101 in sections on AUTHENTICATION and DAEMON MODE which follow.
102 .SS General Options
103 .TP
104 .B \-V | \-\-version
105 Displays the version information for your copy of 
106 .IR fetchmail .
107 No mail fetch is performed.
108 Instead, for each server specified, all the option information
109 that would be computed if
110 .I fetchmail
111 were connecting to that server is displayed.  Any non-printables in
112 passwords or other string names are shown as backslashed C-like
113 escape sequences.  This option is useful for verifying that your
114 options are set the way you want them.
115 .TP
116 .B \-c | \-\-check
117 Return a status code to indicate whether there is mail waiting,
118 without actually fetching or deleting mail (see EXIT CODES below).
119 This option turns off daemon mode (in which it would be useless).  It
120 doesn't play well with queries to multiple sites, and doesn't work
121 with ETRN or ODMR.  It will return a false positive if you leave read but
122 undeleted mail in your server mailbox and your fetch protocol can't
123 tell kept messages from new ones.  This means it will work with IMAP,
124 not work with POP2, and may occasionally flake out under POP3.
125 .TP
126 .B \-s | \-\-silent
127 Silent mode.  Suppresses all progress/status messages that are
128 normally echoed to standard error during a fetch (but does not
129 suppress actual error messages).  The --verbose option overrides this.
130 .TP
131 .B \-v | \-\-verbose
132 Verbose mode.  All control messages passed between 
133 .I fetchmail
134 and the mailserver are echoed to stdout.  Overrides --silent.
135 Doubling this option (-v -v) causes extra diagnostic information
136 to be printed. 
137 .SS Disposal Options
138 .TP
139 .B \-a | \-\-all
140 (Keyword: fetchall)
141 Retrieve both old (seen) and new messages from the mailserver.  The
142 default is to fetch only messages the server has not marked seen.
143 Under POP3, this option also forces the use of RETR rather than TOP.
144 Note that POP2 retrieval behaves as though --all is always on (see
145 RETRIEVAL FAILURE MODES below) and this option does not work with ETRN
146 or ODMR.
147 .TP
148 .B \-k | \-\-keep
149 (Keyword: keep)
150 Keep retrieved messages on the remote mailserver.  Normally, messages 
151 are deleted from the folder on the mailserver after they have been retrieved.
152 Specifying the 
153 .B keep 
154 option causes retrieved messages to remain in your folder on the
155 mailserver.  This option does not work with ETRN or ODMR.
156 .TP
157 .B \-K | \-\-nokeep
158 (Keyword: nokeep)
159 Delete retrieved messages from the remote mailserver.  This
160 option forces retrieved mail to be deleted.  It may be useful if
161 you have specified a default of \fBkeep\fR in your
162 \&\fI.fetchmailrc\fR.  This option is forced on with ETRN and ODMR.
163 .TP
164 .B \-F | \-\-flush
165 POP3/IMAP only.  Delete old (previously retrieved) messages from the mailserver
166 before retrieving new messages. This option does not work with ETRN or
167 ODMR.
168 Warning: if your local MTA hangs and fetchmail is aborted, the next
169 time you run fetchmail, it will delete mail that was never delivered to you.
170 What you probably want is the default setting: if you don't specify `-k', then
171 fetchmail will automatically delete messages after successful delivery.
172 .SS Protocol and Query Options
173 .TP
174 .B \-p <proto> | \-\-protocol <proto>
175 (Keyword: proto[col])
176 Specify the protocol to use when communicating with the remote 
177 mailserver.  If no protocol is specified, the default is AUTO.
178 .I proto 
179 may be one of the following:
180 .RS
181 .IP AUTO
182 Tries IMAP, POP3, and POP2 (skipping any of these for which support
183 has not been compiled in).
184 .IP POP2
185 Post Office Protocol 2
186 .IP POP3
187 Post Office Protocol 3
188 .IP APOP
189 Use POP3 with old-fashioned MD5-challenge authentication.
190 .IP RPOP
191 Use POP3 with RPOP authentication.
192 .IP KPOP
193 Use POP3 with Kerberos V4 authentication on port 1109.
194 .IP SDPS
195 Use POP3 with Demon Internet's SDPS extensions.
196 .IP IMAP
197 IMAP2bis, IMAP4, or IMAP4rev1 (\fIfetchmail\fR autodetects their capabilities).
198 .IP ETRN
199 Use the ESMTP ETRN option.
200 .IP ODMR
201 Use the the On-Demand Mail Relay ESMTP profile.
202 .RE
203 .P
204 All these alternatives work in basically the same way (communicating
205 with standard server daemons to fetch mail already delivered to a
206 mailbox on the server) except ETRN and ODMR.  The ETRN mode
207 allows you to ask a compliant ESMTP server (such as BSD sendmail at
208 release 8.8.0 or higher) to immediately open a sender-SMTP connection
209 to your client machine and begin forwarding any items addressed to
210 your client machine in the server's queue of undelivered mail.   The
211 ODMR mode requires an ODMR-capable server and works similarly to
212 ETRN, except that it does not require the client machine to have
213 a static DNS.
214 .TP
215 .B \-U | \-\-uidl
216 (Keyword: uidl)
217 Force UIDL use (effective only with POP3).  Force client-side tracking
218 of `newness' of messages (UIDL stands for ``unique ID listing'' and is
219 described in RFC1725).  Use with `keep' to use a mailbox as a baby
220 news drop for a group of users.
221 .TP
222 .B \-P <portnumber> | \-\-port <portnumber>
223 (Keyword: port)
224 The port option permits you to specify a TCP/IP port to connect on. 
225 This option will seldom be necessary as all the supported protocols have
226 well-established default port numbers.
227 .TP
228 .B \-\-principal <principal>
229 (Keyword: principal)
230 The principal option permits you to specify a service principal for
231 mutual authentication.  This is applicable to POP3 or IMAP with Kerberos
232 authentication.
233 .TP 
234 .B \-t <seconds> | -\-timeout <seconds>
235 (Keyword: timeout)
236 The timeout option allows you to set a server-nonresponse
237 timeout in seconds.  If a mailserver does not send a greeting message
238 or respond to commands for the given number of seconds,
239 \fIfetchmail\fR will hang up on it.  Without such a timeout
240 \fIfetchmail\fR might hang up indefinitely trying to fetch mail from a
241 down host.  This would be particularly annoying for a \fIfetchmail\fR
242 running in background.  There is a default timeout which fetchmail -V
243 will report.  If a given connection receives too many timeouts in 
244 succession, fetchmail will consider it wedged and stop retrying,
245 the calling user will be notified by email if this happens.
246 .TP
247 .B \-\-plugin <command>
248 (Keyword: plugin) The plugin option allows you to use an external
249 program to establish the TCP connection.  This is useful if you want
250 to use socks, SSL, ssh, or need some special firewalling setup.  The
251 program will be looked up in $PATH and can optionally be passed the
252 hostname and port as arguments using "%h" and "%p" respectively (note
253 that the interpolation logic is rather primitive, and these token must
254 be bounded by whitespace or beginning of string or end of string).
255 Fetchmail will write to the plugin's stdin and read from the plugin's
256 stdout.
257 .TP
258 .B \-\-plugout <command>
259 (Keyword: plugout)
260 Identical to the plugin option above, but this one is used for the SMTP
261 connections (which will probably not need it, so it has been separated
262 from plugin).
263 .TP
264 .B \-r <name> | \-\-folder <name>
265 (Keyword: folder[s])
266 Causes a specified non-default mail folder on the mailserver (or
267 comma-separated list of folders) to be retrieved.  The syntax of the
268 folder name is server-dependent.  This option is not available under
269 POP3, ETRN, or ODMR.
270 .TP
271 .B \-\-tracepolls
272 (Keyword: tracepolls)
273 Tell fetchail to poll trace information in the form `polling %s
274 account %s' to the Received line it generates, where the %s parts are
275 replaced by the user's remote name and the poll label (the Received
276 header also normally includes the server's truename).  This can be
277 used to facilate mail filtering based on the account it is being
278 received from.
279 .TP
280 .B \-\-ssl
281 (Keyword: ssl)
282 Causes the connection to the mail server to be encrypted via SSL.  Connect
283 to the server using the specified base protocol over a connection secured
284 by SSL.  SSL support must be present at the server.  If no port is
285 specified, the connection is attempted to the well known port of the SSL
286 version of the base protocol.  This is generally a different port than the
287 port used by the base protocol.  For IMAP, this is port 143 for the clear
288 protocol and port 993 for the SSL secured protocol.
289 .TP
290 .B \-\-sslcert <name>
291 (Keyword: sslcert)
292 Specifies the file name of the client side public SSL certificate.  Some
293 SSL encrypted servers may require client side keys and certificates for
294 authentication.  In most cases, this is optional.  This specifies
295 the location of the public key certificate to be presented to the server
296 at the time the SSL session is established.  It is not required (but may
297 be provided) if the server does not require it.  Some servers may
298 require it, some servers may request it but not require it, and some
299 servers may not request it at all.  It may be the same file
300 as the private key (combined key and certificate file) but this is not
301 recommended.
302 .TP
303 .B \-\-sslkey <name>
304 (Keyword: sslkey)
305 Specifies the file name of the client side private SSL key.  Some SSL
306 encrypted servers may require client side keys and certificates for
307 authentication.  In most cases, this is optional.  This specifies
308 the location of the private key used to sign transactions with the server
309 at the time the SSL session is established.  It is not required (but may
310 be provided) if the server does not require it.  Some servers may
311 require it, some servers may request it but not require it, and some
312 servers may not request it at all.  It may be the same file
313 as the public key (combined key and certificate file) but this is not
314 recommended.  If a password is required to unlock the key, it will be
315 prompted for at the time just prior to establishing the session to the
316 server.  This can cause some complications in daemon mode.
317 .TP
318 .B \-\-sslproto <name>
319 (Keyword: sslproto)
320 Forces an ssl protocol. Possible values are \&`\fBssl2\fR', `\fBssl3\fR' and
321 `\fBtls1\fR'. Try this if the default handshake does not work for your server.
322 .TP
323 .B \-\-sslcertck
324 (Keyword: sslcertck)
325 Causes fetchmail to strictly check the server certificate against a set of
326 local trusted certificates (see the \fBsslcertpath\fR option). If the server
327 certificate is not signed by one of the trusted ones (directly or indirectly),
328 the SSL connection will fail. This checking should prevent man-in-the-middle
329 attacks against the SSL connection. Note that CRLs are seemingly not currently
330 supported by OpenSSL in certificate verification! Your system clock should
331 be reasonably accurate when using this option!
332 .TP
333 .B \-\-sslcertpath <directory>
334 (Keyword: sslcertpath)
335 Sets the directory fetchmail uses to look up local certificates. The default
336 is your OpenSSL default one. The directory must be hashed as OpenSSL expects
337 it - every time you add or modify a certificate in the directory, you need
338 to use the \fBc_rehash\fR tool (which comes with OpenSSL in the tools/
339 subdirectory).
340 .TP
341 .B \-\-sslfingerprint
342 (Keyword: sslfingerprint)
343 Specify the fingerprint of the server key (an MD5 hash of the key) in
344 hexadecimal notation with colons separating groups of two digits. The letter
345 hex digits must be in upper case. This is the default format OpenSSL uses,
346 and the one fetchmail uses to report the fingerprint when an SSL connection
347 is established. When this is specified, fetchmail will compare the server key
348 fingerprint with the given one, and the connection will fail if they do not
349 match. This can be used to prevent man-in-the-middle attacks.
350 .SS Delivery Control Options
351 .TP
352 .B \-S <hosts> | \-\-smtphost <hosts>
353 (Keyword: smtp[host])
354 Specify a hunt list of hosts to forward mail to (one or more
355 hostnames, comma-separated). Hosts are tried in list order; the first
356 one that is up becomes the forwarding target for the current run.
357 Normally, `localhost' is added to the end of the list as an invisible
358 default.  However, when using Kerberos authentication, the FQDN of the
359 machine running fetchmail is added to the end of the list as an
360 invisible default. Each hostname may have a port number following the
361 host name.  The port number is separated from the host name by a
362 slash; the default port is 25 (or ``smtp'' under IPv6).  If you
363 specify an absolute pathname (beginning with a /), it will be
364 interpreted as the name of a UNIX socket accepting LMTP connections
365 (such as is supported by the Cyrus IMAP daemon) Example:
366 .sp
367 .nf
368         --smtphost server1,server2/2525,server3,/var/imap/socket/lmtp
369 .fi
370 .sp
371 This option can be used with ODMR, and will make fetchmail a relay
372 between the ODMR server and SMTP or LMTP receiver.
373 .TP 
374 .B \-\-fetchdomains <hosts>
375 (Keyword: fetchdomains)
376 In ETRN or ODMR mode, this option specifies the list of domains the
377 server should ship mail for once the connection is turned around.  The
378 default is the FQDN of the machine running 
379 .IR fetchmail .
380 .TP
381 .B \-D <domain> | \-\-smtpaddress <domain>
382 (Keyword: smtpaddress) Specify the domain to be appended to addresses
383 in RCPT TO lines shipped to SMTP. The name of the SMTP server (as
384 specified by --smtphost, or defaulted to "localhost") is used when
385 this is not specified.
386 .TP
387 .B \-\-smtpname <user@domain>
388 (Keyword: smtpname) 
389 Specify the domain and user to be put in RCPT TO lines shipped to SMTP.
390 The default user is the current local user.
391 .TP
392 .B \-Z <nnn> | \-\-antispam <nnn[, nnn]...>
393 (Keyword: antispam) 
394 Specifies the list of numeric SMTP errors that are to be interpreted
395 as a spam-block response from the listener.  A value of -1 disables
396 this option.  For the command-line option, the list values should
397 be comma-separated.
398 .TP
399 .B \-m <command> | \-\-mda <command>
400 (Keyword: mda)
401 You can force mail to be passed to an MDA directly (rather than
402 forwarded to port 25) with the -mda or -m option.  To avoid losing
403 mail, use this option only with MDAs like procmail or sendmail that
404 return a nonzero status on disk-full and other resource-exhaustion
405 errors; the nonzero status tells fetchmail that delivery failed and
406 prevents the message from being deleted off the server.  If
407 \fIfetchmail\fR is running as root, it sets its userid to that of the
408 target user while delivering mail through an MDA.  Some possible MDAs
409 are "/usr/sbin/sendmail -i -oem -f %F %T", "/usr/bin/deliver" and
410 "/usr/bin/procmail -d %T" (but the latter is usually redundant as it's
411 what SMTP listeners normally forward to).  Local delivery addresses
412 will be inserted into the MDA command wherever you place a %T; the
413 mail message's From address will be inserted where you place an %F.
414 Do \fInot\fR use an MDA invocation like "sendmail -i -oem -t" that
415 dispatches on the contents of To/Cc/Bcc, it will create mail loops and
416 bring the just wrath of many postmasters down upon your head.
417 .TP 
418 .B \-\-lmtp
419 (Keyword: lmtp)
420 Cause delivery via LMTP (Local Mail Transfer Protocol).  A service
421 port \fImust\fR be explicitly specified (with a slash suffix) on each
422 host in the smtphost hunt list if this option is selected; the
423 default port 25 will (in accordance with RFC 2033) not be accepted.
424 .TP
425 .B \-\-bsmtp <filename>
426 (keyword: bsmtp)
427 Append fetched mail to a BSMTP file.  This simply contains the SMTP
428 commands that would normally be generated by fetchmail when passing
429 mail to an SMTP listener daemon.  An argument of `-' causes the mail
430 to be written to standard output.  Note that fetchmail's
431 reconstruction of MAIL FROM and RCPT TO lines is not guaranteed
432 correct; the caveats discussed under THE USE AND ABUSE OF MULTIDROP
433 MAILBOXES below apply.
434 .SS Resource Limit Control Options
435 .TP
436 .B \-l <maxbytes> | \-\-limit <maxbytes>
437 (Keyword: limit)
438 Takes a maximum octet size argument.  Messages larger than this size
439 will not be fetched and will be left on the server (in foreground
440 sessions, the progress messages will note that they are "oversized").
441 If the fetch protocol permits (in particular, under IMAP or POP3
442 without the fetchall option) the message will not be marked seen An
443 explicit --limit of 0 overrides any limits set in your run control
444 file. This option is intended for those needing to strictly control
445 fetch time due to expensive and variable phone rates.  In daemon mode,
446 oversize notifications are mailed to the calling user (see the
447 --warnings option).  This option does not work with ETRN or ODMR.
448 .TP
449 .B \-w <interval> | \-\-warnings <interval>
450 (Keyword: warnings)
451 Takes an interval in seconds.  When you call
452 .I fetchmail
453 with a `limit' option in daemon mode, this controls the interval at
454 which warnings about oversized messages are mailed to the calling user
455 (or the user specified by the `postmaster' option).  One such
456 notification is always mailed at the end of the the first poll that
457 the oversized message is detected.  Thereafter, renotification is
458 suppressed until after the warning interval elapses (it will take
459 place at the end of the first following poll).
460 .TP
461 .B \-b <count> | \-\-batchlimit <count>
462 (Keyword: batchlimit)
463 Specify the maximum number of messages that will be shipped to an SMTP
464 listener before the connection is deliberately torn down and rebuilt
465 (defaults to 0, meaning no limit).  An explicit --batchlimit of 0
466 overrides any limits set in your run control file.  While
467 \fBsendmail\fR(8) normally initiates delivery of a message immediately
468 after receiving the message terminator, some SMTP listeners are not so
469 prompt.  MTAs like \fIqmail\fR(8) and \fIsmail\fR(8) may wait till the
470 delivery socket is shut down to deliver.  This may produce annoying
471 delays when \fIfetchmail\fR is processing very large batches.  Setting
472 the batch limit to some nonzero size will prevent these delays.  This
473 option does not work with ETRN or ODMR.
474 .TP
475 .B \-B <number> | \-\-fetchlimit <number>
476 (Keyword: fetchlimit)
477 Limit the number of messages accepted from a given server in a single
478 poll.  By default there is no limit. An explicit --fetchlimit of 0
479 overrides any limits set in your run control file.
480 This option does not work with ETRN or ODMR.
481 .TP
482 .B \-e <count> | \-\-expunge <count>
483 (keyword: expunge) 
484 Arrange for deletions to be made final after a given number of
485 messages.  Under POP2 or POP3, fetchmail cannot make deletions final
486 without sending QUIT and ending the session -- with this option on,
487 fetchmail will break a long mail retrieval session into multiple
488 subsessions, sending QUIT after each sub-session. This is a good
489 defense against line drops on POP3 servers that do not do the
490 equivalent of a QUIT on hangup.  Under IMAP,
491 .I fetchmail
492 normally issues an EXPUNGE command after each deletion in order to
493 force the deletion to be done immediately.  This is safest when your
494 connection to the server is flaky and expensive, as it avoids
495 resending duplicate mail after a line hit.  However, on large
496 mailboxes the overhead of re-indexing after every message can slam the
497 server pretty hard, so if your connection is reliable it is good to do
498 expunges less frequently.  Also note that some servers enforce a delay
499 of a few seconds after each quit, so fetchmail may not be able to get
500 back in immediately after an expunge -- you may see "lock busy" errors
501 if this happens. If you specify this option to an integer N,
502 it tells
503 .I fetchmail
504 to only issue expunges on every Nth delete.  An argument of zero
505 suppresses expunges entirely (so no expunges at all will be done until
506 the end of run).  This option does not work with ETRN or ODMR.
507 .SS Authentication Options
508 .TP
509 .B \-u <name> | \-\-username <name>
510 (Keyword: user[name])
511 Specifies the user identification to be used when logging in to the mailserver.
512 The appropriate user identification is both server and user-dependent.  
513 The default is your login name on the client machine that is running 
514 .IR fetchmail .
515 See USER AUTHENTICATION below for a complete description.
516 .TP
517 .B \-I <specification> | \-\-interface <specification>
518 (Keyword: interface)
519 Require that a specific interface device be up and have a specific local
520 or remote IP address (or range) before polling.  Frequently
521 .I fetchmail
522 is used over a transient point-to-point TCP/IP link established directly
523 to a mailserver via SLIP or PPP.  That is a relatively secure channel.
524 But when other TCP/IP routes to the mailserver exist (e.g. when the link
525 is connected to an alternate ISP), your username and password may be
526 vulnerable to snooping (especially when daemon mode automatically polls
527 for mail, shipping a clear password over the net at predictable
528 intervals).  The --interface option may be used to prevent this.  When
529 the specified link is not up or is not connected to a matching IP
530 address, polling will be skipped.  The format is:
531 .sp
532 .nf
533         interface/iii.iii.iii.iii/mmm.mmm.mmm.mmm
534 .fi
535 .sp
536 The field before the first slash is the interface name (i.e. sl0, ppp0
537 etc.).  The field before the second slash is the acceptable IP address.
538 The field after the second slash is a mask which specifies a range of
539 IP addresses to accept.  If no mask is present 255.255.255.255 is
540 assumed (i.e. an exact match).  This option is currently only supported
541 under Linux and FreeBSD. Please see the 
542 .B monitor 
543 section for below for FreeBSD specific information.
544 .TP
545 .B \-M <interface> | --monitor <interface>
546 (Keyword: monitor)
547 Daemon mode can cause transient links which are automatically taken down
548 after a period of inactivity (e.g. PPP links) to remain up
549 indefinitely.  This option identifies a system TCP/IP interface to be
550 monitored for activity.  After each poll interval, if the link is up but
551 no other activity has occurred on the link, then the poll will be
552 skipped.  However, when fetchmail is woken up by a signal, the
553 monitor check is skipped and the poll goes through unconditionally.
554 This option is currently only supported under Linux and FreeBSD.
555 For the 
556 .B monitor 
557 and 
558 .B interface
559 options to work for non root users under FreeBSD, the fetchmail binary
560 must be installed SGID kmem. This would be a security hole, but
561 fetchmail runs with the effective GID set to that of the kmem group
562 .I only
563 when interface data is being collected.
564 .TP
565 .B \-\-auth <type>
566 (Keyword: auth[enticate])
567 This option permits you to specify an authentication type (see USER
568 AUTHENTICATION below for details).  The possible values are \fBany\fR,
569 \&`\fBpassword\fR', `\fBkerberos_v5\fR' and `\fBkerberos\fR' (or, for
570 excruciating exactness, `\fBkerberos_v4\fR'), \fRgssapi\fR,
571 \fIcram-md5\fR, \fIotp\fR, \fIntlm\fR, and \fBssh\fR.  When \fBany\fR (the
572 default) is specified, fetchmail tries first methods that don't
573 require a password (GSSAPI, KERBEROS_IV); then it looks for methods
574 that mask your password (CRAM-MD5, X-OTP, NTLM); and only if the server
575 doesn't support any of those will it ship your password en clair.
576 Other values may be used to force various authentication methods
577 (\fBssh\fR suppresses authentication).  Any value other than
578 \fIpassword\fR, \fIcram-md5\fR, \fIntlm\fR or \fIotp\fR suppresses fetchmail's
579 normal inquiry for a password.  Specify \fIssh\fR when you are using
580 an end-to-end secure connection such as an ssh tunnel; specify
581 \fRgssapi\fR or \fBkerberos_v4\fR if you are using a protocol variant
582 that employs GSSAPI or K4.  Choosing KPOP protocol automatically
583 selects Kerberos authentication.  This option does not work with ETRN.
584 .SS Miscellaneous Options
585 .TP
586 .B \-f <pathname> | \-\-fetchmailrc <pathname>
587 Specify a non-default name for the 
588 .I ~/.fetchmailrc
589 run control file.  The pathname argument must be either "-" (a single
590 dash, meaning to read the configuration from standard input) or a
591 filename.  Unless the --version option is also on, a named file
592 argument must have permissions no more open than 0600 (u=rw,g=,o=) or
593 else be /dev/null.
594 .TP
595 .B \-i <pathname> | \-\-idfile <pathname>
596 (Keyword: idfile)
597 Specify an alternate name for the .fetchids file used to save POP3
598 UIDs. 
599 .TP
600 .B \-n | \-\-norewrite
601 (Keyword: no rewrite)
602 Normally,
603 .I fetchmail
604 edits RFC-822 address headers (To, From, Cc, Bcc, and Reply-To) in
605 fetched mail so that any mail IDs local to the server are expanded to
606 full addresses (@ and the mailserver hostname are appended).  This enables 
607 replies on the client to get addressed correctly (otherwise your
608 mailer might think they should be addressed to local users on the
609 client machine!).  This option disables the rewrite.  (This option is
610 provided to pacify people who are paranoid about having an MTA edit
611 mail headers and want to know they can prevent it, but it is generally
612 not a good idea to actually turn off rewrite.)
613 When using ETRN or ODMR, the rewrite option is ineffective.
614 .TP
615 .B \-E <line> | \-\-envelope <line>
616 (Keyword: envelope)
617 This option changes the header 
618 .I fetchmail
619 assumes will carry a copy of the mail's envelope address.  Normally
620 this is `X-Envelope-To' but as this header is not standard, practice
621 varies. See the discussion of multidrop address handling below.  As a
622 special case, `envelope "Received"' enables parsing of sendmail-style
623 Received lines.  This is the default, and it should not be necessary
624 unless you have globally disabled Received parsing with `no envelope'
625 in the \fI.fetchmailrc\fR file.
626 .TP
627 .B \-Q <prefix> | \-\-qvirtual <prefix>
628 (Keyword: qvirtual)
629 The string prefix assigned to this option will be removed from the user
630 name found in the header specified with the \fIenvelope\fR option
631 (\fIbefore\fR doing multidrop name mapping or localdomain checking,
632 if either is applicable). This option is useful if you are using  
633 .I fetchmail
634 to collect the mail for an entire domain and your ISP (or your mail
635 redirection provider) is using qmail.
636 One of the basic features of qmail is the
637 .sp
638 \&`Delivered-To:'
639 .sp
640 message header.  Whenever qmail delivers a message to a local mailbox
641 it puts the username and hostname of the envelope recipient on this
642 line.  The major reason for this is to prevent mail loops.  To set up
643 qmail to batch mail for a disconnected site the ISP-mailhost will have
644 normally put that site in its `Virtualhosts' control file so it will
645 add a prefix to all mail addresses for this site. This results in mail
646 .\" The \&@\& tries to stop HTML converters from making a mailto URL here.
647 sent to 'username\&@\&userhost.userdom.dom.com' having a
648 \&`Delivered-To:' line of the form:
649 .sp
650 Delivered-To: mbox-userstr-username\&@\&userhost.userdom.dom.com
651 .sp
652 The ISP can make the 'mbox-userstr-' prefix anything they choose
653 but a string matching the user host name is likely.
654 By using the option `envelope Delivered-To:' you can make fetchmail reliably
655 identify the original envelope recipient, but you have to strip the
656 `mbox-userstr-' prefix to deliver to the correct user.
657 This is what this option is for.
658 .TP
659 .B --configdump
660 Parse the 
661 .I ~/.fetchmailrc
662 file, interpret any command-line options specified, and dump a
663 configuration report to standard output.  The configuration report is
664 a data structure assignment in the language Python.  This option
665 is meant to be used with an interactive 
666 .I ~/.fetchmailrc
667 editor like 
668 .IR fetchmailconf ,
669 written in Python.
670
671 .SH USER AUTHENTICATION AND ENCRYPTION
672 All modes except ETRN require authentication of the client to the server.
673 Normal user authentication in 
674 .I fetchmail
675 is very much like the authentication mechanism of 
676 .IR ftp (1).
677 The correct user-id and password depend upon the underlying security
678 system at the mailserver.  
679 .PP
680 If the mailserver is a Unix machine on which you have an ordinary user 
681 account, your regular login name and password are used with 
682 .IR fetchmail .
683 If you use the same login name on both the server and the client machines,
684 you needn't worry about specifying a user-id with the 
685 .B \-u
686 option \-\- the default behavior is to use your login name on the
687 client machine as the user-id on the server machine.  If you use a
688 different login name on the server machine, specify that login name
689 with the
690 .B \-u
691 option.  e.g. if your login name is 'jsmith' on a machine named 'mailgrunt',
692 you would start 
693 .I fetchmail 
694 as follows:
695 .IP
696 fetchmail -u jsmith mailgrunt
697 .PP
698 The default behavior of 
699 .I fetchmail
700 is to prompt you for your mailserver password before the connection is
701 established.  This is the safest way to use 
702 .I fetchmail
703 and ensures that your password will not be compromised.  You may also specify
704 your password in your
705 .I ~/.fetchmailrc
706 file.  This is convenient when using 
707 .I fetchmail
708 in daemon mode or with scripts.
709 .PP
710 If you do not specify a password, and
711 .I fetchmail
712 cannot extract one from your
713 .I ~/.fetchmailrc
714 file, it will look for a 
715 .I ~/.netrc
716 file in your home directory before requesting one interactively; if an
717 entry matching the mailserver is found in that file, the password will
718 be used.  Fetchmail first looks for a match on poll name; if it finds none,
719 it checks for a match on via name.  See the
720 .IR ftp (1)
721 man page for details of the syntax of the
722 .I ~/.netrc
723 file.  (This feature may allow you to avoid duplicating password
724 information in more than one file.)
725 .PP
726 On mailservers that do not provide ordinary user accounts, your user-id and 
727 password are usually assigned by the server administrator when you apply for 
728 a mailbox on the server.  Contact your server administrator if you don't know 
729 the correct user-id and password for your mailbox account.
730 .PP
731 Early versions of POP3 (RFC1081, RFC1225) supported a crude form of
732 independent authentication using the
733 .I rhosts
734 file on the mailserver side.  Under this RPOP variant, a fixed
735 per-user ID equivalent to a password was sent in clear over a link to
736 a reserved port, with the command RPOP rather than PASS to alert the
737 server that it should do special checking.  RPOP is supported
738 by
739 .I fetchmail
740 (you can specify `protocol RPOP' to have the program send `RPOP'
741 rather than `PASS') but its use is strongly discouraged.  This
742 facility was vulnerable to spoofing and was withdrawn in RFC1460.
743 .PP
744 RFC1460 introduced APOP authentication.  In this variant of POP3,
745 you register an APOP password on your server host (the program
746 to do this with on the server is probably called \fIpopauth\fR(8)).  You
747 put the same password in your 
748 .I ~/.fetchmailrc
749 file.  Each time 
750 .I fetchmail
751 logs in, it sends a cryptographically secure hash of your password and
752 the server greeting time to the server, which can verify it by
753 checking its authorization database. 
754 .PP
755 If your \fIfetchmail\fR was built with Kerberos support and you specify 
756 Kerberos authentication (either with --auth or the \fI.fetchmailrc\fR
757 option \fBauthenticate kerberos_v4\fR) it will try to get a Kerberos
758 ticket from the mailserver at the start of each query.  Note: if
759 either the pollnane or via name is `hesiod', fetchmail will try to use
760 Hesiod to look up the mailserver.
761 .PP
762 If you use POP3 or IMAP with GSSAPI authentication, \fIfetchmail\fR will
763 expect the server to have RFC1731- or RFC1734-conformant GSSAPI
764 capability, and will use it.  Currently this has only been tested over
765 Kerberos V, so you're expected to already have a ticket-granting
766 ticket. You may pass a username different from your principal name
767 using the standard \fB--user\fR command or by the \fI.fetchmailrc\fR
768 option \fBuser\fR.
769 .PP
770 If your IMAP daemon returns the PREAUTH response in its greeting line, 
771 fetchmail will notice this and skip the normal authentication step.
772 This can be useful, e.g. if you start imapd explicitly using ssh.
773 In this case you can declare the authentication value `ssh' on that
774 site entry to stop \fI.fetchmail\fR from asking you for a password
775 when it starts up.
776 .PP
777 If you are using POP3, and the server issues a one-time-password
778 challenge conforming to RFC1938, \fIfetchmail\fR will use your
779 password as a pass phrase to generate the required response. This
780 avoids sending secrets over the net unencrypted.
781 .PP
782 Compuserve's RPA authentication (similar to APOP) is supported. If you
783 compile in the support, \fIfetchmail\fR will try to perform an RPA pass-phrase
784 authentication instead of sending over the password en clair if it
785 detects "@compuserve.com" in the hostname.
786 .PP
787 If you are using IMAP, Microsoft's NTLM authentication (used by Microsoft
788 Exchange) is supported. If you compile in the support, \fIfetchmail\fR
789 will try to perform an NTLM authentication (instead of sending over the
790 password en clair) whenever the server returns AUTH=NTLM in its
791 capability response. Specify a user option value that looks like
792 `user@domain': the part to the left of the @ will be passed as the
793 username and the part to the right as the NTLM domain.
794 .PP
795 If you are using IPsec, the -T (--netsec) option can be used to pass
796 an IP security request to be used when outgoing IP connections are
797 initialized.  You can also do this using the `netsec' server option
798 in the .fetchmailrc file.  In either case, the option value is a
799 string in the format accepted by the net_security_strtorequest() 
800 function of the inet6_apps library.
801 .PP
802 You can access SSL encrypted services by specifying the --ssl option.
803 You can also do this using the "ssl" server option in the .fetchmailrc
804 file.  With SSL encryption enabled, queries are initiated over a connection
805 after negotiating an SSL session.  Some services, such as POP3 and IMAP,
806 have different well known ports defined for the SSL encrypted services.
807 The encrypted ports will be selected automatically when SSL is enabled and
808 no explicit port is specified.
809 .PP
810 When connecting to an SSL encrypted server, the server presents a certificate
811 to the client for validation.  The certificate is checked to verify that
812 the common name in the certificate matches the name of the server being
813 contacted and that the effective and expiration dates in the certificate
814 indicate that it is currently valid.  If any of these checks fail, a warning
815 message is printed, but the connection continues.  The server certificate
816 does not need to be signed by any specific Certifying Authority and may
817 be a "self-signed" certificate.
818 .PP
819 Some SSL encrypted servers may request a client side certificate.  A client
820 side public SSL certificate and private SSL key may be specified.  If
821 requested by the server, the client certificate is sent to the server for
822 validation.  Some servers may require a valid client certificate and may
823 refuse connections if a certificate is not provided or if the certificate
824 is not valid.  Some servers may require client side certificates be signed
825 by a recognized Certifying Authority.  The format for the key files and
826 the certificate files is that required by the underlying SSL libraries
827 (OpenSSL in the general case).
828 .PP
829 A word of care about the use of SSL: While above mentioned
830 setup with self-signed server certificates retrieved over the wires
831 can protect you from a passive eavesdropper it doesn't help against an
832 active attacker. It's clearly an improvement over sending the
833 passwords in clear but you should be aware that a man-in-the-middle
834 attack is trivially possible (in particular with tools such as dsniff,
835 http://www.monkey.org/~dugsong/dsniff/).  Use of an ssh tunnel (see
836 below for some examples) is preferable if you care seriously about the
837 security of your mailbox.
838 .PP
839 .B fetchmail
840 also supports authentication to the ESMTP server on the client side
841 according to RFC 2554.  You can specify a name/password pair to be
842 used with the keywords `esmtpname' and `esmtppassword'; the former
843 defaults to the username of the calling user.
844
845 .SH DAEMON MODE
846 The 
847 .B \-\-daemon <interval>
848 or
849 .B \-d <interval>
850 option runs 
851 .I fetchmail
852 in daemon mode.  You must specify a numeric argument which is a
853 polling interval in seconds.
854 .PP
855 In daemon mode, 
856 .I fetchmail
857 puts itself in background and runs forever, querying each specified
858 host and then sleeping for the given polling interval.
859 .PP
860 Simply invoking
861 .IP
862 fetchmail -d 900
863 .PP
864 will, therefore, poll all the hosts described in your 
865 .I ~/.fetchmailrc
866 file (except those explicitly excluded with the `skip' verb) once
867 every fifteen minutes.
868 .PP
869 It is possible to set a polling interval 
870 in your
871 .I ~/.fetchmailrc
872 file by saying `set daemon <interval>', where <interval> is an
873 integer number of seconds.  If you do this, fetchmail will always
874 start in daemon mode unless you override it with the command-line
875 option --daemon 0 or -d0.
876 .PP
877 Only one daemon process is permitted per user; in daemon mode,
878 .I fetchmail
879 makes a per-user lockfile to guarantee this.
880 .PP
881 Normally, calling fetchmail with a daemon in the background sends a
882 wakeup signal to the daemon, forcing it to poll mailservers
883 immediately.  (The wakeup signal is SIGHUP if fetchmail is running as
884 root, SIGUSR1 otherwise.)  The wakeup action also clears any `wedged'
885 flags indicating that connections have wedged due to failed 
886 authentication or multiple timeouts.
887 .PP
888 The option
889 .B --quit
890 will kill a running daemon process instead of waking it up (if there
891 is no such process, 
892 .I fetchmail
893 notifies you).  If the --quit option is the only command-line option,
894 that's all there is to it.
895 .PP
896 The quit option may also be mixed with other command-line options; its
897 effect is to kill any running daemon before doing what the other
898 options specify in combination with the rc file.
899 .PP
900 The
901 .B \-L <filename>
902 or
903 .B \-\-logfile <filename>
904 option (keyword: set logfile) allows you to redirect status messages
905 emitted while detached into a specified logfile (follow the
906 option with the logfile name).  The logfile is opened for append, so
907 previous messages aren't deleted.  This is primarily useful for
908 debugging configurations.
909 .PP
910 The
911 .B \-\-syslog
912 option (keyword: set syslog) allows you to redirect status and error
913 messages emitted to the
914 .IR syslog (3)
915 system daemon if available.
916 Messages are logged with an id of \fBfetchmail\fR, the facility \fBLOG_MAIL\fR,
917 and priorities \fBLOG_ERR\fR, \fBLOG_ALERT\fR or \fBLOG_INFO\fR.
918 This option is intended for logging status and error messages which
919 indicate the status of the daemon and the results while fetching mail
920 from the server(s).
921 Error messages for command line options and parsing the \fI.fetchmailrc\fR
922 file are still written to stderr, or to the specified log file.
923 The
924 .B \-\-nosyslog
925 option turns off use of 
926 .IR syslog (3),
927 assuming it's turned on in the 
928 .I ~/.fetchmailrc 
929 file, or that the
930 .B \-L
931 or
932 .B \-\-logfile <file>
933 option was used.
934 .PP
935 The 
936 .B \-N
937 or --nodetach option suppresses backgrounding and detachment of the
938 daemon process from its control terminal.  This is primarily useful
939 for debugging.  Note that this also causes the logfile option to be
940 ignored (though perhaps it shouldn't).
941 .PP
942 Note that while running in daemon mode polling a POP2 or IMAP2bis server,
943 transient errors (such as DNS failures or sendmail delivery refusals)
944 may force the fetchall option on for the duration of the next polling
945 cycle.  This is a robustness feature.  It means that if a message is
946 fetched (and thus marked seen by the mailserver) but not delivered
947 locally due to some transient error, it will be re-fetched during the
948 next poll cycle.  (The IMAP logic doesn't delete messages until
949 they're delivered, so this problem does not arise.)
950 .PP
951 If you touch or change the 
952 .I ~/.fetchmailrc 
953 file while fetchmail is running in daemon mode, this will be detected 
954 at the beginning of the next poll cycle.  When a changed
955 .I ~/.fetchmailrc 
956 is detected, fetchmail rereads it and restarts from scratch (using
957 exec(2); no state information is retained in the new instance).  Note also
958 that if you break the
959 .I ~/.fetchmailrc 
960 file's syntax, the new instance will softly and silently vanish away
961 on startup.
962
963 .SH ADMINISTRATIVE OPTIONS
964 .PP
965 The 
966 .B \-\-postmaster <name>
967 option (keyword: set postmaster) specifies the last-resort username to
968 which multidrop mail is to be forwarded if no matching local recipient
969 can be found.  Normally this is just the user who invoked 
970 .IR fetchmail .
971 If the invoking user is root, then the default of this option is
972 the user `postmaster'.  Setting postmaster to the empty string causes
973 such mail to be discarded.
974 .PP
975 The
976 .B \-\-nobounce
977 option suppresses the normal action of bouncing errors back to the 
978 sender in an RFC1894-conformant error message.  If nobounce is on, the
979 message will go to the postmaster instead.
980 .PP
981 The 
982 .B \-\-invisible
983 option (keyword: set invisible) tries to make fetchmail invisible.
984 Normally, fetchmail behaves like any other MTA would -- it generates a
985 Received header into each message describing its place in the chain of
986 transmission, and tells the MTA it forwards to that the mail came from
987 the machine fetchmail itself is running on.  If the invisible option
988 is on, the Received header is suppressed and fetchmail tries to spoof
989 the MTA it forwards to into thinking it came directly from the
990 mailserver host.
991 .PP
992 The 
993 .B \-\-showdots
994 option (keyword: set showdots) forces fetchmail to show progress dots
995 even if the current tty is not stdout (for example logfiles).
996 Starting with fetchmail version 5.3.0, 
997 progress dots are only shown on stdout by default.
998 .PP
999 By specifying the
1000 .B \-\-tracepolls
1001 option, you can ask fetchmail to add information to the Received
1002 header on the form "polling {label} account {user}", where {label} is
1003 the account label (from the specified rcfile, normally ~/.fetchmailrc)
1004 and {user} is the username which is used to log on to the mail
1005 server. This header can be used to make filtering email where no
1006 useful header information is available and you want mail from
1007 different accounts sorted into different mailboxes (this could, for
1008 example, occur if you have an account on the same server running a
1009 mailing list, and are subscribed to the list using that account). The
1010 default is not adding any such header.  In
1011 .IR .fetchmailrc , 
1012 this is called `tracepolls'.
1013
1014 .SH RETRIEVAL FAILURE MODES
1015 The protocols \fIfetchmail\fR uses to talk to mailservers are next to
1016 bulletproof.  In normal operation forwarding to port 25, no message is
1017 ever deleted (or even marked for deletion) on the host until the SMTP
1018 listener on the client side has acknowledged to \fIfetchmail\fR that
1019 the message has been either accepted for delivery or rejected due to a
1020 spam block.
1021 .PP
1022 When forwarding to an MDA, however, there is more possibility
1023 of error.  Some MDAs are `safe' and reliably return a nonzero status
1024 on any delivery error, even one due to temporary resource limits.
1025 The well-known
1026 .IR procmail (1)
1027 program is like this; so are most programs designed as mail transport
1028 agents, such as 
1029 .IR sendmail (1),
1030 and
1031 .IR exim (1).
1032 These programs give back a reliable positive acknowledgement and
1033 can be used with the mda option with no risk of mail loss.  Unsafe
1034 MDAs, though, may return 0 even on delivery failure.  If this
1035 happens, you will lose mail.
1036 .PP
1037 The normal mode of \fIfetchmail\fR is to try to download only `new'
1038 messages, leaving untouched (and undeleted) messages you have already
1039 read directly on the server (or fetched with a previous \fIfetchmail
1040 --keep\fR).  But you may find that messages you've already read on the
1041 server are being fetched (and deleted) even when you don't specify
1042 --all.  There are several reasons this can happen.
1043 .PP
1044 One could be that you're using POP2.  The POP2 protocol includes no
1045 representation of `new' or `old' state in messages, so \fIfetchmail\fR
1046 must treat all messages as new all the time.  But POP2 is obsolete, so
1047 this is unlikely.
1048 .PP
1049 Under POP3, blame RFC1725.  That version of the POP3 protocol
1050 specification removed the LAST command, and some POP servers follow it
1051 (you can verify this by invoking \fIfetchmail -v\fR to the mailserver
1052 and watching the response to LAST early in the query).  The
1053 \fIfetchmail\fR code tries to compensate by using POP3's UID feature,
1054 storing the identifiers of messages seen in each session until the
1055 next session, in the \fI.fetchids\fR file.  But this doesn't track
1056 messages seen with other clients, or read directly with a mailer on
1057 the host but not deleted afterward.  A better solution would be to
1058 switch to IMAP.
1059 .PP
1060 Another potential POP3 problem might be servers that insert messages
1061 in the middle of mailboxes (some VMS implementations of mail are
1062 rumored to do this).  The \fIfetchmail\fR code assumes that new
1063 messages are appended to the end of the mailbox; when this is not true
1064 it may treat some old messages as new and vice versa.  The only 
1065 real fix for this problem is to  switch to IMAP.
1066 .PP
1067 Yet another POP3 problem is that if they can't make tempfiles in the
1068 user's home directory, some POP3 servers will hand back an
1069 undocumented response that causes fetchmail to spuriously report "No
1070 mail".
1071 .PP
1072 The IMAP code uses the presence or absence of the server flag \eSeen
1073 to decide whether or not a message is new.  Under Unix, it counts on
1074 your IMAP server to notice the BSD-style Status flags set by mail user
1075 agents and set the \eSeen flag from them when appropriate.  All Unix
1076 IMAP servers we know of do this, though it's not specified by the IMAP
1077 RFCs.  If you ever trip over a server that doesn't, the symptom will
1078 be that messages you have already read on your host will look new to
1079 the server.  In this (unlikely) case, only messages you fetched with
1080 \fIfetchmail --keep\fR will be both undeleted and marked old.
1081 .PP
1082 In ETRN and ODMR modes, \fIfetchmail\fR does not actually retrieve messages;
1083 instead, it asks the server's SMTP listener to start a queue flush
1084 to the client via SMTP.  Therefore it sends only undelivered messages.
1085
1086 .SH SPAM FILTERING
1087 Many SMTP listeners allow administrators to set up `spam filters' that
1088 block unsolicited email from specified domains.  A MAIL FROM or DATA line that
1089 triggers this feature will elicit an SMTP response which
1090 (unfortunately) varies according to the listener.
1091 .PP
1092 Newer versions of 
1093 .I sendmail
1094 return an error code of 571.  This return value
1095 is blessed by RFC1893 as "Delivery not authorized, message refused".
1096 .PP
1097 According to RFC2821, the correct thing to return in this situation is
1098 550 "Requested action not taken: mailbox unavailable" (the draft adds
1099 "[E.g., mailbox not found, no access, or command rejected for policy
1100 reasons].").
1101 .PP
1102 Older versions of the
1103 .I exim
1104 MTA return 501 "Syntax error in parameters or arguments".
1105 .PP
1106 The
1107 .I postfix
1108 MTA runs 554 as an antispam response.
1109 .PP
1110 Return codes which 
1111 .I fetchmail
1112 treats as antispam responses and discards
1113 the message can be set with the `antispam' option.  This is one of the
1114 .I only
1115 three circumstance under which fetchmail ever discards mail (the others
1116 are the 552 and 553 errors described below, and the suppression of
1117 multidropped messages with a message-ID already seen).
1118 .PP
1119 If
1120 .I fetchmail
1121 is fetching from an IMAP server, the antispam response will be detected and
1122 the message rejected immediately after the headers have been fetched,
1123 without reading the message body.  Thus, you won't pay for downloading 
1124 spam message bodies.
1125 .PP
1126 By default, the list of antispam responses is empty.
1127 .PP
1128 If the \fIspambounce\fR option is on, mail that is spam-blocked
1129 triggers an RFC1892 bounce message informing the originator that we do
1130 not accept mail from it.
1131
1132 .SH SMTP/ESMTP ERROR HANDLING
1133 Besides the spam-blocking described above, fetchmail takes special
1134 actions on the following SMTP/ESMTP error responses
1135 .TP 5
1136 452 (insufficient system storage)
1137 Leave the message in the server mailbox for later retrieval.
1138 .TP 5
1139 552 (message exceeds fixed maximum message size)
1140 Delete the message from the server.  Send bounce-mail to the
1141 originator.
1142 .TP 5
1143 553 (invalid sending domain)
1144 Delete the message from the server.  Don't even try to send
1145 bounce-mail to the originator.
1146 .PP
1147 Other errors trigger bounce mail back to the originator.
1148
1149 .SH THE RUN CONTROL FILE
1150 The preferred way to set up fetchmail is to write a
1151 \&\fI.fetchmailrc\fR file in your home directory (you may do this
1152 directly, with a text editor, or indirectly via \fIfetchmailconf\fR).
1153 When there is a conflict between the command-line arguments and the
1154 arguments in this file, the command-line arguments take precedence.
1155 .PP
1156 To protect the security of your passwords, when --version is not on
1157 your \fI~/.fetchmailrc\fR may not have more than 0600 (u=rw,g=,o=) permissions;
1158 .I fetchmail
1159 will complain and exit otherwise.
1160 .PP
1161 You may read the \fI.fetchmailrc\fR file as a list of commands to 
1162 be executed when 
1163 .I fetchmail
1164 is called with no arguments.
1165 .SS Run Control Syntax
1166 .PP
1167 Comments begin with a '#' and extend through the end of the line.
1168 Otherwise the file consists of a series of server entries or global
1169 option statements in a free-format, token-oriented syntax.
1170 .PP
1171 There are four kinds of tokens: grammar keywords, numbers
1172 (i.e. decimal digit sequences), unquoted strings, and quoted strings.
1173 A quoted string is bounded by double quotes and may contain
1174 whitespace (and quoted digits are treated as a string).  An unquoted
1175 string is any whitespace-delimited token that is neither numeric, string
1176 quoted nor contains the special characters `,', `;', `:', or `='.
1177 .PP
1178 Any amount of whitespace separates tokens in server entries, but is
1179 otherwise ignored. You may use standard C-style escapes (\en, \et,
1180 \eb, octal, and hex) to embed non-printable characters or string
1181 delimiters in strings.
1182 .PP
1183 Each server entry consists of one of the keywords `poll' or `skip',
1184 followed by a server name, followed by server options, followed by any
1185 number of user descriptions.  Note: the most common cause of syntax
1186 errors is mixing up user and server options.
1187 .PP
1188 For backward compatibility, the word `server' is a synonym for `poll'.
1189 .PP
1190 You can use the noise keywords `and', `with',
1191 \&`has', `wants', and `options' anywhere in an entry to make
1192 it resemble English.  They're ignored, but but can make entries much
1193 easier to read at a glance.  The punctuation characters ':', ';' and
1194 \&',' are also ignored.
1195 .PP
1196 .SS Poll vs. Skip
1197 The `poll' verb tells fetchmail to query this host when it is run with
1198 no arguments.  The `skip' verb tells
1199 .I fetchmail 
1200 not to poll this host unless it is explicitly named on the command
1201 line.  (The `skip' verb allows you to experiment with test entries
1202 safely, or easily disable entries for hosts that are temporarily down.)
1203 .PP
1204 .SS Keyword/Option Summary
1205 Here are the legal options.  Keyword suffixes enclosed in
1206 square brackets are optional.  Those corresponding to command-line
1207 options are followed by `-' and the appropriate option letter.
1208
1209 Here are the legal global options:
1210
1211 .TS
1212 l l lw34.
1213 Keyword         Opt     Function
1214 _
1215 set daemon      \&      T{
1216 Set a background poll interval in seconds
1217 T}
1218 set postmaster          \&      T{
1219 Give the name of the last-resort mail recipient
1220 T}
1221 set no bouncemail       \&      T{
1222 Direct error mail to postmaster rather than sender
1223 T}
1224 set no spambounce       \&      T{
1225 Send spam bounces
1226 T}
1227 set logfile     \&      T{
1228 Name of a file to dump error and status messages to
1229 T}
1230 set idfile      \&      T{
1231 Name of the file to store UID lists in
1232 T}
1233 set syslog      \&      T{
1234 Do error logging through syslog(3).
1235 T}
1236 set nosyslog    \&      T{
1237 Turn off error logging through syslog(3).
1238 T}
1239 set properties  \&      T{
1240 String value is ignored by fetchmail (may be used by extension scripts)
1241 T}
1242 .TE
1243
1244 Here are the legal server options:
1245
1246 .TS
1247 l l lw34.
1248 Keyword         Opt     Function
1249 _
1250 via             \&      T{
1251 Specify DNS name of mailserver, overriding poll name
1252 T}
1253 proto[col]      -p      T{
1254 Specify protocol (case insensitive):
1255 POP2, POP3, IMAP, APOP, KPOP
1256 T}
1257 local[domains]  \&      T{
1258 Specify domain(s) to be regarded as local
1259 T}
1260 port            -P      T{
1261 Specify TCP/IP service port
1262 T}
1263 auth[enticate]  \&      T{
1264 Set authentication type (default `any')
1265 T}
1266 timeout         -t      T{
1267 Server inactivity timeout in seconds (default 300)
1268 T}
1269 envelope        -E      T{
1270 Specify envelope-address header name
1271 T}
1272 no envelope     \&      T{
1273 Disable looking for envelope address
1274 T}
1275 qvirtual        -Q      T{
1276 Qmail virtual domain prefix to remove from user name
1277 T}
1278 aka             \&      T{
1279 Specify alternate DNS names of mailserver
1280 T}
1281 interface       -I      T{
1282 specify IP interface(s) that must be up for server poll to take place
1283 T}
1284 monitor         -M      T{
1285 Specify IP address to monitor for activity
1286 T}
1287 plugin          \&      T{
1288 Specify command through which to make server connections.
1289 T}
1290 plugout         \&      T{
1291 Specify command through which to make listener connections.
1292 T}
1293 dns             \&      T{
1294 Enable DNS lookup for multidrop (default)
1295 T}
1296 no dns          \&      T{
1297 Disable DNS lookup for multidrop
1298 T}
1299 checkalias      \&      T{
1300 Do comparison by IP address for multidrop
1301 T}
1302 no checkalias   \&      T{
1303 Do comparison by name for multidrop (default)
1304 T}
1305 uidl            -U      T{
1306 Force POP3 to use client-side UIDLs
1307 T}
1308 no uidl         \&      T{
1309 Turn off POP3 use of client-side UIDLs (default)
1310 T}
1311 interval        \&      T{
1312 Only check this site every N poll cycles; N is a numeric argument.
1313 T}
1314 netsec          \&      T{
1315 Pass in IPsec security option request.
1316 T}
1317 principal       \&      T{
1318 Set Kerberos principal (only useful with imap and kerberos)
1319 T}
1320 esmtpname       \&      T{
1321 Set name for RFC2554 authentication to the ESMTP server.
1322 T}
1323 esmtppassword           \&      T{
1324 Set password for RFC2554 authentication to the ESMTP server.
1325 T}
1326 .TE
1327
1328 Here are the legal user options:
1329
1330 .TS
1331 l l lw34.
1332 Keyword         Opt     Function
1333 _
1334 user[name]      -u      T{
1335 Set remote user name 
1336 (local user name if name followed by `here') 
1337 T}
1338 is              \&      T{
1339 Connect local and remote user names
1340 T}
1341 to              \&      T{
1342 Connect local and remote user names
1343 T}
1344 pass[word]      \&      T{
1345 Specify remote account password
1346 T}
1347 ssl             T{
1348 Connect to server over the specified base protocol using SSL encryption
1349 T}
1350 sslcert                 T{
1351 Specify file for client side public SSL certificate
1352 T}
1353 sslkey                  T{
1354 Specify file for client side private SSL key
1355 T}
1356 sslproto                T{
1357 Force ssl protocol for connection
1358 T}
1359 folder          -r      T{
1360 Specify remote folder to query
1361 T}
1362 smtphost        -S      T{
1363 Specify smtp host(s) to forward to
1364 T}
1365 fetchdomains    \&      T{
1366 Specify domains for which mail should be fetched
1367 T}
1368 smtpaddress     -D      T{
1369 Specify the domain to be put in RCPT TO lines
1370 T}
1371 smtpname                T{
1372 Specify the user and domain to be put in RCPT TO lines
1373 T}
1374 antispam        -Z      T{
1375 Specify what SMTP returns are interpreted as spam-policy blocks
1376 T}
1377 mda             -m      T{
1378 Specify MDA for local delivery
1379 T}
1380 bsmtp           -o      T{
1381 Specify BSMTP batch file to append to
1382 T}
1383 preconnect      \&      T{
1384 Command to be executed before each connection
1385 T}
1386 postconnect     \&      T{
1387 Command to be executed after each connection
1388 T}
1389 keep            -k      T{
1390 Don't delete seen messages from server
1391 T}
1392 flush           -F      T{
1393 Flush all seen messages before querying
1394 T}
1395 fetchall        -a      T{
1396 Fetch all messages whether seen or not
1397 T}
1398 rewrite         \&      T{
1399 Rewrite destination addresses for reply (default)
1400 T}
1401 stripcr         \&      T{
1402 Strip carriage returns from ends of lines
1403 T}
1404 forcecr         \&      T{
1405 Force carriage returns at ends of lines
1406 T}
1407 pass8bits       \&      T{
1408 Force BODY=8BITMIME to ESMTP listener
1409 T}
1410 dropstatus      \&      T{
1411 Strip Status and X-Mozilla-Status lines out of incoming mail
1412 T}
1413 dropdelivered   \&      T{
1414 Strip Delivered-To lines out of incoming mail
1415 T}
1416 mimedecode      \&      T{
1417 Convert quoted-printable to 8-bit in MIME messages
1418 T}
1419 idle            \&      T{
1420 Idle waiting for new messages after each poll (IMAP only)
1421 T}
1422 no keep         -K      T{
1423 Delete seen messages from server (default)
1424 T}
1425 no flush        \&      T{
1426 Don't flush all seen messages before querying (default)
1427 T}
1428 no fetchall     \&      T{
1429 Retrieve only new messages (default)
1430 T}
1431 no rewrite      \&      T{
1432 Don't rewrite headers
1433 T}
1434 no stripcr      \&      T{
1435 Don't strip carriage returns (default)
1436 T}
1437 no forcecr      \&      T{
1438 Don't force carriage returns at EOL (default)
1439 T}
1440 no pass8bits    \&      T{
1441 Don't force BODY=8BITMIME to ESMTP listener (default)
1442 T}
1443 no dropstatus   \&      T{
1444 Don't drop Status headers (default)
1445 T}
1446 no dropdelivered        \&      T{
1447 Don't drop Delivered-To headers (default)
1448 T}
1449 no mimedecode   \&      T{
1450 Don't convert quoted-printable to 8-bit in MIME messages (default)
1451 T}
1452 no idle         \&      T{
1453 Don't idle waiting for new messages after each poll (IMAP only)
1454 T}
1455 limit           -l      T{
1456 Set message size limit
1457 T}
1458 warnings        -w      T{
1459 Set message size warning interval
1460 T}
1461 batchlimit      -b      T{
1462 Max # messages to forward in single connect
1463 T}
1464 fetchlimit      -B      T{
1465 Max # messages to fetch in single connect
1466 T}
1467 expunge         -e      T{
1468 Perform an expunge on every #th message (IMAP and POP3 only)
1469 T}
1470 tracepolls      \&      T{
1471 Add poll tracing information to the Received header
1472 T}
1473 properties      \&      T{
1474 String value is ignored by fetchmail (may be used by extension scripts)
1475 T}
1476 .TE
1477 .PP
1478 Remember that all user options must \fIfollow\fR all server options.
1479 .PP
1480 In the .fetchmailrc file, the `envelope' string argument may be
1481 preceded by a whitespace-separated number.  This number, if specified,
1482 is the number of such headers to skip (that is, an argument of 1
1483 selects the second header of the given type).  This is sometime useful
1484 for ignoring bogus Received headers created by an ISP's local delivery
1485 agent.
1486 .SS Keywords Not Corresponding To Option Switches
1487 .PP
1488 The `folder' and `smtphost' options (unlike their command-line
1489 equivalents) can take a space- or comma-separated list of names
1490 following them.
1491 .PP
1492 All options correspond to the obvious command-line arguments, except
1493 the following: `via', `interval', `aka', `is', `to', `dns'/`no dns',
1494 `checkalias'/`no checkalias', `password', `preconnect', `postconnect',
1495 `localdomains', `stripcr'/`no stripcr', `forcecr'/`no forcecr',
1496 `pass8bits'/`no pass8bits' `dropstatus/no dropstatus',
1497 `dropdelivered/no dropdelivered', `mimedecode/no mimedecode', `idle/no
1498 idle', and `no envelope'.
1499 .PP
1500 The `via' option is for if you want to have more
1501 than one configuration pointing at the same site.  If it is present,
1502 the string argument will be taken as the actual DNS name of the 
1503 mailserver host to query.
1504 This will override the argument of poll, which can then simply be a
1505 distinct label for the configuration (e.g. what you would give on the
1506 command line to explicitly query this host).
1507 .PP
1508 The `interval' option (which takes a numeric argument) allows you to poll a
1509 server less frequently than the basic poll interval.  If you say
1510 \&`interval N' the server this option is attached to will only be
1511 queried every N poll intervals. 
1512 .PP
1513 The `is' or `to' keywords associate the following local (client)
1514 name(s) (or server-name to client-name mappings separated by =) with
1515 the mailserver user name in the entry.  If an is/to list has `*' as
1516 its last name, unrecognized names are simply passed through.
1517 .PP
1518 A single local name can be used to support redirecting your mail when
1519 your username on the client machine is different from your name on the
1520 mailserver.  When there is only a single local name, mail is forwarded
1521 to that local username regardless of the message's Received, To, Cc,
1522 and Bcc headers.  In this case 
1523 .I fetchmail
1524 never does DNS lookups.
1525 .PP
1526 When there is more than one local name (or name mapping) the
1527 \fIfetchmail\fR code does look at the Received, To, Cc, and Bcc
1528 headers of retrieved mail (this is `multidrop mode').  It looks for
1529 addresses with hostname parts that match your poll name or your `via',
1530 `aka' or `localdomains' options, and usually also for hostname parts
1531 which DNS tells it are aliases of the mailserver.  See the discussion
1532 of `dns', `checkalias', `localdomains', and `aka' for details on how
1533 matching addresses are handled.
1534 .PP
1535 If \fIfetchmail\fR cannot match any mailserver usernames or
1536 localdomain addresses, the mail will be bounced.
1537 Normally it will be bounced to the sender, but if `nobounce' is on
1538 it will go to the postmaster (which in turn defaults to being the
1539 calling user).
1540 .PP
1541 The `dns' option (normally on) controls the way addresses from
1542 multidrop mailboxes are checked.  On, it enables logic to check each
1543 host address that doesn't match an `aka' or `localdomains' declaration
1544 by looking it up with DNS.  When a mailserver username is recognized
1545 attached to a matching hostname part, its local mapping is added to
1546 the list of local recipients.
1547 .PP
1548 The `checkalias' option (normally off) extends the lookups performed
1549 by the `dns' keyword in multidrop mode, providing a way to cope with
1550 remote MTAs that identify themselves using their canonical name, while
1551 they're polled using an alias.
1552 When such a server is polled, checks to extract the envelope address
1553 fail, and
1554 .IR fetchmail 
1555 reverts to delivery using the To/Cc/Bcc headers (See below 
1556 `Header vs. Envelope addresses'). 
1557 Specifying this option instructs
1558 .IR fetchmail 
1559 to retrieve all the IP addresses associated with both the poll name
1560 and the name used by the remote MTA and to do a comparison of the IP
1561 addresses.  This comes in handy in situations where the remote server
1562 undergoes frequent canonical name changes, that would otherwise
1563 require modifications to the rcfile.  `checkalias' has no effect if
1564 `no dns' is specified in the rcfile.
1565 .PP
1566 The `aka' option is for use with multidrop mailboxes.  It allows you
1567 to pre-declare a list of DNS aliases for a server.  This is an
1568 optimization hack that allows you to trade space for speed.  When
1569 .IR fetchmail ,
1570 while processing a multidrop mailbox, grovels through message headers
1571 looking for names of the mailserver, pre-declaring common ones can
1572 save it from having to do DNS lookups.  Note: the names you give
1573 as arguments to `aka' are matched as suffixes -- if you specify 
1574 (say) `aka netaxs.com', this will match not just a hostnamed
1575 netaxs.com, but any hostname that ends with `.netaxs.com'; such as 
1576 (say) pop3.netaxs.com and mail.netaxs.com.
1577 .PP
1578 The `localdomains' option allows you to declare a list of domains
1579 which fetchmail should consider local.  When fetchmail is parsing
1580 address lines in multidrop modes, and a trailing segment of a host
1581 name matches a declared local domain, that address is passed through
1582 to the listener or MDA unaltered (local-name mappings are \fInot\fR
1583 applied).
1584 .PP
1585 If you are using `localdomains', you may also need to specify \&`no
1586 envelope', which disables \fIfetchmail\fR's normal attempt to deduce
1587 an envelope address from the Received line or X-Envelope-To header or
1588 whatever header has been previously set by `envelope'.  If you set `no
1589 envelope' in the defaults entry it is possible to undo that in
1590 individual entries by using `envelope <string>'.  As a special case,
1591 \&`envelope "Received"' restores the default parsing of
1592 Received lines.
1593 .PP
1594 The \fBpassword\fR option requires a string argument, which is the password
1595 to be used with the entry's server.
1596 .PP
1597 The `preconnect' keyword allows you to specify a shell command to be
1598 executed just before each time
1599 .I fetchmail
1600 establishes a mailserver connection.  This may be useful if you are 
1601 attempting to set up secure POP connections with the aid of
1602 .IR ssh (1).
1603 If the command returns a nonzero status, the poll of that mailserver
1604 will be aborted.
1605 .PP
1606 Similarly, the `postconnect' keyword similarly allows you to specify a
1607 shell command to be executed just after each time a mailserver
1608 connection is taken down.
1609 .PP
1610 The `forcecr' option controls whether lines terminated by LF only are
1611 given CRLF termination before forwarding.  Strictly speaking RFC821
1612 requires this, but few MTAs enforce the requirement it so this option
1613 is normally off (only one such MTA, qmail, is in significant use at
1614 time of writing).  
1615 .PP
1616 The `stripcr' option controls whether carriage returns are stripped
1617 out of retrieved mail before it is forwarded.  It is normally not
1618 necessary to set this, because it defaults to `on' (CR stripping
1619 enabled) when there is an MDA declared but `off' (CR stripping
1620 disabled) when forwarding is via SMTP.  If `stripcr' and `forcecr' are
1621 both on, `stripcr' will override.
1622 .PP
1623 The `pass8bits' option exists to cope with Microsoft mail programs that
1624 stupidly slap a "Content-Transfer-Encoding: 7bit" on everything.  With
1625 this option off (the default) and such a header present, 
1626 .I fetchmail
1627 declares BODY=7BIT to an ESMTP-capable listener; this causes problems for
1628 messages actually using 8-bit ISO or KOI-8 character sets, which will
1629 be garbled by having the high bits of all characters stripped.  If
1630 \&`pass8bits' is on, 
1631 .I fetchmail
1632 is forced to declare BODY=8BITMIME to any ESMTP-capable listener.  If
1633 the listener is 8-bit-clean (as all the major ones now are) the right
1634 thing will probably result.
1635 .PP
1636 The `dropstatus' option controls whether nonempty Status and
1637 X-Mozilla-Status lines are retained in fetched mail (the default) or
1638 discarded.  Retaining them allows your MUA to see what messages (if
1639 any) were marked seen on the server.  On the other hand, it can
1640 confuse some new-mail notifiers, which assume that anything with a
1641 Status line in it has been seen.  (Note: the empty Status lines
1642 inserted by some buggy POP servers are unconditionally discarded.)
1643 .PP
1644 The `dropdelivered' option controls wether Delivered-To headers will
1645 be kept in fetched mail (the default) or discarded. These headers are 
1646 added by Qmail and Postfix mailservers in order to avoid mail loops but
1647 may get in your way if you try to "mirror" a mailserver within the same
1648 domain. Use with caution.
1649 .PP
1650 The `mimedecode' option controls whether MIME messages using the
1651 quoted-printable encoding are automatically converted into pure 8-bit
1652 data. If you are delivering mail to an ESMTP-capable, 8-bit-clean
1653 listener (that includes all of the major MTAs like sendmail), then
1654 this will automatically convert quoted-printable message headers and
1655 data into 8-bit data, making it easier to understand when reading
1656 mail. If your e-mail programs know how to deal with MIME messages,
1657 then this option is not needed.  The mimedecode option is off by
1658 default, because doing RFC2047 conversion on headers throws away
1659 character-set information and can lead to bad results if the encoding
1660 of the headers differs from the body encoding.
1661 .PP
1662 The `idle' option is usable only with IMAP servers supporting the
1663 RFC2177 IDLE command extension.  If it is enabled, and fetchmail
1664 detects that IDLE is supported, an IDLE will be issued at the end
1665 of each poll.  This will tell the IMAP server to hold the connection
1666 open and notify the client when new mail is available.  If you need to
1667 poll a link frequently, IDLE can save bandwidth by eliminating TCP/IP
1668 connects and LOGIN/LOGOUT sequences. On the other hand, an IDLE 
1669 connection will eat almost all of your fetchmail's time, because it
1670 will never drop the connection and allow other pools to occur unless
1671 the server times out the IDLE.  It also doesn't work with multiple 
1672 folders; only the first folder will ever be polled.
1673 .PP
1674 The `properties' option is an extension mechanism.  It takes a string
1675 argument, which is ignored by fetchmail itself.  The string argument may be
1676 used to store configuration information for scripts which require it.
1677 In particular, the output of `--configdump' option will make properties
1678 associated with a user entry readily available to a Python script.
1679 .PP
1680 .SS Miscellaneous Run Control Options
1681 The words `here' and `there' have useful English-like
1682 significance.  Normally `user eric is esr' would mean that 
1683 mail for the remote user `eric' is to be delivered to `esr',
1684 but you can make this clearer by saying `user eric there is esr here',
1685 or reverse it by saying `user esr here is eric there'
1686 .PP
1687 Legal protocol identifiers for use with the `protocol' keyword are:
1688 .sp
1689 .nf
1690     auto (or AUTO)
1691     pop2 (or POP2)
1692     pop3 (or POP3)
1693     sdps (or SDPS)
1694     imap (or IMAP)
1695     apop (or APOP)
1696     kpop (or KPOP)
1697 .fi
1698 .sp
1699 .PP
1700 Legal authentication types are `any', `password', `kerberos', 'kereberos_v5' 
1701 and `gssapi', `cram-md5', `otp', `ntlm', `ssh`.
1702 The `password' type specifies authentication by normal transmission of a
1703 password (the password may be plaintext or subject to
1704 protocol-specific encryption as in APOP); `kerberos' tells
1705 \fIfetchmail\fR to try to get a Kerberos ticket at the start of each
1706 query instead, and send an arbitrary string as the password; and
1707 `gssapi' tells fetchmail to use GSSAPI authentication.  See the description
1708 of the `auth' keyword for more.
1709 .PP
1710 Specifying `kpop' sets POP3 protocol over port 1109 with Kerberos V4
1711 authentication.  These defaults may be overridden by later options.
1712 .PP
1713 There are currently four global option statements; `set logfile'
1714 followed by a string sets the same global specified by --logfile.  A
1715 command-line --logfile option will override this.  Also, `set daemon'
1716 sets the poll interval as --daemon does.  This can be overridden by a
1717 command-line --daemon option; in particular --daemon 0 can be used to
1718 force foreground operation. The `set postmaster' statement sets the
1719 address to which multidrop mail defaults if there are no local
1720 matches.  Finally, `set syslog' sends log messages to syslogd(8).
1721
1722 .SH INTERACTION WITH RFC 822
1723 When trying to determine the originating address of a message,
1724 fetchmail looks through headers in the following order: 
1725 .sp
1726 .nf
1727         Return-Path:
1728         Resent-Sender: (ignored if it doesn't contain an @ or !)
1729         Sender: (ignored if it doesn't contain an @ or !)
1730         Resent-From:
1731         From:
1732         Reply-To:
1733         Apparently-From:
1734 .fi
1735 .sp
1736 The originating address is used for logging, and to set the MAIL FROM
1737 address when forwarding to SMTP.  This order is intended to cope
1738 gracefully with receiving mailing list messages in multidrop mode. The
1739 intent is that if a local address doesn't exist, the bounce message
1740 won't be returned blindly to the author or to the list itself, but
1741 rather to the list manager (which is less annoying).
1742
1743 In multidrop mode, destination headers are processed as follows:
1744 First, fetchmail looks for the Received: header (or whichever one is
1745 specified by the `envelope' option) to determine the local
1746 recipient address. If the mail is addressed to more than one recipient,
1747 the Received line won't contain any information regarding recipient addresses.
1748
1749 Then fetchmail looks for the Resent-To:, Resent-Cc:, and Resent-Bcc:
1750 lines.  If they exists, they should contain the final recipients and
1751 have precedence over their To:/Cc:/Bcc: counterparts.  If the Resent-*
1752 lines doesn't exist, the To:, Cc:, Bcc: and Apparently-To: lines are
1753 looked for. (The presence of a Resent-To: is taken to imply that the
1754 person referred by the To: address has already received the original
1755 copy of the mail).
1756
1757 .SH CONFIGURATION EXAMPLES
1758 Note that although there are password declarations in a good many
1759 of the examples below, this is mainly for illustrative purposes.
1760 We recommend stashing account/password pairs in your $HOME/.netrc
1761 file, where they can be used not just by fetchmail but by ftp(1) and
1762 other programs.
1763
1764 Basic format is:
1765
1766 .nf
1767   poll SERVERNAME protocol PROTOCOL username NAME password PASSWORD 
1768 .fi
1769 .PP
1770 Example:
1771
1772 .nf
1773   poll pop.provider.net protocol pop3 username "jsmith" password "secret1"
1774 .fi
1775 .PP
1776 Or, using some abbreviations:
1777
1778 .nf
1779   poll pop.provider.net proto pop3 user "jsmith" password "secret1"
1780 .fi
1781 .PP
1782 Multiple servers may be listed:
1783
1784 .nf
1785   poll pop.provider.net proto pop3 user "jsmith" pass "secret1"
1786   poll other.provider.net proto pop2 user "John.Smith" pass "My^Hat"
1787 .fi
1788
1789 Here's a version of those two with more whitespace and some noise words: 
1790
1791 .nf
1792   poll pop.provider.net proto pop3
1793       user "jsmith", with password secret1, is "jsmith" here;
1794   poll other.provider.net proto pop2:
1795       user "John.Smith", with password "My^Hat", is "John.Smith" here;
1796 .fi
1797
1798 This version is much easier to read and doesn't cost significantly
1799 more (parsing is done only once, at startup time).
1800
1801 .PP
1802 If you need to include whitespace in a parameter string, enclose the
1803 string in double quotes.  Thus:
1804
1805 .nf
1806   poll mail.provider.net with proto pop3:
1807         user "jsmith" there has password "u can't krak this"
1808                     is jws here and wants mda "/bin/mail"
1809 .fi
1810
1811 You may have an initial server description headed by the keyword
1812 `defaults' instead of `poll' followed by a name.  Such a record
1813 is interpreted as defaults for all queries to use. It may be overwritten
1814 by individual server descriptions.  So, you could write:
1815
1816 .nf
1817   defaults proto pop3
1818         user "jsmith"
1819   poll pop.provider.net
1820         pass "secret1"
1821   poll mail.provider.net
1822         user "jjsmith" there has password "secret2"
1823 .fi
1824
1825 It's possible to specify more than one user per server (this is only
1826 likely to be useful when running fetchmail in daemon mode as root).
1827 The `user' keyword leads off a user description, and every user specification
1828 in a multi-user entry must include it.  Here's an example:
1829
1830 .nf
1831   poll pop.provider.net proto pop3 port 3111
1832         user "jsmith" with pass "secret1" is "smith" here
1833         user jones with pass "secret2" is "jjones" here keep
1834 .fi
1835
1836 This associates the local username `smith' with the pop.provider.net
1837 username `jsmith' and the local username `jjones' with the
1838 pop.provider.net username `jones'.  Mail for `jones' is kept on the
1839 server after download.
1840 .PP
1841 Here's what a simple retrieval configuration for a multi-drop mailbox
1842 looks like:
1843
1844 .nf
1845   poll pop.provider.net:
1846         user maildrop with pass secret1 to golux 'hurkle'='happy' snark here
1847 .fi
1848
1849 This says that the mailbox of account `maildrop' on the server is a
1850 multi-drop box, and that messages in it should be parsed for the
1851 server user names `golux', `hurkle', and `snark'.  It further
1852 specifies that `golux' and `snark' have the same name on the
1853 client as on the server, but mail for server user `hurkle' should be
1854 delivered to client user `happy'.
1855 .PP
1856 Here's an example of another kind of multidrop connection:
1857
1858 .nf
1859   poll pop.provider.net localdomains loonytoons.org toons.org:
1860         user maildrop with pass secret1 to * here
1861 .fi
1862
1863 This also says that the mailbox of account `maildrop' on the server is
1864 a multi-drop box.  It tells fetchmail that any address in the
1865 loonytoons.org or toons.org domains (including subdomain addresses like
1866 `joe@daffy.loonytoons.org') should be passed through to the local SMTP
1867 listener without modification.  Be careful of mail loops if you do this!
1868 .PP
1869 Here's an example configuration using ssh and the plugin option.  The
1870 queries are made directly on the stdin and stdout of imapd via ssh.
1871 Note that in this setup, IMAP authentication can be skipped.
1872
1873 .nf
1874 poll mailhost.net with proto imap:
1875         plugin "ssh %h /usr/sbin/imapd" auth ssh;
1876         user esr is esr here
1877 .fi
1878
1879 .SH THE USE AND ABUSE OF MULTIDROP MAILBOXES
1880 Use the multiple-local-recipients feature with caution -- it can bite.
1881 All multidrop features are ineffective in ETRN and ODMR modes.
1882
1883 Also, note that in multidrop mode duplicate mails are suppressed.  A
1884 piece of mail is considered duplicate if it has the same message-ID as
1885 the message immediately preceding and more than one addressee.  Such
1886 runs of messages may be generated when copies of a message addressed
1887 to multiple users are delivered to a multidrop box.
1888
1889 .SS Header vs. Envelope addresses 
1890 The fundamental problem is that by having your mailserver toss several
1891 peoples' mail in a single maildrop box, you may have thrown away
1892 potentially vital information about who each piece of mail was
1893 actually addressed to (the `envelope address', as opposed to the
1894 header addresses in the RFC822 To/Cc/Bcc headers).  This `envelope
1895 address' is the address you need in order to reroute mail properly.
1896 .PP
1897 Sometimes 
1898 .I fetchmail
1899 can deduce the envelope address.  If the mailserver MTA is
1900 .I sendmail
1901 and the item of mail had just one recipient, the MTA will have written
1902 a `by/for' clause that gives the envelope addressee into its Received
1903 header. But this doesn't work reliably for other MTAs, nor if there is
1904 more than one recipient.  By default, \fIfetchmail\fR looks for
1905 envelope addresses in these lines; you can restore this default with
1906 -E "Received" or \&`envelope Received'.
1907 .PP
1908 Alternatively, some SMTP listeners and/or mail servers insert a header
1909 in each message containing a copy of the envelope addresses.  This
1910 header (when it exists) is often `X-Envelope-To'.  Fetchmail's
1911 assumption about this can be changed with the -E or `envelope' option.
1912 Note that writing an envelope header of this kind exposes the names of
1913 recipients (including blind-copy recipients) to all receivers of the
1914 messages; it is therefore regarded by some administrators as a
1915 security/privacy problem.
1916 .PP
1917 A slight variation of the `X-Envelope-To' header is the `Delivered-To' put
1918 by qmail to avoid mail loops. It will probably prefix the user name with a
1919 string that normally matches the user's domain. To remove this prefix you
1920 can use the -Q or `qvirtual' option.
1921 .PP
1922 Sometimes, unfortunately, neither of these methods works.  When they
1923 all fail, fetchmail must fall back on the contents of To/Cc/Bcc
1924 headers to try to determine recipient addressees -- and these are not
1925 reliable.  In particular, mailing-list software often ships mail with
1926 only the list broadcast address in the To header.
1927 .PP
1928 When
1929 .I fetchmail
1930 cannot deduce a recipient address that is local, and the intended
1931 recipient address was anyone other than fetchmail's invoking user,
1932 mail will get lost.  This is what makes the multidrop feature risky.
1933 .PP
1934 A related problem is that when you blind-copy a mail message, the Bcc
1935 information is carried \fIonly\fR as envelope address (it's not put
1936 in the headers fetchmail can see unless there is an X-Envelope
1937 header).  Thus, blind-copying to someone who gets mail over a
1938 fetchmail link will fail unless the the mailserver host routinely
1939 writes X-Envelope or an equivalent header into messages in your maildrop.
1940
1941 .SS Good Ways To Use Multidrop Mailboxes
1942 Multiple local names can be used to administer a mailing list from the
1943 client side of a \fIfetchmail\fR collection.  Suppose your name is
1944 \&`esr', and you want to both pick up your own mail and maintain a mailing
1945 list called (say) "fetchmail-friends", and you want to keep the alias
1946 list on your client machine.
1947 .PP
1948 On your server, you can alias \&`fetchmail-friends' to `esr'; then, in
1949 your \fI.fetchmailrc\fR, declare \&`to esr fetchmail-friends here'.
1950 Then, when mail including `fetchmail-friends' as a local address
1951 gets fetched, the list name will be appended to the list of
1952 recipients your SMTP listener sees.  Therefore it will undergo alias
1953 expansion locally.  Be sure to include `esr' in the local alias
1954 expansion of fetchmail-friends, or you'll never see mail sent only to
1955 the list.  Also be sure that your listener has the "me-too" option set
1956 (sendmail's -oXm command-line option or OXm declaration) so your name
1957 isn't removed from alias expansions in messages you send.
1958 .PP
1959 This trick is not without its problems, however.  You'll begin to see
1960 this when a message comes in that is addressed only to a mailing list
1961 you do \fInot\fR have declared as a local name.  Each such message
1962 will feature an `X-Fetchmail-Warning' header which is generated
1963 because fetchmail cannot find a valid local name in the recipient
1964 addresses.  Such messages default (as was described above) to being
1965 sent to the local user running
1966 .IR fetchmail ,
1967 but the program has no way to know that that's actually the right thing.
1968
1969 .SS Bad Ways To Abuse Multidrop Mailboxes
1970 Multidrop mailboxes and 
1971 .I fetchmail
1972 serving multiple users in daemon mode do not mix.  The problem, again, is
1973 mail from mailing lists, which typically does not have an individual
1974 recipient address on it.   Unless 
1975 .I fetchmail
1976 can deduce an envelope address, such mail will only go to the account
1977 running fetchmail (probably root).  Also, blind-copied users are very
1978 likely never to see their mail at all.
1979 .PP
1980 If you're tempted to use 
1981 .I fetchmail 
1982 to retrieve mail for multiple users from a single mail drop via POP or
1983 IMAP, think again (and reread the section on header and envelope
1984 addresses above).  It would be smarter to just let the mail sit in the
1985 mailserver's queue and use fetchmail's ETRN or ODMR modes to trigger
1986 SMTP sends periodically (of course, this means you have to poll more
1987 frequently than the mailserver's expiry period).  If you can't arrange
1988 this, try setting up a UUCP feed.
1989 .PP
1990 If you absolutely \fImust\fR use multidrop for this purpose, make sure
1991 your mailserver writes an envelope-address header that fetchmail can
1992 see.  Otherwise you \fIwill\fR lose mail and it \fIwill\fR come back
1993 to haunt you.
1994
1995 .SS Speeding Up Multidrop Checking
1996 Normally, when multiple users are declared 
1997 .I fetchmail
1998 extracts recipient addresses as described above and checks each host
1999 part with DNS to see if it's an alias of the mailserver.  If so, the
2000 name mappings described in the to ... here declaration are done and
2001 the mail locally delivered.
2002 .PP
2003 This is the safest but also slowest method.  To speed it up,
2004 pre-declare mailserver aliases with `aka'; these are checked before
2005 DNS lookups are done.  If you're certain your aka list contains
2006 .B all
2007 DNS aliases of the mailserver (and all MX names pointing at it) 
2008 you can declare `no dns' to suppress DNS lookups entirely and
2009 \fIonly\fR match against the aka list.
2010
2011 .SH EXIT CODES
2012 To facilitate the use of 
2013 .I fetchmail
2014 in shell scripts, an exit code is returned to give an indication
2015 of what occurred during a given connection.
2016 .PP
2017 The exit codes returned by 
2018 .I fetchmail
2019 are as follows:
2020 .IP 0
2021 One or more messages were successfully retrieved (or, if the -c option
2022 was selected, were found waiting but not retrieved).
2023 .IP 1
2024 There was no mail awaiting retrieval.  (There may have been old mail still
2025 on the server but not selected for retrieval.)
2026 .IP 2
2027 An error was encountered when attempting to open a socket to retrieve
2028 mail.  If you don't know what a socket is, don't worry about it --
2029 just treat this as an 'unrecoverable error'.  This error can also be
2030 because a protocol fetchmail wants to use is not listed in /etc/services.
2031 .IP 3
2032 The user authentication step failed.  This usually means that a bad 
2033 user-id, password, or APOP id was specified.  Or it may mean that you 
2034 tried to run fetchmail under circumstances where it did not have
2035 standard input attached to a terminal and could not prompt for a
2036 missing password.
2037 .IP 4
2038 Some sort of fatal protocol error was detected.
2039 .IP 5
2040 There was a syntax error in the arguments to 
2041 .IR fetchmail .
2042 .IP 6
2043 The run control file had bad permissions.
2044 .IP 7
2045 There was an error condition reported by the server.  Can also
2046 fire if
2047 .I fetchmail
2048 timed out while waiting for the server.
2049 .IP 8
2050 Client-side exclusion error.  This means 
2051 .I fetchmail
2052 either found another copy of itself already running, or failed in such
2053 a way that it isn't sure whether another copy is running.
2054 .IP 9
2055 The user authentication step failed because the server responded "lock
2056 busy".  Try again after a brief pause!  This error is not implemented
2057 for all protocols, nor for all servers.  If not implemented for your
2058 server, "3" will be returned instead, see above.  May be returned when
2059 talking to qpopper or other servers that can respond with "lock busy"
2060 or some similar text containing the word "lock".
2061 .IP 10
2062 The 
2063 .I fetchmail
2064 run failed while trying to do an SMTP port open or transaction.
2065 .IP 11
2066 Fatal DNS error.  Fetchmail encountered an error while performing
2067 a DNS lookup at startup and could not proceed.
2068 .IP 12
2069 BSMTP batch file could not be opened.
2070 .IP 13
2071 Poll terminated by a fetch limit (see the --fetchlimit option).
2072 .IP 14
2073 Server busy indication.
2074 .IP 23
2075 Internal error.  You should see a message on standard error with
2076 details.
2077 .PP
2078 When
2079 .I fetchmail
2080 queries more than one host, return status is 0 if \fIany\fR query
2081 successfully retrieved mail. Otherwise the returned error status is
2082 that of the last host queried.
2083
2084 .SH FILES
2085 .TP 5
2086 ~/.fetchmailrc
2087 default run control file
2088 .TP 5
2089 ~/.fetchids
2090 default location of file associating hosts with last message IDs seen
2091 (used only with newer RFC1725-compliant POP3 servers supporting the
2092 UIDL command).
2093 .TP 5
2094 ~/.fetchmail.pid
2095 lock file to help prevent concurrent runs (non-root mode).
2096 .TP 5
2097 ~/.netrc 
2098 your FTP run control file, which (if present) will be searched for
2099 passwords as a last resort before prompting for one interactively.
2100 .TP 5
2101 /var/run/fetchmail.pid
2102 lock file to help prevent concurrent runs (root mode, Linux systems).
2103 .TP 5
2104 /etc/fetchmail.pid
2105 lock file to help prevent concurrent runs (root mode, systems without /var/run).
2106
2107 .SH ENVIRONMENT
2108 If the FETCHMAILUSER variable is set, it is used as the name of the
2109 calling user (default local name) for purposes such as mailing error
2110 notifications.  Otherwise, if either the LOGNAME or USER variable is
2111 correctly set (e.g. the corresponding UID matches the session user ID)
2112 then that name is used as the default local name.  Otherwise
2113 \fBgetpwuid\fR(3) must be able to retrieve a password entry for the
2114 session ID (this elaborate logic is designed to handle the case of
2115 multiple names per userid gracefully).
2116
2117 If the environment variable FETCHMAILHOME is set to a valid and
2118 existing directory name, the .fetchmailrc and .fetchids and
2119 \&.fetchmail.pid files are put there instead of in the invoking user's
2120 home directory (and lose the leading dots on theirt names).  The
2121 \&.netrc file is looked for in the the invoking user's home directory
2122 regardless of FETCHMAILHOME's setting.
2123
2124 .SH SIGNALS
2125 If a
2126 .I fetchmail
2127 daemon is running as root, SIGHUP wakes it up from its sleep phase and
2128 forces a poll of all non-skipped servers (this is in accordance with
2129 the usual conventions for system daemons).
2130 .PP
2131 If
2132 .I fetchmail
2133 is running in daemon mode as non-root, use SIGUSR1 to wake it (this is
2134 so SIGHUP due to logout can retain the default action of killing it).
2135 .PP
2136 Running
2137 .I fetchmail
2138 in foreground while a background fetchmail is running will do
2139 whichever of these is appropriate to wake it up.
2140
2141 .SH BUGS AND KNOWN PROBLEMS
2142 The mda and plugin options interact badly.  In order to collect error
2143 status from the MDA, fetchmail has to change its normal signal
2144 handling so that dead plugin processes don't get reaped until the end
2145 of the poll cycle.  This can cause resource starvation if too many
2146 zombies accumulate.  So either don't deliver to a MDA using plugins or
2147 risk being overrun by an army of undead.
2148 .PP
2149 The RFC822 address parser used in multidrop mode chokes on some
2150 @-addresses that are technically legal but bizarre.  Strange uses of
2151 quoting and embedded comments are likely to confuse it.
2152 .PP
2153 In a message with multiple envelope headers, only the last one
2154 processed will be visible to fetchmail.  To get around this, use a
2155 mailserver-side filter that consolidates the contents of all envelope
2156 headers into a single one (procmail, mailagent, or maildrop can be
2157 programmed to do this fairly easily).
2158 .PP
2159 Use of some of these protocols requires that the program send
2160 unencrypted passwords over the TCP/IP connection to the mailserver.
2161 This creates a risk that name/password pairs might be snaffled with a
2162 packet sniffer or more sophisticated monitoring software.  Under Linux
2163 and FreeBSD, the --interface option can be used to restrict polling to
2164 availability of a specific interface device with a specific local or
2165 remote IP address, but snooping is still possible if (a) either host
2166 has a network device that can be opened in promiscuous mode, or (b)
2167 the intervening network link can be tapped.  We recommend the use of
2168 .IR ssh (1)
2169 tunnelling to not only shroud your passwords but encrypt the entire
2170 conversation.
2171 .PP
2172 Use of the %F or %T escapes in an mda option could open a security
2173 hole, because they pass text manipulable by an attacker to a shell
2174 command.  Potential shell characters are replaced by `_' before
2175 execution.  The hole is further reduced by the fact that fetchmail
2176 temporarily discards any suid privileges it may have while running the
2177 MDA.  For maximum safety, however, don't use an mda command containing
2178 %F or %T when fetchmail is run from the root account itself.
2179 .PP
2180 Fetchmail's method of sending bouncemail and spam bounces requires that
2181 port 25 of localhost be available for sending mail via SMTP.
2182 .PP
2183 If you modify a
2184 .I ~/.fetchmailrc
2185 while a background instance is running and break the syntax, the
2186 background instance will die silently.  Unfortunately, it can't 
2187 die noisily because we don't yet know whether syslog should be enabled.
2188 On some systems, fetchmail dies quietly even if there is no syntax
2189 error; this seems to have something to do with buggy terminal ioctl
2190 code in the kernel.
2191 .PP
2192 The -f - option (reading a configuration from stdin) is incompatible
2193 with the plugin option.
2194 .PP
2195 The UIDL code is generally flaky and tends to lose its state on errors
2196 and line drops (so that old messages are re-seen).  If this happens to
2197 you, switch to IMAP4.
2198 .PP
2199 The `principal' option only handles Kerberos IV, not V.
2200 .PP
2201 Send comments, bug reports, gripes, and the like to the
2202 fetchmail-friends list <fetchmail-friends@lists.ccil.org>.  An HTML FAQ is
2203 available at the fetchmail home page; surf to
2204 http://www.tuxedo.org/~esr/fetchmail or do a WWW search for pages with
2205 `fetchmail' in their titles.
2206
2207 .SH AUTHOR
2208 Eric S. Raymond <esr@snark.thyrsus.com>.  Too many other people to
2209 name here have contributed code and patches. 
2210 This program is descended from and replaces 
2211 .IR popclient , 
2212 by Carl Harris <ceharris@mal.com>; the internals have become quite different, 
2213 but some of its interface design is directly traceable to that
2214 ancestral program.
2215
2216 .SH SEE ALSO
2217 mutt(1), elm(1), mail(1), sendmail(8), popd(8), imapd(8), netrc(5)
2218 .SH APPLICABLE STANDARDS
2219 .TP 5
2220 SMTP/ESMTP:
2221 RFC 821, RFC2821, RFC 1869, RFC 1652, RFC 1870, RFC 1983, RFC 1985,
2222 RFC 2554.
2223 .TP 5
2224 mail:
2225 RFC 822, RFC2822, RFC 1123, RFC 1892, RFC 1894.
2226 .TP 5
2227 POP2:
2228 RFC 937
2229 .TP 5
2230 POP3:
2231 RFC 1081, RFC 1225, RFC 1460, RFC 1725, RFC1734, RFC 1939, RFC 1957,
2232 RFC2195, RFC 2449.
2233 .TP 5
2234 APOP:
2235 RFC 1460, RFC 1725, RFC 1939.
2236 .TP 5
2237 RPOP:
2238 RFC 1081, RFC 1225.
2239 .TP 5
2240 IMAP2/IMAP2BIS:
2241 RFC 1176, RFC 1732.
2242 .TP 5
2243 IMAP4/IMAP4rev1:
2244 RFC 1730, RFC 1731, RFC 1732, RFC 2060, RFC 2061, RFC 2195, RFC 2177,
2245 RFC 2683.
2246 .TP 5
2247 ETRN:
2248 RFC 1985.
2249 .TP 5
2250 ODMR/ATRN:
2251 RFC 2645.
2252 .TP 5
2253 OTP:
2254 RFC 1938.
2255 .TP 5
2256 LMTP:
2257 RFC 2033.
2258 .TP 5
2259 GSSAPI:
2260 RFC 1508.
2261