exim
exim(m)                                                   exim(m)



NAME
       exim - Mail Transfer Agent

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

DESCRIPTION
       Exim is a mail transport agent (MTA) developed at the Uni-
       versity of Cambridge for use on Unix systems connected  to
       the  Internet.  It  is freely available under the terms of
       the GNU General Public Licence. In style it is similar  to
       Smail  3,  but  its  facilities are more extensive, and in
       particular it has some defences  against  mail  bombs  and
       unsolicited junk mail, in the form of options for refusing
       messages from particular hosts, networks, or senders.

       Exim's command line takes the  standard  Unix  form  of  a
       sequence  of  options, each starting with a hyphen charac-
       ter, followed by a number of arguments.  The  options  are
       compatible  with  the  main options of Sendmail, and there
       are also some additional options, some of which  are  com-
       patible  with Smail 3.  Certain combinations of options do
       not make sense, and provoke an error if used. The form  of
       the arguments depends on which options are set.

       If  Exim  is called under the name mailq, it behaves as if
       the option -bp were present before any other options. This
       is for compatibility with some systems that contain a com-
       mand of that name in one of the standard  libraries,  sym-
       bolically linked to /usr/lib/sendmail.

       If  Exim  is  called under the name rsmtp it behaves as if
       the option -bS were present before any other options,  for
       compatibility with smail. The -bS option is used for read-
       ing in a number of messages in batched SMTP format.

       If Exim is called under the name rmail it  behaves  as  if
       the  option  -i were present before any other options, for
       compatibility with smail. The -i option is used for  read-
       ing  a message that should not be terminated by a dot on a
       line by itself. The name rmail is used as an interface  by
       some UUCP systems.

       If Exim is called under the name runq it behaves as if the
       option -q were present before any other options, for  com-
       patibility  with  smail.  The  -q  option  causes a single
       queue-runner process to be started.

LIMITATIONS
       For the benefit of those  reading  this  overview  to  see
       whether  Exim  is of interest to them, its limitations are
       listed first.

       ANSI-C Exim is written in ANSI C. This should not be  much
              of  a  limitation these days. However, to help with
              systems that lack  a  true  ANSI  C  library,  Exim
              avoids  making any use of the value returned by the
              sprintf() function, which is one of the main incom-
              patibilities.  It has its own version of strerror()
              for use with SunOS4 and any other system that lacks
              this  function,  and a macro can be defined to turn
              memmove() into bcopy() if necessary.

       Filenames
              Exim uses file names that are longer than 14  char-
              acters.

       Bangpaths
              Exim is intended for use as an Internet mailer, and
              therefore handles addresses in RFC 822 domain  for-
              mat  only.  It  cannot  handle 'bang paths', though
              simple two-component bang paths can be converted by
              a straightforward rewriting configuration.

       Domains required
              Exim  insists  that  every address it handles has a
              domain  attached.  For  incoming  local   messages,
              domainless  addresses  are  automatically qualified
              with  a  configured  domain  value.   Configuration
              options  specify from which remote systems unquali-
              fied addresses are acceptable.

       Transports
              The only external transport  currently  implemented
              is  an  SMTP transport over a TCP/IP network (using
              sockets), suitable for machines  on  the  Internet.
              However,  a  pipe transport is available, and there
              are facilities for writing  messages  to  files  in
              'batched  SMTP'  format;  this  can be used to send
              messages to some other transport mechanism. Batched
              SMTP input is also catered for.

FEATURES
       Exim  follows  the  same general approach of decentralized
       control that Smail 3 does. There  is  no  central  process
       doing  overall  management  of  mail  delivery.   However,
       unlike Smail, the  independent  delivery  processes  share
       data  in  the  form  of 'hints', which makes delivery more
       efficient in some cases. The hints are kept in a number of
       DBM files. If any of these files are lost, the only effect
       is to change the pattern of delivery attempts and retries.

       Many  configuration  options  can  be  given  as expansion
       strings, and as these can include file  lookups,  much  of
       Exim's  operation can be made table-driven if desired. For
       example, it is possible to do local delivery on a  machine
       on which the users do not have accounts.

       Regular  expressions are available in a number of configu-
       ration parameters.

       Domain lists can include file lookups, making it  possible
       to support a large number of local domains.

       Exim  has  flexible  retry  algorithms, applicable to mail
       routing as well as to delivery.

       Exim contains header and envelope rewriting facilities.

       Unqualified addresses are  accepted  only  from  specified
       hosts or networks.

       Exim  can  perform  multiple deliveries down the same SMTP
       channel after deliveries to a host have been delayed.

       Exim can be configured to do local deliveries  immediately
       but to leave remote deliveries until the message is picked
       up by a queue-runner process. This increases  the  likeli-
       hood  of  multiple  messages being sent down a single SMTP
       connection.

       When copies of a message have to be delivered to more than
       one  remote  host,  up  to  a configured maximum number of
       remote deliveries can be done in parallel.

       Exim supports optional checking of  incoming  return  path
       (sender)  and  receiver  addresses as they are received by
       SMTP.

       SMTP calls from specific machines,  optionally  from  spe-
       cific  idents,  can  be locked out, and incoming SMTP mes-
       sages from specific senders can also be locked out.

       It is possible to control which hosts  may  use  the  Exim
       host  as a relay for onward transmission of mail; the con-
       trol can be made to depend on the address domain.

       Messages on the queue can be 'frozen' and 'thawed' by  the
       administrator.

       The  maximum  size  of message can be specified.  Exim can
       handle a number of independent local domains on  the  same
       machine;  each  domain  can have its own alias files, etc.
       These are commonly called "virtual domains".

       Exim stats a user's home directory before  looking  for  a
       .forward  file,  in  order to detect the case of a missing
       NFS mount.

       Exim contains an optional built-in mail  filtering  facil-
       ity. This enables users to set up their own mail filtering
       in a straightfoward manner without  the  need  to  run  an
       external  program.  There can also be a system filter file
       that applies to all messages.

       There is support for multiple user mailboxes controlled by
       prefixes or suffixes on the user name, either via the fil-
       ter mechanism or through multiple .forward files.

       Periodic warnings  are  automatically  sent  to  messages'
       senders  when delivery is delayed - the time between warn-
       ings is configurable.

       A queue run can be manually started to deliver just a par-
       ticular  portion  of  the  queue, or those messages with a
       recipient whose address contains a given string.

       Exim can be configured to run as root all the time, except
       when  performing local deliveries, which it always does in
       a separate process  under  an  appropriate  uid  and  gid.
       Alternatively,  it  can  be configured to run as root only
       when needed; in particular, it need not run as  root  when
       receiving  incoming  messages or when sending out messages
       over SMTP.

       I have tried to make the wording of delivery failure  mes-
       sages  clearer and simpler, for the benefit of those less-
       experienced people who are now using email.

       The Exim Monitor is an optional extra; it displays  infor-
       mation  about  Exim's  processing  in  an X window, and an
       administrator can perform a number of control actions from
       the window interface.

METHOD OF OPERATION
       When  Exim  receives a message, it writes two files in its
       spool directory.  The first contains the envelope informa-
       tion,  the current status of the message, and the headers,
       while the second contains the body  of  the  message.  The
       status  of the message includes a complete list of recipi-
       ents and a list of those that have  already  received  the
       message. The header file gets updated during the course of
       delivery if necessary.

       A message remains in the spool directory until it is  com-
       pletely  delivered  to  its  recipients  or  to  an  error
       address, or until it is deleted by an administrator or  by
       the user who originally created it. In cases when delivery
       cannot proceed - for example, when a message  can  neither
       be delivered to its recipients nor returned to its sender,
       the message is marked 'frozen' on the spool, and  no  more
       deliveries  are attempted. The administrator can thaw such
       messages when the problem has been corrected, and can also
       freeze individual messages by hand if necessary.

       As  delivery proceeds, Exim writes timestamped information
       about  each  address  to  a  per-message  log  file;  this
       includes  any  delivery error messages. This log is solely
       for the benefit of the administrator. All the  information
       Exim itself needs for delivery is kept in the header spool
       file. The message log  file  is  deleted  with  the  spool
       files.  If a message is delayed for more than a configured
       time, a warning message is sent to  the  sender.  This  is
       repeated  whenever  the  same  time  elapses again without
       delivery being complete.

       The main delivery processing elements of Exim  are  called
       directors,  routers,  and transports. Code for a number of
       these is provided, and compile-time options specify  which
       ones are actually included in the binary. Directors handle
       addresses that include one of the local  domains,  routers
       handle remote addresses, and transports do actual deliver-
       ies.

TRUSTED AND ADMIN USERS
       Some Exim options are available only  to  "trusted  users"
       and others are available only to "admin users".

       A  trusted  user  is root or the Exim user (if defined) or
       any user listed in the trusted_users configuration option,
       or  any  user,  if the currently set group is one of those
       listed in the trusted_groups configuration option. Trusted
       users  are  permitted  to use the -f option to specify the
       senders of messages that are passed to  Exim  through  the
       local  interface,  and  also  to  specify host names, host
       addresses, protocol names, and ident values. Thus they are
       able  to  insert  messages  into Exim's queue locally that
       have the  characteristics  of  messages  received  from  a
       remote host.

       An admin user is root or the Exim user (if defined) or any
       user that is a member of the Exim group (if defined).  The
       current  group  does  not have to be the Exim group. Admin
       users are permitted to operate on messages in  the  queue,
       for  example,  to  force  delivery  failures.  It  is also
       necessary to be an admin user in order  to  see  the  full
       information provided by the Exim monitor.

OPTIONS
       Exim's command options are as follows:

       -bd    Run  Exim  as a daemon, awaiting incoming SMTP con-
              nections. This option can be used only by an  admin
              user.  If  either of the -d or -dm options are set,
              the daemon does not disconnect from the controlling
              terminal.  By  default,  Exim  listens for incoming
              connections on all the host's  interfaces,  but  it
              can be restricted to specific interfaces by setting
              the local_interfaces option  in  the  configuration
              file.  The standard SMTP port is used, but this can
              be varied by means of the  -oX  option.  Most  com-
              monly, the -bd option is combined with the -q<time>
              option, to cause periodic queue runs to  happen  as
              well.

              The  process  id of a daemon that is both listening
              and starting queue runners is  written  to  a  file
              called  exim-daemon.pid  in Exim's spool directory,
              unless the -oX option is used, in  which  case  the
              file  name  is  exim-daemon.<port-number>.pid. If a
              daemon is run with only one of  -bd  and  -q<time>,
              then that option is added on to the end of the file
              name, allowing sites that run two separate  daemons
              to distinguish them.

              It  is  possible  to  change the directory in which
              these pid files are written by changing the setting
              of  PID_FILE_PATH in Local/Makefile.  The files are
              written while Exim is still running as  root.  Fur-
              ther   details   are   given  in  the  comments  in
              src/EDITME.

              The SIGHUP signal can be used to cause  the  daemon
              to  re-exec  itself.   This should be done whenever
              Exim's configuration file is changed, or a new ver-
              sion  of  Exim is installed. It is not necessary to
              do this when other files  (e.g.  alias  files)  are
              changed.

       This option is the same as -bf except that it assumes that
       the filter
              being  tested  is  a  system filter. The additional
              commands that are available only in system  filters
              are recognized.

       -bf <filename>
              Run  Exim  in  filter testing mode; the file is the
              filter file to be tested, and a test  message  must
              be supplied on the standard input.  If there are no
              message-dependent tests in  the  filter,  an  empty
              file  can  be  supplied. If a system filter file is
              being tested, -bF should be used instead of -bf. If
              the test file does not begin with the special line

               # Exim filter

              then  it is taken to be a normal .forward file, and
              is tested for validity under  that  interpretation.
              The  result of this command, provided no errors are
              detected, is a list of the actions that Exim  would
              try to take if presented with the message for real.
              More details of filter testing  are  given  in  the
              separate  document  entitled "Exim's User interface
              to mail filtering".

              When testing a filter file, the envelope sender can
              be  set  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 a message can be set by  means
              of additional command line options. These are:

               -bfd  <domain>    default is the qualify domain
               -bfl  <local_part>default is the logged in user
               -bfp  <local_part_prefix> default is null
               -bfs  <local_part_suffix> default is null

              The local part should always be set to the incoming
              address with any prefix or suffix stripped, because
              that  is  how it appears when a message is actually
              being delivered.

       -bh <IP address>
              This option runs a fake SMTP session as if from the
              given IP address, using the standard input and out-
              put. Comments as to what is going on are written to
              the standard error file. These include lines begin-
              ning with 'LOG' for anything that would  have  been
              logged.  This facility is for testing configuration
              options for blocking hosts and/or senders  and  for
              checking  on  relaying  control.  Messages supplied
              during the testing session are discarded, and noth-
              ing  is written to any of the real log files. There
              may be pauses when DNS (and other) lookups are tak-
              ing  place,  and  of course these may time out. The
              -oMi option can be used to specify  a  specific  IP
              interface if this is important.

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

              If -bi is encountered, the command specified by the
              bi_command  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 by  bi_command  may
              not  contain  arguments.  The  command  can use the
              exim_dbmbuild utility,  or  some  other  means,  to
              rebuild  alias  files  if  this is required. If the
              bi_command option is not  set,  then  calling  Exim
              with -bi is a no-op.

       -bm    Accept  an  incoming,  locally-generated message on
              the current input, and deliver it to the  addresses
              given  as  the command arguments (except when -t is
              also given - see below). Each  argument  can  be  a
              comma-separated  list of RFC 822 addresses. This is
              the default option, and is assumed if no other con-
              flicting option is present.

              The format of the message must be as defined in RFC
              822, except that, for compatibility  with  sendmail
              and smail, a line in one of the forms

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

              (with the weekday optional, and possibly with addi-
              tional 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_pattern
              option,  which  can  be  changed  if necessary. The
              specified sender is treated as if it were given  as
              the  argument  to the -f option, but if a -f option
              is also present, its argument is used in preference
              to  the  address taken from the message. The caller
              of Exim must be a trusted user for the sender of  a
              message to be set in this way.

       -bp    List  the contents of the mail queue on the current
              output. If the -bp option is followed by a list  of
              message  ids,  then just those messages are listed.
              By default this option may only be used by an admin
              user.   The queue_list_requires_admin option can be
              set false to allow any user to see the queue.

              Each message on the queue is displayed  as  in  the
              following example:

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

              The first line contains the amount of time the mes-
              sage  has  been  on the queue (in this case 25 min-
              utes), the size of the message (2.9K),  the  unique
              identifier for the message, and the message sender,
              as contained in the envelope. If the message  is  a
              delivery  error  message,  the  sender  address  is
              empty, and appears as <>. If the message is  frozen
              (attempts  to  deliver  it  are suspended) then the
              text '*** frozen ***' is displayed at  the  end  of
              this line.

              The recipients of the message (taken from the enve-
              lope, 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 expanded into sev-
              eral addresses via an alias or  forward  file,  the
              original is displayed with a 'D' only when deliver-
              ies for all of its child addresses are completed.

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


       -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, and is particularly use-
              ful if the output is going to be post-processed  in
              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 unde-
              livered top-level addresses for each  message  dis-
              played. Addresses generated by aliasing or forward-
              ing are not shown, unless the message was  deferred
              after  processing  by  a director with the one_time
              option set.

       -bP    If this option  is  given  with  no  arguments,  it
              causes  the values 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 local_domains

              If configure_file is given, the name of the runtime
              configuration file is output. If  log_file_path  or
              pid_file_path  are given, the names of the directo-
              ries where log files and daemon pid files are writ-
              ten  are  output, respectively. If these values are
              unset, log files are written in a  subdirectory  of
              the  spool  directory called log, and pid files are
              written directly into the spool directory.

              If one of the words director, router, or  transport
              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, fol-
              lowed 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  director_list,
              router_list, or transport_list, and a complete list
              of all drivers with their option  settings  can  be
              obtained  by  using  directors,  routers, or trans-
              ports.

       -brt   This option is for testing retry rules, and it must
              be  followed  by  up  to three arguments. It causes
              Exim to look for a retry rule that matches the val-
              ues  and  to  output it on the standard output. For
              example:

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

              See chapter 31 for a description  of  Exim's  retry
              rules.  The  first argument, which is required, can
              be    a    complete    address    in    the    form
              local_part@domain, or it can be just a domain name.
              The second argument is an  optional  second  domain
              name; if no retry rule is found for the first argu-
              ment, the second is tried. This ties in with Exim's
              behaviour  when  looking for retry rules for remote
              hosts - if no rule is found that matches the  host,
              one  that  matches  the  mail domain is sought. The
              final argument is the name of a  specific  delivery
              error, as used in 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, con-
              sisting 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, where
              messages have  been  received  from  some  external
              source  by  an  alternative transport mechanism. It
              causes Exim to accept one or more messages by read-
              ing  SMTP on the standard input, but to generate no
              responses. If any error is encountered reports  are
              written  to  the standard output and error streams,
              and Exim gives up immediately.

              If the caller is trusted, then the senders  in  the
              MAIL commands are believed; otherwise the sender is
              always the caller of Exim.  Unqualified senders and
              receivers  are  not  rejected  (there  seems little
              point)  but  instead  just  get  qualified.  Sender
              addresses  are  verified  if  sender_verify is set,
              unless sender_verify_batch is unset (which  is  the
              default).  Receiver verification and administrative
              rejection is not done, even if configured. HELO and
              EHLO act as RSET; VRFY, EXPN, ETRN, HELP, and DEBUG
              act as NOOP; QUIT quits. The return code is 0 if no
              error was detected; it is 1 if one or more messages
              were accepted before the error was detected; other-
              wise  it  is 2. More details of input using batched
              SMTP are given in section 42.8.

       -bs    This option causes Exim to accept one or more  mes-
              sages  by  reading  SMTP  commands  on the standard
              input, and producing SMTP replies on  the  standard
              output.  Some  user  agents use this interface as a
              way of passing locally-generated  messages  to  the
              MTA.  The  option can also be used to run Exim from
              inetd, as an alternative to using a listening  dae-
              mon,  in  which case the standard input is the con-
              nected socket. Exim distinguishes between  the  two
              cases  by  attempting to read the IP address of the
              peer connected to the standard input. If it is  not
              a socket, the call to getpeername() fails, and Exim
              assumes it is dealing with a local message.

              If the caller of Exim is trusted, then the  senders
              of  messages are taken from the SMTP MAIL FROM com-
              mands. Otherwise the content of these  commands  is
              ignored  and  the  sender  is set up as the calling
              user.

       -bt    Run in address testing mode, in which each argument
              is  taken  as  an address to be tested. The results
              are written to the standard output. If no arguments
              are  given,  Exim  runs  in  an interactive manner,
              prompting with a right angle bracket for  addresses
              to be tested. Each address is handled as if it were
              the recipient address on a message  and  passed  to
              the  appropriate  directors or routers (compare the
              -bv option); the result is written to the  standard
              output.  The return code is 2 if any address failed
              outright; it is 1 if no address failed outright but
              at least one could not be resolved for some reason.
              Return code 0 is given only when all addresses suc-
              ceed.

              If  any of the directors or routers in the configu-
              ration makes any tests on the sender address  of  a
              message,  then  you should use the -f option to set
              an appropriate sender when running -bt tests. With-
              out  it,  the  sender  is assumed to be the calling
              user at the default qualifying domain.

       -bV    Write the current version number, compilation  num-
              ber, and compilation date of the exim binary to the
              standard output.

       -bv    Verify the addresses that are given  as  the  argu-
              ments  to the command, and write the results to the
              standard output. Verification differs from  address
              testing  (the  -bt  option)  in  that directors and
              routers that have no_verify set are skipped, and if
              the  address  is  accepted  by a director or router
              that has fail_verify set, verification fails.  This
              is  the  same  logic  that  is  used when verifying
              addresses on incoming messages (see the sender_ver-
              ify  and  receiver_verify  options). The address is
              verified as a recipient if -bv is used;  to  verify
              as for a sender address, -bvs should be used.

              If  the  -v  (or  -d) option is not set, the output
              consists of a single line for each address, stating
              whether it was verified or not, and giving a reason
              in the latter case.  Otherwise,  more  details  are
              given  of  how the address has been handled, and in
              the case of aliases or  forwarding,  the  generated
              addresses are also considered.

              The  return  code  is  2 if any address failed out-
              right; it is 1 if no address failed outright but at
              least  one  could  not be resolved for some reason.
              Return code 0 is given only when all addresses suc-
              ceed.

              If  any of the directors or routers in the configu-
              ration makes any tests on the sender address  of  a
              message,  then  you should use the -f option to set
              an appropriate sender when running -bv tests. With-
              out  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 <filename>
              Read  the runtime configuration from the given file
              instead of from the default file specified  by  the
              CONFIGURE_FILE  compile-time  setting.   When  this
              option is used  by  an  unprivileged  caller,  Exim
              gives  up  its root privilege immediately, and runs
              with the real and effective  uid  and  gid  set  to
              those  of  the  caller, to avoid any security expo-
              sure. It does not do this if the caller is root  or
              the  exim user. The 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's an exotic con-
              figuration  that  does  not  require  privilege. No
              check is made on the owner or  group  of  the  file
              specified by this option.

       -D<macro>=<value>
              This  option  can be used to override macro defini-
              tions in the configuration file (see section  7.2).
              However,  like -C, if it is used by an unprivileged
              caller, it causes Exim to give up its  root  privi-
              lege. This option may be repeated up to 10 times on
              a command line.

       -d<number>
              Sets a debug level, causing  debugging  information
              to  be  written to the standard error file. Whites-
              pace between -d and the number is optional.  If  no
              number  is  given, 1 is assumed, and the higher the
              number, the more output is  produced.  A  value  of
              zero turns debugging output off. A value of 9 gives
              the maximum amount of general information, 10 gives
              in addition details of the interpretation of filter
              files, and 11 or higher also turns on the debugging
              option for DNS lookups.

       -df    If  this  option is set and STDERR_FILE was defined
              when Exim was built, debugging information is writ-
              ten to the file defined by that variable instead of
              to the standard error file. This option provides  a
              way of obtaining debugging information when Exim is
              run from inetd.

       -dm    This option causes information about memory alloca-
              tion  and  freeing  operations to be written to the
              standard error file.

       -dropcr
              At least one MUA (dtmail) that calls an MTA via the
              command  line  is broken in that it terminates each
              line with CRLF, instead of just LF,  which  is  the
              usual  Unix  convention,  and although this bug has
              been admitted, it apparently won't get fixed. There
              is  also  some UUCP software which leaves CR at the
              ends of lines in messages. As a  slight  pander  to
              these  programs,  the -dropcr option causes Exim to
              drop all CR characters in an incoming non-SMTP mes-
              sage.

       -ex    There  are  a  number  of sendmail options starting
              with -oe which seem to be called  by  various  pro-
              grams  without  the  leading  o  in the option. For
              example, the vacation program uses -eq. Exim treats
              all  options of the form -ex as synonymous with the
              corresponding -oex options.

       -F <string>
              Set 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  file is used. As users are generally per-
              mitted to alter their "gecos" entries, no  security
              considerations are involved. White space between -F
              and the <string> is optional.

       -f <address>
              Set  the  address  of  the  sender  of  a  locally-
              generated message. This option can normally be used
              only by root or the Exim user or by one of the con-
              figured  trusted  users. However, anyone may use it
              when testing a filter file with -bf or when testing
              or   verifying  addresses  using  the  -bt  or  -bv
              options. In other cases, the sender of a local mes-
              sage  is always set up as the user who ran the exim
              command, and -f is ignored, with one exception.  If
              the  special  setting -f <> is used by an untrusted
              user, it does not affect the sender  for  the  pur-
              poses  of  managing  the Sender: and From: headers,
              but it does have the effect  of  causing  any  SMTP
              transmissions to be sent out with

               MAIL FROM: <>

              and local deliveries to contain

               Return-path: <>

              when  configured  to  contain Return-path: headers.
              The filtering code treats  such  a  message  as  an
              error  message,  and  won't  generate messages as a
              result of reading it.

              White  space  between  -f  and  the   <string>   is
              optional. The sender of a locally-generated message
              can also be set by an initial 'From'  line  in  the
              message  - see the description of -bm above, but if
              -f is also present, it overrides 'From '.

       -h <number>
              This option  is  accepted  for  compatibility  with
              sendmail,  but  at present has no effect. (In send-
              mail 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  Solaris  2.4
              sendmail, but the mailx command in Solaris 2.4 uses
              it.

       -M     The arguments are interpreted as a list of  message
              ids,  and Exim runs a delivery attempt on each mes-
              sage in turn. If any of the  messages  are  frozen,
              they  are  automatically thawed before the delivery
              attempt.  Retry hints for any of the addresses  are
              overridden  -  this  option  forces  Exim to try to
              deliver even if the normal retry time 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 false to relax
              this restriction (and also the same requirement for
              the -q and -R options).

       -Mar <message-id> <address> <address> ...
              The  first  argument  must be a message id, and the
              remaining ones must be email addresses.  Exim  adds
              the addresses to the list of recipients of the mes-
              sage. However, if the message  is  active  (in  the
              middle  of  a  delivery attempt), its status is not
              altered. This option can be used only by  an  admin
              user.

       -Mc    The  arguments are interpreted as a list of message
              ids, and Exim runs a delivery attempt on each  mes-
              sage  in  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 (except for testing). It  is  provided  for
              internal  use  by  Exim  when it needs to re-invoke
              itself in order to  regain  root  privilege  for  a
              delivery (see chapter 49).

       -Meb <message-id>
              This  runs,  under  /bin/sh, the command defined in
              the shell  variable  VISUAL  or,  if  that  is  not
              defined,  EDITOR  or,  if  that is not defined, the
              command vi, on a copy of the spool file  containing
              the body of message (eb = Edit Body). If the editor
              exits normally, then the result of editing replaces
              the  spool  file. The message is locked during this
              process, so no delivery attempts  can  occur.  Note
              that  the  first  line of the spool file is its own
              name; care should be taken not to disturb this. The
              thinking  behind  providing this feature is that an
              administrator who has had to mess around  with  the
              addresses  to get a message delivered might want to
              add some (grumbly) comment at the start of the mes-
              sage text. This option can be used only by an admin
              user.

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

       -Mf    The  arguments are interpreted as a list of message
              ids, and each message is marked 'frozen'. This pre-
              vents  any delivery attempts taking place until the
              message is 'thawed', either manually or as a result
              of  the auto_thaw configuration option. However, if
              any of the messages are active (in the middle of  a
              delivery  attempt),  their  status  is not altered.
              This option can be used only by an admin user.

       -Mg    The arguments are interpreted as a list of  message
              ids, and Exim gives up trying to deliver those mes-
              sages. A delivery error message is sent, containing
              the  text 'cancelled by administrator'. However, if
              any of the messages are active, their status is not
              altered.  This  option can be used only by an admin
              user.

       -Mmad <message-id>
              Exim marks the all recipient addresses in the  mes-
              sage  as already delivered. However, if the message
              is active (in 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> ...
              The first argument must be a message  id,  and  the
              remaining  ones must be email addresses. Exim marks
              the given addresses as already delivered.  However,
              if the message is active (in the middle of a deliv-
              ery attempt),  its  status  is  not  altered.  This
              option can be used only by an admin user.

       -Mrm   The  arguments are interpreted as a list of message
              ids, and each message is  completely  removed  from
              Exim's  queue,  and  forgotten.  However, if any of
              the messages is active, its status is not  altered.
              This option can be used only by an admin user or by
              the user who originally caused the  message  to  be
              placed on the queue.

       -Mt    The  arguments are interpreted as a list of message
              ids, and each message  that  was  'frozen'  is  now
              'thawed',  so  that  delivery  attempts can resume.
              However, if any of the messages is active, its sta-
              tus is not altered. This option can be used only by
              an admin user.

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

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

       -Mvl <message id>
              The contents of the  message  log  spool  file  are
              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 message at the transport level. It implies at
              least -d1. Exim goes through many of the motions of
              delivery  -  it just doesn't actually transport the
              message, but instead behaves as if it had  success-
              fully  done  so.  However,  it  does  not  make any
              updates to the retry database, and the log  entries
              for  deliveries  are  flagged with '*>' rather than
              -q, -R or -M. In other words, an ordinary user  can
              use  it  only when supplying an incoming message to
              which it will apply.

       -oA <file name>
              This option is used by Sendmail in conjunction with
              -bi to specify an alternative alias file name. Exim
              handles -bi differently; see the description above.

       -oB <n>
              This is a debugging option which limits the maximum
              number of SMTP deliveries down one channel to  <n>,
              overriding  the value set in the smtp transport. If
              <n> is omitted, the limit is set to  1  (no  batch-
              ing).

       -odb   This  option  applies  to  all  modes in which Exim
              accepts incoming messages, including the  listening
              daemon.  It  requests 'background' delivery of such
              messages, which means that  the  accepting  process
              automatically  starts  another delivery process for
              each message received. Exim does not wait for  such
              processes  to  complete  (it  can take some time to
              perform  SMTP  deliveries).  This  is  the  default
              action if none of the -od options are present.

       -odf   This option (compatible with smail) requests 'fore-
              ground'  (synchronous)  delivery  when   Exim   has
              accepted a locally-generated message.  For the dae-
              mon it is exactly the same as -odb.  For  a  single
              message received on the standard input, if the pro-
              tection regime permits it (see  chapter  44),  Exim
              converts the reception process into a delivery pro-
              cess. In other cases, it  creates  a  new  delivery
              process,  and  then waits for it to complete before
              proceeding.

       -odi   This option is synonymous with -odf. It is provided
              for compatibility with sendmail.

       -odq   This  option  applies  to  all  modes in which Exim
              accepts incoming messages, including the  listening
              daemon.  It  specifies  that  the accepting process
              should not automatically start a  delivery  attempt
              for  each  message received. Messages are placed on
              the queue, and  remain  there  until  a  subsequent
              queue-running    process   encounters   them.   The
              queue_only  configuration  option  has   the   same
              effect.

       -odqr  This  option  applies  to  all  modes in which Exim
              accepts incoming messages, including the  listening
              daemon.  It  causes Exim to process local addresses
              when a message is received, but  not  even  to  try
              routing   remote  addresses.  Contrast  with  -odqs
              below, which does the routing, but not  the  deliv-
              ery.  The remote addresses will be picked up by the
              next queue runner. The  queue_remote  configuration
              option has the same effect for specific domains.

       -odqs  This  option  is  a hybrid between -odb and -odq. A
              delivery process is started for each incoming  mes-
              sage,  the  addresses  are all processed, and local
              deliveries are done in the normal way. However,  if
              any SMTP deliveries are required, they are not done
              at this time. Such messages  remain  on  the  queue
              until a subsequent queue-running process encounters
              them. Because routing was done,  Exim  knows  which
              messages are waiting for which hosts, and so a num-
              ber of messages for the same host will get sent  in
              a single SMTP connection. The queue_smtp configura-
              tion  option  has  the  same  effect  for  specific
              domains. See also the -qq option.

       -oee   If an error is detected while a non-SMTP message is
              being received (for example, a malformed  address),
              the  error is reported to the sender in a mail mes-
              sage. Provided the message  is  successfully  sent,
              Exim  exits with a return code of zero. If not, the
              return code is 2 if the error was that the  message
              had  no recipients, and 1 otherwise. This option is
              the default if 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 message was successfully sent.   This  is
              the default option, unless Exim is called as rmail.

       -oep   If an error is detected while a non-SMTP message is
              being  received, the error is reported by writing a
              message to the standard error file (stderr).

       -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, spec-
              ifies  that  a  dot  on a line by itself should not
              terminate an incoming, non-SMTP message.   This  is
              the default if Exim is called as rmail.

       -oMa <host address>
              This option sets the sender host address value, and
              can be used only by a  trusted  caller,  except  in
              conjunction  with  the  -bh option. A real incoming
              connection overrides the address set by -oMa..  The
              value  is  used  in  log  entries and can appear in
              Received: headers. The option is intended  for  use
              when  handing  to  Exim  messages received by other
              means, either via the command line or by using  the
              -bs  option.  If  -oMt is set then -oMa should nor-
              mally be set as well.

       -oMi <interface address>
              This option sets the IP  interface  address  value,
              and can be used only by a trusted caller, except in
              conjunction with the -bh option.  A  real  incoming
              connection  overrides  the address set by -oMi. The
              option is intended for use  when  handing  to  Exim
              messages  received  by  other means, either via the
              command line or by using the -bs option.

       -oMr <protocol name>
              This option sets the received protocol  value,  and
              can  be  used  only  by a trusted caller, except in
              conjunction with the -bh option. The value is  used
              in log entries and can appear in Received: headers.
              The option is intended for use when handing to Exim
              messages  received  by other means. It applies only
              to non-SMTP and batched SMTP input.

       -oMs <host name>
              This option sets the sender host  name  value,  and
              can  be  used  only  by a trusted caller, except in
              conjunction with the -bh option. The value is  used
              in  log entries and can appear in Received headers.
              The option is intended for use when handing to Exim
              messages received by other means.

       -oMt <ident string>
              This option sets the sender ident value, and can be
              used only by a trusted caller, except  in  conjunc-
              tion  with the -bh option. The value is used in log
              entries and can appear  in  Received  headers.  The
              default  setting  for local callers is the login id
              of the calling process. This can be  overridden  by
              supplying an empty argument. The option is intended
              for use when handing to Exim messages  received  by
              other means.

       -om    In sendmail, this option means 'me too', indicating
              that the sender of a message should receive a  copy
              of  the  message  if the sender appears in an alias
              expansion. Exim always does  this,  so  the  option
              does nothing.

       -or <time>
              This  option sets a timeout value for incoming non-
              SMTP messages. If it is not  set,  Exim  will  wait
              forever  for the standard input. The value can also
              be set using the accept_timeout configuration vari-
              able.  The  format  used  for  specifying  times is
              described in section 7.7.

       This option has exactly the same effect as -v.

       -oX <number>
              This option is relevant only when the -bd option is
              also  given.  It  overrides any setting of the dae-
              mon_smtp_port option, and specifies an  alternative
              TCP/IP  port  number for the listening daemon. When
              used, the process number of the daemon  is  written
              to a file whose name is exim-daemon.<number>.pid in
              Exim's spool directory or the  directory  specified
              by PID_FILE_PATH in Local/Makefile.

       -pd    This  option  applies  when an embedded Perl inter-
              preter is linked with Exim  (see  chapter  10).  It
              therefore does not apply to the debian package.

              It  overrides  the  setting  of  the  perl_at_start
              option, forcing the starting of the interpreter  to
              be delayed until it is needed.

       -ps    This  option  applies  when an embedded Perl inter-
              preter is linked with Exim  (see  chapter  10).  It
              therefore does not apply to the debian package.

              It  overrides  the  setting  of  the  perl_at_start
              option, forcing the starting of the interpreter  to
              occur as soon as Exim is started.

       -q     If  the  -q option is not followed by a time value,
              it requests a  single  queue  run  operation.  This
              option  can be used only by an admin user. However,
              there is an option called prod_requires_admin which
              can  be  set  false  to relax this restriction (and
              also  the  same  requirement  for  the  -M  and   R
              options).

              Exim  starts  up a delivery process for each (inac-
              tive) message on the queue in turn, and  waits  for
              it  to  finish before starting the next one. If the
              delivery process spawns other processes to  deliver
              other  messages  down  passed SMTP connections, the
              queue runner waits for these to finish before  pro-
              ceeding.  When  all  the  queued messages have been
              considered, the  original  process  terminates.  In
              other words, a single pass is made over the waiting
              mail. Use -q with a time (see below)  if  you  want
              this to be repeated periodically.

              Exim  processes  the  waiting messages in an unpre-
              dictable order. It isn't very  random,  but  it  is
              likely to be different each time, which is all that
              matters. If one  particular  message  screws  up  a
              remote  MTA,  other messages to the same MTA have a
              chance of getting through if they get tried  first.

              However, it is possible to cause the messages to be
              processed in lexical id order, which is essentially
              the  order in which they arrived, and to start this
              operation at a particular point by following the -q
              option with a starting message id. For example:

               exim -q 0t5C6f-0000c8-00

              This causes Exim to skip any messages whose ids are
              lexically less than the given id. A second  id  can
              also be given to stop the queue run before the end.
              See also the -R option and  the  queue_run_in_order
              option.

       -q <time>
              This  version  of the -q option (which again can be
              run only by an admin user) causes Exim to run as  a
              daemon,  starting a queue-running process at inter-
              vals specified by the given time value (whose  for-
              mat  is described in section 7.6). This form of the
              -q option is commonly combined with the -bd option,
              in  which case a single daemon process handles both
              functions. A common way of starting up  a  combined
              daemon at system boot time is to use a command such
              as

               /opt/exim/bin/exim -bd -q30m

              Such a daemon listens for incoming SMTP calls,  and
              also  fires up a queue-runner process every 30 min-
              utes. The process id of such a daemon is written to
              a  file  called  exim-daemon.pid  in  Exim's  spool
              directory, unless the -oX option has been used,  in
              which  case  the  file is called exim-daemon.<port-
              number>.pid. The location of the pid  file  can  be
              changed  by  defining  PID_FILE_PATH in Local/Make-
              file.  If a daemon is started without -bd then  the
              -q option used to start it is added to the pid file
              name.

       -qf    This option operates like -q, and may  appear  with
              or without a following time. The difference is that
              a delivery attempt  is  forced  for  each  message,
              whereas  with  -q  only  those  addresses that have
              passed their retry times are tried.

       -qff   This option operates like -qf and may  appear  with
              or without a following time. The difference is that
              any frozen messages are automatically  thawed,  and
              delivery is attempted for them.

       -qfl   This  option operates like -ql, and may appear with
              or without a following time. The difference is that
              a  delivery  attempt  is  forced  for each message,
              whereas with -ql only those  local  addresses  that
              have passed their retry times are tried.

       -qffl  This  option operates like -qfl and may appear with
              or without a following time. The difference is that
              any  frozen messages are auto-matically thawed, and
              delivery is attempted for any  local  addresses  in
              them.

       -ql    This  option  operates like -q, and may appear with
              or without a following time. The difference is that
              only  local  addresses are considered for delivery.
              Note  that  -ql  cannot  detect  apparently  remote
              addresses  that  actually turn out to be local when
              their domains get fully qualified.

       -qq... If any command line  option  starting  with  -q  is
              specified  with an additional q (for example, -qqf)
              then all the resulting queue runs are done  in  two
              stages. In the first stage, the queue is scanned as
              if  the  queue_smtp_domains  option  matched  every
              domain.  This causes remote addresses to be routed,
              but no transportation to be done. The database that
              remembers  which  messages are waiting for specific
              hosts is updated, as if delivery to those hosts had
              been  deferred.  After  this is complete, a second,
              normal queue scan happens,  and  normal  directing,
              routing,  and  delivery takes place. Messages which
              are routed to the same host should mostly be deliv-
              ered  down  a single SMTP connection because of the
              hints that were set up during the first queue scan.
              This  option  may be useful for hosts that are con-
              nected to the Internet intermittently.

       -qR <string>
              This option is synonymous with -R. It  is  provided
              for sendmail compatibility.

       -qRf <string>
              This option is synonymous with -Rf.

       -R <string>
              The  white  space  between  -R  and  the  string is
              optional. This option is similar to -q with no time
              value,  except  that, when scanning the messages on
              the queue, Exim processes only those that  have  at
              least  one undelivered address containing the given
              string, which is checked in a case-independent way.
              However,  once  a  message  is  selected,  all  its
              addresses are processed. For the first message con-
              taining  a  matching  address,  Exim  overrides any
              retry information and forces  a  delivery  attempt.
              This  makes it straightforward to initiate delivery
              for all messages to a given domain after a host has
              been down for some time. When the SMTP command ETRN
              is  permitted  (see  the  smtp_etrn  options),  its
              effect is to run Exim with the -R option.

       -Rf <string>
              This option acts like -R, but forces a delivery for
              every matching non-frozen  message,  not  just  the
              first  one. White space is required between -Rf and
              the string.

       -Rff <string>
              This option acts  like  -Rf,  but  also  thaws  any
              frozen messages it encounters.

       -r     This is a documented (for sendmail) obsolete alter-
              native name for -f.

       -t     When Exim is receiving  a  locally-generated,  non-
              SMTP  message  on  the current input, the -t option
              causes the recipients of the message to be obtained
              from  the To:, Cc:, and Bcc: headers in the message
              instead  of  from  the   command   arguments.   The
              addresses  are extracted before any rewriting takes
              places.

              If there are in fact any  arguments,  they  specify
              addresses  to which the message is not to be deliv-
              ered. That is, the argument addresses  are  removed
              from the recipients list obtained from the headers.
              This is compatible with Smail 3 and  in  accordance
              with the documented behaviour of Sendmail. However,
              it has been  reported  that  in  some  versions  at
              least,  Sendmail  adds  argument addresses to those
              obtained from the headers.  Exim  can  be  made  to
              behave   in   this   way   by  setting  the  option
              extract_addresses_remove_arguments false.

              If a Bcc: header is present, it is removed from the
              message  unless  there  is no To: or Cc: header, in
              which case a Bcc: header with no data  is  created,
              in accordance with RFC 822.

       -v     This  option has exactly the same effect as -d1; it
              causes Exim to be standard error file. In  particu-
              lar,  if  an SMTP connection is made, the SMTP dia-
              logue is shown.

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

SEE ALSO
       There   is   extensive    documentation    available    in
       /usr/share/doc/exim and in the info system regarding exim.
       Debian users please be sure to have the  exim-doc  package
       installed.

AUTHOR
       This  manual page was stitched together by Christoph Lame-
       ter, <clameter@debian.org>, from the  original  documenta-
       tion   coming   with  the  sourcepackage  for  the  Debian
       GNU/Linux  system,  cleaned  up  a  little  by  Tim  Cutts
       <timc@chiark.greenend.org.uk>,  and  updated by Mark Baker
       <mark@mnb.org.uk>. (It's quite  likely  got  out  of  date
       again by the time you read it though; the definitive docu-
       mentation is in /usr/share/doc/exim.)



                                                          exim(m)