Seth Woolley's Man Viewer

exim(8) - exim - a Mail Transfer Agent - man 8 exim

([section] manual, -k keyword, -K [section] search, -f whatis)
man plain no title

EXIM(8)                                                                EXIM(8)



NAME
       exim - a Mail Transfer Agent

SYNOPSIS
       exim [options] arguments ...
       mailq [options] arguments ...
       rsmtp [options] arguments ...
       rmail [options] arguments ...
       runq [options] arguments ...
       newaliases [options] arguments ...


DESCRIPTION
       Exim is a mail(1,8) transfer agent (MTA) developed at the University of Cam-
       bridge.  It is a large program with very many facilities.  For  a  full
       specification,  see the reference manual. This man(1,5,7) page contains only a
       description of the command line options. It has been automatically gen-
       erated from the reference manual source, which is why the formatting is
       poor in(1,8) some places.


SETTING OPTIONS BY PROGRAM NAME
       mailq     Behave as if(3,n) the option -bp were  present  before  any  other
                 options. The -bp option requests a listing of the contents of
                 the mail(1,8) queue(1,3) on the standard output.

       rsmtp     Behaves as if(3,n) the option -bS were present  before  any  other
                 options, for compatibility with Smail. The -bS option is used
                 for reading in(1,8) a number of messages in(1,8) batched SMTP format.

       rmail     Behave as if(3,n) the -i and -oee options were present before  any
                 other  options,  for compatibility with Smail. The name rmail
                 is used as an interface by some UUCP systems. The  -i  option
                 specifies that a dot on a line by itself does not terminate a
                 non-SMTP message;  -oee  requests  that  errors  detected  in(1,8)
                 non-SMTP messages be reported by emailing the sender.

       runq      Behave  as  if(3,n)  the  option  -q were present before any other
                 options, for compatibility with Smail. The -q option causes a
                 single  queue(1,3)  runner process to be started. It processes the
                 queue(1,3) once, then exits.

       newaliases
                 Behave as if(3,n) the option -bi were  present  before  any  other
                 options, for compatibility with Sendmail. This option is used
                 for rebuilding Sendmail's alias file. Exim does not have  the
                 concept  of a single alias file(1,n), but can be configured to run
                 a specified command if(3,n) called with the -bi option.



OPTIONS
       --        This is a pseudo-option whose only purpose  is  to  terminate
                 the  options  and  therefore to cause subsequent command line
                 items to be treated as arguments rather than options, even if(3,n)
                 they begin with hyphens.

       --help    This  option  causes  Exim  to output a few sentences stating
                 what it is.  The same output is generated if(3,n) the Exim  binary
                 is called with no options and no arguments.

       -B <type> This  is  a Sendmail option for selecting 7 or 8 bit process-
                 ing. Exim is 8-bit clean; it ignores this option.

       -bd       This option runs Exim as a  daemon,  awaiting  incoming  SMTP
                 connections.  Usually  the  -bd  option  is combined with the
                 -q<time(1,2,n)> option, to specify that the daemon should also  ini-
                 tiate periodic queue(1,3) runs.

                 The  -bd  option can be used only by an admin user. If either
                 of the -d (debugging) or -v (verifying) options are set(7,n,1 builtins),  the
                 daemon  does  not  disconnect  from the controlling terminal.
                 When running this way, it can be stopped by pressing  ctrl-C.

                 By  default,  Exim  listens  for  incoming connections to the
                 standard SMTP port on all the host(1,5)'s running interfaces. How-
                 ever,  it  is  possible to listen(1,2,7) on other ports, on multiple
                 ports, and only on specific interfaces.

                 When a listening daemon is started without  the  use  of  -oX
                 (that  is,  without  overriding the normal configuration), it
                 writes its process id to a  file(1,n)  called  exim-daemon.pid  in(1,8)
                 Exim's  spool  directory.  This location can be overridden by
                 setting PID_FILE_PATH in(1,8) Local/Makefile. The file(1,n) is  written
                 while Exim is still running as root.

                 When  -oX  is  used  on the command line to start a listening
                 daemon, the process id is not written to the normal pid  file(1,n)
                 path.  However, -oP can be used to specify a path on the com-
                 mand line if(3,n) a pid file(1,n) is required.

                 The SIGHUP signal(2,7) can be used to cause the daemon to  re-exec
                 itself.  This  should  be  done whenever Exim's configuration
                 file(1,n), or any file(1,n) that is incorporated into it  by  means  of
                 the  ".include" facility, is changed, and also whenever a new
                 version(1,3,5) of Exim is installed. It is not necessary to do  this
                 when  other  files that are referenced from the configuration
                 (for example, alias files) are  changed,  because  these  are
                 reread each time(1,2,n) they are used.

       -bdf      This  option  has the same effect as -bd except that it never
                 disconnects from  the  controlling  terminal,  even  when  no
                 debugging is specified.

       -be       Run  Exim  in(1,8)  expansion testing mode. Exim discards its root
                 privilege, to prevent ordinary users(1,5) from using this mode  to
                 read(2,n,1 builtins) otherwise inaccessible files. If no arguments are given,
                 Exim runs interactively, prompting for  lines  of  data.   If
                 Exim  was  built  with USE_READLINE=yes in(1,8) Local/Makefile, it
                 tries to load(7,n) the "libreadline" library dynamically  whenever
                 the  -be  option  is  used without command line arguments. If
                 successful, it uses the readline() function,  which  provides
                 extensive line-editing facilities, for reading the test data.
                 A line history(1,3,n,1 builtins) is supported.

                 Long expansion expressions can be split(1,n) over several lines by
                 using backslash continuations. As in(1,8) Exim's run time(1,2,n) configu-
                 ration, whitespace at the  start  of  continuation  lines  is
                 ignored.  Each  argument  or  data line is passed through the
                 string(3,n) expansion mechanism, and the result is  output.  Vari-
                 able  values from the configuration file(1,n) (for example, $qual-
                 ify_domain) are available,  but  no  message-specific  values
                 (such  as  $domain) are set(7,n,1 builtins), because no message is being pro-
                 cessed.

       -bF  <filename>
                 This option is the same as -bf except that  it  assumes  that
                 the  filter(1,3x,3x curs_util)  being  tested is a system filter. The additional
                 commands that are available only in(1,8) system filters are recog-
                 nized.

       -bf  <filename>
                 This  option  runs Exim in(1,8) user filter(1,3x,3x curs_util) testing mode; the file(1,n)
                 is the filter(1,3x,3x curs_util) file(1,n) to be tested, and a test message  must  be
                 supplied  on  the  standard  input.  If  there  are  no  mes-
                 sage-dependent tests in(1,8) the filter(1,3x,3x curs_util), an empty file(1,n) can be sup-
                 plied.   If  you  want  to test a system filter(1,3x,3x curs_util) file(1,n), use -bF
                 instead of -bf. You can use both -bF and -bf on the same com-
                 mand,  in(1,8)  order to test a system filter(1,3x,3x curs_util) and a user filter(1,3x,3x curs_util) in(1,8)
                 the same run. For example:

                   exim -bF /system/filter(1,3x,3x curs_util) -bf /user/filter(1,3x,3x curs_util) </test/message

                 This is helpful when the system filter(1,3x,3x curs_util) adds header  lines  or
                 sets filter(1,3x,3x curs_util) variables that are used by the user filter.

                 If  the  test filter(1,3x,3x curs_util) file(1,n) does not begin with one of the spe-
                 cial lines

                   # Exim filter(1,3x,3x curs_util)
                   # Sieve filter(1,3x,3x curs_util)

                 it is taken to be a normal .forward file(1,n), and is  tested  for
                 validity under that interpretation.

                 The  result  of  an  Exim  command that uses -bf, provided no
                 errors are detected, is a list of the actions that Exim would
                 try  to  take  if(3,n)  presented  with the message for real. More
                 details of filter(1,3x,3x curs_util) testing are given in(1,8) the separate  document
                 entitled Exim's interfaces to mail(1,8) filtering.

                 When testing a filter(1,3x,3x curs_util) file(1,n), the envelope sender can be set(7,n,1 builtins) by
                 the -f option, or by a `From ' line at the start of the  test
                 message. Various parameters that would normally be taken from
                 the envelope recipient address of the message can be  set(7,n,1 builtins)  by
                 means  of  additional command line options (see the next four
                 options).

       -bfd  <domain>
                 This sets the domain of the recipient address when  a  filter(1,3x,3x curs_util)
                 file(1,n)  is being tested by means of the -bf option. The default
                 is the value of $qualify_domain.

       -bfl  <local part>
                 This sets the local part of the recipient address when a fil-
                 ter(1,3x,3x curs_util)  file(1,n)  is  being  tested  by means of the -bf option. The
                 default is the username of the process  that  calls  Exim.  A
                 local  part  should  be  specified  with any prefix or suffix
                 stripped, because that is how it appears to the filter(1,3x,3x curs_util) when a
                 message is actually being delivered.

       -bfp  <prefix>
                 This  sets  the  prefix  of  the  local part of the recipient
                 address when a filter(1,3x,3x curs_util) file(1,n) is being tested by  means  of  the
                 -bf option. The default is an empty prefix.

       -bfp  <suffix>
                 This  sets  the  suffix  of  the  local part of the recipient
                 address when a filter(1,3x,3x curs_util) file(1,n) is being tested by  means  of  the
                 -bf option. The default is an empty suffix.

       -bh  <IP address>
                 This  option runs a fake SMTP session as if(3,n) from the given IP
                 address, using the standard input and output. The IP  address
                 may  include a port number at the end, after a full stop. For
                 example:

                   exim -bh 10.9.8.7.1234
                   exim -bh fe80::a00:20ff:fe86:a061.5678

                 When an IPv6 address is given, it is converted into canonical
                 form.  In  the case of the second example above, the value of
                 $sender_host_address after conversion to the  canonical  form
                 is fe80:0000:0000:0a00:20ff:fe86:a061.5678.

                 Comments  as  to what is going on are written to the standard
                 error(8,n) file. These include lines beginning with `LOG' for any-
                 thing that would have been logged.  This facility is provided
                 for testing configuration options for incoming  messages,  to
                 make  sure  they  implement the required policy. For example,
                 you can test your relay controls using -bh.

                 Warning 1: You cannot test features of the configuration that
                 rely  on ident (RFC 1413) callouts. These cannot be done when
                 testing using -bh because there is no incoming  SMTP  connec-
                 tion.

                 Warning  2:  Address  verification  callouts are also skipped
                 when testing using -bh. If you want these callouts to  occur,
                 use -bhc instead.

                 Messages  supplied  during the testing session are discarded,
                 and nothing is written to any of the real  log  files.  There
                 may  be pauses when DNS (and other) lookups are taking place,
                 and of course these may time(1,2,n) out. The -oMi option can be used
                 to specify a specific IP interface and port if(3,n) this is impor-
                 tant.

                 The exim_checkaccess utility is a `packaged' version(1,3,5)  of  -bh
                 whose  output  just  states whether a given recipient address
                 from a given host(1,5) is acceptable or not.

       -bhc  <IP address>
                 This option operates in(1,8) the same  way  as  -bh,  except  that
                 address verification callouts are performed if(3,n) required. This
                 includes consulting and updating the callout cache  database.

       -bi       Sendmail  interprets  the  -bi option as a request to rebuild
                 its alias file.  Exim does not have the concept of  a  single
                 alias  file(1,n),  and so it cannot mimic this behaviour. However,
                 calls to /usr/lib/sendmail(1,8) with the -bi option tend to appear
                 in(1,8) various scripts such as NIS make files, so the option must
                 be recognized.

                 If -bi is encountered, the command specified by the  "bi_com-
                 mand"  configuration  option is run, under the uid and gid of
                 the caller of Exim. If the -oA option is used, its  value  is
                 passed  to  the  command  as an argument.  The command set(7,n,1 builtins) by
                 "bi_command" may not contain arguments. The command  can  use
                 the  exim_dbmbuild  utility,  or some other means, to rebuild
                 alias files if(3,n) this is required. If the  "bi_command"  option
                 is not set(7,n,1 builtins), calling Exim with -bi is a no-op.

       -bm       This  option  runs  an Exim receiving process that accepts an
                 incoming, locally-generated message on the current input. The
                 recipients are given as the command arguments (except when -t
                 is also present  --  see  below).  Each  argument  can  be  a
                 comma-separated  list  of  RFC  2822  addresses.  This is the
                 default option for selecting the overall action  of  an  Exim
                 call;  it  is  assumed  if(3,n)  no  other  conflicting  option is
                 present.

                 If any addresses in(1,8) the  message  are  unqualified  (have  no
                 domain),  they  are  qualified  by  the  values of the "qual-
                 ify_domain" or "qualify_recipient" options,  as  appropriate.
                 The  -bnq  option  (see  below) provides a way of suppressing
                 this for special cases.

                 Policy checks on  the  contents  of  local  messages  can  be
                 enforced  by  means  of the non-SMTP ACL.  The return code is
                 zero if(3,n) the message is successfully accepted. Otherwise,  the
                 action is controlled by the -oex option setting -- see below.

                 The format of the message must be as  defined  in(1,8)  RFC  2822,
                 except  that,  for  compatibility  with Sendmail and Smail, a
                 line in(1,8) one of the forms

                   From sender Fri Jan  5 12:55 GMT 1997
                   From sender Fri, 5 Jan 97 12:55:01

                 (with the weekday optional, and possibly with additional text
                 after  the  date)  is permitted to appear at the start of the
                 message. There appears to be no  authoritative  specification
                 of  the  format  of this line. Exim recognizes it by matching
                 against the regular expression defined by the "uucp_from_pat-
                 tern"  option, which can be changed if(3,n) necessary.  The speci-
                 fied sender is treated as if(3,n) it were given as the argument to
                 the  -f option, but if(3,n) a -f option is also present, its argu-
                 ment is used in(1,8) preference to the address taken from the mes-
                 sage.  The  caller  of  Exim  must  be a trusted user for the
                 sender of a message to be set(7,n,1 builtins) in(1,8) this way.

       -bnq      By  default,   Exim   automatically   qualifies   unqualified
                 addresses  (those  without  domains)  that appear in(1,8) messages
                 that are submitted locally (that is, not over  TCP/IP).  This
                 qualification  applies  both  to  addresses in(1,8) envelopes, and
                 addresses in(1,8) header lines.  Sender  addresses  are  qualified
                 using  "qualify_domain", and recipient addresses using "qual-
                 ify_recipient"  (which  defaults  to  the  value  of   "qual-
                 ify_domain").

                 Sometimes,  qualification  is not wanted. For example, if(3,n) -bS
                 (batch SMTP) is being used to re-submit messages that  origi-
                 nally  came  from  remote  hosts  after content scanning, you
                 probably do not want  to  qualify  unqualified  addresses  in(1,8)
                 header  lines.  (Such  lines will be present only if(3,n) you have
                 not enabled a header syntax check in(1,8) the appropriate ACL.)

                 The -bnq option suppresses all qualification  of  unqualified
                 addresses  in(1,8) messages that originate on the local host. When
                 this is used, unqualified addresses in(1,8) the  envelope  provoke
                 errors  (causing message rejection) and unqualified addresses
                 in(1,8) header lines are left alone.

       -bP       If this option is given with no arguments, it causes the val-
                 ues of all Exim's main configuration options to be written to
                 the standard output. The  values  of  one  or  more  specific
                 options  can be requested by giving their names as arguments,
                 for example:

                   exim -bP qualify_domain hold_domains

                 However, any option setting that  is  preceded  by  the  word
                 `hide' in(1,8) the configuration file(1,n) is not shown in(1,8) full, except
                 to an admin user. For other users(1,5), the output is as  in(1,8)  this
                 example:

                   mysql_servers = <value not displayable>

                 If  "configure_file" is given as an argument, the name of the
                 run time(1,2,n) configuration file(1,n) is output.  If a list of configu-
                 ration  files  was supplied, the value that is output here is
                 the name of the file(1,n) that was actually used.

                 If "log_file_path" or "pid_file_path" are given, the names of
                 the  directories  where  log  files  and daemon pid files are
                 written are output, respectively. If these values are  unset,
                 log  files are written in(1,8) a sub-directory of the spool direc-
                 tory called "log", and the pid file(1,n) is written directly  into
                 the spool directory.

                 If -bP is followed by a name preceded by +, for example,

                   exim -bP +local_domains

                 it  searches  for  a matching named(5,8) list of any type (domain,
                 host(1,5), address, or local part) and outputs what it finds.

                 If one of the words "router", "transport", or "authenticator"
                 is  given,  followed  by  the  name  of an appropriate driver
                 instance, the option settings for that driver are output. For
                 example:

                   exim -bP transport local_delivery

                 The  generic driver options are output first, followed by the
                 driver's private options. A list of the names of drivers of a
                 particular  type  can  be  obtained by using one of the words
                 "router_list", "transport_list", or "authenticator_list", and
                 a complete list of all drivers with their option settings can
                 be obtained by using "routers", "transports", or "authentica-
                 tors".

       -bp       This  option  requests  a listing of the contents of the mail(1,8)
                 queue(1,3) on the standard output. If the -bp option  is  followed
                 by  a list of message ids, just those messages are listed. By
                 default, this option can be used only by an admin user.  How-
                 ever, the "queue_list_requires_admin" option can be set(7,n,1 builtins) false
                 to allow any user to see the queue.

                 Each message on the queue(1,3) is displayed as  in(1,8)  the  following
                 example:

                   25m  2.9K 0t5C6f-0000c8-00 <alice@wonderland.fict.example>
                             red.king@looking-glass.fict.example
                             <other addresses>

                 The  first  line  contains the length of time(1,2,n) the message has
                 been on the queue(1,3) (in(1,8) this case 25 minutes), the size of  the
                 message  (2.9K), the unique local identifier for the message,
                 and the message sender, as contained  in(1,8)  the  envelope.  For
                 bounce  messages, the sender address is empty, and appears as
                 `<>'. If the message was submitted locally  by  an  untrusted
                 user  who  overrode  the  default  sender address, the user's
                 login(1,3,5) name is shown in(1,8) parentheses before the sender address.
                 If  the  message  is  frozen (attempts to deliver it are sus-
                 pended) then the text `*** frozen ***' is  displayed  at  the
                 end of this line.

                 The  recipients  of the message (taken from the envelope, not
                 the  headers)  are  displayed  on  subsequent  lines.   Those
                 addresses to which the message has already been delivered are
                 marked with  the  letter  D.  If  an  original  address  gets(3,n)
                 expanded into several addresses via an alias or forward file(1,n),
                 the original is displayed with a D only when  deliveries  for
                 all of its child addresses are complete.

       -bpa      This  option  operates  like  -bp,  but  in(1,8) addition it shows
                 delivered addresses that were generated from the original top
                 level  address(es)  in(1,8)  each  message  by alias or forwarding
                 operations. These addresses are flagged with `+D' instead  of
                 just `D'.

       -bpc      This  option  counts the number of messages on the queue(1,3), and
                 writes the total to the standard output. It is restricted  to
                 admin users(1,5), unless "queue_list_requires_admin" is set(7,n,1 builtins) false.

       -bpr      This option operates like -bp, but the output is  not  sorted
                 into  chronological  order of message arrival. This can speed
                 it up when there are lots of messages on the  queue(1,3),  and  is
                 particularly  useful  if(3,n)  the output is going to be post-pro-
                 cessed in(1,8) a way that doesn't need the sorting.

       -bpra     This option is a combination of -bpr and -bpa.

       -bpru     This option is a combination of -bpr and -bpu.

       -bpu      This option operates like  -bp  but  shows  only  undelivered
                 top-level  addresses  for  each  message displayed. Addresses
                 generated by aliasing or forwarding are not shown, unless the
                 message  was  deferred  after processing by a router with the
                 "one_time" option set.

       -brt      This option is for testing retry rules, and it must  be  fol-
                 lowed  by up to three arguments. It causes Exim to look(1,8,3 Search::Dict) for a
                 retry rule that matches the values and to  write(1,2)  it  to  the
                 standard output. For example:

                   exim -brt bach.comp.mus.example
                   Retry rule: *.comp.mus.example  F,2h,15m; F,4d,30m;

                 The  first  argument,  which  is  required, can be a complete
                 address in(1,8) the form local_part@domain, or it can  be  just  a
                 domain name. The second argument is an optional second domain
                 name; if(3,n) no retry rule is found for the first  argument,  the
                 second  is  tried.  This  ties  in(1,8) with Exim's behaviour when
                 looking for retry rules for remote hosts --  if(3,n)  no  rule  is
                 found that matches the host(1,5), one that matches the mail(1,8) domain
                 is sought. The final argument  is  the  name  of  a  specific
                 delivery  error(8,n), as used in(1,8) setting up retry rules, for exam-
                 ple `quota_3d'.

       -brw      This option is for testing address rewriting  rules,  and  it
                 must be followed by a single argument, consisting of either a
                 local part without a domain, or a  complete  address  with  a
                 fully  qualified  domain. Exim outputs how this address would
                 be rewritten for each possible place it might appear.

       -bS       This option is used for  batched  SMTP  input,  which  is  an
                 alternative  interface for non-interactive local message sub-
                 mission. A number of messages can be submitted  in(1,8)  a  single
                 run.  However,  despite  its  name,  this  is not really SMTP
                 input. Exim reads each message's envelope from SMTP  commands
                 on  the  standard  input,  but generates no responses. If the
                 caller is trusted,  or  "untrusted_set_sender"  is  set(7,n,1 builtins),  the
                 senders in(1,8) the SMTP MAIL commands are believed; otherwise the
                 sender is always the caller of Exim.

                 The message itself is read(2,n,1 builtins) from the standard input,  in(1,8)  SMTP
                 format  (leading dots doubled), terminated by a line contain-
                 ing just a single dot. An error(8,n) is provoked if(3,n) the  terminat-
                 ing dot is missing. A further message may then follow.

                 As  for  other  local  message  submissions,  the contents of
                 incoming  batch  SMTP  messages  can  be  checked  using  the
                 non-SMTP ACL.  Unqualified addresses are automatically quali-
                 fied  using  "qualify_domain"  and  "qualify_recipient",   as
                 appropriate, unless the -bnq option is used.

                 Some  other  SMTP  commands are recognized in(1,8) the input. HELO
                 and EHLO act as RSET; VRFY, EXPN, ETRN, and HELP act as NOOP;
                 QUIT quits, ignoring the rest of the standard input.

                 If any error(8,n) is encountered, reports are written to the stan-
                 dard output and error(8,n) streams, and Exim gives up immediately.
                 The return code is 0 if(3,n) no error(8,n) was detected; it is 1 if(3,n) one
                 or more messages were accepted before the error(8,n) was detected;
                 otherwise it is 2.


       -bs       This  option  causes  Exim  to accept(2,8) one or more messages by
                 reading SMTP commands on the standard  input,  and  producing
                 SMTP replies on the standard output. SMTP policy controls, as
                 defined in(1,8) ACLs are applied.

                 Some user agents use this  interface  as  a  way  of  passing
                 locally-generated messages to the MTA.  In this usage, if(3,n) the
                 caller of Exim is trusted, or "untrusted_set_sender" is  set(7,n,1 builtins),
                 the  senders  of  messages  are taken from the SMTP MAIL com-
                 mands.  Otherwise the content of these  commands  is  ignored
                 and  the  sender  is  set(7,n,1 builtins) up as the calling user. Unqualified
                 addresses are automatically qualified using  "qualify_domain"
                 and  "qualify_recipient",  as  appropriate,  unless  the -bnq
                 option is used.

                 The -bs option is also used to run Exim  from  inetd,  as  an
                 alternative to using a listening daemon. Exim can distinguish
                 the two cases by checking whether the  standard  input  is  a
                 TCP/IP  socket. When Exim is called from inetd, the source of
                 the mail(1,8) is assumed to be remote, and the comments above con-
                 cerning senders and qualification do not apply. In this situ-
                 ation, Exim behaves in(1,8) exactly the same way as it  does  when
                 receiving a message via the listening daemon.

       -bt       This  option runs Exim in(1,8) address testing mode, in(1,8) which each
                 argument is taken as an address to be tested for deliverabil-
                 ity.  The  results  are  written to the standard output. If a
                 test fails, and the caller is not an admin user,  no  details
                 of the failure are output, because these might contain sensi-
                 tive information such as usernames and passwords for database
                 lookups.

                 If  no  arguments are given, Exim runs in(1,8) an interactive man-
                 ner, prompting with a right angle bracket for addresses to be
                 tested.   Unlike  the -be test option, you cannot arrange for
                 Exim to use the readline() function, because it is running as
                 root and there are security issues.

                 Each  address  is handled as if(3,n) it were the recipient address
                 of a message (compare the -bv option). It is  passed  to  the
                 routers  and  the  result  is written to the standard output.
                 However,  any  router  that  has  "no_address_test"  set(7,n,1 builtins)   is
                 bypassed. This can make -bt easier to use for genuine routing
                 tests if(3,n) your first router passes  everything  to  a  scanner
                 program.

                 The  return code is 2 if(3,n) any address failed outright; it is 1
                 if(3,n) no address failed outright but at least one could  not  be
                 resolved  for  some  reason. Return code 0 is given only when
                 all addresses succeed.

                 Warning: -bt can only do relatively simple testing. If any of
                 the  routers  in(1,8)  the  configuration  makes  any tests on the
                 sender address of a message, you can use the -f option to set(7,n,1 builtins)
                 an appropriate sender when running -bt tests. Without it, the
                 sender is assumed to be the calling user at the default qual-
                 ifying  domain.  However,  if(3,n)  you  have set(7,n,1 builtins) up (for example)
                 routers whose behaviour depends on the contents of an  incom-
                 ing  message, you cannot test those conditions using -bt. The
                 -N option provides a possible way of doing such tests.

       -bV       This option causes Exim to write(1,2) the current version(1,3,5)  number,
                 compilation  number,  and compilation date of the exim binary
                 to the standard output.  It also lists the DBM  library  this
                 is  being used, the optional modules (such as specific lookup
                 types), the drivers that are included in(1,8) the binary, and  the
                 name of the run time(1,2,n) configuration file(1,n) that is in(1,8) use.

                 As  part of its operation, -bV causes Exim to read(2,n,1 builtins) and syntax
                 check its configuration file. However, this is a static check
                 only.  It  cannot  check  values that are to be expanded. For
                 example, although a misspelt ACL verb is detected,  an  error(8,n)
                 in(1,8)  the verb's arguments is not. You cannot rely on -bV alone
                 to discover(1,3,5) (for example) all the typos in(1,8) the configuration;
                 some realistic testing is needed. The -bh and -N options pro-
                 vide more dynamic testing facilities.

       -bv       This option runs Exim in(1,8) address verification mode, in(1,8)  which
                 each  argument  is taken as an address to be verified. During
                 normal operation, verification happens  mostly  as  a  conse-
                 quence processing a "verify(1,8)" condition in(1,8) an ACL. If you want
                 to test an entire ACL, see the -bh option.

                 If verification fails, and the caller is not an  admin  user,
                 no  details  of  the  failure are output, because these might
                 contain sensitive information such as usernames and passwords
                 for database lookups.

                 If  no  arguments are given, Exim runs in(1,8) an interactive man-
                 ner, prompting with a right angle bracket for addresses to be
                 verified.  Unlike the -be test option, you cannot arrange for
                 Exim to use the readline() function, because it is running as
                 exim and there are security issues.

                 Verification differs from address testing (the -bt option) in(1,8)
                 that routers that have "no_verify" set(7,n,1 builtins) are  skipped,  and  if(3,n)
                 the  address  is  accepted by a router that has "fail_verify"
                 set(7,n,1 builtins), verification fails. The address is verified as a recipi-
                 ent  if(3,n)  -bv  is  used;  to  test  verification  for a sender
                 address, -bvs should be used.

                 If the -v option is not set(7,n,1 builtins), the output consists of a  single
                 line  for  each  address,  stating whether it was verified or
                 not, and giving a reason in(1,8) the latter case. Otherwise,  more
                 details are given of how the address has been handled, and in(1,8)
                 the case of address redirection, all the generated  addresses
                 are  also  considered.  Without  -v, generating more than one
                 address by redirection causes  verification  to  end  sucess-
                 fully.

                 The  return code is 2 if(3,n) any address failed outright; it is 1
                 if(3,n) no address failed outright but at least one could  not  be
                 resolved  for  some  reason. Return code 0 is given only when
                 all addresses succeed.

                 If any of the routers in(1,8) the configuration makes any tests on
                 the sender address of a message, you should use the -f option
                 to set(7,n,1 builtins) an appropriate sender when running -bv tests.  Without
                 it,  the  sender  is  assumed  to  be the calling user at the
                 default qualifying domain.

       -bvs      This option acts like -bv, but  verifies  the  address  as  a
                 sender  rather  than  a  recipient  address. This affects any
                 rewriting and qualification that might happen.

       -C  <filelist>
                 This option causes Exim to find the  run  time(1,2,n)  configuration
                 file(1,n)  from  the given list instead of from the list specified
                 by the CONFIGURE_FILE compile-time setting. Usually, the list
                 will  consist  of  just  a  single file(1,n) name, but it can be a
                 colon-separated list of names. In this case, the  first  file(1,n)
                 that  exists  is used. Failure to open(2,3,n) an existing file(1,n) stops
                 Exim from proceeding any further along the list, and an error(8,n)
                 is generated.

                 When  this  option is used by a caller other than root or the
                 Exim user, and the list is  different  from  the  compiled-in
                 list,  Exim gives up its root privilege immediately, and runs
                 with the real and effective uid and gid set(7,n,1 builtins) to those  of  the
                 caller.   However,  if(3,n)  ALT_CONFIG_ROOT_ONLY  is  defined  in(1,8)
                 Local/Makefile, root privilege is retained for -C only if(3,n) the
                 caller  of Exim is root.  That is, the Exim user is no longer
                 privileged in(1,8) this regard. This build-time option is not  set(7,n,1 builtins)
                 by  default  in(1,8) the Exim source distribution tarbundle.  How-
                 ever, if(3,n) you are using a `packaged' version(1,3,5) of  Exim  (source
                 or binary), the packagers might have enabled it.

                 Setting  ALT_CONFIG_ROOT_ONLY  locks  out  the possibility of
                 testing a configuration using -C right through message recep-
                 tion  and delivery, even if(3,n) the caller is root. The reception
                 works, but by that time(1,2,n), Exim is running as the Exim user, so
                 when  it  re-execs  to regain privilege for the delivery, the
                 use of -C causes privilege to be lost. However, root can test
                 reception  and  delivery  using two separate commands (one to
                 put a message on the queue(1,3), using -odq, and another to do the
                 delivery, using -M).

                 If  ALT_CONFIG_PREFIX is defined in(1,8) Local/Makefile, it speci-
                 fies a prefix string(3,n) with which any file(1,n) named(5,8) in(1,8) a  -C  com-
                 mand  line option must start. In addition, the file(1,n) name must
                 not contain the sequence /../.  However, if(3,n) the value of  the
                 -C  option  is  identical  to  the value of CONFIGURE_FILE in(1,8)
                 Local/Makefile, Exim ignores -C and proceeds as usual.  There
                 is  no  default  setting  for  ALT_CONFIG_PREFIX;  when it is
                 unset, any file(1,n) name can be used with -C.

                 ALT_CONFIG_PREFIX can be used to confine alternative configu-
                 ration  files  to  a directory to which only root has access.
                 This prevents someone who has broken into  the  Exim  account
                 from  running  a privileged Exim with an arbitrary configura-
                 tion file.

                 The -C facility is useful  for  ensuring  that  configuration
                 files  are syntactically correct, but cannot be used for test
                 deliveries, unless the caller is privileged, or unless it  is
                 an  exotic  configuration that does not require privilege. No
                 check is made on the owner or group of the files specified by
                 this option.

       -D <macro>=<value>
                 This  option can be used to override macro definitions in(1,8) the
                 configuration file. However, like -C, if(3,n) it  is  used  by  an
                 unprivileged caller, it causes Exim to give up its root priv-
                 ilege.  If DISABLE_D_OPTION is defined in(1,8) Local/Makefile, the
                 use of -D is completely disabled, and its use causes an imme-
                 diate error(8,n) exit.

                 The entire option (including equals sign if(3,n) present) must all
                 be  within  one  command line item. -D can be used to set(7,n,1 builtins) the
                 value of a macro to the  empty  string(3,n),  in(1,8)  which  case  the
                 equals sign is optional. These two commands are synonymous:

                   exim -DABC  ...
                   exim -DABC= ...

                 To  include spaces in(1,8) a macro definition item, quotes must be
                 used. If you use quotes,  spaces  are  permitted  around  the
                 macro name and the equals sign. For example:

                   exim '-D ABC = something' ...

                 -D may be repeated up to 10 times on a command line.

       -d <debug options>
                 This option causes debugging information to be written to the
                 standard error(8,n)  stream.  It  is  restricted  to  admin  users(1,5)
                 because  debugging output may show database queries that con-
                 tain password information. Also, the details of users(1,5)' filter(1,3x,3x curs_util)
                 files should be protected. When -d is used, -v is assumed. If
                 -d is given on its own, a lot of standard debugging  data  is
                 output.  This  can  be  reduced, or increased to include some
                 more rarely needed information, by following -d with a string(3,n)
                 made  up of names preceded by plus or minus characters. These
                 add or remove sets of debugging data, respectively. For exam-
                 ple,  -d+filter(1,3x,3x curs_util)  adds filter(1,3x,3x curs_util) debugging, whereas -d-all+filter(1,3x,3x curs_util)
                 selects only filter(1,3x,3x curs_util) debugging. The available debugging  cate-
                 gories are:

                   acl            ACL interpretation
                   auth           authenticators
                   deliver        general delivery logic
                   dns            DNS lookups (see also resolver(3,5))
                   dnsbl          DNS black list (aka RBL) code
                   exec(3,n,1 builtins)           arguments for "execv()" calls
                   expand         detailed debugging for string(3,n) expansions
                   filter(1,3x,3x curs_util)         filter(1,3x,3x curs_util) handling
                   hints_lookup   hints data lookups
                   host_lookup    all types of name-to-IP address handling
                   ident          ident lookup
                   interface      lists of local interfaces
                   lists          matching things in(1,8) lists
                   load(7,n)           system load(7,n) checks
                   local_scan     can be used by local_scan()
                   lookup         general lookup code and all lookups
                   memory         memory handling
                   pid            add pid to debug output lines
                   process_info   setting info(1,5,n) for the process log
                   queue_run      queue(1,3) runs
                   receive        general message reception logic
                   resolver(3,5)       turn on the DNS resolver(3,5)'s debugging output
                   retry          retry handling
                   rewrite        address rewriting
                   route          address routing
                   timestamp      add timestamp to debug output lines
                   tls            TLS logic
                   transport      transports
                   uid            changes of uid/gid and looking up uid/gid
                   verify(1,8)         address verification logic

                   all            all of the above, and also -v

                 The  resolver(3,5) option produces output only if(3,n) the DNS resolver(3,5)
                 was compiled with DEBUG enabled. This is not the case in(1,8) some
                 operating systems. Also, unfortunately, debugging output from
                 the DNS resolver(3,5) is written to stdout rather than stderr.

                 The default (-d  with  no  argument)  omits  expand,  filter(1,3x,3x curs_util),
                 interface,  load(7,n), memory, pid, resolver(3,5), and timestamp.  How-
                 ever, the pid selector is forced when debugging is turned  on
                 for  a  daemon,  which  then  passes it on to any re-executed
                 Exims. Exim also automatically adds the pid  to  debug  lines
                 when several remote deliveries are run in(1,8) parallel.

                 The timestamp selector causes the current time(1,2,n) to be inserted
                 at the start of all debug output lines. This  can  be  useful
                 when trying to track down delays in(1,8) processing.

                 If the "debug_print" option is set(7,n,1 builtins) in(1,8) any driver, it produces
                 output whenever any debugging is selected, or if(3,n) -v is  used.

       -dd <debug options>
                 This  option  behaves  exactly  like -d except when used on a
                 command that starts a daemon process. In that case, debugging
                 is  turned  off for the subprocesses that the daemon creates.
                 Thus, it is useful for monitoring the behaviour of the daemon
                 without creating as much output as full debugging does.

       -dropcr   This  is  an  obsolete option that is now a no-op. It used to
                 affect the way Exim handled CR and LF characters in(1,8)  incoming
                 messages.

       -E        This   option   specifies  that  an  incoming  message  is  a
                 locally-generated delivery failure report. It is used  inter-
                 nally  by  Exim  when  handling  delivery failures and is not
                 intended for external use. Its only effect is  to  stop  Exim
                 generating  certain  messages to the postmaster, as otherwise
                 message cascades could occur in(1,8) some situations. As  part  of
                 the  same  option, a message id may follow the characters -E.
                 If it does, the log entry for the receipt of the new  message
                 contains the id, following `R=', as a cross-reference.

       -ex       There  are  a  number  of  Sendmail options starting with -oe
                 which seem to be called by various programs without the lead-
                 ing  "o"  in(1,8)  the option. For example, the "vacation" program
                 uses -eq. Exim treats all options of the form -ex as  synony-
                 mous with the corresponding -oex options.

       -F  <string(3,n)>
                 This  option  sets  the  sender's  full  name  for use when a
                 locally-generated message is being accepted. In  the  absence
                 of this option, the user's gecos entry from the password data
                 is used. As users(1,5) are  generally  permitted  to  alter  their
                 gecos entries, no security considerations are involved. White
                 space between -F and the <string(3,n)> is optional.

       -f  <address>
                 This option sets the address of  the  envelope  sender  of  a
                 locally-generated  message  (also  known as the return path).
                 The option can normally be used only by a trusted  user,  but
                 "untrusted_set_sender" can be set(7,n,1 builtins) to allow untrusted users(1,5) to
                 use it.  Processes running as  root  or  the  Exim  user  are
                 always  trusted.  Other  trusted  users(1,5)  are  defined  by the
                 "trusted_users" or "trusted_groups" options.

                 In the absence of -f, or if(3,n) the caller is  not  trusted,  the
                 sender  of  a local message is set(7,n,1 builtins) to the caller's login(1,3,5) name
                 at the default qualify domain.

                 There is one exception to the restriction on the use  of  -f:
                 an empty sender can be specified by any user, trusted or not,
                 to create a message that can never provoke a bounce. An empty
                 sender  can  be  specified either as an empty string(3,n), or as a
                 pair of angle brackets with nothing between them, as in(1,8) these
                 examples of shell commands:

                   exim -f '<>' user@domain
                   exim -f "" user@domain

                 In  addition,  the use of -f is not restricted when testing a
                 filter(1,3x,3x curs_util) file(1,n) with -bf or when testing or  verifying  addresses
                 using the -bt or -bv options.

                 Allowing  untrusted  users(1,5)  to change the sender address does
                 not of itself make it possible to send(2,n) anonymous  mail.  Exim
                 still  checks that the From: header refers to the local user,
                 and if(3,n) it does not, it adds a Sender: header, though this can
                 be overridden by setting "no_local_from_check".

                 White  space  between  -f and the <address> is optional (that
                 is, they can be given as two arguments or one combined  argu-
                 ment).  The sender of a locally-generated message can also be
                 set(7,n,1 builtins) (when permitted) by an initial `From ' line in(1,8)  the  mes-
                 sage -- see the description of -bm above -- but if(3,n) -f is also
                 present, it overrides `From'.

       -G        This is a Sendmail option which is ignored by Exim.

       -h  <number>
                 This option is accepted for compatibility with Sendmail,  but
                 has  no  effect.  (In  Sendmail  it overrides the `hop count'
                 obtained by counting Received: headers.)

       -i        This option, which has the same effect as -oi, specifies that
                 a  dot  on a line by itself should not terminate an incoming,
                 non-SMTP message. I can find no documentation for this option
                 in(1,8) Solaris 2.4 Sendmail, but the mailx command in(1,8) Solaris 2.4
                 uses it. See also -ti.

       -M  <message id> <message id> ...
                 This option requests Exim to run a delivery attempt  on  each
                 message  in(1,8) turn. If any of the messages are frozen, they are
                 automatically thawed before the delivery  attempt.  The  set-
                 tings    of    "queue_domains",   "queue_smtp_domains",   and
                 "hold_domains" are ignored.   Retry  hints  for  any  of  the
                 addresses are overridden -- Exim tries to deliver even if(3,n) the
                 normal retry time(1,2,n) has  not  yet  been  reached.  This  option
                 requires the caller to be an admin user. However, there is an
                 option called "prod_requires_admin" which can be set(7,n,1 builtins) false to
                 relax this restriction (and also the same requirement for the
                 -q, -R, and -S options).

       -Mar  <message id> <address> <address> ...
                 This option requests Exim to add the addresses to the list of
                 recipients  of  the  message (`ar' for `add recipients'). The
                 first argument must be a message id, and the  remaining  ones
                 must  be  email  addresses. However, if(3,n) the message is active
                 (in(1,8) the middle of a delivery attempt),  it  is  not  altered.
                 This option can be used only by an admin user.

       -MC  <transport> <hostname> <sequence number> <message id>
                 This  option  is not intended for use by external callers. It
                 is used internally by Exim  to  invoke  another  instance  of
                 itself  to  deliver  a waiting message using an existing SMTP
                 connection, which is passed as the standard input. This  must
                 be  the final option, and the caller must be root or the Exim
                 user in(1,8) order to use it.

       -MCA      This option is not intended for use by external  callers.  It
                 is  used  internally  by  Exim  in(1,8)  conjunction  with the -MC
                 option. It signifies that the connection to the  remote  host(1,5)
                 has been authenticated.

       -MCP      This  option  is not intended for use by external callers. It
                 is used internally  by  Exim  in(1,8)  conjunction  with  the  -MC
                 option.  It  signifies  that the server to which Exim is con-
                 nected supports pipelining.

       -MCQ  <process id> <pipe(2,8) fd>
                 This option is not intended for use by external  callers.  It
                 is used internally by Exim in(1,8) conjunction with the -MC option
                 when the original delivery was started by a queue(1,3) runner.  It
                 passes  on  the process id of the queue(1,3) runner, together with
                 the file(1,n) descriptor number of an open(2,3,n) pipe.  Closure  of  the
                 pipe(2,8)  signals  the  final  completion of the sequence of pro-
                 cesses that are passing messages through the same  SMTP  con-
                 nection.

       -MCS      This  option  is not intended for use by external callers. It
                 is used internally  by  Exim  in(1,8)  conjunction  with  the  -MC
                 option,  and  passes  on  the  fact that the SMTP SIZE option
                 should be used on messages delivered down the  existing  con-
                 nection.

       -MCT      This  option  is not intended for use by external callers. It
                 is used internally  by  Exim  in(1,8)  conjunction  with  the  -MC
                 option, and passes on the fact that the host(1,5) to which Exim is
                 connected supports TLS encryption.

       -Mc  <message id> <message id> ...
                 This option requests Exim to run a delivery attempt  on  each
                 message  in(1,8) turn, but unlike the -M option, it does check for
                 retry hints, and respects any that are found. This option  is
                 not  very  useful  to external callers. It is provided mainly
                 for internal use by Exim when it needs to re-invoke itself in(1,8)
                 order  to regain root privilege for a delivery.  However, -Mc
                 can be useful when testing, in(1,8) order to run a  delivery  that
                 respects retry times and other options such as "hold_domains"
                 that are overridden when -M is used. Such a delivery does not
                 count as a queue(1,3) run.  If you want to run a specific delivery
                 as if(3,n) in(1,8) a queue(1,3) run, you should use -q  with  a  message  id
                 argument.  A  distinction  between  queue(1,3)  run deliveries and
                 other deliveries is made in(1,8) one or two places.

       -Mes  <message id> <address>
                 This option requests Exim to change the sender address in(1,8) the
                 message to the given address, which must be a fully qualified
                 address or `<>' (`es'  for  `edit  sender').  There  must  be
                 exactly  two  arguments. The first argument must be a message
                 id, and the second one an email address. However, if(3,n) the mes-
                 sage  is  active  (in(1,8)  the middle of a delivery attempt), its
                 status is not altered. This option can be  used  only  by  an
                 admin user.

       -Mf  <message id> <message id> ...
                 This  option  requests  Exim  to  mark each listed message as
                 `frozen'. This prevents any delivery  attempts  taking  place
                 until the message is `thawed', either manually or as a result
                 of the "auto_thaw" configuration option.  However, if(3,n) any  of
                 the  messages  are  active  (in(1,8)  the  middle  of  a  delivery
                 attempt), their status is not altered.  This  option  can  be
                 used only by an admin user.

       -Mg  <message id> <message id> ...
                 This  option  requests  Exim to give up trying to deliver the
                 listed messages, including any that are frozen.  However,  if(3,n)
                 any  of the messages are active, their status is not altered.
                 For non-bounce messages, a delivery error(8,n) message is sent  to
                 the sender, containing the text `cancelled by administrator'.
                 Bounce messages are just discarded.  This option can be  used
                 only by an admin user.

       -Mmad  <message id> <message id> ...
                 This option requests Exim to mark all the recipient addresses
                 in(1,8) the messages as already delivered  (`mad'  for  `mark  all
                 delivered'). However, if(3,n) any message is active (in(1,8) the middle
                 of a delivery attempt), its  status  is  not  altered.   This
                 option can be used only by an admin user.

       -Mmd  <message id> <address> <address> ...
                 This  option  requests  Exim  to  mark the given addresses as
                 already delivered (`md'  for  `mark  delivered').  The  first
                 argument must be a message id, and the remaining ones must be
                 email addresses. These are matched to recipient addresses  in(1,8)
                 the  message  in(1,8)  a  case-sensitive manner. If the message is
                 active (in(1,8) the middle of a delivery attempt), its  status  is
                 not altered. This option can be used only by an admin user.

       -Mrm  <message id> <message id> ...
                 This  option  requests Exim to remove the given messages from
                 the queue. No bounce messages are sent; each message is  sim-
                 ply  forgotten.  However,  if(3,n) any of the messages are active,
                 their status is not altered. This option can be used only  by
                 an  admin  user or by the user who originally caused the mes-
                 sage to be placed on the queue.

       -Mt  <message id> <message id> ...
                 This option requests Exim to `thaw' any of  the  listed  mes-
                 sages  that  are  `frozen',  so  that  delivery  attempts can
                 resume. However, if(3,n) any of the  messages  are  active,  their
                 status  is  not  altered.  This option can be used only by an
                 admin user.

       -Mvb  <message id>
                 This option causes the contents  of  the  message  body  (-D)
                 spool  file(1,n) to be written to the standard output. This option
                 can be used only by an admin user.

       -Mvh  <message id>
                 This option causes the contents of the message  headers  (-H)
                 spool  file(1,n) to be written to the standard output. This option
                 can be used only by an admin user.

       -Mvl  <message id>
                 This option causes the contents of the message log spool file(1,n)
                 to be written to the standard output. This option can be used
                 only by an admin user.

       -m        This is apparently a synonym for  -om  that  is  accepted  by
                 Sendmail, so Exim treats it that way too.

       -N        This  is  a debugging option that inhibits delivery of a mes-
                 sage at the transport level. It implies -v. Exim goes through
                 many  of  the motions of delivery -- it just doesn't actually
                 transport the message, but instead behaves as if(3,n) it had  suc-
                 cessfully  done  so. However, it does not make any updates to
                 the retry database, and the log entries  for  deliveries  are
                 flagged with `*>' rather than `=>'.

                 Because  -N  discards  any  message to which it applies, only
                 root or the Exim user are allowed to use it with -bd, -q,  -R
                 or  -M. In other words, an ordinary user can use it only when
                 supplying  an  incoming  message  to  which  it  will  apply.
                 Although  transportation  never  fails  when  -N  is  set(7,n,1 builtins), an
                 address may be deferred because of a configuration problem on
                 a  transport, or a routing problem. Once -N has been used for
                 a delivery attempt, it sticks to the message, and applies  to
                 any  subsequent  delivery  attempts  that may happen for that
                 message.

       -n        This option is interpreted by Sendmail to mean `no aliasing'.
                 It is ignored by Exim.

       -O  <data>
                 This  option is interpreted by Sendmail to mean `set(7,n,1 builtins) option`.
                 It is ignored by Exim.

       -oA  <file(1,n) name>
                 This option is used by Sendmail in(1,8) conjunction  with  -bi  to
                 specify an alternative alias file(1,n) name. Exim handles -bi dif-
                 ferently; see the description above.

       -oB  <n>  This is a debugging option which limits the maximum number of
                 messages  that  can  be  delivered  down one SMTP connection,
                 overriding the value set(7,n,1 builtins) in(1,8) any "smtp" transport. If  <n>  is
                 omitted, the limit is set(7,n,1 builtins) to 1.

       -odb      This option applies to all modes in(1,8) which Exim accepts incom-
                 ing messages, including the  listening  daemon.  It  requests
                 `background'  delivery of such messages, which means that the
                 accepting process automatically starts a delivery process for
                 each  message  received,  but  does not wait for the delivery
                 processes  to  finish.   When  all  the  messages  have  been
                 received,  the  reception process exits, leaving the delivery
                 processes to finish in(1,8) their own time.  The  standard  output
                 and  error(8,n)  streams  are closed at the start of each delivery
                 process.  This is the default  action  if(3,n)  none  of  the  -od
                 options are present.

                 If  one  of  the  queueing  options in(1,8) the configuration file(1,n)
                 ("queue_only"  or  "queue_only_file",  for  example)  is   in(1,8)
                 effect,  -odb  overrides  it  if(3,n) "queue_only_override" is set(7,n,1 builtins)
                 true, which is the default setting. If  "queue_only_override"
                 is set(7,n,1 builtins) false, -odb has no effect.

       -odf      This option requests `foreground' (synchronous) delivery when
                 Exim has accepted a locally-generated message. (For the  dae-
                 mon  it  is  exactly the same as -odb.) A delivery process is
                 automatically started to deliver the message, and Exim  waits
                 for  it  to  complete  before  proceeding.  The original Exim
                 reception process does not finish until the delivery  process
                 for the final message has ended. The standard error(8,n) stream is
                 left open(2,3,n) during deliveries.  However, like -odb, this option
                 has  no  effect  if(3,n) "queue_only_override" is false and one of
                 the queueing options in(1,8) the configuration file(1,n) is in(1,8)  effect.

                 If  there  is  a  temporary  delivery error(8,n) during foreground
                 delivery, the message is left on the queue(1,3) for  later  deliv-
                 ery, and the original reception process exists.

       -odi      This  option is synonymous with -odf. It is provided for com-
                 patibility with Sendmail.

       -odq      This option applies to all modes in(1,8) which Exim accepts incom-
                 ing  messages,  including  the listening daemon. It specifies
                 that the accepting process should not automatically  start  a
                 delivery  process  for  each  message  received. Messages are
                 placed on the queue(1,3), and  remain  there  until  a  subsequent
                 queue(1,3) runner process encounters them.  There are several con-
                 figuration options (such as "queue_only") that can be used to
                 queue(1,3) incoming messages under certain conditions. This option
                 overrides all of them and also -odqs. It always forces queue-
                 ing.

       -odqs     This option is a hybrid between -odb/-odi and -odq.  However,
                 like  -odb  and  -odi,  this  option   has   no   effect   if(3,n)
                 "queue_only_override"  is  false  and  one  of  the  queueing
                 options in(1,8) the configuration file(1,n) is in(1,8) effect.

                 When -odqs does operate, a delivery process  is  started  for
                 each  incoming  message, in(1,8) the background by default, but in(1,8)
                 the foreground  if(3,n)  -odi  is  also  present.   The  recipient
                 addresses  are  routed,  and local deliveries are done in(1,8) the
                 normal way. However, if(3,n) any  SMTP  deliveries  are  required,
                 they are not done at this time(1,2,n), so the message remains on the
                 queue(1,3) until a subsequent queue(1,3) runner process encounters  it.
                 Because routing was done, Exim knows which messages are wait-
                 ing for which hosts, and so a number of messages for the same
                 host(1,5)   can   be   sent  in(1,8)  a  single  SMTP  connection.  The
                 "queue_smtp_domains" configuration option has the same effect
                 for specific domains. See also the -qq option.

       -oee      If  an  error(8,n)  is  detected while a non-SMTP message is being
                 received (for example, a malformed  address),  the  error(8,n)  is
                 reported  to  the  sender  in(1,8)  a mail(1,8) message.  Provided this
                 error(8,n)  message  is  successfully  sent,  the  Exim  receiving
                 process  exits with a return code of zero. If not, the return
                 code is 2 if(3,n) the problem is that the original message has  no
                 recipients,  or  1  any other error. This is the default -oex
                 option if(3,n) Exim is called as rmail.

       -oem      This is the same as -oee, except that Exim always exits  with
                 a  non-zero return code, whether or not the error(8,n) message was
                 successfully sent.  This is the default -oex  option,  unless
                 Exim is called as rmail.

       -oep      If  an  error(8,n)  is  detected while a non-SMTP message is being
                 received, the error(8,n) is reported by writing a message  to  the
                 standard  error(8,n)  file(1,n) (stderr).  The return code is 1 for all
                 errors.

       -oeq      This option is supported for compatibility with Sendmail, but
                 has the same effect as -oep.

       -oew      This option is supported for compatibility with Sendmail, but
                 has the same effect as -oem.

       -oi       This option, which has the same effect as -i, specifies  that
                 a  dot  on a line by itself should not terminate an incoming,
                 non-SMTP message.  Otherwise, a single  dot  does  terminate,
                 though  Exim  does no special processing for other lines that
                 start with a dot.  This option is set(7,n,1 builtins) by default if(3,n)  Exim  is
                 called as rmail. See also -ti.

       -oitrue   This option is treated as synonymous with -oi.

       -oMa  <host(1,5) address>
                 A number of options starting with -oM can be used to set(7,n,1 builtins) val-
                 ues associated with remote hosts  on  locally-submitted  mes-
                 sages  (that  is,  messages  not received over TCP/IP). These
                 options can be used by any caller  in(1,8)  conjunction  with  the
                 -bh,  -be,  -bf,  -bF,  -bt, or -bv testing options. In other
                 circumstances, they are ignored unless the caller is trusted.

                 The  -oMa  option  sets  the  sender  host(1,5)  address. This may
                 include a port number at the end, after a full stop (period).
                 For example:

                   exim -bs -oMa 10.9.8.7.1234

                 An  alternative syntax is to enclose the IP address in(1,8) square
                 brackets, followed by a colon and the port number:

                   exim -bs -oMa [10.9.8.7]:1234

                 The IP address is placed in(1,8)  the  $sender_host_address  vari-
                 able, and the port, if(3,n) present, in(1,8) $sender_host_port.

       -oMaa  <name>
                 See -oMa above for general remarks about the -oM options. The
                 -oMaa option sets  the  value  of  $sender_host_authenticated
                 (the authenticator name).

       -oMai  <string(3,n)>
                 See -oMa above for general remarks about the -oM options. The
                 -oMai option sets the value of $authenticated_id (the id that
                 was  authenticated).   This  overrides the default value (the
                 caller's login(1,3,5) id) for messages from local sources.

       -oMas  <address>
                 See -oMa above for general remarks about the -oM options. The
                 -oMas  option sets the authenticated sender value in(1,8) $authen-
                 ticated_sender.  It overrides the sender address that is cre-
                 ated  from  the  caller's  login(1,3,5)  id  for messages from local
                 sources.

       -oMi  <interface address>
                 See -oMa above for general remarks about the -oM options. The
                 -oMi  option sets the IP interface address value. A port num-
                 ber may be included, using the same syntax as for -oMa.   The
                 interface  address  is  placed  in(1,8) $interface_address and the
                 port number, if(3,n) present, in(1,8) $interface_port.

       -oMr  <protocol name>
                 See -oMa above for general remarks about the -oM options. The
                 -oMr  option  sets the received protocol value that is stored
                 in(1,8) $received_protocol. However, this applies only when -bs is
                 not  used.  For interactive SMTP input (-bs), the protocol is
                 always `local-' followed by one of the standard SMTP protocol
                 names.  For -bS (batch SMTP) however, the protocol can be set(7,n,1 builtins)
                 by -oMr.

       -oMs  <host(1,5) name>
                 See -oMa above for general remarks about the -oM options. The
                 -oMs  option  sets the sender host(1,5) name in(1,8) $sender_host_name.
                 When this option is present, Exim does not attempt to look(1,8,3 Search::Dict) up
                 a host(1,5) name from an IP address; it uses the name it is given.

       -oMt  <ident string(3,n)>
                 See -oMa above for general remarks about the -oM options. The
                 -oMt  option  sets  the  sender ident value in(1,8) $sender_ident.
                 The default setting for local callers is the login(1,3,5) id of  the
                 calling process.

       -om       In  Sendmail, this option means `me too', indicating that the
                 sender of a message should receive a copy of the  message  if(3,n)
                 the  sender  appears  in(1,8) an alias expansion. Exim always does
                 this, so the option does nothing.

       -oo       This option is ignored. In Sendmail it specifies  `old  style
                 headers', whatever that means.

       -oP  <path>
                 This option is useful only in(1,8) conjunction with -bd or -q with
                 a time(1,2,n) value. The option specifies  the  file(1,n)  to  which  the
                 process  id  of  the daemon is written. When -oX is used with
                 -bd, or when -q with a time(1,2,n) is used without -bd, this is  the
                 only  way  of  causing  Exim  to write(1,2) a pid file(1,n), because in(1,8)
                 those cases, the normal pid file(1,n) is not used.

       -or  <time(1,2,n)>
                 This option sets a timeout(1,3x,3x cbreak) value for incoming  non-SMTP  mes-
                 sages. If it is not set(7,n,1 builtins), Exim will wait forever for the stan-
                 dard input. The value can also be set(7,n,1 builtins) by  the  "receive_time-
                 out" option.

       -os  <time(1,2,n)>
                 This  option sets a timeout(1,3x,3x cbreak) value for incoming SMTP messages.
                 The timeout(1,3x,3x cbreak) applies to each SMTP command and block  of  data.
                 The  value  can  also  be  set(7,n,1 builtins)  by the "smtp_receive_timeout"
                 option; it defaults to 5 minutes.

       -ov       This option has exactly the same effect as -v.

       -oX  <number or string(3,n)>
                 This option is relevant only when the  -bd  (start  listening
                 daemon)  option  is  also  given. It controls which ports and
                 interfaces the daemon uses. When -oX is used to start a  dae-
                 mon,  no  pid  file(1,n)  is written unless -oP is also present to
                 specify a pid file(1,n) name.

       -pd       This option applies when  an  embedded  Perl  interpreter  is
                 linked   with   Exim.   It   overrides  the  setting  of  the
                 "perl_at_start" option, forcing the starting  of  the  inter-
                 preter to be delayed until it is needed.

       -ps       This  option  applies  when  an  embedded Perl interpreter is
                 linked  with  Exim.  It  overrides   the   setting   of   the
                 "perl_at_start"  option,  forcing  the starting of the inter-
                 preter to occur as soon as Exim is started.

       -p<rval>:<sval>
                 For compatibility with Sendmail, this option is equivalent to

                   -oMr <rval> -oMs <sval>

                 It  sets  the  incoming  protocol  and host(1,5) name (for trusted
                 callers). The host(1,5) name and its colon  can  be  omitted  when
                 only  the  protocol  is to be set.  Note the Exim already has
                 two private options, -pd and  -ps,  that  refer  to  embedded
                 Perl. It is therefore impossible to set(7,n,1 builtins) a protocol value of p
                 or s using this option (but that does not seem a real limita-
                 tion).

       -q        This  option  is normally restricted to admin users. However,
                 there is a configuration option called  "prod_requires_admin"
                 which  can  be  set(7,n,1 builtins) false to relax this restriction (and also
                 the same requirement for the -M, -R, and -S options).

                 The -q option starts one queue(1,3) runner process. This scans the
                 queue(1,3)  of  waiting  messages, and runs a delivery process for
                 each one in(1,8) turn. It waits for each delivery process to  fin-
                 ish  before starting the next one. A delivery process may not
                 actually do  any  deliveries  if(3,n)  the  retry  times  for  the
                 addresses  have  not been reached. Use -qf (see below) if(3,n) you
                 want to override this.  If the delivery process spawns  other
                 processes  to deliver other messages down passed SMTP connec-
                 tions, the queue(1,3) runner waits for these to finish before pro-
                 ceeding.

                 When all the queued messages have been considered, the origi-
                 nal queue(1,3) runner process terminates. In other words, a single
                 pass  is  made  over the waiting mail(1,8), one message at a time.
                 Use -q with a time(1,2,n)  (see  below)  if(3,n)  you  want  this  to  be
                 repeated periodically.

                 Exim  processes  the  waiting  messages  in(1,8)  an unpredictable
                 order. It isn't very random(3,4,6), but it is likely to be different
                 each time(1,2,n), which is all that matters.  If one particular mes-
                 sage screws up a remote MTA, other messages to the  same  MTA
                 have a chance of getting through if(3,n) they get tried first.

                 It is possible to cause the messages to be processed in(1,8) lexi-
                 cal message id order, which is essentially the order in(1,8) which
                 they arrived, by setting the "queue_run_in_order" option, but
                 this is not recommended for normal use.

       -q <qflags>
                 The -q option may be followed by one  or  more  flag  letters
                 that change its behaviour. They are all optional, but if(3,n) more
                 than one is present, they must appear in(1,8) the  correct  order.
                 Each flag is described in(1,8) a separate item below.

       -qq...    An  option  starting with -qq requests a two-stage queue(1,3) run.
                 In  the  first  stage,  the  queue(1,3)  is  scanned  as  if(3,n)   the
                 "queue_smtp_domains"  option  matched every domain. Addresses
                 are routed, local deliveries happen, but no remote transports
                 are  run.   The  hints database that remembers which messages
                 are waiting for specific hosts is updated, as if(3,n) delivery  to
                 those hosts had been deferred. After this is complete, a sec-
                 ond, normal queue(1,3) scan happens,  with  routing  and  delivery
                 taking  place as normal. Messages that are routed to the same
                 host(1,5) should mostly be delivered down a single SMTP connection
                 because  of the hints that were set(7,n,1 builtins) up during the first queue(1,3)
                 scan.  This option may be useful for hosts that are connected
                 to the Internet intermittently.

       -q[q]i... If the i flag is present, the queue(1,3) runner runs delivery pro-
                 cesses only for those messages that haven't  previously  been
                 tried. (i stands for `initial delivery'.) This can be helpful
                 if(3,n) you are putting messages on the queue(1,3) using -odq and  want
                 a queue(1,3) runner just to process the new messages.

       -q[q][i]f...
                 If  one  f  flag is present, a delivery attempt is forced for
                 each non-frozen  message,  whereas  without  "f"  only  those
                 non-frozen  addresses  that have passed their retry times are
                 tried.

       -q[q][i]ff...
                 If ff is present, a delivery attempt is forced for every mes-
                 sage, whether frozen or not.

       -q[q][i][f[f]]l
                 The  l  (the  letter  `ell')  flag  specifies that only local
                 deliveries are to be done. If a message requires  any  remote
                 deliveries, it remains on the queue(1,3) for later delivery.

       -q <qflags> <start id> <end id>
                 When  scanning  the queue(1,3), Exim can be made to skip over mes-
                 sages whose ids are lexically less(1,3) than a given value by fol-
                 lowing the -q option with a starting message id. For example:

                   exim -q 0t5C6f-0000c8-00

                 Messages that arrived earlier than 0t5C6f-0000c8-00  are  not
                 inspected.  If  a  second message id is given, messages whose
                 ids are lexically greater than it are also  skipped.  If  the
                 same id is given twice, for example,

                   exim -q 0t5C6f-0000c8-00 0t5C6f-0000c8-00

                 just  one delivery process is started, for that message. This
                 differs from -M in(1,8) that retry data is respected, and it  also
                 differs from -Mc in(1,8) that it counts as a delivery from a queue(1,3)
                 run. Note that the selection mechanism does  not  affect  the
                 order in(1,8) which the messages are scanned. There are also other
                 ways of selecting specific sets of messages for delivery in(1,8) a
                 queue(1,3) run -- see -R and -S.

       -q <qflags><time(1,2,n)>
                 When  a  time(1,2,n)  value is present, the -q option causes Exim to
                 run as a daemon, starting a queue(1,3) runner process at intervals
                 specified by the given time(1,2,n) value. This form of the -q option
                 is commonly combined with the -bd option,  in(1,8)  which  case  a
                 single daemon process handles both functions. A common way of
                 starting up a combined daemon at system boot time(1,2,n) is to use a
                 command such as

                   /usr/exim/bin/exim -bd -q30m

                 Such  a  daemon  listens  for  incoming  SMTP calls, and also
                 starts a queue(1,3) runner process every 30 minutes.

                 When a daemon is started by -q with a time(1,2,n) value, but without
                 -bd,  no  pid  file(1,n)  is  written  unless  one  is  explicitly
                 requested by the -oP option.

       -qR <rsflags> <string(3,n)>
                 This option is synonymous with -R. It is provided  for  Send-
                 mail(1,8) compatibility.

       -qS <rsflags> <string(3,n)>
                 This option is synonymous with -S.

       -R <rsflags> <string(3,n)>
                 The  <rsflags>  may  be  empty, in(1,8) which case the white space
                 before the string(3,n) is optional, unless the string(3,n) is f, ff, r,
                 rf,  or  rff,  which  are  the possible values for <rsflags>.
                 White space is required if(3,n) <rsflags> is not empty.

                 This option is similar to -q with no time(1,2,n) value, that is,  it
                 causes  Exim to perform a single queue(1,3) run, except that, when
                 scanning the messages on the queue(1,3), Exim processes only those
                 that have at least one undelivered recipient address contain-
                 ing the given string(3,n), which is checked in(1,8) a  case-independent
                 way.  If  the <rsflags> start with r, <string(3,n)> is interpreted
                 as a regular expression; otherwise it is a literal string.

                 Once a message is selected, all its addresses are  processed.
                 For  the  first  selected  message,  Exim overrides any retry
                 information and forces a delivery attempt for  each  undeliv-
                 ered  address.  This means that if(3,n) delivery of any address in(1,8)
                 the first message is successful, any existing retry  informa-
                 tion is deleted, and so delivery attempts for that address in(1,8)
                 subsequently selected messages (which are  processed  without
                 forcing)  will  run. However, if(3,n) delivery of any address does
                 not succeed, the retry information is updated, and in(1,8)  subse-
                 quently  selected  messages,  the  failing  address  will  be
                 skipped.

                 If the <rsflags>  contain  f  or  ff,  the  delivery  forcing
                 applies  to all selected messages, not just the first; frozen
                 messages are included when ff is present.

                 The -R option makes it straightforward to  initiate  delivery
                 of  all messages to a given domain after a host(1,5) has been down
                 for some time. When the SMTP command ETRN is accepted by  its
                 ACL,  its  default  effect is to run Exim with the -R option,
                 but it can be configured to run an arbitrary command instead.

       -r        This is a documented (for Sendmail) obsolete alternative name
                 for -f.

       -S <rsflags> <string(3,n)>
                 This option acts like -R except that  it  checks  the  string(3,n)
                 against  each message's sender instead of against the recipi-
                 ents. If -R is also set(7,n,1 builtins), both conditions must be  met  for  a
                 message  to be selected. If either of the options has f or ff
                 in(1,8) its flags, the associated action is taken.

       -Tqt <times>
                 This an option that is exclusively for use by the Exim  test-
                 ing  suite.   It is not recognized when Exim is run normally.
                 It allows for the setting up of  explicit  `queue(1,3)  times'  so
                 that various warning/retry features can be tested.

       -t        When  Exim is receiving a locally-generated, non-SMTP message
                 on its standard input, the -t option causes the recipients of
                 the message to be obtained from the To:, Cc:, and Bcc: header
                 lines in(1,8) the message instead of from the  command  arguments.
                 The addresses are extracted before any rewriting takes place.

                 If the command has any arguments, they specify  addresses  to
                 which  the message is not to be delivered. That is, the argu-
                 ment addresses are removed from the recipients list  obtained
                 from  the  headers.  This  is  compatible with Smail 3 and in(1,8)
                 accordance with the documented behaviour of several  versions
                 of Sendmail, as described in(1,8) man(1,5,7) pages on a number of operat-
                 ing systems (e.g.  Solaris 8, IRIX 6.5, HP-UX  11).  However,
                 some  versions  of  Sendmail  add argument addresses to those
                 obtained from the headers, and  the  O'Reilly  Sendmail  book
                 documents  it  that  way.  Exim  can  be made to add argument
                 addresses instead of subtracting them by setting  the  option
                 "extract_addresses_remove_arguments" false.

                 If a Bcc: header line is present, it is removed from the mes-
                 sage unless there is no To: or Cc:, in(1,8) which case a Bcc: line
                 with  no  data  is  created. This is necessary for conformity
                 with the original RFC 822 standard; the requirement has  been
                 removed in(1,8) RFC 2822, but that is still very new.

                 If  there are any "Resent-" header lines in(1,8) the message, Exim
                 extracts recipients  from  all  Resent-To:,  Resent-Cc:,  and
                 Resent-Bcc:  header lines instead of from To:, Cc:, and Bcc:.
                 This is for  compatibility  with  Sendmail  and  other  MTAs.
                 (Prior  to release 4.20, Exim gave an error(8,n) if(3,n) -t was used in(1,8)
                 conjunction with "Resent-" header lines.)

                 RFC 2822 talks about different sets of "Resent-" header lines
                 (for  when  a  message is resent several times). The RFC also
                 specifies that they should be added at the front of the  mes-
                 sage,  and  separated  by  Received:  lines. It is not at all
                 clear(1,3x,3x clrtobot) how -t should operate in(1,8) the present of multiple  sets,
                 nor indeed exactly what constitutes a `set(7,n,1 builtins)'.  In practice, it
                 seems that MUAs do not follow the RFC.  The  "Resent-"  lines
                 are often added at the end of the header, and if(3,n) a message is
                 resent more than once, it is common for the original  set(7,n,1 builtins)  of
                 "Resent-" headers to be renamed as "X-Resent-" when a new set(7,n,1 builtins)
                 is added. This removes any possible ambiguity.

       -ti       This option is exactly equivalent to -t -i.  It  is  provided
                 for compatibility with Sendmail.

       -tls-on-connect
                 This  option is available when Exim is compiled with TLS sup-
                 port.  It forces all incoming SMTP connections to  behave  as
                 if(3,n)  the incoming port is listed in(1,8) the "tls_on_connect_ports"
                 option.

       -U        Sendmail uses this option for `initial  message  submission',
                 and  its documentation states that in(1,8) future releases, it may
                 complain about syntactically  invalid  messages  rather  than
                 fixing  them  when  this  flag  is not set. Exim ignores this
                 option.

       -v        This option causes Exim to write(1,2) information to the  standard
                 error(8,n)  stream, describing what it is doing. In particular, it
                 shows the log lines for receiving and delivering  a  message,
                 and  if(3,n)  an  SMTP  connection  is  made, the SMTP dialogue is
                 shown. Some of the log lines shown may not actually be  writ-
                 ten  to  the  log  if(3,n)  the setting of "log_selector" discards
                 them. Any relevant selectors are shown with each log line. If
                 none are shown, the logging is unconditional.

       -x        AIX  uses  -x  for a private purpose (`mail(1,8) from a local mail(1,8)
                 program has National Language Support extended characters  in(1,8)
                 the body of the mail(1,8) item').  It sets -x when calling the MTA
                 from its "mail(1,8)" command. Exim ignores this option.

References for this manual (incoming links)