*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->Linux man pages -> exim (8)              
Title
Content
Arch
Section
 

exim(8)

Contents


NAME    [Toc]    [Back]

       exim - Mail Transfer Agent

SYNOPSIS    [Toc]    [Back]

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

DESCRIPTION    [Toc]    [Back]

       Exim  is  a  mail  transport agent (MTA) developed at the University 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 character, 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
       compatible  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 command of that name in one of the standard
       libraries, symbolically 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 reading 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 reading 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  compatibility  with	smail.
       The -q option causes a single queue-runner process to be started.

LIMITATIONS    [Toc]    [Back]

       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 incompatibilities.
 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    [Toc]    [Back]
	      Exim uses file names that are longer than 14 characters.

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

       Domains required    [Toc]    [Back]
	      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 unqualified
	      addresses are acceptable.

       Transports    [Toc]    [Back]
	      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    [Toc]    [Back]

       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 configuration 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 likelihood 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 specific idents, can
       be  locked  out,  and  incoming SMTP messages 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 control 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	facility. 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 filter mechanism or through
       multiple .forward files.

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

       A  queue  run can be manually started to deliver just a particular 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  messages  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  information  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    [Toc]    [Back]

       When Exim receives a message, it writes two files in its  spool	directory.
   The first contains the envelope information, 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
       recipients 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 completely	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
       deliveries.

TRUSTED AND ADMIN USERS    [Toc]    [Back]

       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    [Toc]    [Back]

       Exim's command options are as follows:

       -bd    Run  Exim  as a daemon, awaiting incoming SMTP connections. 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 commonly, 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.  Further	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 version 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  output.  Comments	as  to
	      what  is	going on are written to the standard error file. These
	      include lines beginning 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 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 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 concept  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  conflicting
	      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 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_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 <[email protected]k>
		 [email protected]k
		 <other addresses>

	      The first line contains the amount of time the message has  been
	      on  the queue (in this case 25 minutes), 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 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  expanded  into  several
	      addresses  via  an  alias  or forward file, the original is displayed
 with a 'D' only when deliveries  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(es)  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
  useful  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  undelivered  toplevel
  addresses for each message displayed. Addresses generated
	      by aliasing or forwarding 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 directories where log files and daemon
	      pid files are written 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, 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 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 transports.

       -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 values 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 argument, 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 example '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, where messages  have
	      been received from some external source by an alternative transport
 mechanism. It causes Exim to accept one or more messages by
	      reading	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; otherwise 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 messages 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 daemon, in which case  the  standard
	      input  is  the  connected 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 commands. 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 succeed.

	      If any of the directors or routers in  the  configuration  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.  Without it, the sender is assumed to be the calling user
	      at the default qualifying domain.

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

       -bv    Verify the addresses that are given as the arguments 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_verify 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 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 succeed.

	      If any of the directors or routers in  the  configuration  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.  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 <filename>
	      Read the runtime configuration from the given  file  instead  of
	      from  the  default file specified by the CONFIGURE_FILE compiletime
 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 exposure. 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 configuration 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 definitions 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 privilege. 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. Whitespace 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 written 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 allocation 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 nonSMTP
 message.

       -ex    There are a number of sendmail options starting with  -oe  which
	      seem  to	be called by various programs 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 permitted 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 configured 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 message 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 purposes 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 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, nonSMTP
 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 message 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 message. 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 message 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 message 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 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
	      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 messages. 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 message 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 delivery 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 status 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
	      successfully 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 batching).

       -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 'foreground'  (synchronous)
  delivery  when  Exim has accepted a locally-generated
	      message.	For the daemon it is exactly the same as -odb.	For  a
	      single message received on the standard input, if the protection
	      regime permits it (see chapter 44), Exim converts the  reception
	      process  into  a	delivery process. 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	delivery.  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 message, 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 number of messages for the same host will  get  sent  in  a
	      single  SMTP connection. The queue_smtp configuration 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 message. 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, specifies that a
	      dot on a line by itself should not terminate an  incoming,  nonSMTP
 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
	      normally 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 conjunction 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	daemon_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 interpreter 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 interpreter 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 (inactive) 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 proceeding. 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  unpredictable	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	queuerunning
  process	at intervals specified by the given time value
	      (whose format 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 minutes. 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/Makefile.  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 delivered 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 connected 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 containing 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  alternative  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 delivered. 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 particular, if an SMTP  connection
	      is made, the SMTP dialogue 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 command.  Exim ignores this option.

SEE ALSO    [Toc]    [Back]

      
      
       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    [Toc]    [Back]

       This manual page was stitched together by  Christoph  Lameter,  <clame[email protected]>,  from the original documentation coming with the sourcepackage
 for the Debian GNU/Linux system, cleaned up a little  by  Tim
       Cutts   <[email protected]>,	and   updated  by  Mark  Baker
       <[email protected]>. (It's quite likely got out of date again by the time
       you    read   it   though;   the   definitive   documentation   is   in
       /usr/share/doc/exim.)



								       exim(8)
[ Back ]
 Similar pages
Name OS Title
sendmail OpenBSD an electronic mail transport agent
sendmail FreeBSD an electronic mail transport agent
sendmail IRIX an electronic mail transport agent
hoststat OpenBSD an electronic mail transport agent
purgestat OpenBSD an electronic mail transport agent
readmail HP-UX read mail from a mail folder or incoming mailbox
mail HP-UX send mail to users or read mail
mail_att IRIX send mail to users or read mail
rmail HP-UX send mail to users or read mail
ssh-agent OpenBSD authentication agent
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service