Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
FETCHMAIL(1)		   fetchmail reference manual		    FETCHMAIL(1)

NAME
     fetchmail - fetch mail from a POP, IMAP, ETRN, or ODMR-capable server

SYNOPSIS
     fetchmail [option...] [mailserver...]
     fetchmailconf

DESCRIPTION
     fetchmail	is a mail-retrieval and forwarding utility; it fetches mail from
     remote mail servers and forwards it to your local (client) machine's deliv-
     ery system.  You can then handle the retrieved mail using normal mail  user
     agents  such  as  mutt(1), elm(1) or Mail(1).  The fetchmail utility can be
     run in a daemon mode to repeatedly poll one or more systems at a  specified
     interval.

     The  fetchmail  program  can gather mail from servers supporting any of the
     common mail-retrieval protocols: POP2 (legacy, to be  removed  from  future
     release),	POP3, IMAP2bis, IMAP4, and IMAP4rev1.  It can also use the ESMTP
     ETRN extension and ODMR.  (The RFCs  describing  all  these  protocols  are
     listed at the end of this manual page.)

     While  fetchmail  is  primarily  intended	to be used over on-demand TCP/IP
     links (such as SLIP or PPP connections), it may also be useful as a message
     transfer agent for sites  which  refuse  for  security  reasons  to  permit
     (sender-initiated) SMTP transactions with sendmail.

DEPRECATION AND CRYPTOGRAPHIC SECURITY WARNINGS
     Several cryptographic algorithms that are referenced by mail standareds for
     authentication were based on MD4 or MD5 or SHA1 algorithms that were devel-
     oped  in  1990,  1991  and 1995 respectively.  30 years later, these are no
     longer deemed secure, and are considered broken.

     Not all IETF standards and RFCs have given up on them, and  some  protocols
     actively  require something that incorporates MD4, MD5 or SHA1 in some form
     so disabling their use in fetchmail altogether would also pull the plug on,
     say, protocols such as ODMR,  or  formerly-popular  authentication  schemes
     such as POP3 with APOP.

     The recommendation is to prefer TLS-wrapped connections via dedicated ports
     993 (IMAP4) or 995 (POP3) or STARTTLS in-band negotiation with such authen-
     tication schemes, to reduce the risk to expose login credentials.

     Also,  weak authentication schemes will be phased out from future fetchmail
     releases, please see the NEWS file that should have come with your distrib-
     ution of fetchmail.

SUPPORT, TROUBLESHOOTING
     For troubleshooting, tracing and debugging, you  need  to	increase  fetch-
     mail's  verbosity to actually see what happens. To do that, please run both
     of the two following commands, adding all of  the	options  you'd	normally
     use.

	    env LC_ALL=C fetchmail -V -v --nodetach --nosyslog

	    (This  command line prints in English how fetchmail understands your
	    configuration.)

	    env LC_ALL=C fetchmail -vvv  --nodetach --nosyslog

	    (This command line actually runs fetchmail with verbose English out-
	    put.)

     Also see item #G3 in fetchmail's FAQ.

     You can omit the LC_ALL=C part above if you want output in the  local  lan-
     guage  (if  supported). However if you are posting to mailing lists, please
     leave it in. The maintainers do not necessarily understand  your  language,
     please use English.

   QUICKSTART
     1.  Set  up  a  local SMTP mail server, or command-line based mail delivery
     agent such as maildrop or dovecot-lda, configure and  test  and  debug  it.
     Make sure that mail you deliver to yourself through it ends up in the right
     place.   Do  NOT  continue  unless  and until this works or you risk losing
     mail!

     2. Create a .fetchmailrc file in your home  directory  that  looks  roughly
     like this, for POP3 fetches.

	    poll mailserver.example.org proto POP3 uidl
	    user joe.sixpack
	    keep ssl

     You  need	to  adjust  several elements here: mailserver.example.org is the
     server's name. joe.sixpack is the login name to use for the  server.   keep
     states  that  messages  should  be left on the server, rather than deleted.
     ssl states that the connection should be encrypted.  If  you  need  to  use
     IMAP instead of POP3, change "proto POP3 uidl" to "proto IMAP".

     If  you chose to deliver through a command-line program, add an mda option,
     for instance:

	    mda "/usr/bin/maildrop -d %T"

     3. And then make sure the ~/.fetchmailrc file is not readable  or	writable
     to anyone but yourself:

	    chmod 0600 ~/.fetchmailrc

     4.  Finally, run fetchmail in verbose mode and see that it works.	To limit
     impact, if something goes wrong, we just try two messages:

	    fetchmail -v --fetchlimit 2

     If then the POP3 server refuses UIDL, you cannot use the "keep"  option  on
     that server and you need to remove the uidl and keep options, but note that
     then  fetchmail will remove messages it has successfully delivered from the
     server.

TLS (SSL) QUICKSTART
     Your fetchmail distribution should have come with a README.SSL file,  which
     see.   It	is  recommended  to  configure	all  polls with --ssl --sslproto
     tls1.2+ if supported by the server, which configures fetchmail along recent
     IETF proposed standards and best  current	practices,  RFC-8314,  RFC-8996,
     RFC-8997.

     Fetchmail	6.6.0  and newer also support TLS and STARTTLS for SMTP, see the
     --smtphost option for how to configure those.

CONCEPTS
     If fetchmail is used with a POP or an IMAP server (but  not  with	ETRN  or
     ODMR), it has two fundamental modes of operation for each user account from
     which it retrieves mail: singledrop- and multidrop-mode.

     In singledrop-mode,
	    fetchmail  assumes that all messages in the user's account (mailbox)
	    are intended for a single recipient.  The identity of the  recipient
	    will either default to the local user currently executing fetchmail,
	    or will need to be explicitly specified in the configuration file.

	    fetchmail  uses  singledrop-mode  when the fetchmailrc configuration
	    contains at most a single  local  user  specification  for	a  given
	    server account.

     In multidrop-mode,
	    fetchmail  assumes	that  the  mail server account actually contains
	    mail intended for any number of  different	recipients.   Therefore,
	    fetchmail  must  attempt  to  deduce the proper "envelope recipient"
	    from the mail headers of each message.  In this mode  of  operation,
	    fetchmail almost resembles a mail transfer agent (MTA).

	    Note  that	neither the POP nor IMAP protocols were intended for use
	    in this fashion, and hence envelope information  is  often	not  di-
	    rectly  available.	The  ISP  must store the envelope information in
	    some message header and. The ISP must also store  one  copy  of  the
	    message per recipient. If either of the conditions is not fulfilled,
	    this  process  is  unreliable, because fetchmail must then resort to
	    guessing the true envelope recipient(s) of a message.  This  usually
	    fails for mailing list messages and Bcc:d mail, or mail for multiple
	    recipients in your domain.

	    fetchmail uses multidrop-mode when more than one local user and/or a
	    wildcard is specified for a particular server account in the config-
	    uration file.

     In ETRN and ODMR modes,
	    these  considerations  do not apply, as these protocols are based on
	    SMTP, which provides explicit envelope recipient information.  These
	    protocols always support multiple recipients.

     As  each  message	is retrieved, fetchmail normally delivers it via SMTP to
     port 25 on the machine it is running on (localhost), just as though it were
     being passed in over a normal TCP/IP link.   fetchmail  provides  the  SMTP
     server  with  an  envelope recipient derived in the manner described previ-
     ously.  The mail will then be delivered according to your MTA's rules  (the
     Mail  Transfer  Agent is usually sendmail(8), exim(8), or postfix(8)).  In-
     voking your system's MDA (Mail Delivery Agent) is the  duty  of  your  MTA.
     All  the  delivery-control  mechanisms  (such  as	.forward files) normally
     available through your system MTA and local delivery agents will  therefore
     be applied as usual.

     If your fetchmail configuration sets a local MDA (see the --mda option), it
     will be used directly instead of talking SMTP to port 25.

     If the program fetchmailconf is available, it will assist you in setting up
     and editing a fetchmailrc configuration.  It runs under the X window system
     and requires that the language Python and the Tk toolkit (with Python bind-
     ings) be present on your system.  If you are first setting up fetchmail for
     single-user  mode, it is recommended that you use Novice mode.  Expert mode
     provides complete control of fetchmail configuration,  including  the  mul-
     tidrop  features.	In either case, the 'Autoprobe' button will tell you the
     most capable protocol a given mail server supports, and warn you of  poten-
     tial problems with that server.

PREFACE ON THIS MANUAL
     Fetchmail's  run-time strings have been translated (localized) to some lan-
     guages, but the manual is only available in English.  In  some  situations,
     for  comparing  output  to manual, it may be helpful to switch fetchmail to
     English output by overriding the locale variables, for instance:

	    env LC_ALL=C fetchmail # add other options before the hash

	    env LANG=en fetchmail # other options before the hash

     or similar. Details vary by operating system.

GENERAL OPERATION
     The behavior of fetchmail is controlled by command-line options and  a  run
     control  file,  ~/.fetchmailrc,  the syntax of which we describe in a later
     section (this file is what the fetchmailconf program edits).   Command-line
     options override ~/.fetchmailrc declarations.

     Each server name that you specify following the options on the command line
     will  be  queried.   If you do not specify any servers on the command line,
     each 'poll' entry in your ~/.fetchmailrc file will be queried,  unless  the
     idle option is used, which see.

     To  facilitate the use of fetchmail in scripts and pipelines, it returns an
     appropriate exit code upon termination -- see EXIT CODES below.

     The following options modify the behavior of fetchmail.  It is seldom  nec-
     essary  to  specify  any of these once you have a working .fetchmailrc file
     set up.

     Almost all options have a corresponding keyword which can be  used  to  de-
     clare them in a .fetchmailrc file.

     Some  special  options  are not covered here, but are documented instead in
     sections on AUTHENTICATION and DAEMON MODE which follow.

   General Options
     -? | --help
	    Displays option help.

     -V | --version
	    Displays the version information for your  copy  of  fetchmail.   No
	    mail  fetch  is  performed.  Instead, for each server specified, all
	    the option information that would be computed if fetchmail were con-
	    necting to that server is displayed.  Any  non-printable  characters
	    in	passwords or other string names are shown as back-slashed C-like
	    escape sequences.  This option is useful for verifying that your op-
	    tions are set the way you want them.

     -c | --check
	    Return a status code to indicate  whether  there  is  mail	waiting,
	    without  actually  fetching or deleting mail (see EXIT CODES below).
	    This option turns off daemon mode (in which it  would  be  useless).
	    It	does  not play well with queries to multiple sites, and does not
	    work with ETRN or ODMR.  It will return  a	false  positive  if  you
	    leave  read but undeleted mail in your server mailbox and your fetch
	    protocol cannot tell kept messages from new  ones.	 This  means  it
	    will  work with IMAP, not work with POP2, and may occasionally flake
	    out under POP3.

     -s | --silent
	    Silent mode.  Suppresses all progress/status messages that are  nor-
	    mally  echoed  to  standard output during a fetch (but does not sup-
	    press actual error messages).  The --verbose option overrides this.

     -v | --verbose
	    Verbose mode.  All control messages passed between fetchmail and the
	    mail server are echoed to  stdout.	 Overrides  --silent.	Doubling
	    this  option  (-v  -v)  causes  extra  diagnostic  information to be
	    printed.

     --nosoftbounce
	    (since v6.3.10, Keyword: set no softbounce, since v6.3.10)
	    Hard bounce mode. All permanent delivery errors cause messages to be
	    deleted from the upstream server, see "no softbounce" below.

     --softbounce
	    (since v6.3.10, Keyword: set softbounce, since v6.3.10)
	    Soft bounce mode. All permanent delivery errors cause messages to be
	    left on the upstream server if the protocol supports that.	This op-
	    tion is on by default to match historic fetchmail documentation, and
	    will be changed to hard bounce mode in the next fetchmail release.

   Disposal Options
     -a | --all | (since v6.3.3) --fetchall
	    (Keyword: fetchall, since v3.0)
	    Retrieve both old (seen) and new messages from the mail server.  The
	    default is to fetch only messages the server has  not  marked  seen.
	    Under POP3, this option also forces the use of RETR rather than TOP.
	    Note  that	POP2 retrieval behaves as though --all is always on (see
	    RETRIEVAL FAILURE MODES below) and this option does  not  work  with
	    ETRN  or ODMR.  While the -a and --all command-line and fetchall rc-
	    file options have been supported for a  long  time,  the  --fetchall
	    command-line option was added in v6.3.3.

     -k | --keep
	    (Keyword: keep)
	    Keep  retrieved  messages on the remote mail server.  Normally, mes-
	    sages are deleted from the folder on the mail server after they have
	    been retrieved.  Specifying the keep option  causes  retrieved  mes-
	    sages to remain in your folder on the mail server.	This option does
	    not  work with ETRN or ODMR. If used with POP3, it is recommended to
	    also specify the --uidl option or uidl keyword.

     -K | --nokeep
	    (Keyword: nokeep)
	    Delete retrieved messages from the remote mail server.  This  option
	    forces  retrieved  mail to be deleted.  It may be useful if you have
	    specified a default of keep in your .fetchmailrc.	This  option  is
	    forced on with ETRN and ODMR.

     --moveto <folder>
	    (Keyword: moveto)
	    In	IMAP  mode,  instead of flushing a message, move it to the given
	    IMAP folder instead. This is useful for  avoiding  data  loss  while
	    testing, and is the preferred way to delete emails on certain imple-
	    mentations,  for  example Google wants you to delete mails by moving
	    them to [Gmail]/Trash. Only available for IMAP servers. This  option
	    is	only accepted with --proto imap, but not if IMAP is chosen auto-
	    matically. It is ineffective when --keep is in effect.

     -F | --flush
	    (Keyword: flush)
	    POP3/IMAP only.  This is a dangerous option and can cause mail  loss
	    when  used	improperly. It deletes old (seen) messages from the mail
	    server before retrieving new messages.  Warning: This can cause mail
	    loss if you check your mail with other clients than  fetchmail,  and
	    cause fetchmail to delete a message it had never fetched before.  It
	    can  also  cause mail loss if the mail server marks the message seen
	    after retrieval (IMAP2 servers). You should probably  not  use  this
	    option in your configuration file. If you use it with POP3, you must
	    use  the  'uidl'  option. What you probably want is the default set-
	    ting: if you do not specify '-k', then fetchmail will  automatically
	    delete messages after successful delivery.

     --limitflush
	    POP3/IMAP only, since version 6.3.0.  Delete oversized messages from
	    the  mail  server  before  retrieving  new	messages. The size limit
	    should be separately specified with the --limit option.  This option
	    does not work with ETRN or ODMR.

   Protocol and Query Options
     -p <proto> | --proto <proto> | --protocol <proto>
	    (Keyword: proto[col])
	    Specify the protocol to use when communicating with the remote  mail
	    server.   If  no  protocol is specified, the default is AUTO.  proto
	    may be one of the following:

	    AUTO   Tries IMAP, POP3, and POP2 (skipping any of these  for  which
		   support has not been compiled in).

	    POP2   Post Office Protocol 2 (legacy, to be removed from future re-
		   lease)

	    POP3   Post Office Protocol 3

	    APOP   Use	POP3  with  old-fashioned  MD5-challenge authentication.
		   Considered not resistant to man-in-the-middle attacks.

	    RPOP   Use POP3 with RPOP authentication.

	    KPOP   Use POP3 with Kerberos V4 authentication on port 1109.

	    SDPS   Use POP3 with Demon Internet's SDPS extensions.

	    IMAP   IMAP2bis, IMAP4, or IMAP4rev1  (fetchmail  automatically  de-
		   tects their capabilities).

	    ETRN   Use the ESMTP ETRN option.

	    ODMR   Use the On-Demand Mail Relay ESMTP profile.

     All  these  alternatives work in basically the same way (communicating with
     standard server daemons to fetch mail already delivered to a mailbox on the
     server) except ETRN and ODMR.  The ETRN mode allows you to ask a  compliant
     ESMTP  server  (such as BSD sendmail at release 8.8.0 or higher) to immedi-
     ately open a sender-SMTP connection to your client machine and  begin  for-
     warding any items addressed to your client machine in the server's queue of
     undelivered mail.	 The ODMR mode requires an ODMR-capable server and works
     similarly	to  ETRN,  except that it does not require the client machine to
     have a static DNS.

     -U | --uidl
	    (Keyword: uidl)
	    Force UIDL use (effective only with POP3).	Force client-side track-
	    ing of 'newness' of messages (UIDL stands for  "unique  ID	listing"
	    and is described in RFC1939).  Use with 'keep' to use a mailbox as a
	    baby news drop for a group of users. The fact that seen messages are
	    skipped is logged, unless error logging is done through syslog while
	    running  in  daemon mode.  Note that fetchmail may automatically en-
	    able this option depending on upstream  server  capabilities.   Note
	    also  that this option may be removed and forced enabled in a future
	    fetchmail version. See also: --idfile.

     --idle (since 6.3.3)
	    (Keyword: idle, since before 6.0.0)
	    Enable IDLE use (effective only with IMAP).  Note  that  this  works
	    with  only one account and one folder at a given time, other folders
	    or accounts will not be polled when idle is in  effect!   While  the
	    idle  rcfile  keyword had been supported for a long time, the --idle
	    command-line option was added in version 6.3.3. IDLE use means  that
	    fetchmail  tells  the IMAP server to send notice of new messages, so
	    they can be retrieved sooner than would  be  possible  with  regular
	    polls.   Fetchmail	also contains a workaround to emulate IDLE; this
	    workaround was ineffective since 6.4.22 and fixed in  6.5.3  (broken
	    by commit 616e8c70 and repaired in f91923b5), Gitlab issue #69.

     --forceidle (since 6.5.0)
	    (Keyword: forceidle, since 6.5.0)
	    Use  IDLE  even if the server does not advertise it in its capabili-
	    ties. This is a dangerous option, use carefully.

     --idletimeout (since 6.5.0)
	    (Keyword: idletimeout, since 6.5.0)
	    Set the timeout (in seconds) for the IDLE command because  too  many
	    servers  break  the protocol (which requires 30 minutes) and hang up
	    after a few minutes. Default value: 1680 s (= 28 min).

     -P <portnumber> | --service <servicename>
	    (Keyword: service) Since version 6.3.0.
	    The service option permits you to specify a service name to  connect
	    to.   You  can  specify a decimal port number here, if your services
	    database lacks the required service-port assignments.  See	the  FAQ
	    item  R12 and the --ssl documentation for details. This replaces the
	    older --port option.

     Note that this does not magically switch between TLS-wrapped  and	STARTTLS
     modes,  if  you  specify  a  port	number or service name here that is TLS-
     wrapped, meaning it starts to negotiate TLS before sending application data
     in the clear, you may need to specify --ssl on the command line or  ssl  in
     your rcfile.

     --port <portnumber>
	    (Keyword: port)
	    Obsolete  version  of  --service  that  does not take service names.
	    Note: this option may be removed from a future version.

     --principal <principal>
	    (Keyword: principal)
	    The principal option permits you to specify a service principal  for
	    mutual authentication.  This is applicable to POP3 or IMAP with Ker-
	    beros  4  authentication  only.   It does not apply to Kerberos 5 or
	    GSSAPI.  This option may be removed in a future fetchmail version.

     -t <seconds> | --timeout <seconds>
	    (Keyword: timeout)
	    The timeout option allows you to set a  server-non-response  timeout
	    in	seconds.   If  a mail server does not send a greeting message or
	    respond to commands for the given number of seconds, fetchmail  will
	    drop  the  connection to it.  Without such a timeout fetchmail might
	    hang until the TCP connection times out, trying to fetch mail from a
	    down host, which may be very long.	This would be  particularly  an-
	    noying  for  a  fetchmail running in the background.  There is a de-
	    fault timeout which fetchmail -V will report.  If a given connection
	    receives too many timeouts in succession, fetchmail will consider it
	    wedged and stop retrying.  The calling  user  will	be  notified  by
	    email if this happens.

	    Beginning  with  fetchmail	6.3.10,  the SMTP client uses the recom-
	    mended  minimum  timeouts  from  RFC-5321  while  waiting  for   the
	    SMTP/LMTP  server it is talking to.  You can raise the timeouts even
	    more, but you cannot shorten them. This is to avoid a painful situa-
	    tion where fetchmail has been configured with  a  short  timeout  (a
	    minute  or	less),	ships  a long message (many MBytes) to the local
	    MTA, which then takes longer than timeout to respond "OK", which  it
	    eventually	will;  that would mean the mail gets delivered properly,
	    but fetchmail cannot notice it and will thus re-fetch this big  mes-
	    sage over and over again.

     --plugin <command>
	    (Keyword: plugin)
	    The plugin option allows you to use an external program to establish
	    the  TCP connection.  This is useful if you want to use ssh, or need
	    some special firewall setup.  The program will be looked up in $PATH
	    and can optionally be passed the host name and port as arguments us-
	    ing "%h" and "%p" respectively (note that the interpolation logic is
	    rather primitive, and these tokens must be bounded by whitespace  or
	    beginning  of string or end of string).  Fetchmail will write to the
	    plugin's stdin and read from the plugin's stdout.

     --plugout <command>
	    (Keyword: plugout)
	    Identical to the plugin option above, but this one is used	for  the
	    SMTP connections.

     -r <name> | --folder <name>
	    (Keyword: folder[s])
	    Causes  a  specified  non-default mail folder on the mail server (or
	    comma-separated list of folders) to be retrieved.  The syntax of the
	    folder name is server-dependent.  This option is not available under
	    POP3, ETRN, or ODMR.

     --tracepolls
	    (Keyword: tracepolls)
	    Tell fetchmail to poll trace information in the  form  'polling  ac-
	    count  %s'	and 'folder %s' to the Received line it generates, where
	    the %s parts are replaced by the user's remote name, the poll label,
	    and the folder (mailbox) where available (the Received  header  also
	    normally  includes the server's true name).  This can be used to fa-
	    cilitate mail filtering based on the account it  is  being	received
	    from. The folder information is written only since version 6.3.4.

     --ssl  (Keyword: ssl)
	    Causes the connection to the mail server to be encrypted via SSL, by
	    negotiating  SSL directly after connecting (called SSL-wrapped mode,
	    or Implicit TLS by RFC-8314).  Please see the description of  --ssl-
	    proto  below!   More information is available in the README.SSL file
	    that ships with fetchmail.

	    Note that even if this option is omitted, fetchmail may still  nego-
	    tiate  SSL	in-band  for  POP3 or IMAP, through the STLS or STARTTLS
	    feature.  You can use the --sslproto option to modify that behavior.

	    If no port is specified, the connection is	attempted  to  the  well
	    known  port of the SSL version of the base protocol.  This is gener-
	    ally a different port than the port used by the base protocol.   For
	    IMAP,  this  is port 143 for the clear protocol and port 993 for the
	    SSL secured protocol; for POP3, it is port 110 for	the  clear  text
	    and port 995 for the encrypted variant.

	    If	your  system lacks the corresponding entries from /etc/services,
	    see the --service option and specify  the  numeric	port  number  as
	    given in the previous paragraph (unless your ISP had directed you to
	    different ports, which is uncommon however).

     --nossl
	    (Keyword: nossl)
	    Cancels  out  a  default of ssl given earlier, in defaults, or in an
	    rcfile if --nossl is given on the command-line.  Use --sslproto with
	    proper argument to enable STARTTLS.

     --sslcert <name>
	    (Keyword: sslcert)
	    For certificate-based client  authentication.   Some  SSL  encrypted
	    servers  require  client  side keys and certificates for authentica-
	    tion.  In most cases, this is optional.  This specifies the location
	    of the public key certificate to be presented to the server  at  the
	    time the SSL session is established.  It is not required (but may be
	    provided)  if  the	server	does not require it.  It may be the same
	    file as the private key (combined key and certificate file) but this
	    is not recommended. Also see --sslkey below.

	    NOTE: If you use client authentication, the  user  name  is  fetched
	    from  the  certificate's  CommonName and overrides the name set with
	    --user.

     --sslkey <name>
	    (Keyword: sslkey)
	    Specifies the file name of the client side private	SSL  key.   Some
	    SSL  encrypted servers require client side keys and certificates for
	    authentication.  In most cases, this is  optional.	 This  specifies
	    the  location  of the private key used to sign transactions with the
	    server at the time the SSL session is established.	It  is	not  re-
	    quired  (but  may be provided) if the server does not require it. It
	    may be the same file as the public key (combined key and certificate
	    file) but this is not recommended.

	    If a password is required to unlock the key, it will be prompted for
	    at the time just prior to establishing the session	to  the  server.
	    This can cause some complications in daemon mode.

	    Also see --sslcert above.

     --sslproto <value>
	    (Keyword: sslproto, NOTE: semantic changes since v6.4.0)
	    This  option has a dual use, out of historic fetchmail behaviour. It
	    controls both the SSL/TLS protocol version	and,  if  --ssl  is  not
	    specified,	the STARTTLS behaviour (upgrading the protocol to an SSL
	    or TLS connection in-band). Some other options may however make  TLS
	    mandatory  -- in particular, --sslcertck is now default behavior and
	    requires SSL.

	    Recognized values for --sslproto are given below.  You  should  nor-
	    mally choose one of the auto-negotiating options, i. e. 'tls1.2+' or
	    'auto'  or	one of the other options ending in a plus (+) character.
	    Note that depending on the TLS library  (OpenSSL,  AWS-LC,	wolfSSL)
	    version  and  configuration,  some options cause run-time errors be-
	    cause the requested SSL or TLS versions are  not  supported  by  the
	    particular	installed  TLS library.  Be sure to test well before you
	    deploy for unattended operation!

	    'auto' (default, the same as  TLS1.2+).  Since  v6.4.0,  changed  in
		   v6.5.0.  Require  TLS.  Auto-negotiate TLSv1.2 or newer, dis-
		   able downgrade below.  (older fetchmail versions than  v6.5.0
		   have  auto-negotiated  older  protocols,  v6.4.x would permit
		   TLSv1.0 by default, v6.3.x would permit SSLv3).

	    '', the empty string
		   Disable STARTTLS. If --ssl is given for the same server,  log
		   an error and pretend that 'auto' had been used instead.

	    'SSL23'see	'auto'. Deprecated, recognized for backwards compatibil-
		   ity.

	    'TLS'  see 'auto'. For symmetry with OpenSSL client method names.

	    'TLS1' Require TLSv1. This does not negotiate TLSv1.1 or newer,  and
		   is  discouraged.  Replace  by  TLS1+ unless the latter chokes
		   your server.

	    'TLS1+'Since v6.4.0. This is an auto-negotiation feature  that  will
		   permit TLSv1.0 and newer.

	    'TLS1.1'
		   Since v6.4.0. Require TLS v1.1 exactly.

	    'TLS1.1+'
		   Since v6.4.0. Require TLS. Auto-negotiate TLSv1.1 or newer.

	    'TLS1.2'
		   Since v6.4.0. Require TLS v1.2 exactly.

	    'TLS1.2+'
		   Since  v6.4.0.  Require TLS. Auto-negotiate TLSv1.2 or newer.
		   This is the default in fetchmail v6.5.x.

	    'TLS1.3'
		   Since v6.4.0. Require TLS v1.3 exactly.

	    'TLS1.3+'
		   Since v6.4.0. Require TLS. Auto-negotiate TLSv1.3 or newer.

	    Unrecognized parameters
		   are treated the same as 'auto'.

	    NOTE: you should hardly ever need to use anything other than ''  (to
	    force an unencrypted connection) or 'auto' (to enforce TLS).

     --sslcertck
	    (Keyword: sslcertck, default enabled since v6.4.0)
	    --sslcertck  causes  fetchmail  to	require that SSL/TLS be used and
	    disconnect unless it can successfully negotiate SSL or TLS, or if it
	    cannot successfully verify and validate the certificate  and  follow
	    it	to  a  trust anchor (or trusted root certificate). The trust an-
	    chors are given as a set of  local	trusted  certificates  (see  the
	    sslcertfile and sslcertpath options). If the server certificate can-
	    not  be  obtained  or  is not signed by one of the trusted ones (di-
	    rectly or indirectly), fetchmail will disconnect, regardless of  the
	    sslfingerprint option.

     --nosslcertck
	    (Keyword: no sslcertck, only in v6.4.X)
	    The  opposite  of --sslcertck, this is a discouraged option. It per-
	    mits fetchmail to continue connecting even if the server certificate
	    failed the verification checks.  Should only be used  together  with
	    --sslfingerprint.

     --sslcertfile <file>
	    (Keyword: sslcertfile, since v6.3.17)
	    Sets the file fetchmail uses to look up local certificates.  The de-
	    fault  is empty.  This can be given in addition to --sslcertpath be-
	    low, and certificates specified in --sslcertfile will  be  processed
	    before  those  in --sslcertpath.  The option can be used in addition
	    to --sslcertpath.

	    The file is a text file. It contains the concatenation of trusted CA
	    certificates in PEM format.

	    Note that using this option will suppress loading  the  default  SSL
	    trusted CA certificates file unless you set the environment variable
	    FETCHMAIL_INCLUDE_DEFAULT_X509_CA_CERTS to a non-empty value.

     --sslcertpath <directory>
	    (Keyword: sslcertpath)
	    Sets the directory fetchmail uses to look up local certificates. The
	    default  is  your  OpenSSL	default directory. The directory must be
	    hashed the way OpenSSL expects it - every time you add or  modify  a
	    certificate  in  the  directory,  you  need to use the c_rehash tool
	    (which comes with OpenSSL in the tools/ sub-directory). Also,  after
	    OpenSSL upgrades, you may need to run c_rehash.

	    This  can be given in addition to --sslcertfile above, which see for
	    precedence rules.

	    Note that using this option will suppress  adding  the  default  SSL
	    trusted  CA  certificates  directory  unless you set the environment
	    variable  FETCHMAIL_INCLUDE_DEFAULT_X509_CA_CERTS  to  a   non-empty
	    value.

     --sslcommonname <common name>
	    (Keyword: sslcommonname; since v6.3.9)
	    Use  of this option is discouraged. Before using it, contact the ad-
	    ministrator of your upstream server and ask for a  proper  SSL  cer-
	    tificate  to be used. If that cannot be attained, this option can be
	    used to specify the name (CommonName) that fetchmail expects on  the
	    server  certificate.   A  correctly configured server will have this
	    set to the host name by which it is reached, and by  default  fetch-
	    mail will expect as much. Use this option when the CommonName is set
	    to some other value, to avoid the "Server CommonName mismatch" warn-
	    ing,  and  only  if the upstream server's operator cannot be made to
	    use proper certificates.

     --sslfingerprint [{<algo>}]<fingerprint>
	    (Keyword: sslfingerprint)
	    Specify the fingerprint of the server key  in  hexadecimal	notation
	    with  colons  separating  groups  of two digits.  This is the format
	    that fetchmail uses to report the fingerprint when an SSL connection
	    is established.  When this is specified, fetchmail will compare  the
	    server  key  fingerprint with the given one, and the connection will
	    fail if they do not match, regardless of the sslcertck setting.  The
	    connection will also fail if fetchmail cannot obtain an SSL certifi-
	    cate from the server.  This can be used to prevent man-in-the-middle
	    attacks,  but  the	finger print from the server must be obtained or
	    verified over a secure channel, and certainly not over the same  In-
	    ternet connection that fetchmail would use.

	    The fingerprint can be prefixed with an EVP_MD digest algorithm name
	    in	curly braces, for instance, {MD5}00:01:...:0F.	All digest algo-
	    rithms that your SSL provider library supports can be used.   Choose
	    a sensible one, for instance, SHA256.  If the {algo} prefix is omit-
	    ted, MD5 is used for compatibility with fetchmail 6.4 and older.

	    Using this option will prevent printing certificate verification er-
	    rors as long as --nosslcertck is in effect.

	    If	you  just  want  the --verbose log output to switch logging to a
	    different hash, without pinning the server's certificate  hash,  you
	    can   use	--sslfingerprint   '{algo}*',	f.i.,	--sslfingerprint
	    '{SHA256}*'

	    To obtain the fingerprint  of  a  certificate  stored  in  the  file
	    cert.pem, try:

		 openssl x509 -in cert.pem -noout -sha256 -fingerprint

	    For details, see x509(1ssl).

   Delivery Control Options
     -S <hosts> | --smtphost <hosts>
	    (Keyword: smtp[host])
	    (since v6.6.0, fetchmail supports TLS and STARTTLS for SMTP hosts)
	    (since  v6.5.6,  fetchmail knows how to generate RFC-5321 IP address
	    literals from a bare numeric-address IPv4 or IPv6 string)

	    Specify a hunt list of hosts to forward mail to (one  or  more  host
	    names,  comma-separated).  Hosts  are tried in list order; the first
	    one that is up becomes the forwarding target for  the  current  run.
	    If this option is not specified, 'localhost' is used as the default.
	    Each  host name may have a port number following the host name.  The
	    port number is separated from the host name by a slash; the  default
	    port  is  "smtp".	If  you specify an absolute path name (beginning
	    with a /), it will be interpreted as the name of a UNIX  socket  ac-
	    cepting  LMTP  connections	(such  as is supported by the Cyrus IMAP
	    daemon).
	    Example:

	    --smtphost server1,server2/2525,server3,/var/imap/socket/lmtp

	    This option can be used with ODMR, and will make fetchmail	a  relay
	    between the ODMR server and SMTP or LMTP receiver.

	    Each  host	name  for SMTP servers supports up to four options sepa-
	    rated with a slash (/):

	    /25 or /587 or /smtp or /465 or /smtps
		   25 or any other number between 1  and  65535  designates  the
		   port  number  to  connect  to; smtp or any other service name
		   that the system can resolve (simple setups may use  /etc/ser-
		   vices); if not given, fetchmail will use default port numbers
		   as described below.

	    One of

		   /notls disables opportunistic STARTTLS even if offered by the
			  server.  This  is implied if the hostname is localhost
			  exactly.

		   /starttls
			  requires the server to offer STARTTLS in the	Extended
			  Hello  (EHLO) and requires that the server certificate
			  validates as if --sslcertck had been set.  The default
			  port will be 25.

		   /tls   negotiates TLS wrapping before exchanging the greeting
			  and requires that the server certificate validates  as
			  if --sslcertck had been set.	The default port will be
			  465.

	    None of /notls, /tls, /starttls:
		   opportunistic  TLS  (except	for localhost, see above).  Will
		   try to negotiate STARTTLS if offered by the server, but  will
		   not insist on certificate validation, as if by --nosslcertck.

	    /tlsproto=PROTO
		   behaves as though --sslproto PROTO had been given, which see.
		   Ignored if /notls is active.

	    /servername=NAME
		   switches the expected X.509 certificate name to NAME and will
		   pass it through Server Name Indication (SNI) if the SMTP ser-
		   vice  multiplexes  by  server name.	Ignored if /notls is ac-
		   tive.

	    NOTE 1: any text not recognized explicitly will be considered a ser-
	    vice name; syntax errors such as mistyped options  can  show  up  as
	    confusing  getaddrinfo()  errors to resolve a service, for instance,
	    as 'Servname not supported for ai_socktype'.

	    NOTE 2: when contradictory options are given,  the	last  one  given
	    prevails

	    Example:

	    --smtphost dnsname.example.org/25/starttls/tlsproto=tls1.3/servername=commonname.example.com

	    would  resolve dnsname.example.org, connect to it on port 25, try to
	    issue an STARTTLS command and upgrade to TLS v1.3  and  expect  that
	    the  server's  X.509  certificate  matches the name commonname.exam-
	    ple.com.

	    WARNING for versions 6.5.5 and before: if you use address numeric IP
	    addresses here, be sure to use --smtpaddress or  --smtpname  (either
	    of which see) with a valid SMTP address literal!

     --esmtpname <authid>
	    (since v6.5.7; Keyword: esmtpname, since v5.9.9) Sets the authoriza-
	    tion  ID  for SMTP AUTH to be used for logging into the SMTP server.
	    Defaults to fetchmail's notion of the running user, taken  from  the
	    first  defined  environment  variable  FETCHMAILUSER, LOGNAME, USER.
	    (not currently listed in --help output)

	    NOTE: This is per "poll" and will be the same for all servers listed
	    in your smtphost list!

	    NOTE: fetchmail does not currently enforce that the connection  goes
	    via  loopback  interface or TLS secured encrypted layer - be sure to
	    enforce TLS or STARTTLS on the SMTP server if it's not  your  local-
	    host.

     --esmtppassword <secret>
	    (since  v6.5.7;  Keyword:  esmtppassword, since v5.9.9) Sets the se-
	    cret/password for SMTP AUTH to be used for	logging  into  the  SMTP
	    server.  (not currently listed in --help output)

	    NOTE  1:  instead of in fetchmail's rcfile, you can put the password
	    into the which see.

	    NOTE 2: This is per "poll" and will be  the  same  for  all  servers
	    listed  in	your  smtphost	list! The password will be taken for the
	    first smtphost, or it's /servername= option in the	list  that  does
	    have a .netrc entry.

	    NOTE  3:  fetchmail  does  not currently enforce that the connection
	    goes via loopback interface or TLS secured encrypted layer - be sure
	    to enforce TLS or STARTTLS on the SMTP server if it's not  your  lo-
	    calhost.

     --fetchdomains <hosts>
	    (Keyword: fetchdomains)
	    In	ETRN or ODMR mode, this option specifies the list of domains the
	    server should ship mail for once the connection  is  turned  around.
	    The default is the FQDN of the machine running fetchmail.

     -D <domain> | --smtpaddress <domain>
	    (Keyword: smtpaddress)
	    Specify  the  domain  to  be  appended to addresses in RCPT TO lines
	    shipped to SMTP. When this is not specified, the name  of  the  SMTP
	    server  (as  specified by --smtphost) is used for SMTP/LMTP and 'lo-
	    calhost' is used for UNIX socket/BSMTP.

	    NOTE: if you intend to use numeric addresses with fetchmail 6.5.5 or
	    older, or so-called address literals per the  SMTP	standard,  write
	    them in proper SMTP syntax, for instance --smtpaddress "[192.0.2.6]"
	    or --smtpaddress "[IPv6:2001:DB8::6]".

     --smtpname <user@domain>
	    (Keyword: smtpname)
	    Specify  the  user	and domain to be put in RCPT TO lines shipped to
	    SMTP.  The default user is the current local user. Please  also  see
	    the NOTE about --smtpaddress and address literals above.

     -Z <nnn> | --antispam <nnn[, nnn]...>
	    (Keyword: antispam)
	    Specifies the list of numeric SMTP errors that are to be interpreted
	    as	a spam-block response from the listener.  A value of -1 disables
	    this option.  For the command-line option, the list values should be
	    comma-separated.  Note that the antispam values only apply to  "MAIL
	    FROM" responses in the SMTP/LMTP dialogue, but several MTAs (Postfix
	    in	its  default  configuration, qmail) defer the anti-spam response
	    code until after the RCPT TO. --antispam does not work in these cir-
	    cumstances.  Also see --softbounce (default) and its inverse.

     -m <command> | --mda <command>
	    (Keyword: mda)
	    This option lets fetchmail use a Message  or  Local  Delivery  Agent
	    (MDA or LDA) directly, rather than forward via SMTP or LMTP.

	    To	avoid  losing mail, use this option only with MDAs like maildrop
	    or MTAs like sendmail that exit with a nonzero status  on  disk-full
	    and  other	delivery errors; the nonzero status tells fetchmail that
	    delivery failed and prevents the message from being deleted  on  the
	    server.

	    If	fetchmail is running as root, it sets its user id while deliver-
	    ing mail through an MDA as follows:  First, the FETCHMAILUSER,  LOG-
	    NAME,  and USER environment variables are checked in this order. The
	    value of the first variable from his list that is defined  (even  if
	    it	is  empty!) is looked up in the system user database. If none of
	    the variables is defined, fetchmail will use the real user id it was
	    started with. If one of the variables  was	defined,  but  the  user
	    stated  there  is  not  found,  fetchmail continues running as root,
	    without checking remaining variables on the list.  Practically, this
	    means that if you run fetchmail as root  (not  recommended),  it  is
	    most  useful to define the FETCHMAILUSER environment variable to set
	    the user that the MDA should run as. Some MDAs  (such  as  maildrop)
	    are  designed  to  be setuid root and setuid to the recipient's user
	    id, so you do not lose functionality  this	way  even  when  running
	    fetchmail as unprivileged user.  Check the MDA's manual for details.

	    Some  possible  MDAs  are "/usr/sbin/sendmail -i -f %F -- %T" (Note:
	    some several older or vendor sendmail versions mistake -- for an ad-
	    dress, rather than an indicator to mark the end of the option  argu-
	    ments), "/usr/bin/deliver" and "/usr/bin/maildrop -d %T".  Local de-
	    livery  addresses will be inserted into the MDA command wherever you
	    place a %T; the mail message's From address will be  inserted  where
	    you place an %F.

	    Do	NOT  enclose  the %F or %T string in single quotes!  For both %T
	    and %F, fetchmail encloses the addresses in single quotes ('), after
	    removing any single quotes they may contain, before the MDA  command
	    is passed to the shell.

	    Do	NOT  use  an  MDA  invocation that dispatches on the contents of
	    To/Cc/Bcc, like "sendmail -i -t" or "qmail-inject", it  will  create
	    mail  loops  and  bring the just wrath of many postmasters down upon
	    your head.	This is one of the most frequent configuration errors!

	    Also, do not try to combine multidrop mode with an MDA such as mail-
	    drop that can only accept one address, unless your	upstream  stores
	    one  copy  of  the message per recipient and transports the envelope
	    recipient in a header; you will lose mail.

	    The well-known procmail(1) package is very hard to	configure  prop-
	    erly,  it  has a very nasty "fall through to the next rule" behavior
	    on delivery errors (even temporary ones, such as out of  disk  space
	    if another user's mail daemon copies the mailbox around to purge old
	    messages),	so  your mail will end up in the wrong mailbox sooner or
	    later. The proper procmail configuration is  outside  the  scope  of
	    this  document.  Using  maildrop(1) is usually much easier, and many
	    users find the filter syntax used by maildrop easier to understand.

	    Finally, we strongly advise that you do not use  qmail-inject.   The
	    command  line  interface  is non-standard without providing benefits
	    for typical use, and fetchmail  makes  no  attempts  to  accommodate
	    qmail-inject's  deviations from the standard. Some of qmail-inject's
	    command-line and environment options are actually dangerous and  can
	    cause broken threads, non-detected duplicate messages and forwarding
	    loops.

     --lmtp
	    (Keyword: lmtp)
	    Cause  delivery  via LMTP (Local Mail Transfer Protocol).  A service
	    host and port must be explicitly specified on each host in the  smt-
	    phost  hunt list (see above) if this option is selected; the default
	    port 25 will (in accordance with RFC 2033) not be accepted.

     --bsmtp <filename>
	    (Keyword: bsmtp)
	    Append fetched mail to a BSMTP file.  This simply contains the  SMTP
	    commands  that would normally be generated by fetchmail when passing
	    mail to an SMTP listener daemon.

	    An argument of '-' causes the SMTP batch to be written  to	standard
	    output,  which  is	of limited use: this only makes sense for debug-
	    ging, because fetchmail's regular output is interspersed on the same
	    channel, so this is not suitable for  mail	delivery.  This  special
	    mode may be removed in a later release.

	    Note  that fetchmail's reconstruction of MAIL FROM and RCPT TO lines
	    is not guaranteed correct; the caveats discussed under THE	USE  AND
	    ABUSE  OF MULTIDROP MAILBOXES below apply.	This mode has precedence
	    before --mda and SMTP/LMTP.

     --bad-header {reject|accept}
	    (Keyword: bad-header; since v6.3.15)
	    Specify how fetchmail is supposed to treat messages with  bad  head-
	    ers, i.e., headers with bad syntax. Traditionally, fetchmail has re-
	    jected  such  messages,  but some distributors modified fetchmail to
	    accept them. You can now configure fetchmail's behaviour per server.

   Resource Limit Control Options
     -l <maxbytes> | --limit <maxbytes>
	    (Keyword: limit)
	    Takes a maximum octet size argument, where 0 is the default and also
	    the special value designating  "no	limit".   If  nonzero,	messages
	    larger  than  this	size will not be fetched and will be left on the
	    server (in foreground sessions, the progress messages will note that
	    they are "oversized").  If the fetch protocol permits  (in	particu-
	    lar,  under  IMAP  or  POP3 without the fetchall option) the message
	    will not be marked seen.

	    An explicit --limit of 0 overrides any limits set in your  run  con-
	    trol  file.  This  option  is intended for those needing to strictly
	    control fetch time due to expensive and variable phone rates.

	    Combined with --limitflush, it can be used to delete oversized  mes-
	    sages  waiting  on a server.  In daemon mode, oversize notifications
	    are mailed to the calling user (see the --warnings option). This op-
	    tion does not work with ETRN or ODMR.

     -w <interval> | --warnings <interval>
	    (Keyword: warnings)
	    Takes an interval in  seconds.   When  you	call  fetchmail  with  a
	    'limit'  option  in daemon mode, this controls the interval at which
	    warnings about oversized messages are mailed to the calling user (or
	    the user specified by the 'postmaster' option).  One such  notifica-
	    tion  is  always  mailed at the end of the first poll that the over-
	    sized message is  detected.   Thereafter,  re-notification	is  sup-
	    pressed until after the warning interval elapses (it will take place
	    at the end of the first following poll).

     -b <count> | --batchlimit <count>
	    (Keyword: batchlimit)
	    Specify  the  maximum  number of messages that will be shipped to an
	    SMTP listener before the connection is deliberately  torn  down  and
	    rebuilt (defaults to 0, meaning no limit).	An explicit --batchlimit
	    of 0 overrides any limits set in your run control file.  While send-
	    mail(8)  normally  initiates delivery of a message immediately after
	    receiving the message terminator, some SMTP  listeners  are  not  so
	    prompt.   MTAs  like  smail(8)  may wait till the delivery socket is
	    shut down to deliver.  This may produce annoying delays when  fetch-
	    mail  is  processing very large batches.  Setting the batch limit to
	    some nonzero size will prevent these delays.  This option  does  not
	    work with ETRN or ODMR.

     -B <number> | --fetchlimit <number>
	    (Keyword: fetchlimit)
	    Limit  the number of messages accepted from a given server in a sin-
	    gle poll.  By default there is no limit. An explicit --fetchlimit of
	    0 overrides any limits set in your run control  file.   This  option
	    does not work with ETRN or ODMR.

     --fetchsizelimit <number>
	    (Keyword: fetchsizelimit)
	    Limit  the	number of sizes of messages accepted from a given server
	    in a single transaction.  This option is useful in reducing the  de-
	    lay  in  downloading the first mail when there are too many mails in
	    the mailbox.  By default, the limit is 100.  If set to 0,  sizes  of
	    all messages are downloaded at the start.  This option does not work
	    with ETRN or ODMR.	For POP3, the only valid non-zero value is 1.

     --fastuidl <number>
	    (Keyword: fastuidl)
	    Do	a  binary instead of linear search for the first unseen UID. Bi-
	    nary search avoids downloading the UIDs of	all  mails.  This  saves
	    time  (especially  in daemon mode) where downloading the same set of
	    UIDs in each poll is a waste of bandwidth. The number 'n'  indicates
	    how  rarely  a  linear search should be done. In daemon mode, linear
	    search is used once followed by binary searches in	'n-1'  polls  if
	    'n'  is  greater  than  1; binary search is always used if 'n' is 1;
	    linear search is always used if 'n' is 0. In non-daemon mode, binary
	    search is used if 'n' is 1; otherwise linear search is used. The de-
	    fault value of 'n' is 4.  This option works with POP3 only.

     -e <count> | --expunge <count>
	    (Keyword: expunge)
	    Arrange for deletions to be made final after a given number of  mes-
	    sages.   Under  POP2  or POP3, fetchmail cannot make deletions final
	    without sending QUIT and ending the session -- with this option  on,
	    fetchmail  will  break  a  long mail retrieval session into multiple
	    sub-sessions, sending QUIT after each sub-session. This  is  a  good
	    defense  against  line drops on POP3 servers.  Under IMAP, fetchmail
	    normally issues an EXPUNGE command after each deletion in  order  to
	    force the deletion to be done immediately.	This is safest when your
	    connection	to  the  server is flaky and expensive, as it avoids re-
	    sending duplicate mail after a line hit.  However,	on  large  mail-
	    boxes  the	overhead of re-indexing after every message can slam the
	    server pretty hard, so if your connection is reliable it is good  to
	    do	expunges less frequently.  Also note that some servers enforce a
	    delay of a few seconds after each quit, so fetchmail may not be able
	    to get back in immediately after an expunge --  you  may  see  "lock
	    busy" errors if this happens. If you specify this option to an inte-
	    ger  N,  it  tells	fetchmail  to  only  issue expunges on every Nth
	    delete.  An argument of zero suppresses expunges entirely (so no ex-
	    punges at all will be done until the end of run).  This option  does
	    not work with ETRN or ODMR.

   Authentication Options
     -u <name> | --user <name> | --username <name>
	    (Keyword: user[name])
	    Specifies  the user identification to be used when logging in to the
	    mail server.  The appropriate user identification is both server and
	    user-dependent.  The default is your login name on	the  client  ma-
	    chine  that is running fetchmail.  See USER AUTHENTICATION below for
	    a complete description.

     -I <specification> | --interface <specification>
	    (Keyword: interface)
	    Require that a specific interface device be up and have  a	specific
	    local  or remote IPv4 (IPv6 is not supported by this option yet) ad-
	    dress (or range) before polling.  Frequently fetchmail is used  over
	    a  transient  point-to-point  TCP/IP  link established directly to a
	    mail server via SLIP or PPP.  That is a relatively	secure	channel.
	    But  when  other  TCP/IP routes to the mail server exist (e.g., when
	    the link is connected to an alternate ISP), your username and  pass-
	    word  may be vulnerable to snooping (especially when daemon mode au-
	    tomatically polls for mail, shipping a clear password over	the  net
	    at	predictable  intervals).   The --interface option may be used to
	    prevent this.  When the specified link is not up or is not connected
	    to a matching IP address, polling will be skipped.	The format is:

		 interface/iii.iii.iii.iii[/mmm.mmm.mmm.mmm]

	    The field before the first slash is the interface name  (i.e.,  sl0,
	    ppp0  etc.).  The field before the second slash is the acceptable IP
	    address.  The field after the second slash is a mask which specifies
	    a  range  of  IP  addresses  to  accept.   If  no  mask  is  present
	    255.255.255.255  is  assumed (i.e., an exact match).  This option is
	    currently only supported under Linux and  FreeBSD.	Please	see  the
	    monitor section for below for FreeBSD specific information.

	    Note  that	this  option may be removed from a future fetchmail ver-
	    sion.

     -M <interface> | --monitor <interface>
	    (Keyword: monitor)
	    Daemon mode can cause transient links which are automatically  taken
	    down after a period of inactivity (e.g., PPP links) to remain up in-
	    definitely.   This option identifies a system TCP/IP interface to be
	    monitored for activity.  After each poll interval, if the link is up
	    but no other activity has occurred on the link, then the  poll  will
	    be	skipped.   However,  when fetchmail is woken up by a signal, the
	    monitor check is skipped and the poll goes through	unconditionally.
	    This  option  is  currently  only supported under Linux and FreeBSD.
	    For the monitor and interface options to work for non root users un-
	    der FreeBSD, the fetchmail binary must  be	installed  setgid  kmem.
	    This would be a security hole, but fetchmail runs with the effective
	    GID  set to that of the kmem group only when interface data is being
	    collected.

	    Note that this option may be removed from a  future  fetchmail  ver-
	    sion.

     --auth <type>
	    (Keyword: auth[enticate])
	    This  option permits you to specify an authentication type (see USER
	    AUTHENTICATION below for details).	The  possible  values  are  any,
	    password,  kerberos_v5,  kerberos  (or,  for excruciating exactness,
	    kerberos_v4), gssapi, cram-md5, otp, ntlm, msn (only for POP3),  ex-
	    ternal  (only IMAP) and implicit (ssh is understood as alias for im-
	    plicit).  When any (the default) is specified, fetchmail tries first
	    methods that do not  require  a  password  (EXTERNAL,  GSSAPI,  KER-
	    BEROS IV,  KERBEROS 5);  then  it  looks  for methods that mask your
	    password (CRAM-MD5, NTLM, X-OTP - note that MSN  is  only  supported
	    for POP3, but not auto-probed); and only if the server does not sup-
	    port  any  of  those  will it ship your password unencrypted.  Other
	    values may be used to force various authentication methods: implicit
	    suppresses authentication and is thus useful for  IMAP  PREAUTH  (if
	    you are using a secure --plugin, for instance, a properly configured
	    ssh,  you may also need to set --sslproto '' or, in the rcfile, ssl-
	    proto '', in order to  avoid  fetchmail  negotiating  STARTTLS  over
	    SSH).   external  suppresses  authentication  and is thus useful for
	    IMAP EXTERNAL.  Any value other than password, cram-md5,  ntlm,  msn
	    or	otp suppresses fetchmail's normal inquiry for a password.  Spec-
	    ify implicit when you are using an end-to-end secure connection such
	    as an ssh tunnel (in this case you may also want to  specify  --ssl-
	    proto '',  which see); specify external when you use TLS with client
	    authentication and specify gssapi or kerberos_v4 if you are using  a
	    protocol  variant that employs GSSAPI or K4.  Choosing KPOP protocol
	    automatically selects Kerberos authentication.  This option does not
	    work with ETRN.  GSSAPI service names are in line with RFC-2743  and
	    IANA registrations, see Generic Security Service Application Program
	    Interface  (GSSAPI)/Ker-  beros/Simple  Authentication  and Security
	    Layer (SASL) Service Names.

   Miscellaneous Options
     -f <pathname> | --fetchmailrc <pathname>
	    Specify a non-default name for the ~/.fetchmailrc run control  file.
	    The  pathname argument must be either "-" (a single dash, meaning to
	    read the configuration from standard input) or a  filename.   Unless
	    the  --version  option  is	also on, a named file argument must have
	    permissions  no  more  open  than  0700  (u=rwx,g=,o=)  or	else  be
	    /dev/null.

     -i <pathname> | --idfile <pathname>
	    (Keyword: idfile)
	    Specify  an  alternate name for the .fetchids file used to save mes-
	    sage UIDs. NOTE: since fetchmail 6.3.0, write access to  the  direc-
	    tory containing the idfile is required, as fetchmail writes a tempo-
	    rary  file	and renames it into the place of the real idfile only if
	    the temporary file has been written successfully.  This  avoids  the
	    truncation of idfiles when running out of disk space.

     --pidfile <pathname>
	    (Keyword: pidfile; since fetchmail v6.3.4)
	    Override the default location of the PID file that is used as a lock
	    file.   Default:  see  "ENVIRONMENT" below. Note that many places in
	    the code and documentation, the term "lock file" is used.  This file
	    contains the process ID of the running fetchmail on the  first  line
	    and potentially the daemon interval on a second line.

     -n | --norewrite
	    (Keyword: no rewrite)
	    Normally,  fetchmail  edits  RFC-822  address headers (To, From, Cc,
	    Bcc, and Reply-To) in fetched mail so that any mail IDs local to the
	    server are expanded to full addresses (@ and the  mail  server  host
	    name  are  appended).  This enables replies on the client to get ad-
	    dressed correctly (otherwise your mailer might think they should  be
	    addressed  to local users on the client machine!).	This option dis-
	    ables the rewrite.	(This option is provided to  pacify  people  who
	    are  paranoid about having an MTA edit mail headers and want to know
	    they can prevent it, but it is generally not a good idea to actually
	    turn off rewrite.)	When using ETRN or ODMR, the rewrite  option  is
	    ineffective.

     -E <line> | --envelope <line>
	    (Keyword: envelope; Multidrop only)
	    In the configuration file, an enhanced syntax is used:
	    envelope [<count>] <line>

	    This  option  changes the header fetchmail assumes will carry a copy
	    of the mail's envelope address.  Normally this  is	'X-Envelope-To'.
	    Other  typically  found  headers  to  carry envelope information are
	    'X-Original-To' and 'Delivered-To'.  Now, since  these  headers  are
	    not  standardized,	practice varies. See the discussion of multidrop
	    address handling below.  As a special  case,  'envelope  "Received"'
	    enables  parsing  of sendmail-style Received lines.  This is the de-
	    fault, but discouraged because it is not fully reliable.

	    Note that fetchmail expects the Received-line to be  in  a	specific
	    format: It must contain "by host for address", where host must match
	    one  of  the mail server names that fetchmail recognizes for the ac-
	    count in question.

	    The optional count argument (only  available  in  the  configuration
	    file)  determines  how many header lines of this kind are skipped. A
	    count of 1 means: skip the first, take the	second.  A  count  of  2
	    means: skip the first and second, take the third, and so on.

     -Q <prefix> | --qvirtual <prefix>
	    (Keyword: qvirtual; Multidrop only)
	    The  string  prefix assigned to this option will be removed from the
	    user name found in the header specified  with  the	envelope  option
	    (before doing multidrop name mapping or localdomain checking, if ei-
	    ther  is  applicable). This option is useful if you are using fetch-
	    mail to collect the mail for an entire domain and your ISP (or  your
	    mail  redirection  provider)  is using qmail.  One of the basic fea-
	    tures of qmail is the Delivered-To: message header.  Whenever  qmail
	    delivers  a message to a local mailbox it puts the username and host
	    name of the envelope recipient on this line.  The major  reason  for
	    this  is to prevent mail loops.  To set up qmail to batch mail for a
	    disconnected site the ISP-mailhost will have normally put that  site
	    in	its  'Virtualhosts'  control file so it will add a prefix to all
	    mail addresses for this site. This results in mail	sent  to  'user-
	    name@userhost.userdom.dom.com'  having  a  Delivered-To: line of the
	    form:

	    Delivered-To: mbox-userstr-username@userhost.example.com

	    The ISP can make the 'mbox-userstr-' prefix anything they choose but
	    a string matching the user host name is likely.  By using the option
	    'envelope Delivered-To:' you can make  fetchmail  reliably	identify
	    the   original  envelope  recipient,  but  you  have  to  strip  the
	    'mbox-userstr-' prefix to deliver to the correct user.  This is what
	    this option is for.

     --configdump
	    Parse the ~/.fetchmailrc file, interpret  any  command-line  options
	    specified,	and dump a configuration report to standard output.  The
	    configuration report is a data structure assignment in the	language
	    Python.   This  option  is	meant  to  be  used  with an interactive
	    ~/.fetchmailrc editor like fetchmailconf, written in Python.

     -y | --yydebug
	    Enables parser debugging, this option is meant to be used by  devel-
	    opers only.

   Removed Options
     -T | --netsec
	    Removed before version 6.3.0, the required underlying inet6_apps li-
	    brary had been discontinued and is no longer available.

USER AUTHENTICATION AND ENCRYPTION
     All  modes  except ETRN require authentication of the client to the server.
     Normal user authentication in fetchmail is very much like	the  authentica-
     tion mechanism of ftp(1).	The correct user-id and password depend upon the
     underlying security system at the mail server.

     If the mail server is a Unix machine on which you have an ordinary user ac-
     count,  your  regular  login name and password are used with fetchmail.  If
     you use the same login name on both the server and the client machines, you
     needn't worry about specifying a user-id with the -u option -- the  default
     behavior  is to use your login name on the client machine as the user-id on
     the server machine.  If you use a different login name on	the  server  ma-
     chine,  specify  that  login  name with the -u option.  E.g., if your login
     name is 'jsmith' on a machine named 'mailgrunt', you would start  fetchmail
     as follows:

	    fetchmail -u jsmith mailgrunt

     The  default  behavior  of  fetchmail is to prompt you for your mail server
     password before the connection is established.  This is the safest  way  to
     use  fetchmail and ensures that your password will not be compromised.  You
     may also specify your password in your ~/.fetchmailrc file.  This is conve-
     nient when using fetchmail in daemon mode or with scripts.

   Using netrc files
     If you do not specify a password, and fetchmail  cannot  extract  one  from
     your ~/.fetchmailrc file, it will look for a ~/.netrc file in your home di-
     rectory  before requesting one interactively; if an entry matching the mail
     server is found in that file, the password will be used.	Fetchmail  first
     looks  for a match on poll name; if it finds none, it checks for a match on
     via name. To show a practical example, a .netrc might look like this:

	    machine hermes.example.org
	    login joe
	    password topsecret

     You can repeat this block with different user information if  you	need  to
     provide more than one password.

     This  feature  may  allow	you to avoid duplicating password information in
     more than one file.

     The netrc file contains login information originally  set	for  ftp(1)  but
     fetchmail	understands  typical constructs of this file to use it for pass-
     words.  The syntax consists of tokens  (usually  in  pairs  with  strings).
     Strings  can be quoted with single or double quotes, as in "quoted string",
     to allow enclosing blanks, and a backslash (\) within a quoted string  will
     escape  the following character, so that a password can contain quote marks
     themselves.  Tokens are separated by spaces, tabs or newline characters.

     These tokens are understood:

     machine name
	    Identify a remote computer name for which the following  tokens  ap-
	    ply.  It needs to match either fetchmail's poll or via name.

     login name
	    Defines  the  user	name that fetchmail would match when looking for
	    entries.  Fetchmail ignores zero-length names or entries without lo-
	    gin.

     password string
	    Defines the password that fetchmail will use when machine and  login
	    match the poll/via name and the username.

     default
	    This  is  like  machine, but would match any name. Fetchmail ignores
	    it.  After this, no more machine sections are permitted.

     account string
	    Fetchmail ignores this token/string pair.

     macdef macro_name
	    Fetchmail ignores this macro definition, meaning this, the remainder
	    of the lines, and all following lines until a blank  line  is  found
	    (i.  e.,  two  consecutive new-line characters). Then .netrc parsing
	    resumes.

     On mail servers that do not provide ordinary user	accounts,  your  user-id
     and  password are usually assigned by the server administrator when you ap-
     ply for a mailbox on the server.  Contact your server administrator if  you
     do not know the correct user-id and password for your mailbox account.

   Secure Socket Layers (SSL) and Transport Layer Security (TLS)
     All  retrieval protocols can use SSL or TLS wrapping for the transport. Ad-
     ditionally, POP3 and IMAP retrieval can also negotiate SSL/TLS by means  of
     STARTTLS (or STLS).

     You  can  access  TLS-encrypted services by specifying the options starting
     with --ssl, such as --ssl, --sslproto, --nosslcertck, and others.	You  can
     also do this using the corresponding user options in the .fetchmailrc file.
     Some  services,  such as POP3 and IMAP, have different well known ports de-
     fined for the SSL encrypted services.  The encrypted ports will be selected
     automatically when SSL is	enabled  and  no  explicit  port  is  specified.
     Also,  the  --sslcertck  command  line or sslcertck run control file option
     should be used at least in documentation to force strict certificate check-
     ing with older fetchmail versions - see below.

     If TLS or SSL is not configured, fetchmail will usually still  try  to  use
     STARTTLS. In practice, TLS or SSL it still mandatory because --sslcertck is
     a default setting and implicitly requires STARTTLS.

     STARTTLS  can  be	enforced  by using --sslproto auto and defeated by using
     --sslproto ''.  STARTTLS connections use the same port as	the  unencrypted
     version  of  the  protocol  and  negotiate  TLS  via  special  command. The
     --sslcertck command line or sslcertck run control	file  option  should  be
     used to force strict certificate checking - see below.

     --sslcertck  is  recommended:  When  connecting  to an SSL or TLS encrypted
     server, the server presents a certificate to  the	client	for  validation.
     The  certificate  is checked to verify that the common name in the certifi-
     cate matches the name of the server being contacted and that the  effective
     and  expiration  dates  in  the  certificate  indicate that it is currently
     valid.  If any of these checks fail, a warning message is printed, but  the
     connection continues.  The server certificate does not need to be signed by
     any  specific  Certifying Authority and may be a "self-signed" certificate.
     If the --sslcertck command line option or sslcertck run control file option
     is used, fetchmail will instead abort if any of these checks fail,  because
     it  must  assume that there is a man-in-the-middle attack in this scenario,
     hence fetchmail must not expose clear-text passwords. Use of the  sslcertck
     or  --sslcertck  option  is therefore advised; it has become the default in
     fetchmail 6.4.0.

     Some SSL encrypted servers may request a client side certificate.	A client
     side public SSL certificate and private SSL key may be specified.	 If  re-
     quested  by  the  server,	the client certificate is sent to the server for
     validation.  Some servers may require a valid client  certificate	and  may
     refuse  connections  if a certificate is not provided or if the certificate
     is not valid.  Some servers may require client side certificates be  signed
     by a recognized Certifying Authority.  The format for the key files and the
     certificate files is that required by the underlying SSL libraries (OpenSSL
     in the general case).

     A word of care about the use of SSL: While above mentioned setup with self-
     signed  server certificates retrieved over the wires can protect you from a
     passive eavesdropper, it does not help against an active  attacker.  It  is
     clearly  an improvement over sending the passwords in clear, but you should
     be aware that a man-in-the-middle attack is trivially possible (in particu-
     lar with tools such as dsniff).  Use of strict certificate checking with  a
     certification  authority  recognized by server and client, or perhaps of an
     SSH tunnel (see below for some examples) is preferable if	you  care  seri-
     ously about the security of your mailbox and passwords.

POP3 VARIANTS
     Early  versions  of POP3 (RFC1081, RFC1225) supported a crude form of inde-
     pendent authentication using the .rhosts file on the mail server side.  Un-
     der this RPOP variant, a fixed per-user ID equivalent  to	a  password  was
     sent  in clear over a link to a reserved port, with the command RPOP rather
     than PASS to alert the server that it should do special checking.	RPOP  is
     supported by fetchmail (you can specify 'protocol RPOP' to have the program
     send  'RPOP'  rather  than 'PASS') but its use is strongly discouraged, and
     support will be removed from a future fetchmail version.  This facility was
     vulnerable to spoofing and was withdrawn in RFC1460.

     RFC1460 introduced APOP authentication.  In this variant of POP3, you  reg-
     ister an APOP password on your server host (on some servers, the program to
     do this is called popauth(8)).  You put the same password in your ~/.fetch-
     mailrc  file.   Each  time  fetchmail logs in, it sends an MD5 hash of your
     password and the server greeting time to the server, which can verify it by
     checking its authorization database.

     Note that APOP is no longer considered resistant against  man-in-the-middle
     attacks.

   RETR or TOP
     fetchmail	makes  some  efforts to make the server believe messages had not
     been retrieved, by using the TOP command with a large number of lines  when
     possible.	TOP is a command that retrieves the full header and a fetchmail-
     specified	amount	of  body  lines. It is optional and therefore not imple-
     mented by all servers, and some are known to implement  it  improperly.  On
     many  servers  however,  the  RETR command which retrieves the full message
     with header and body, sets the "seen" flag (for instance, in a  web  inter-
     face), whereas the TOP command does not do that.

     fetchmail will always use the RETR command if "fetchall" is set.  fetchmail
     will  also  use the RETR command if "keep" is set and "uidl" is unset.  Fi-
     nally, fetchmail will  use  the  RETR  command  on  Maillennium  POP3/PROXY
     servers  (used  by  Comcast) to avoid a deliberate TOP misinterpretation in
     this server that causes message corruption.

     In all other cases, fetchmail will use the TOP command. This  implies  that
     in "keep" setups, "uidl" must be set if "TOP" is desired.

     Note  that  this  description is true for the current version of fetchmail,
     but the behavior may change in future versions.  In  particular,  fetchmail
     may  prefer  the  RETR command because the TOP command causes much grief on
     some servers and is only optional.

ALTERNATE AUTHENTICATION FORMS/METHODS
     If your fetchmail was built with Kerberos support and you specify	Kerberos
     authentication  (either with --auth or the .fetchmailrc option authenticate
     kerberos_v4) it will try to get a Kerberos ticket from the mail  server  at
     the start of each query.  Note: if either the pollname or via name is 'hes-
     iod', fetchmail will try to use Hesiod to look up the mail server.

     If  you  use POP3 or IMAP with GSSAPI authentication, fetchmail will expect
     the server to have RFC1731- or RFC1734-conforming	GSSAPI	capability,  and
     will  use	it.  Currently this has only been tested over Kerberos 5, so you
     are expected to already have a ticket-granting ticket. You may pass a user-
     name different from your principal name using the standard  --user  command
     or by the .fetchmailrc option user.

     If  your  IMAP  daemon  returns  the PREAUTH response in its greeting line,
     fetchmail will notice this and skip the normal authentication  step.   This
     can be useful, e.g., if you start imapd explicitly using ssh.  In this case
     you  can  declare the authentication value 'implicit' on that site entry to
     stop .fetchmail from asking you for a password when it starts up.

     If you use client authentication with TLS1 and your IMAP daemon returns the
     AUTH=EXTERNAL response, fetchmail will notice this and will use the authen-
     tication shortcut and will not send the passphrase. In this  case	you  can
     declare the authentication value 'external'
      on  that	site  to  stop	fetchmail from asking you for a password when it
     starts up.

     If you are using POP3, and the server issues a one-time-password  challenge
     conforming to RFC1938, fetchmail will use your password as a pass phrase to
     generate  the  required  response. This avoids sending secrets over the net
     unencrypted.

     Compuserve's RPA authentication is supported. If you compile  in  the  sup-
     port,  fetchmail  will try to perform an RPA pass-phrase authentication in-
     stead of sending  over  the  password  unencrypted  if  it  detects  "@com-
     puserve.com" in the host name.

     If  you  are using IMAP, Microsoft's NTLM authentication (used by Microsoft
     Exchange) is supported. If you compile in the support, fetchmail  will  try
     to perform an NTLM authentication (instead of sending over the password un-
     encrypted)  whenever  the	server	returns  AUTH=NTLM in its capability re-
     sponse. Specify a user option value that looks like 'user@domain': the part
     to the left of the @ will be passed as the username and  the  part  to  the
     right as the NTLM domain.

   ESMTP AUTH
     fetchmail	also  supports	authentication to the ESMTP server on the client
     side according to RFC 4952.  Supported authentication mechanisms are  CRAM-
     MD5,  PLAIN  and  in fetchmail 6.5.X the obsolete LOGIN.  You can specify a
     name/password pair to be used with the keywords 'esmtpname' and 'esmtppass-
     word'; the former defaults to the username of the calling user.

DAEMON MODE
   Introducing the daemon mode
     In daemon mode, fetchmail puts itself into the background and runs forever,
     querying each specified host and then sleeping for a given  polling  inter-
     val.

   Starting the daemon mode
     There  are  several ways to make fetchmail work in daemon mode. On the com-
     mand line, --daemon <interval> or -d <interval> option  runs  fetchmail  in
     daemon mode.  You must specify a numeric argument which is a polling inter-
     val  (time to wait after completing a whole poll cycle with the last server
     and before starting the next poll cycle with the first server) in seconds.

     Example: simply invoking

	    fetchmail -d 900

     will, therefore, poll all the hosts described in your  ~/.fetchmailrc  file
     (except  those  explicitly  excluded with the 'skip' verb) a bit less often
     than once every 15 minutes (exactly:  15  minutes	+  time  that  the  poll
     takes).

     It  is  also possible to set a polling interval in your ~/.fetchmailrc file
     by saying 'set daemon <interval>', where <interval> is an integer number of
     seconds.  If you do this, fetchmail will always start in daemon mode unless
     you override it with the command-line option --daemon 0 or -d0.

     Only one daemon process is permitted per user; in	daemon	mode,  fetchmail
     sets up a per-user lock file to guarantee this.  (You can however cheat and
     set the FETCHMAILHOME environment variable to overcome this setting, but in
     that  case,  it is your responsibility to make sure you are not polling the
     same server with two processes at the same time.)

   Awakening the background daemon
     Normally, calling fetchmail with a daemon in the background sends a wake-up
     signal to the daemon and quits without output. The background  daemon  then
     starts  its  next poll cycle immediately.	The wake-up signal, SIGUSR1, can
     also be sent manually. The wake-up action also clears  any  'wedged'  flags
     indicating  that  connections  have  wedged due to failed authentication or
     multiple timeouts.

   Terminating the background daemon
     The option -q or --quit will kill a running daemon process instead of  wak-
     ing it up (if there is no such process, fetchmail will notify you).  If the
     --quit  option  appears  last  on the command line, fetchmail will kill the
     running daemon process and then quit. Otherwise, fetchmail will first  kill
     a running daemon process and then continue running with the other options.

   Useful options for daemon mode
     The  -L <filename> or --logfile <filename> option (keyword: set logfile) is
     only effective when fetchmail is detached and in daemon mode. Note that the
     logfile must exist before fetchmail is run, you can use the  touch(1)  com-
     mand with the filename as its sole argument to create it.
     This option allows you to redirect status messages into a specified logfile
     (follow  the  option with the logfile name).  The logfile is opened for ap-
     pend, so previous messages are not deleted.  This is primarily  useful  for
     debugging	configurations.  Note that fetchmail does not detect if the log-
     file is rotated, the logfile is only opened once when fetchmail starts. You
     need to restart fetchmail after rotating the logfile and before compressing
     it (if applicable).
     Since v6.5.0, the log file is prefixed with time stamps, in local time  and
     in  the  format "Jun 20 23:45:01 fetchmail: ". It will be localized through
     the environment variables LC_TIME (or LC_ALL) and TZ.

     The --syslog option (keyword: set syslog) allows you to redirect status and
     error messages emitted to the syslog(3) system daemon if  available.   Mes-
     sages are logged with an id of fetchmail, the facility LOG_MAIL, and prior-
     ities  LOG_ERR, LOG_ALERT or LOG_INFO.  This option is intended for logging
     status and error messages which indicate the status of the daemon	and  the
     results while fetching mail from the server(s).  Error messages for command
     line options and parsing the .fetchmailrc file are still written to stderr,
     or  to the specified log file.  The --nosyslog option turns off use of sys-
     log(3), assuming it is turned on in the ~/.fetchmailrc file.   This  option
     is overridden, in certain situations, by --logfile (which see).

     The  -N or --nodetach option suppresses backgrounding and detachment of the
     daemon process from its control terminal.	This is useful for debugging  or
     when fetchmail runs as the child of a supervisor process such as init(8) or
     Gerrit  Pape's  runit(8).	Note that this also causes the logfile option to
     be ignored.

     Note that while running in daemon mode polling a POP2 or  IMAP2bis  server,
     transient	errors	(such as DNS failures or sendmail delivery refusals) may
     force the fetchall option on for the duration of the  next  polling  cycle.
     This  is  a robustness feature.  It means that if a message is fetched (and
     thus marked seen by the mail server) but not delivered locally due to  some
     transient	error,	it  will be re-fetched during the next poll cycle.  (The
     IMAP logic does not delete messages until they are delivered, so this prob-
     lem does not arise.)

     If you touch or change the ~/.fetchmailrc file while fetchmail  is  running
     in daemon mode, this will be detected at the beginning of the next poll cy-
     cle.   When  a changed ~/.fetchmailrc is detected, fetchmail rereads it and
     restarts from scratch (using exec(2); no state information is  retained  in
     the new instance).  Note that if fetchmail needs to query for passwords, of
     that  if  you break the ~/.fetchmailrc file's syntax, the new instance will
     softly and silently vanish away on startup.

ADMINISTRATIVE OPTIONS
     The --postmaster <name> option  (keyword:	set  postmaster)  specifies  the
     last-resort  username  to	which  multidrop  mail	is to be forwarded if no
     matching local recipient can be found. It is also used  as  destination  of
     undeliverable  mail  if the 'bouncemail' global option is off and addition-
     ally for spam-blocked mail if the 'bouncemail' global option is off and the
     'spambounce' global option is on. This option defaults to the user who  in-
     voked  fetchmail.	 If  the invoking user is root, then the default of this
     option is the user 'postmaster'.  Setting postmaster to  the  empty  string
     causes  such mail as described above to be discarded - this however is usu-
     ally a bad idea.  See also the description of the 'FETCHMAILUSER'	environ-
     ment variable in the ENVIRONMENT section below.

     The  --nobounce  behaves  like the "set no bouncemail" global option, which
     see.

     The --invisible option (keyword: set invisible) tries to make fetchmail in-
     visible.  Normally, fetchmail behaves like any other MTA would -- it gener-
     ates a Received header into each message describing its place in the  chain
     of  transmission,	and tells the MTA it forwards to that the mail came from
     the machine fetchmail itself is running on.  If the invisible option is on,
     the Received header is suppressed and fetchmail tries to spoof the  MTA  it
     forwards to into thinking it came directly from the mail server host.

     The  --showdots  option  (keyword:  set  showdots) forces fetchmail to show
     progress dots even if the output goes to a file or fetchmail is not in ver-
     bose mode.  Fetchmail shows the dots by default when run in --verbose  mode
     and output goes to console. This option is ignored in --silent mode.

     By  specifying the --tracepolls option, you can ask fetchmail to add infor-
     mation to the Received header on the form "polling {label} account {user}",
     where {label} is the account label (from  the  specified  rcfile,	normally
     ~/.fetchmailrc)  and  {user} is the username which is used to log on to the
     mail server. This header can be used to make filtering email where no  use-
     ful  header  information  is available and you want mail from different ac-
     counts sorted into different mailboxes (this could, for example,  occur  if
     you have an account on the same server running a mailing list, and are sub-
     scribed to the list using that account). The default is not adding any such
     header.  In .fetchmailrc, this is called 'tracepolls'.

RETRIEVAL FAILURE MODES
     The  protocols  fetchmail	uses to talk to mail servers are next to bullet-
     proof.  In normal operation forwarding to	port  25,  no  message	is  ever
     deleted  (or  even marked for deletion) on the host until the SMTP listener
     on the client side has acknowledged to fetchmail that the message has  been
     either accepted for delivery or rejected due to a spam block.

     When  forwarding  to  an  MDA, however, there is more possibility of error.
     Some MDAs are 'safe' and reliably return a nonzero status on  any	delivery
     error,  even one due to temporary resource limits.  The maildrop(1) program
     is like this; so are most programs designed as mail transport agents,  such
     as  sendmail(1),  including  the  sendmail  wrapper of Postfix and exim(1).
     These programs give back a reliable positive  acknowledgement  and  can  be
     used  with  the mda option with no risk of mail loss.  Unsafe MDAs, though,
     may return 0 even on delivery failure.  If  this  happens,  you  will  lose
     mail.

     The  normal  mode	of  fetchmail is to try to download only 'new' messages,
     leaving untouched (and undeleted) messages you have already  read	directly
     on  the  server (or fetched with a previous fetchmail --keep).  But you may
     find that messages you have already read on the server  are  being  fetched
     (and  deleted)  even when you do not specify --all.  There are several rea-
     sons this can happen.

     One could be that you are using POP2.  The POP2 protocol includes no repre-
     sentation of 'new' or 'old' state in messages, so fetchmail must treat  all
     messages as new all the time.  But POP2 is obsolete, so this is unlikely.

     A	potential POP3 problem might be servers that insert messages in the mid-
     dle of mailboxes (some VMS implementations of mail are rumored to do this).
     The fetchmail code assumes that new messages are appended to the end of the
     mailbox; when this is not true it may treat some old messages  as	new  and
     vice  versa.   Using  UIDL whilst setting fastuidl 0 might fix this, other-
     wise, consider switching to IMAP.

     Yet another POP3 problem is that if they cannot make temporary files in the
     user's home directory, some POP3 servers will hand back an undocumented re-
     sponse that causes fetchmail to spuriously report "No mail".

     The IMAP code uses the presence or absence of the server flag \Seen to  de-
     cide  whether  or not a message is new.  This is not the right thing to do,
     fetchmail should check the UIDVALIDITY and use UID, but it does not do that
     yet. Under Unix, it counts on your IMAP server to notice the BSD-style Sta-
     tus flags set by mail user agents and set the \Seen flag from them when ap-
     propriate.  All Unix IMAP servers we know of do  this,  though  it  is  not
     specified	by the IMAP RFCs.  If you ever trip over a server that does not,
     the symptom will be that messages you have already read on your  host  will
     look new to the server.  In this (unlikely) case, only messages you fetched
     with fetchmail --keep will be both undeleted and marked old.

     In  ETRN and ODMR modes, fetchmail does not actually retrieve messages; in-
     stead, it asks the server's SMTP listener to start a  queue  flush  to  the
     client via SMTP.  Therefore it sends only undelivered messages.

SPAM FILTERING
     Many  SMTP  listeners  allow  administrators  to set up 'spam filters' that
     block unsolicited email from specified domains.  A MAIL FROM or  DATA  line
     that  triggers  this  feature  will elicit an SMTP response which (unfortu-
     nately) varies according to the listener.

     Newer versions of sendmail return an error code of 571.

     According to RFC2821, the correct thing to return in this situation is  550
     "Requested  action  not taken: mailbox unavailable" (the draft adds "[E.g.,
     mailbox not found, no access, or command rejected for policy reasons].").

     Older versions of the exim MTA return 501 "Syntax error  in  parameters  or
     arguments".

     The postfix MTA runs 554 as an antispam response.

     Zmailer may reject code with a 500 response (followed by an enhanced status
     code that contains more information).

     Return  codes which fetchmail treats as antispam responses and discards the
     message can be set with the 'antispam' option.  This is  one  of  the  only
     three circumstance under which fetchmail ever discards mail (the others are
     the  552  and  553  errors  described  below, and the suppression of multi-
     dropped messages with a message-ID already seen).

     If fetchmail is fetching from an IMAP server, the antispam response will be
     detected and the message rejected immediately after the headers  have  been
     fetched,  without	reading  the  message  body.  Thus, you will not pay for
     downloading spam message bodies.

     By default, the list of antispam responses is empty.

     If the spambounce global option is on, mail that is  spam-blocked	triggers
     an  RFC1892/RFC1894  bounce message informing the originator that we do not
     accept mail from it. See also BUGS.

SMTP/ESMTP ERROR HANDLING
     Besides the spam-blocking described above, fetchmail takes special  actions
     --  that  may  be	modified  by the --softbounce option -- on the following
     SMTP/ESMTP error response codes

     452 (insufficient system storage)
	  Leave the message in the server mailbox for later retrieval.

     552 (message exceeds fixed maximum message size)
	  Delete the message from the server.  Send bounce-mail to the	origina-
	  tor.

     553 (invalid sending domain)
	  Delete  the  message from the server.  Do not even try to send bounce-
	  mail to the originator.

     Other errors greater or equal to 500 trigger bounce mail back to the origi-
     nator, unless suppressed by --softbounce. See also BUGS.

THE RUN CONTROL FILE
     The preferred way to set up fetchmail is to write a  .fetchmailrc	file  in
     your home directory (you may do this directly, with a text editor, or indi-
     rectly  via  fetchmailconf).  When there is a conflict between the command-
     line arguments and the arguments in this file, the  command-line  arguments
     take precedence.

     To protect the security of your passwords, your ~/.fetchmailrc may not nor-
     mally  have  more	than 0700 (u=rwx,g=,o=) permissions; fetchmail will com-
     plain and exit otherwise (this check is suppressed when --version is on).

     You may read the .fetchmailrc file as a list of  commands	to  be	executed
     when fetchmail is called with no arguments.

   Run Control Syntax
     Comments  begin  with a '#' and extend through the end of the line.  Other-
     wise the file consists of a series  of  server  entries  or  global  option
     statements in a free-format, token-oriented syntax.

     There  are  four  kinds of tokens: grammar keywords, numbers (i.e., decimal
     digit sequences), unquoted strings, and quoted strings.  A quoted string is
     bounded by double quotes and may contain whitespace (and quoted digits  are
     treated as a string).  Note that quoted strings will also contain line feed
     characters if they run across two or more lines, unless you use a backslash
     to  join lines (see below).  An unquoted string is any whitespace-delimited
     token that is neither numeric, string quoted nor contains the special char-
     acters ',', ';', ':', or '='.

     Any amount of whitespace separates tokens in server entries, but is  other-
     wise ignored. You may use backslash escape sequences (\n for LF, \t for HT,
     \b  for  BS, \r for CR, \nnn for decimal (where nnn cannot start with a 0),
     \0ooo for octal, and \xhh for hex) to  embed  non-printable  characters  or
     string  delimiters  in strings.  In quoted strings, a backslash at the very
     end of a line will cause the backslash itself and the line feed (LF or  NL,
     new line) character to be ignored, so that you can wrap long strings. With-
     out  the  backslash  at  the line end, the line feed character would become
     part of the string.

     Warning: while these resemble C-style escape sequences, they  are	not  the
     same.   fetchmail	only supports these eight styles. C supports more escape
     sequences that consist of backslash (\) and a single  character,  but  does
     not support decimal codes and does not require the leading 0 in octal nota-
     tion.   Example:  fetchmail  interprets  \233 the same as \xE9 (Latin small
     letter e with acute), where C would interpret \233 as  octal  0233  =  \x9B
     (CSI, control sequence introducer).

     Each  server  entry  consists of one of the keywords 'poll' or 'skip', fol-
     lowed by a server name, followed by server options, followed by any  number
     of  user  (or  username) descriptions, followed by user options.  Note: the
     most common cause of syntax errors is mixing up user and server options  or
     putting user options before the user descriptions.

     For backward compatibility, the word 'server' is a synonym for 'poll'.

     You can use the noise keywords 'and', 'with', 'has', 'wants', and 'options'
     anywhere  in  an  entry to make it resemble English.  They are ignored, but
     can make entries much easier to read at a glance.	The punctuation  charac-
     ters ':', ';' and ',' are also ignored.

   Poll versus Skip
     The  'poll'  verb tells fetchmail to query this host when it is run with no
     arguments.  The 'skip' verb tells fetchmail not to poll this host unless it
     is explicitly named on the command line.  (The 'skip' verb  allows  you  to
     experiment  with  test  entries safely, or easily disable entries for hosts
     that are temporarily down.)

KEYWORD/OPTION SUMMARY
     Here are the legal options.  Keyword suffixes enclosed in	square	brackets
     are  optional.   Those corresponding to short command-line options are fol-
     lowed by '-' and the appropriate option letter.  If option is only relevant
     to a single mode of operation, it is noted as 's' or 'm' for singledrop- or
     multidrop-mode, respectively.

     Here are the legal global options:

     Keyword		 Opt   Mode   Function
     --------------------------------------------------------------------
     set daemon 	 -d	      Set a background poll interval  in
				      seconds.
     set postmaster		      Give  the  name of the last-resort
				      mail recipient (default: user run-
				      ning  fetchmail,	"postmaster"  if
				      run by the root user)
     set    bouncemail		      Direct  error  mail  to the sender
				      (default)
     set no bouncemail		      Direct error  mail  to  the  local
				      postmaster  (as  per the 'postmas-
				      ter' global option above).
     set no spambounce		      Do not  bounce  spam-blocked  mail
				      (default).
     set    spambounce		      Bounce  blocked  spam-blocked mail
				      (as per the  'antispam'  user  op-
				      tion)  back  to the destination as
				      indicated  by   the   'bouncemail'
				      global  option.	Warning:  Do not
				      use this to bounce  spam	back  to
				      the  sender  -  most  spam is sent
				      with false sender address and thus
				      this  option  hurts  innocent  by-
				      standers.
     set no softbounce		      Delete  permanently  undeliverable
				      mail. It	is  recommended  to  use
				      this  option  if the configuration
				      has been thoroughly tested.
     set    softbounce		      Keep   permanently   undeliverable
				      mail  as	though a temporary error
				      had occurred (default).
     set logfile	 -L	      Name of a file to append error and
				      status messages to.   Only  effec-
				      tive  in daemon mode and if fetch-
				      mail  detaches.	 If   effective,
				      overrides set syslog.
     set pidfile	 -p	      Name of the PID file.
     set idfile 	 -i	      Name  of	the  file  to  store UID
				      lists in.
     set    syslog		      Do  error  logging  through   sys-
				      log(3).  May  be overridden by set
				      logfile.
     set no syslog		      Turn  off  error	logging  through
				      syslog(3). (default)
     set properties		      String  value  that  is ignored by
				      fetchmail (may be used  by  exten-
				      sion scripts).

     Here are the legal server options:

     Keyword	       Opt   Mode   Function
     ------------------------------------------------------------------
     via			    Specify  DNS  name of mail server,
				    overriding poll name
     proto[col]        -p	    Specify  protocol  (case  insensi-
				    tive):  POP2,  POP3,  IMAP,  APOP,
				    KPOP
     local[domains]	     m	    Specify domain(s) to  be  regarded
				    as local
     port			    Specify TCP/IP service port (obso-
				    lete, use 'service' instead).
     service	       -P	    Specify  service  name  (a numeric
				    value is also allowed and  consid-
				    ered a TCP/IP port number).
     auth[enticate]		    Set  authentication  type (default
				    'any')
     timeout	       -t	    Server inactivity timeout in  sec-
				    onds (default 300)
     envelope	       -E    m	    Specify   envelope-address	header
				    name
     no envelope	     m	    Disable looking for  envelope  ad-
				    dress
     qvirtual	       -Q    m	    Qmail virtual domain prefix to re-
				    move from user name
     aka		     m	    Specify  alternate	DNS  names  of
				    mail server
     interface	       -I	    specify IP interface(s) that  must
				    be	up  for  server  poll  to take
				    place
     monitor	       -M	    Specify IP address to monitor  for
				    activity
     plugin			    Specify  command  through which to
				    make server connections.
     plugout			    Specify command through  which  to
				    make listener connections.
     dns		     m	    Enable  DNS  lookup  for multidrop
				    (default)
     no dns		     m	    Disable DNS lookup for multidrop
     checkalias 	     m	    Do comparison by  IP  address  for
				    multidrop
     no checkalias	     m	    Do	comparison  by	name  for mul-
				    tidrop (default)
     uidl	       -U	    Force  POP3  to  use   client-side
				    UIDLs (recommended)
     no uidl			    Turn  off  POP3 use of client-side
				    UIDLs (default)
     interval			    Only check this site every N  poll
				    cycles; N is a numeric argument.
     tracepolls 		    Add  poll  tracing	information to
				    the Received header
     principal			    Set Kerberos principal (only  use-
				    ful with IMAP and kerberos)
     esmtpname			    Set  name  for RFC2554 authentica-
				    tion to the ESMTP server.
     esmtppassword		    Set password for RFC2554 authenti-
				    cation to the ESMTP server.
     bad-header 		    How to treat messages with	a  bad
				    header. Can be reject (default) or
				    accept.
     idletimeout		    Idle waiting timeout (in seconds),
				    see --idle.

     Here are the legal user descriptions and options:

     Keyword		Opt   Mode   Function
     -------------------------------------------------------------------
     user[name] 	-u	     This  is  the user description and
				     must come first after  server  de-
				     scription	 and   after   possible
				     server options,  and  before  user
				     options.

				     It sets the remote user name if by
				     itself  or followed by 'there', or
				     the local user name if followed by
				     'here'.
     is 			     Connect  local  and  remote   user
				     names
     to 			     Connect   local  and  remote  user
				     names
     pass[word] 		     Specify remote account password
     ssl			     Connect to server over the  speci-
				     fied  base  protocol using SSL en-
				     cryption
     sslcert			     Specify file for client side  pub-
				     lic SSL certificate
     sslcertck			     Enable strict certificate checking
				     and  abort  connection on failure.
				     Default   only   since   fetchmail
				     v6.4.0.
     no sslcertck		     Disable  strict certificate check-
				     ing and permit connections to con-
				     tinue on failed verification. Dis-
				     couraged. Should only be used  to-
				     gether with sslfingerprint.
     sslcertfile		     Specify  file with trusted CA cer-
				     tificates
     sslcertpath		     Specify c_rehash-ed directory with
				     trusted CA certificates.
     sslcommonname		     specify the expected  server  cer-
				     tificate	common	name  to  match
				     against.
     sslfingerprint		     Specify the expected  server  cer-
				     tificate  finger print from an MD5
				     hash.  Fetchmail  will  disconnect
				     and  log  an  error if it does not
				     match.
     sslkey			     Specify file for client side  pri-
				     vate SSL key
     sslproto			     Force ssl protocol for connection
     folder		-r	     Specify remote folder to query
     smtphost		-S	     Specify smtp host(s) to forward to
     fetchdomains	      m      Specify  domains  for  which  mail
				     should be fetched
     smtpaddress	-D	     Specify the domain to  be	put  in
				     RCPT TO lines
     smtpname			     Specify  the user and domain to be
				     put in RCPT TO lines
     antispam		-Z	     Specify what SMTP returns are  in-
				     terpreted as spam-policy blocks
     mda		-m	     Specify MDA for local delivery
     bsmtp			     Specify BSMTP batch file to append
				     to
     preconnect 		     Command to be executed before each
				     connection
     postconnect		     Command  to be executed after each
				     connection
     keep		-k	     Do not delete seen  messages  from
				     server  (for  POP3, uidl is recom-
				     mended)
     flush		-F	     Flush  all  seen  messages  before
				     querying (DANGEROUS)
     limitflush 		     Flush  all  oversized messages be-
				     fore querying
     fetchall		-a	     Fetch all messages whether seen or
				     not
     rewrite			     Rewrite destination addresses  for
				     reply (default)
     stripcr			     Strip  carriage  returns from ends
				     of lines
     forcecr			     Force carriage returns at ends  of
				     lines
     pass8bits			     Force  BODY=8BITMIME to ESMTP lis-
				     tener
     dropstatus 		     Strip Status and  X-Mozilla-Status
				     lines out of incoming mail
     dropdelivered		     Strip  Delivered-To  lines  out of
				     incoming mail
     mimedecode 		     Convert quoted-printable to  8-bit
				     in MIME messages
     idle			     Idle  waiting for new messages af-
				     ter each poll (IMAP only)
     forceidle			     Idle waiting for new messages  af-
				     ter each poll (IMAP only, forced)
     no keep		-K	     Delete  seen  messages from server
				     (default)
     no flush			     Do not flush all seen messages be-
				     fore querying (default)
     no fetchall		     Retrieve only  new  messages  (de-
				     fault)
     no rewrite 		     Do not rewrite headers
     no stripcr 		     Do not strip carriage returns (de-
				     fault)
     no forcecr 		     Do  not  force carriage returns at
				     EOL (default)
     no pass8bits		     Do  not  force  BODY=8BITMIME   to
				     ESMTP listener (default)
     no dropstatus		     Do  not  drop  Status headers (de-
				     fault)
     no dropdelivered		     Do not drop  Delivered-To	headers
				     (default)
     no mimedecode		     Do not convert quoted-printable to
				     8-bit in MIME messages (default)
     no idle			     Do  not  idle waiting for new mes-
				     sages after each poll (IMAP only)
     limit		-l	     Set message size limit
     warnings		-w	     Set message size warning interval
     batchlimit 	-b	     Max # messages to forward in  sin-
				     gle connect
     fetchlimit 	-B	     Max  # messages to fetch in single
				     connect
     fetchsizelimit		     Max # message sizes  to  fetch  in
				     single transaction
     fastuidl			     Use binary search for first unseen
				     message (POP3 only)
     expunge		-e	     Perform  an  expunge  on every #th
				     message (IMAP and POP3 only)
     properties 		     String value is ignored by  fetch-
				     mail  (may  be  used  by extension
				     scripts)

     All user options must begin with a user description (user or  username  op-
     tion) and follow all server descriptions and options.

     In the .fetchmailrc file, the 'envelope' string argument may be preceded by
     a whitespace-separated number.  This number, if specified, is the number of
     such  headers  to	skip  over (that is, an argument of 1 selects the second
     header of the given type).  This is sometimes useful for ignoring bogus en-
     velope headers created by an ISP's local delivery agent  or  internal  for-
     wards (through mail inspection systems, for instance).

   Keywords Not Corresponding To Option Switches
     The 'folder' and 'smtphost' options (unlike their command-line equivalents)
     can take a space- or comma-separated list of names following them.

     All  options  correspond  to the obvious command-line arguments, except the
     following: 'via', 'interval', 'aka', 'is', 'to',  'dns'/'no  dns',  'check-
     alias'/'no  checkalias', 'password', 'preconnect', 'postconnect', 'localdo-
     mains', 'stripcr'/'no  stripcr',  'forcecr'/'no  forcecr',  'pass8bits'/'no
     pass8bits'  'dropstatus/no  dropstatus',  'dropdelivered/no dropdelivered',
     'mimedecode/no mimedecode', 'no idle', and 'no envelope'.

     The 'via' option is for if you want to have  more	than  one  configuration
     pointing  at  the same site.  If it is present, the string argument will be
     taken as the actual DNS name of the mail server host to query.   This  will
     override  the  argument  of poll, which can then simply be a distinct label
     for the configuration (e.g., what you would give on the command line to ex-
     plicitly query this host).

     The 'interval' option (which takes a numeric argument) allows you to poll a
     server less frequently than the basic poll interval.  If you say  'interval
     N'  the server this option is attached to will only be queried every N poll
     intervals.

   Singledrop versus Multidrop options
     Please ensure you read the section titled THE USE AND  ABUSE  OF  MULTIDROP
     MAILBOXES if you intend to use multidrop mode.

     The  'is'	or  'to' keywords associate the following local (client) name(s)
     (or server-name to client-name mappings  separated  by  =)  with  the  mail
     server  user name in the entry.  If an is/to list has '*' as its last name,
     unrecognized names are simply passed through.  Note  that	until  fetchmail
     version  6.3.4  inclusively,  these lists could only contain local parts of
     user names (fetchmail would only look at  the  part  before  the  @  sign).
     fetchmail	versions 6.3.5 and newer support full addresses on the left hand
     side of these mappings, and they take precedence over  any  'localdomains',
     'aka', 'via' or similar mappings.

     A	single local name can be used to support redirecting your mail when your
     username on the client machine is different from  your  name  on  the  mail
     server.   When there is only a single local name, mail is forwarded to that
     local username regardless of the message's Received, To, Cc, and Bcc  head-
     ers.  In this case, fetchmail never does DNS lookups.

     When  there  is more than one local name (or name mapping), fetchmail looks
     at the envelope header, if configured, and otherwise at the  Received,  To,
     Cc, and Bcc headers of retrieved mail (this is 'multidrop mode').	It looks
     for addresses with host name parts that match your poll name or your 'via',
     'aka' or 'localdomains' options, and usually also for host name parts which
     DNS  tells it are aliases of the mail server.  See the discussion of 'dns',
     'checkalias', 'localdomains', and 'aka' for details  on  how  matching  ad-
     dresses are handled.

     If  fetchmail  cannot  match  any	mail server usernames or localdomain ad-
     dresses, the mail will be bounced.  Normally it  will  be	bounced  to  the
     sender,  but  if the 'bouncemail' global option is off, the mail will go to
     the local postmaster instead.  (see the 'postmaster'  global  option).  See
     also BUGS.

     The  'dns'  option  (normally on) controls the way addresses from multidrop
     mailboxes are checked.  On, it enables logic to  check  each  host  address
     that does not match an 'aka' or 'localdomains' declaration by looking it up
     with DNS.	When a mail server username is recognized attached to a matching
     host name part, its local mapping is added to the list of local recipients.

     The 'checkalias' option (normally off) extends the lookups performed by the
     'dns'  keyword  in multidrop mode, providing a way to cope with remote MTAs
     that identify themselves using their canonical name, while they are  polled
     using  an alias.  When such a server is polled, checks to extract the enve-
     lope address fail, and fetchmail reverts to delivery  using  the  To/Cc/Bcc
     headers  (See  below  'Header versus Envelope addresses').  Specifying this
     option instructs fetchmail to retrieve all the IP addresses associated with
     both the poll name and the name used by the remote MTA and to do a compari-
     son of the IP addresses.  This comes in handy in situations where	the  re-
     mote server undergoes frequent canonical name changes, that would otherwise
     require  modifications  to  the  rcfile.  'checkalias' has no effect if 'no
     dns' is specified in the rcfile.

     The 'aka' option is for use with multidrop mailboxes.   It  allows  you  to
     pre-declare  a  list  of DNS aliases for a server.  This is an optimization
     hack that allows you to trade space for speed.  When fetchmail, while  pro-
     cessing  a  multidrop  mailbox, grovels through message headers looking for
     names of the mail server, pre-declaring common ones can save it from having
     to do DNS lookups.  Note: the names you give  as  arguments  to  'aka'  are
     matched  as  suffixes  --	if you specify (say) 'aka netaxs.com', this will
     match not just a host name netaxs.com, but any host  name	that  ends  with
     '.netaxs.com'; such as (say) pop3.netaxs.com and mail.netaxs.com.

     The  'localdomains'  option  allows  you to declare a list of domains which
     fetchmail should consider local.  When fetchmail is parsing  address  lines
     in  multidrop  modes,  and  a trailing segment of a host name matches a de-
     clared local domain, that address is passed through to the listener or  MDA
     unaltered (local-name mappings are not applied).

     If  you  are  using  'localdomains', you may also need to specify 'no enve-
     lope', which disables fetchmail's normal attempt to deduce an envelope  ad-
     dress from the Received line or X-Envelope-To header or whatever header has
     been  previously  set  by	'envelope'.  If you set 'no envelope' in the de-
     faults entry it is possible to undo that in  individual  entries  by  using
     'envelope <string>'.  As a special case, 'envelope "Received"' restores the
     default parsing of Received lines.

     The password option requires a string argument, which is the password to be
     used with the entry's server.

     The  'preconnect'	keyword allows you to specify a shell command to be exe-
     cuted just before each time fetchmail establishes a mail server connection.
     This may be useful if you are attempting to set up secure	POP  connections
     with  the aid of ssh(1).  If the command returns a nonzero status, the poll
     of that mail server will be aborted.

     Similarly, the 'postconnect' keyword similarly  allows  you  to  specify  a
     shell  command to be executed just after each time a mail server connection
     is taken down.

     The 'forcecr' option controls whether lines terminated by LF only are given
     CRLF termination before  forwarding.   Strictly  speaking	RFC821	requires
     this,  but  few MTAs enforce the requirement so this option is normally off
     (only one such MTA, qmail, is in significant use at time of writing).

     The 'stripcr' option controls whether carriage returns are stripped out  of
     retrieved mail before it is forwarded.  It is normally not necessary to set
     this,  because  it defaults to 'on' (CR stripping enabled) when there is an
     MDA declared but 'off' (CR stripping disabled) when forwarding is via SMTP.
     If 'stripcr' and 'forcecr' are both on, 'stripcr' will override.

     The 'pass8bits' option exists to cope with  Microsoft  mail  programs  that
     stupidly slap a "Content-Transfer-Encoding: 7bit" on everything.  With this
     option  off  (the	default)  and  such a header present, fetchmail declares
     BODY=7BIT to an ESMTP-capable listener; this causes problems  for	messages
     actually  using 8-bit ISO or KOI-8 character sets, which will be garbled by
     having the high bits of all characters stripped.	If  'pass8bits'  is  on,
     fetchmail is forced to declare BODY=8BITMIME to any ESMTP-capable listener.
     If  the  listener	is 8-bit-clean (as all the major ones now are) the right
     thing will probably result.

     The 'dropstatus' option controls whether nonempty Status and X-Mozilla-Sta-
     tus lines are retained in fetched mail (the default) or discarded.  Retain-
     ing them allows your MUA to see what messages (if any) were marked seen  on
     the  server.   On	the  other hand, it can confuse some new-mail notifiers,
     which assume that anything with a Status line in it has been seen.   (Note:
     the  empty Status lines inserted by some buggy POP servers are uncondition-
     ally discarded.)

     The 'dropdelivered' option controls whether Delivered-To  headers	will  be
     kept in fetched mail (the default) or discarded. These headers are added by
     qmail  and Postfix mail servers in order to avoid mail loops but may get in
     your way if you try to "mirror" a mail server within the same  domain.  Use
     with caution.

     The  'mimedecode'	option	controls whether MIME messages using the quoted-
     printable encoding are automatically converted into pure 8-bit data. If you
     are delivering mail to an ESMTP-capable,  8-bit-clean  listener  (that  in-
     cludes  all  of the major MTAs like sendmail), then this will automatically
     convert quoted-printable message headers and data into 8-bit  data,  making
     it easier to understand when reading mail. If your e-mail programs know how
     to deal with MIME messages, then this option is not needed.  The mimedecode
     option  is  off  by  default,  because  doing RFC2047 conversion on headers
     throws away character-set information and can lead to bad	results  if  the
     encoding of the headers differs from the body encoding.

     The  'idle'  option is intended to be used with IMAP servers supporting the
     RFC2177 IDLE command extension, but does not strictly require it.	If it is
     enabled, and fetchmail detects that IDLE is supported, an IDLE will be  is-
     sued  at  the end of each poll.  This will tell the IMAP server to hold the
     connection open and notify the client when new mail is available.	If  IDLE
     is  not supported, fetchmail will simulate it by periodically issuing NOOP.
     If you need to poll a link frequently, IDLE can save bandwidth by eliminat-
     ing TCP/IP connects and LOGIN/LOGOUT sequences. On the other hand, an  IDLE
     connection  will  eat  almost all of your fetchmail's time, because it will
     never drop the connection and allow other polls to occur unless the  server
     times  out the IDLE.  It also does not work with multiple folders; only the
     first folder will ever be polled.

     The 'properties' option is an extension mechanism.  It takes a string argu-
     ment, which is ignored by fetchmail itself.  The  string  argument  may  be
     used  to  store configuration information for scripts which require it.  In
     particular, the output of '--configdump' option will make properties  asso-
     ciated with a user entry readily available to a Python script.

   Miscellaneous Run Control Options
     The  words  'here' and 'there' have useful English-like significance.  Nor-
     mally 'user eric is esr' would mean that mail for the remote user 'eric' is
     to be delivered to 'esr', but you can make this  clearer  by  saying  'user
     eric  there  is  esr  here', or reverse it by saying 'user esr here is eric
     there'

     Legal protocol identifiers for use with the 'protocol' keyword are:

	 auto (or AUTO) (legacy, to be removed from future release)
	 pop2 (or POP2) (legacy, to be removed from future release)
	 pop3 (or POP3)
	 sdps (or SDPS)
	 imap (or IMAP)
	 apop (or APOP)
	 kpop (or KPOP)

     Legal  authentication  types  are	'any',	'password',  'kerberos',   'ker-
     beros_v4',  'kerberos_v5'	and 'gssapi', 'cram-md5', 'otp', 'msn' (only for
     POP3), 'ntlm', 'implicit', 'external' (only  IMAP).   The	'password'  type
     specifies authentication by normal transmission of a password (the password
     may  be  plain  text or subject to protocol-specific encryption as in CRAM-
     MD5); 'kerberos' tells fetchmail to try to get a  Kerberos  ticket  at  the
     start  of each query instead, and send an arbitrary string as the password;
     and 'gssapi' tells fetchmail to use GSSAPI  authentication.   See	the  de-
     scription of the 'auth' keyword for more.

     Specifying  'kpop'  sets  POP3 protocol over port 1109 with Kerberos V4 au-
     thentication.  These defaults may be overridden by later options.

     There are some global option statements: 'set logfile' followed by a string
     sets the same global specified by --logfile.  A command-line --logfile  op-
     tion will override this. Note that --logfile is only effective if fetchmail
     detaches  itself  from  the  terminal and the logfile already exists before
     fetchmail is run, and it overrides --syslog in this case.	Also, 'set  dae-
     mon'  sets the poll interval as --daemon does.  This can be overridden by a
     command-line --daemon option; in particular --daemon 0 can be used to force
     foreground operation. The 'set postmaster' statement sets	the  address  to
     which multidrop mail defaults if there are no local matches.  Finally, 'set
     syslog' sends log messages to syslogd(8).

DEBUGGING FETCHMAIL
   Fetchmail crashing
     There  are various ways in that fetchmail may "crash", i. e. stop operation
     suddenly and unexpectedly. A "crash" usually refers to an	error  condition
     that  the	software  did not handle by itself. A well-known failure mode is
     the "segmentation fault" or "signal 11" or "SIGSEGV" or just "segfault" for
     short. These can be caused by hardware or by software  problems.  Software-
     induced  segfaults  can usually be reproduced easily and in the same place,
     whereas hardware-induced segfaults can go away if the computer is rebooted,
     or powered off for a few hours, and can happen in random locations even  if
     you use the software the same way.

     For  solving  hardware-induced segfaults, find the faulty component and re-
     pair or replace it.  The Sig11 FAQ may help you with details.

     For solving software-induced segfaults, the developers may  need  a  "stack
     backtrace".

   Enabling fetchmail core dumps
     By  default,  fetchmail  suppresses core dumps as these might contain pass-
     words and other sensitive information. For debugging fetchmail crashes, ob-
     taining a "stack backtrace" from a core dump is often the quickest  way  to
     solve the problem, and when posting your problem on a mailing list, the de-
     velopers may ask you for a "backtrace".

     1.  To  get useful backtraces, fetchmail needs to be installed without get-
     ting stripped of its compilation symbols.	Unfortunately, most binary pack-
     ages that are installed are stripped, and core files  from  symbol-stripped
     programs  are  worthless.	So  you may need to recompile fetchmail. On many
     systems, you can type

	     file `which fetchmail`

     to find out if fetchmail was symbol-stripped  or  not.  If  yours	was  un-
     stripped,	fine,  proceed,  if  it  was stripped, you need to recompile the
     source code first. You do not usually need to install fetchmail in order to
     debug it.

     2. The shell environment that starts fetchmail needs to enable core  dumps.
     The  key  is  the "maximum core (file) size" that can usually be configured
     with a tool named "limit" or "ulimit". See the documentation for your shell
     for details. In the popular bash shell, "ulimit -Sc unlimited"  will  allow
     the core dump.

     3.  You  need  to tell fetchmail, too, to allow core dumps. To do this, run
     fetchmail with the -d0 -v options.  It is often easier to also add --nosys-
     log -N as well.

     Finally, you need to reproduce the crash. You can just start fetchmail from
     the directory where you compiled it by typing ./fetchmail, so the	complete
     command  line will start with ./fetchmail -Nvd0 --nosyslog and perhaps list
     your other options.

     After the crash, run your debugger to obtain the core dump.   The	debugger
     will  often  be  GNU GDB, you can then type (adjust paths as necessary) gdb
     ./fetchmail fetchmail.core and then, after GDB has started up and read  all
     its  files, type backtrace full, save the output (copy & paste will do, the
     backtrace will be read by a human) and then type quit to leave gdb.   Note:
     on  some systems, the core files have different names, they might contain a
     number instead of the program name, or number and name, but it will usually
     have "core" as part of their name.

INTERACTION WITH RFC 822
     When trying to determine the originating address of  a  message,  fetchmail
     looks through headers in the following order:

	     Return-Path:
	     Resent-Sender: (ignored if it does not contain an @ or !)
	     Sender: (ignored if it does not contain an @ or !)
	     Resent-From:
	     From:
	     Reply-To:
	     Apparently-From:

     The  originating  address is used for logging, and to set the MAIL FROM ad-
     dress when forwarding to SMTP.  This order is intended to	cope  gracefully
     with  receiving mailing list messages in multidrop mode. The intent is that
     if a local address does not exist, the bounce message will not be	returned
     blindly to the author or to the list itself, but rather to the list manager
     (which is less annoying).

     In  multidrop  mode,  destination	headers are processed as follows: First,
     fetchmail looks for the header specified by the 'envelope' option in  order
     to  determine the local recipient address. If the mail is addressed to more
     than one recipient, the Received line will not contain any information  re-
     garding recipient addresses.

     Then fetchmail looks for the Resent-To:, Resent-Cc:, and Resent-Bcc: lines.
     If they exist, they should contain the final recipients and have precedence
     over  their To:/Cc:/Bcc: counterparts.  If the Resent-* lines do not exist,
     the To:, Cc:, Bcc: and Apparently-To: lines are looked for.  (The	presence
     of  a  Resent-To: is taken to imply that the person referred by the To: ad-
     dress has already received the original copy of the mail.)

CONFIGURATION EXAMPLES
     Note that although there are password declarations in a good  many  of  the
     examples  below,  this  is  mainly for illustrative purposes.  We recommend
     stashing account/password pairs in your $HOME/.netrc file, where  they  can
     be used not just by fetchmail but by ftp(1) and other programs.

     The basic format is:

	    poll SERVERNAME protocol PROTOCOL username NAME password PASSWORD

     Example:

	    poll pop.provider.net protocol pop3 username "jsmith" password "secret1"

     Or, using some abbreviations:

	    poll pop.provider.net proto pop3 user "jsmith" password "secret1"

     Multiple servers may be listed:

	    poll pop.provider.net proto pop3 user "jsmith" pass "secret1"
	    poll other.provider.net proto pop2 user "John.Smith" pass "My^Hat"

     Here is the same version with more whitespace and some noise words:

	    poll pop.provider.net proto pop3
		 user "jsmith", with password secret1, is "jsmith" here;
	    poll other.provider.net proto pop2:
		 user "John.Smith", with password "My^Hat", is "John.Smith" here;

     If you need to include whitespace in a parameter string or start the latter
     with a number, enclose the string in double quotes.  Thus:

	    poll mail.provider.net with proto pop3:
		 user "jsmith" there has password "4u but u cannot krak this"
		 is jws here and wants mda "/bin/mail"

     You may have an initial server description headed by the keyword 'defaults'
     instead  of 'poll' followed by a name.  Such a record is interpreted as de-
     faults for all queries to use. It may be overwritten by  individual  server
     descriptions.  So, you could write:

	    defaults proto pop3
		 user "jsmith"
	    poll pop.provider.net
		 pass "secret1"
	    poll mail.provider.net
		 user "jjsmith" there has password "secret2"

     It  is  possible to specify more than one user per server.  The 'user' key-
     word leads off a user description, and every user specification in a multi-
     user entry must include it.  Here is an example:

	    poll pop.provider.net proto pop3 port 3111
		 user "jsmith" with pass "secret1" is "smith" here
		 user jones with pass "secret2" is "jjones" here keep

     This associates the local username 'smith' with the pop.provider.net  user-
     name  'jsmith'  and  the  local username 'jjones' with the pop.provider.net
     username 'jones'.	Mail for 'jones' is kept on the server after download.

     Here is what a simple retrieval configuration for a multidrop mailbox looks
     like:

	    poll pop.provider.net:
		 user maildrop with pass secret1 to golux 'hurkle'='happy' snark here

     This says that the mailbox of account 'maildrop' on the server  is  a  mul-
     tidrop  box,  and	that messages in it should be parsed for the server user
     names 'golux', 'hurkle', and 'snark'.  It further	specifies  that  'golux'
     and 'snark' have the same name on the client as on the server, but mail for
     server user 'hurkle' should be delivered to client user 'happy'.

     Note  that  fetchmail,  until version 6.3.4, did NOT allow full user@domain
     specifications here, these would never match.  Fetchmail  6.3.5  and  newer
     support user@domain specifications on the left-hand side of a user mapping.

     Here is an example of another kind of multidrop connection:

	    poll pop.provider.net localdomains loonytoons.org toons.org
		 envelope X-Envelope-To
		 user maildrop with pass secret1 to * here

     This  also  says  that the mailbox of account 'maildrop' on the server is a
     multidrop box.  It tells fetchmail that any address in  the  loonytoons.org
     or toons.org domains (including sub-domain addresses like 'joe@daffy.loony-
     toons.org')  should  be  passed  through to the local SMTP listener without
     modification.  Be careful of mail loops if you do this!

     Here is an example configuration using ssh  and  the  plugin  option.   The
     queries  are  made directly on the stdin and stdout of imapd via ssh.  Note
     that in this setup, IMAP authentication can be skipped.

	    poll mailhost.net with proto imap:
		 plugin "ssh %h /usr/sbin/imapd" auth implicit;
		 user esr is esr here

THE USE AND ABUSE OF MULTIDROP MAILBOXES
     Use the multiple-local-recipients feature with caution -- it can bite.  All
     multidrop features are ineffective in ETRN and ODMR modes.

     Also, note that in multidrop mode duplicate mails	may  be  suppressed.   A
     piece of mail is considered duplicate if it does not have a discernible en-
     velope  recipient	address,  has the same header as the message immediately
     preceding and more than one addressee.  Such runs of messages may be gener-
     ated when copies of a message addressed to multiple users are delivered  to
     a	multidrop  box. (To be precise, fetchmail 6.2.5 through 6.4.X use an MD5
     hash of the raw message header, and only fetchmail  6.4.16+  document  this
     properly.	 Fetchmail  5.0.8  (1999-09-14) through 6.2.4 used only the Mes-
     sage-ID header.  5.0.7 and older did not suppress duplicates.)

     Note that this duplication killer code checking the entire header	is  very
     restrictive  and  may  not  suppress  many duplicates in practice - for in-
     stance, if some X-Original-To or Delivered-To header differs.  This is  in-
     tentional	and correct in such situations: wherever envelope information is
     available, it should be used for reliable	delivery  of  mailing  list  and
     blind  carbon copy (Bcc) messages. See the subsection Duplicate suppression
     below for suggestions.

   Header versus Envelope addresses
     The fundamental problem is that by having your  mail  server  toss  several
     peoples'  mail  in  a  single maildrop box, you may have thrown away poten-
     tially vital information about who each piece  of	mail  was  actually  ad-
     dressed  to  (the 'envelope address', as opposed to the header addresses in
     the RFC822 To/Cc headers - the Bcc is not available at the receiving  end).
     This  'envelope  address'	is the address you need in order to reroute mail
     properly.

     Sometimes fetchmail can deduce the envelope address.  If  the  mail  server
     MTA  is  sendmail and the item of mail had just one recipient, the MTA will
     have written a 'by/for' clause that gives the envelope addressee  into  its
     Received  header.	But  this  does not work reliably for other MTAs, nor if
     there is more than one recipient.	By default, fetchmail looks for envelope
     addresses in these lines; you can restore this default with  -E  "Received"
     or 'envelope Received'.

     As  a  better alternative, some SMTP listeners and/or mail servers insert a
     header in each message containing a copy of the envelope  addresses.   This
     header  (when it exists) is often 'X-Original-To', 'Delivered-To' or 'X-En-
     velope-To'.  Fetchmail's assumption about this can be changed with  the  -E
     or  'envelope'  option.   Note that writing an envelope header of this kind
     exposes the names of recipients (including blind-copy  recipients)  to  all
     receivers	of the messages, so the upstream must store one copy of the mes-
     sage per recipient to avoid becoming a privacy problem.

     Postfix, since version 2.0, writes an X-Original-To: header which	contains
     a copy of the envelope as it was received.

     Qmail  and  Postfix generally write a 'Delivered-To' header upon delivering
     the message to the mail spool and use it to avoid mail loops.   Qmail  vir-
     tual  domains however will prefix the user name with a string that normally
     matches the user's domain. To remove this prefix you  can	use  the  -Q  or
     'qvirtual' option.

     Sometimes,  unfortunately,  neither  of  these  methods works.  That is the
     point when you should contact your ISP and ask them to provide such an  en-
     velope  header,  and  you should not use multidrop in this situation.  When
     they all fail, fetchmail must fall back on the contents  of  To/Cc  headers
     (Bcc  headers  are not available - see below) to try to determine recipient
     addressees -- and these are unreliable.  In particular, mailing-list  soft-
     ware  often  ships  mail  with  only  the list broadcast address in the To:
     header.

     Note that a future version of fetchmail may remove To/Cc parsing!

     When fetchmail cannot deduce a recipient address that is local, and the in-
     tended recipient address was anyone other than fetchmail's  invoking  user,
     mail will get lost.  This is what makes the multidrop feature risky without
     proper envelope information.

     A	related  problem is that when you blind-copy a mail message, the Bcc in-
     formation is carried only as envelope address (it is removed from the head-
     ers by the sending mail server, so fetchmail can see it only if there is an
     X-Envelope-To header).  Thus, blind-copying to someone who gets mail over a
     fetchmail multidrop link will fail unless the mail  server  host  routinely
     writes  X-Envelope-To  or	an equivalent header into messages in your mail-
     drop.

     In conclusion, mailing lists and Bcc'd mail can only work if the server you
     are fetching from

     (1)    stores one copy of the message per recipient in your domain and

     (2)    records the envelope information in a special header (X-Original-To,
	    Delivered-To, X-Envelope-To).

   Good Ways To Use Multidrop Mailboxes
     Multiple local names can be used to administer  a	mailing  list  from  the
     client side of a fetchmail collection.  Suppose your name is 'esr', and you
     want to both pick up your own mail and maintain a mailing list called (say)
     "fetchmail-friends", and you want to keep the alias list on your client ma-
     chine.

     On  your  server, you can alias 'fetchmail-friends' to 'esr'; then, in your
     .fetchmailrc, declare 'to esr fetchmail-friends here'.  Then, when mail in-
     cluding 'fetchmail-friends' as a local address gets fetched, the list  name
     will be appended to the list of recipients your SMTP listener sees.  There-
     fore  it will undergo alias expansion locally.  Be sure to include 'esr' in
     the local alias expansion of fetchmail-friends, or you will never see  mail
     sent  only  to  the list.	Also be sure that your listener has the "me-too"
     option set (sendmail's -oXm command-line option or OXm declaration) so your
     name is not removed from alias expansions in messages you send.

     This trick is not without its problems, however.  You  will  begin  to  see
     this  when  a message comes in that is addressed only to a mailing list you
     do not have declared as a local name.  Each such message  will  feature  an
     'X-Fetchmail-Warning'  header  which  is generated because fetchmail cannot
     find a valid local name in the recipient addresses.  Such messages  default
     (as was described above) to being sent to the local user running fetchmail,
     but the program has no way to know that this is actually the right thing.

   Bad Ways To Abuse Multidrop Mailboxes
     Multidrop	mailboxes and fetchmail serving multiple users in daemon mode do
     not mix.  The problem, again, is mail from mailing lists,	which  typically
     does not have an individual recipient address on it.   Unless fetchmail can
     deduce  an  envelope address, such mail will only go to the account running
     fetchmail (probably root).  Also, blind-copied users are very likely  never
     to see their mail at all.

     If  you  are  tempted  to use fetchmail to retrieve mail for multiple users
     from a single mail drop via POP or IMAP, think again (and reread  the  sec-
     tion  on header and envelope addresses above).  It would be smarter to just
     let the mail sit in the mail server's queue and  use  fetchmail's	ETRN  or
     ODMR  modes  to  trigger SMTP sends periodically (of course, this means you
     have to poll more frequently than the mail server's expiry period).  If you
     cannot arrange this, try setting up a UUCP feed.

     If you absolutely must use multidrop for this purpose, make sure your  mail
     server writes an envelope-address header that fetchmail can see.  Otherwise
     you will lose mail and it will come back to haunt you.

   Speeding Up Multidrop Checking
     Normally, when multiple users are declared fetchmail extracts recipient ad-
     dresses  as described above and checks each host part with DNS to see if it
     is an alias of the mail server.  If so, the name mappings described in  the
     "to ... here" declaration are done and the mail locally delivered.

     This  is  a  convenient  but also slow method.  To speed it up, pre-declare
     mail server aliases with 'aka'; these are checked before  DNS  lookups  are
     done.   If  you  are  certain your aka list contains all DNS aliases of the
     mail server (and all MX names pointing at it - note this may  change  in  a
     future  version)  you can declare 'no dns' to suppress DNS lookups entirely
     and only match against the aka list.

   Duplicate suppression on multidrop
     If fetchmail's duplicate suppression code does not kick in  for  your  mul-
     tidrop  mail  account,  other  options  is  using	sieve,	or  for instance
     Courier's maildrop package (and in particular, its reformail  program  with
     the  -D  option) as the delivery agent (either from fetchmail, or from your
     local mail server that fetchmail injects into).

SOCKS
     Support for socks4/5 is a compile time configuration option. Once	compiled
     in, fetchmail will always use the socks libraries and configuration on your
     system,  there  are  no  run-time switches in fetchmail - but you can still
     configure SOCKS: you can specify which SOCKS configuration file is used  in
     the SOCKS_CONF environment variable.

     For  instance,  if you wanted to bypass the SOCKS proxy altogether and have
     fetchmail connect directly, you could just pass SOCKS_CONF=/dev/null in the
     environment, for example (add your usual command line options - if any - to
     the end of this line):

     env SOCKS_CONF=/dev/null fetchmail

EXIT CODES
     To facilitate the use of fetchmail in shell scripts, an exit status code is
     returned to give an indication of what occurred during a given connection.

     The exit codes returned by fetchmail are as follows:

     0	    One or more messages were successfully retrieved (or, if the -c  op-
	    tion was selected, were found waiting but not retrieved).

     1	    There was no mail awaiting retrieval.  (There may have been old mail
	    still  on  the server but not selected for retrieval.) If you do not
	    want "no mail" to be an error  condition  (for  instance,  for  cron
	    jobs), use a POSIX-compliant shell and add

	    || [ $? -eq 1 ]

	    to	the  end  of the fetchmail command line, note that this leaves 0
	    untouched, maps 1 to 0, and maps all other codes to 1. See also item
	    #C8 in the FAQ.

     2	    An error was encountered when attempting to open  a  socket  to  re-
	    trieve  mail.   If	you  do  not know what a socket is, do not worry
	    about it -- just treat this as an 'unrecoverable error'.  This error
	    can also be because a protocol fetchmail wants to use is not  listed
	    in /etc/services.

     3	    The  user authentication step failed.  This usually means that a bad
	    user-id, password, or APOP id was specified.  Or it  may  mean  that
	    you tried to run fetchmail under circumstances where it did not have
	    standard  input  attached  to  a terminal and could not prompt for a
	    missing password.

     4	    Some sort of fatal protocol error was detected.

     5	    There was a syntax error in the arguments to fetchmail, or a pre- or
	    post-connect command failed.

     6	    The run control file had bad permissions.

     7	    There was an error condition reported by the server.  Can also  fire
	    if fetchmail timed out while waiting for the server.

     8	    Client-side  exclusion error.  This means fetchmail either found an-
	    other copy of itself already running, or failed in such a  way  that
	    it is not sure whether another copy is running.

     9	    The  user  authentication  step  failed because the server responded
	    "lock busy".  Try again after a brief pause!  This error is not  im-
	    plemented  for  all  protocols,  nor for all servers.  If not imple-
	    mented for your server, "3" will be  returned  instead,  see  above.
	    May  be  returned  when talking to qpopper or other servers that can
	    respond with "lock busy" or some similar text  containing  the  word
	    "lock".

     10     The  fetchmail  run  failed  while trying to do an SMTP port open or
	    transaction.

     11     Fatal DNS error.  Fetchmail encountered an error while performing  a
	    DNS lookup at startup and could not proceed.

     12     BSMTP batch file could not be opened.

     13     Poll terminated by a fetch limit (see the --fetchlimit option).

     14     Server busy indication.

     23     Internal error.  You should see a message on standard error with de-
	    tails.

     24 - 26, 28, 29
	    These are internal codes and should not appear externally.

     When  fetchmail queries more than one host, return status is 0 if any query
     successfully retrieved mail. Otherwise the returned error status is that of
     the last host queried.

FILES
     ~/.fetchmailrc, $HOME/.fetchmailrc, $HOME_ETC/.fetchmailrc, $FETCHMAIL-
     HOME/fetchmailrc
	  default run control file (location can be overridden with  environment
	  variables)

     ~/.fetchids, $HOME/.fetchids, $HOME_ETC/.fetchids, $FETCHMAILHOME/.fetchids
	  default  location  of  file recording last message UIDs seen per host.
	  (location can be overridden with environment variables)

     ~/.fetchmail.pid, $HOME/.fetchmail.pid, $HOME_ETC/.fetchmail.pid, $FETCH-
     MAILHOME/fetchmail.pid
	  default location of lock file (sometimes called pidfile or  PID  file,
	  see  option  pidfile) to help prevent concurrent runs (non-root mode).
	  (location can be overridden with environment variables)

     ~/.netrc, $HOME/.netrc, $HOME_ETC/.netrc
	  your FTP run control file, which (if present)  will  be  searched  for
	  passwords  as  a  last  resort before prompting for one interactively.
	  (location can be overridden with environment variables)

     /var/run/fetchmail.pid
	  lock file (pidfile) to help prevent concurrent runs (root mode,  Linux
	  systems).

     /etc/fetchmail.pid
	  lock	file  (pidfile) to help prevent concurrent runs (root mode, sys-
	  tems without /var/run).

ENVIRONMENT
     Fetchmail's behavior can be altered by providing it with environment  vari-
     ables.   Some  may  alter	the  operation of libraries that fetchmail links
     against, for instance, OpenSSL.  Note that in daemon mode, you will need to
     quit the background daemon process and start a new fetchmail daemon for en-
     vironment changes to take effect.

     FETCHMAILHOME
	    If this environment variable is set to a valid and	existing  direc-
	    tory  name,  fetchmail will read $FETCHMAILHOME/fetchmailrc (the dot
	    is missing in this case), $FETCHMAILHOME/.fetchids (keeping its dot)
	    and $FETCHMAILHOME/fetchmail.pid (without dot) rather than from  the
	    user's  home directory.  The .netrc file is always looked for in the
	    invoking user's home directory (or $HOME_ETC) regardless  of  FETCH-
	    MAILHOME's setting.

     FETCHMAILUSER
	    If	this  environment variable is set, it is used as the name of the
	    calling user (default local name) for purposes such as mailing error
	    notifications.  Otherwise, if either the LOGNAME or USER variable is
	    correctly set (e.g., the corresponding UID matches the session  user
	    ID)  then  that  name  is used as the default local name.  Otherwise
	    getpwuid(3) must be able to retrieve a password entry for  the  ses-
	    sion ID (this elaborate logic is designed to handle the case of mul-
	    tiple names per user ID gracefully).

     FETCHMAIL_DISABLE_CBC_IV_COUNTERMEASURE
	    (since  v6.3.22): If this environment variable is set and not empty,
	    fetchmail will disable a countermeasure against an SSL CBC IV attack
	    (by setting SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS).  This is a security
	    risk, but may be necessary for connecting to certain  non-standards-
	    conforming	servers.   See	fetchmail's  NEWS  file  and  fetchmail-
	    SA-2012-01.txt for details.  Earlier fetchmail versions (v6.3.21 and
	    older) used to disable this countermeasure, but  v6.3.22  no  longer
	    does that as a safety precaution.

     FETCHMAIL_POP3_FORCE_RETR
	    (since v6.3.9): If this environment variable is defined at all (even
	    if	empty), fetchmail will forgo the POP3 TOP command and always use
	    RETR. This can be used as a workaround when TOP does not work  prop-
	    erly.

     FETCHMAIL_INCLUDE_DEFAULT_X509_CA_CERTS
	    (since  v6.3.17): If this environment variable is set and not empty,
	    fetchmail will always load the default X.509 trusted certificate lo-
	    cations for SSL/TLS  CA  certificates,  even  if  --sslcertfile  and
	    --sslcertpath  are given.  The latter locations take precedence over
	    the system default locations.  This is useful in case there are bro-
	    ken certificates in the system directories and the user has  no  ad-
	    ministrator privileges to remedy the problem.

     FETCHMAIL_WOLFSSL_DEBUG
	    (since  v6.4.25):  If fetchmail is compiled and linked with wolfSSL,
	    if wolfSSL was built with --enable-debug, and  if  this  environment
	    variable  is  set  and  not empty, then enable wolfSSL's debug mode.
	    This will emit huge amounts of debug output to stderr.

     HOME   (documented since 6.4.1): This  variable  is  normally  set  to  the
	    user's  home  directory.  If it is set to a different directory than
	    what is in the password database, HOME takes precedence.

     HOME_ETC
	    (documentation corrected to match behaviour of code since 6.4.1): If
	    the HOME_ETC variable is set, it will override fetchmail's	idea  of
	    $HOME,  i.	e.  fetchmail will read .fetchmailrc, .fetchids, .fetch-
	    mail.pid and .netrc from $HOME_ETC instead of $HOME (or if	HOME  is
	    also unset, from the passwd file's home directory location).

	    If	HOME_ETC  and  FETCHMAILHOME  are  both set, FETCHMAILHOME takes
	    precedence and HOME_ETC will be ignored.

     SOCKS_CONF
	    (only if SOCKS support is compiled in) this variable is used by  the
	    socks  library  to find out which configuration file it should read.
	    Set this to /dev/null to bypass the SOCKS proxy.

     SSL_CERT_DIR
	    (with truly OpenSSL 3.0  compatible  library):  overrides  OpenSSL's
	    idea of the default trust directory or path (which contains individ-
	    ual  certificate files and hashed symlinks), see the SSL_CTX_set_de-
	    fault_verify_paths(3) manual page for details,  it	may  be  in  the
	    openssl  development  package.   If  using another library's OpenSSL
	    compatibility interface, this may not  work.   Since  this	variable
	    only  specifies  a	default  value,  the  option --sslcertpath takes
	    precedence if given.

     SSL_CERT_FILE
	    (with truly OpenSSL 3.0  compatible  library):  overrides  OpenSSL's
	    idea  of the default trust certificate bundle file (which contains a
	    concatenation of base64-encoded certificates in PEM format), see the
	    SSL_CTX_set_default_verify_paths(3) manual page for details, it  may
	    be	in  the openssl development package.  If using another library's
	    OpenSSL compatibility interface, this  may	not  work.   Since  this
	    variable  only  specifies  a default value, the option --sslcertfile
	    takes precedence if given.

     other system default variables
	    such as TZ or the locale LC_XXX variables, will also influence  pro-
	    gram behaviour.

SIGNALS
     If  a  fetchmail  daemon  is  running as root, SIGUSR1 wakes it up from its
     sleep phase and forces a poll of all non-skipped servers. For compatibility
     reasons, SIGHUP can also be used in 6.3.X but may not be available  in  fu-
     ture fetchmail versions.

     If  fetchmail is running in daemon mode as non-root, use SIGUSR1 to wake it
     (this is so SIGHUP due to logout can retain the default action  of  killing
     it).

     Running  fetchmail  in  foreground  while a background fetchmail is running
     will do whichever of these is appropriate to wake it up.

BUGS, LIMITATIONS, AND KNOWN PROBLEMS
     Please check the NEWS file that shipped with fetchmail for more known  bugs
     than those listed here.

     Fetchmail	cannot handle user names that contain blanks after a "@" charac-
     ter, for instance "demonstr@ti on". These are rather uncommon and only hurt
     when using UID-based --keep setups, so the 6.X.Y versions of fetchmail will
     not be fixed.

     Fetchmail cannot handle configurations where  you	have  multiple	accounts
     that  use the same server name and the same login. Any user@server combina-
     tion must be unique.

     The assumptions that the DNS and in particular the checkalias options  make
     are  not  often sustainable. For instance, it has become uncommon for an MX
     server to be a POP3 or IMAP server at  the  same  time.  Therefore  the  MX
     lookups may go away in a future release.

     The  mda and plugin options interact badly.  In order to collect error sta-
     tus from the MDA, fetchmail has to change its  normal  signal  handling  so
     that  dead plugin processes do not get reaped until the end of the poll cy-
     cle.  This can cause resource starvation if too  many  zombies  accumulate.
     So either do not deliver to a MDA using plugins or risk being overrun by an
     army of undead.

     The  --interface option does not support IPv6 and it is doubtful if it ever
     will, since there is no portable way to query interface IPv6 addresses.

     The RFC822 address parser used in multidrop mode chokes on some @-addresses
     that are technically legal but bizarre.  Strange uses of quoting and embed-
     ded comments are likely to confuse it.

     In a message with multiple envelope headers, only the  last  one  processed
     will be visible to fetchmail.

     Use  of  some of these protocols requires that the program send unencrypted
     passwords over the TCP/IP connection to the mail server.	This  creates  a
     risk  that  name/password	pairs might be snaffled with a packet sniffer or
     more sophisticated monitoring software.  Under Linux and FreeBSD, the --in-
     terface option can be used to restrict polling to availability  of  a  spe-
     cific  interface  device  with  a	specific local or remote IP address, but
     snooping is still possible if (a) either host has a network device that can
     be opened in promiscuous mode, or (b) the intervening network link  can  be
     tapped.   We recommend the use of ssh(1) tunnelling to not only shroud your
     passwords but encrypt the entire conversation.

     Use of the %F or %T escapes in an mda option could open  a  security  hole,
     because  they pass text manipulable by an attacker to a shell command.  Po-
     tential shell characters are replaced by '_' before execution.  The hole is
     further reduced by the fact that fetchmail temporarily discards any set-uid
     privileges it may have while running the MDA.  For maximum safety, however,
     do not use an mda command containing %F or %T when fetchmail  is  run  from
     the root account itself.

     Fetchmail's  method  of  sending bounces due to errors or spam-blocking and
     spam bounces requires that port 25 of localhost be  available  for  sending
     mail via SMTP.

     If  you  modify  ~/.fetchmailrc  while a background instance is running and
     break the syntax, the background  instance  will  die  silently.	Unfortu-
     nately,  it  cannot  die  noisily because we do not yet know whether syslog
     should be enabled.  On some systems, fetchmail dies quietly even  if  there
     is  no syntax error; this seems to have something to do with buggy terminal
     ioctl code in the kernel.

     The -f - option (reading a configuration from stdin) is  incompatible  with
     the plugin option.

     The 'principal' option only handles Kerberos IV, not V.

     Interactively  entered  passwords are truncated after 63 characters. If you
     really need to use a longer password, you will have to use a  configuration
     file.

     A	backslash  as the last character of a configuration file will be flagged
     as a syntax error rather than ignored.

     The BSMTP error handling is virtually nonexistent and may leave broken mes-
     sages behind.

     Send comments, bug reports, gripes, and the  like	to  the  fetchmail-devel
     list

     An fetchmail FAQ (in HTML form) is available at the fetchmail home page, it
     should also accompany your installation.

AUTHOR
     Fetchmail	is currently maintained by Matthias Andree and Rob Funk with ma-
     jor assistance from Sunil Shetye (for code)  and  Rob  MacGregor  (for  the
     mailing lists).

     Most  of  the  code is from Eric S. Raymond.  Too many other people to name
     here have contributed code and patches.

     This program is descended from and replaces popclient, by Carl Harris;  the
     internals	have become quite different, but some of its interface design is
     directly traceable to that ancestral program.

     This manual page has been improved by Matthias Andree,  R. Hannes	Beinert,
     and Hector Garcia.

SEE ALSO
     README,  README.SSL, README.SSL-SERVER, The Fetchmail FAQ, mutt(1), elm(1),
     mail(1), sendmail(8), popd(8), imapd(8), netrc(5), the fetchmail home page,
     (alternative URI); the maildrop home page.

APPLICABLE STANDARDS
     Note that this list is just a collection of references and not a  statement
     as to the actual protocol conformance or requirements in fetchmail.

     SMTP/ESMTP:
	  RFC  821,  RFC 2821, RFC 1869, RFC 1652, RFC 1870, RFC 1983, RFC 1985,
	  RFC 2554.

     mail:
	  RFC 822, RFC 2822, RFC 1123, RFC 1892, RFC 1894.

     POP2:
	  RFC 937

     POP3:
	  RFC 1081, RFC 1225, RFC 1460, RFC 1725, RFC 1734, RFC 1939, RFC  1957,
	  RFC 2195, RFC 2449.

     APOP:
	  RFC 1939.

     RPOP:
	  RFC 1081, RFC 1225.

     IMAP2/IMAP2BIS:
	  RFC 1176, RFC 1732.

     IMAP4/IMAP4rev1:
	  RFC  1730, RFC 1731, RFC 1732, RFC 2060, RFC 2061, RFC 2195, RFC 2177,
	  RFC 2683.

     ETRN:
	  RFC 1985.

     ODMR/ATRN:
	  RFC 2645.

     OTP:
	  RFC 1938.

     LMTP:
	  RFC 2033.

     GSSAPI:
	  RFC  1508,  RFC 1734, Generic Security Service Application Program In-
	  terface (GSSAPI)/Ker- beros/Simple Authentication and  Security  Layer
	  (SASL) Service Names.

     TLS:
	  RFC 2595.

fetchmail 6.6.7 		   2025-10-10			    FETCHMAIL(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=fetchmail&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help