COHERENT manpages

This page displays the COHERENT manpage for config [File that configures smail].

List of available manpages
Index


config -- System Administration

File that configures smail
/usr/lib/mail/config

File  /usr/lib/mail/config holds  instructions that  configure  the mailer-
delivery program smail. You can  modify this file to supplement, modify, or
override smail's default configuration.

Please   note   that   this  file   is   in   no   way   related  to   file
/usr/lib/uucp/config,  which  can  be used  to  configure  the Taylor  UUCP
system.  For  details on how to  configure UUCP, see the  Lexicon entry for
/usr/lib/mail/config,  which  immediately   follows  this  article  in  the
Lexicon.

The  rest of  this article  describes  config, the  attributes you  can set
within it, and how the setting of each attribute affects smail's behavior.

Suite of Configuration Files

To begin,  your machine can  have two smail configuration  files: a primary
one,  and a  secondary  one.  Either  can  reset the  values  of any  smail
variable; for  example, each  can define names  for the local  host, define
where  files reside,  or set the  values for  site-definable message-header
fields.   You are  not  obliged to  use  a configuration  file: if  smail's
default configuration  suits you, then  you can rename or  move the primary
configuration file so  it will no longer be read.   Likewise, if you have a
primary configuration file, you are not obliged to have a secondary one.

smail  reads  the  primary configuration  file  first,  then the  secondary
configuration  file.  The  values in the  secondary configuration  file can
override those  set in  the primary  file; the primary  file, in  turn, can
redefine  the name  of the  secondary configuration  file.  This  gives you
great flexibility to configure smail to suit your needs and preferences.

Format of a Configuration File

A configuration  file consists of instructions;  each instruction, in turn,
sets an  attribute to a  value.  Attributes come in  three flavors: string,
numeric, and Boolean.  To set a variable to a  string or numeric value, use
the form:

    variable = value

For example, the instructions

    postmaster = tron@glotz.uucp
    domains = wall.com
    spool_mode = 0664

set  the  default  address  for  the  postmaster  to  tron@glotz.uucp,  the
attribute  domains to  wall.com,  and the  permissions for  spool files  to
permit the file's owner and group to write into it.

Boolean  attributes are  either turned  off  or turned  on.  To  turn on  a
Boolean attribute, use the notation:

    +boolean-attribute

To turn it off, use the notation:

    -boolean-attribute

You can also use the notation  -attribute to set a numeric variable to zero
and to  un-set a value for  a string variable.  For  example, the following
instructions disable the use of  an external transport file and tells smail
that configuration files are not optional:

    -transport_file
    +require_configs

smail  ignores  blanks   lines  within  a  configuration  file.   If  smail
encounters a `#' character, it ignores  that character plus all text to its
right; thus, you can use this character to introduce a comment.

If a  line begins  with white  space, smail assumes  that it  continues the
previous line;  in this way, you  can extend an instruction  over more than
one line.  For example, the following instructions set the Received: header
field to use for messages to a multi-line value, and also set the name of a
user that has few access capabilities:

    # Use a verbose format for the Received: header field
    received_field = "Received: by $primary_name
        with smail ($version_string)
        id <$message_id@$primary_name); $date"

    nobody = unknown # comment: user "unknown" has few access capabilities

smail Attributes

The  following names  the attributes  that you can  set in  a configuration
file.   Each attribute's  name  is followed  by  its type  and its  default
setting in parentheses.

auth_domains (string, off)
     Name the  domains for which  your host is  considered authoritative --
     i.e., the  domains that your  host knows how to  access directly.  The
     domain names must be separated  by a single colon character `:'.  Mail
     addressed to  any domain named in  this list will not  be forwarded to
     the smart host (described below).

auto_mkdir (Boolean, on)
     If  set,  smail  creates all  directories  required  for spooling  and
     logging  if  they do  not  exist.  However,  smail  will never  create
     required parent directories.

auto_mkdir_mode (integer, 0755)
     When smail  creates a  directory, give  it this permission  mask.  For
     details on what the numbers in a permission mask mean, see the Lexicon
     entry for chmod.

console (string, /dev/console)
     Name the  console device.   This device  is used as  a last  resort in
     attempting to write panic messages.

copying_file (string, COPYING)
     The path  name to file COPYING, which  states your distribution rights
     and details  the warranty  information from  the authors of  smail. If
     this  does  not begin  with  `/',  smail assumes  that  it  is in  the
     directory named by attribute smail_lib_dir (described below).

date_field (string, Date: $spool_date)
     smail  expands this  string to  form field Date:  in a  mail message's
     header, should the header not already contain such a field.

delivery_mode (string, foreground)
     The default  mode for  delivering new  mail.  This can  be one  of the
     following values:

     foreground
          Immediate delivery via the process that received the message.
     background
          Immediate  delivery  via  a  child  process.   The  process  that
          received the message exits immediately.
     queued
          Do not attempt delivery until a later queue run.

director_file (string, directors)
     This names  the file that configures smail's  directors.  If this does
     not begin with `/', smail assumes that it is in the directory named by
     variable smail_lib_dir (described below).

domains (string)
     This sets  the domain  name that  smail writes into  the header  of an
     outgoing  mail message.   It is  computed at  run time.   If attribute
     visible_name is turned  off, then smail sets it to  the first name set
     by attribute hostnames. If hostnames is not set, then smail constructs
     the domain-name  host names of the  form hostname.domain.  hostname is
     set  in file  /etc/uucpname  domain is  a  name set  by the  attribute
     domains-- smail  uses each entry  in domains, in order,  to create the
     hostnames value.

     For sites  in the UUCP zone,  domains often will merely  be set to the
     string uucp.  Finally, you can  use the variable  $visible_name within
     the string to which you set this attribute.

     For compatibility  with earlier versions of  smail, this attribute can
     also be called visible_domains.

error_copy_postmaster (Boolean, off)
     Send the  postmaster a copy  of every error  message.  Normally, smail
     sends  the  postmaster only  the  errors that  appear  to result  from
     administrator mistakes.   If you set  this attribute, then  smail also
     sends the  postmaster the  errors that are  returned to the  sender or
     that are mailed to owners of mailing lists.

fnlock_interval (number, 3)
     Set  the  sleep  interval between  retries  while  attempting to  lock
     mailbox files with a lockfile-based locking protocol.  Under COHERENT,
     the function sleep() has a one-second granularity; therefore, you must
     this value to at least two.

fnlock_mode (number, 0666)
     Create mailbox lock files.

fnlock_retries (number, five)
     The number of times smail attempts to lock mailbox files using a file-
     based locking protocol.

from_field (string)
     smail expands  this string to form  the fields From: and  Sender: in a
     mail  message's header.   The expanded string  must begin  with From:,
     which may be replaced by other strings to form an actual header field.
     The default value is:

         From: $sender${if def:sender_name: ($sender_name)}

grades (string)
     Set the  grade (or priority)  characters that correspond  to values of
     the Precedence:  field in a mail message's  header.  The fields within
     the  string are  separated by `:';  precedence strings  alternate with
     grade  characters.   Numbers  have  higher  priority  than  upper-case
     letters,  which in  turn are  higher  than lower-case  letters.  Lower
     numbers are higher in priority  than higher numbers, and the same goes
     for letters  lower in the  alphabet.  Grades in the  range `a' through
     `m' only  return an  error message  and header to  the sender  when an
     error occurs.   Grades in the range `n' through  `z' return nothing to
     the sender should an  error occur.  The precedence names recognized by
     many  BSD sendmail  configurations are  special-delivery, first-class,
     and junk. Others  are useful mainly for getting mail  out of the local
     machine or  for communicating with other machines that  run smail in a
     similar configuration.  The grade character for a message is available
     in string expansions as the variable $grade. The default setting is:

         special-delivery:9:air-mail:A:first-class:C:bulk:a:junk:n

hit_table_len (number, 241)
     The  length  of  the  internal-address  ``hit'' table.   smail  hashes
     addresses into  this table to prevent multiple  deliveries to the same
     address.  Longer tables speed address hashing, at the price of a small
     increase in the amount of memory  used.  NB, this value may be ignored
     in the future.

host_lock_timeout (numeric, 30)
     Set the  time during which smail  will attempt to lock  a host's retry
     file; this file is used to guarantee exclusive delivery to that thost.
     If smail  cannot lock the  file within this  time, then it  leaves the
     message in the queue, to be delivered later.

     A number  with no suffix indicates seconds.  Suffixes  can be added to
     indicate a  time multiplier: m  indicates minutes, h  indicates hours,
     and d indicates days.

hostnames (string)
hostname (string)
     A  colon-separated  list of  names  for the  local  host.  This  list,
     together  with  the attributes  uucp_host  and more_hostnames,  should
     represent all possible names for the local host.  Note that smail does
     not recognize  the name hostname as  a name for the  local host unless
     that name is also set by one of the other hostname variables.  If your
     local host is in more than  one domain or can gateway to more than one
     level of  domains, then this  attribute should represent  those names.
     For a host  in a registered domain in the  UUCP zone, which is also in
     the maps distributed over USENET, localhost.uucp should also be in the
     list.  The  first value in  hostnames is used internally  as a special
     ``primary name'' for the local host.

     Under  COHERENT,  this  attribute is  turned  off  by default.   smail
     computes the  value of hostnames by pairing the  local host's name, as
     set in file /etc/uucpname,  with every value set by attribute domains.
     smail re-computes the default value each time you run it.

lock_by_name (Boolean, on)
     If this  variable is  turned on,  locking of the  input spool  file is
     always  based  on lock  files.   Otherwise,  an i-node--based  locking
     mechanism may  be used,  such as the  BSD function flock()  or lockf()
     under System V  or COHERENT.  I-node--based locking is more efficient,
     if  available.  However,  lock files  can be  easily created  by shell
     scripts, which may be advantageous under some circumstances.

lock_mode (number, 0444)

log_mode (number, 0664)
     The mode assigned to newly created mail-system log files.

logfile (string, /usr/spool/smail/log/logfile)
     The  file  into  which smail  writes  transaction  messages and  error
     messages.  If this file does not exist, smail creates it with the mode
     set by variable log_mode.

max_hop_count (number, 20)
     If the hop count for a message equals or exceeds this number, then any
     attempt at remote delivery  results in an error message being returned
     to the  sender.  smail uses this mechanism  to prevent infinite loops.
     To set the hop count  for a specific message, use smail's command-line
     option -h.  Otherwise, smail computes it from  the number of Received:
     fields in the message header.

max_load_ave (number)
     For systems  on which a  load average can be  computed, this attribute
     sets the maximum load average at which mail will be delivered.  If the
     load average exceeds this number, smail saves incoming mail within the
     input  spool  directory  for  delivery  later.  Under  COHERENT,  this
     attribute  is not  set;  therefore, smail  does not  compute the  load
     average, and always attempts to deliver mail.

max_message_size (number, 100k)
     Set the  maximum size of  a message.  smail  truncates messages longer
     than  this.  (This  is not  yet implemented;  at present,   smail sets
     nolimit on the size of a message.)

message_buf_size (number, 100k)
     The size  of the  internal buffer  that smail uses  to read  and write
     messages.  The  larger the value of this buffer,  the fewer the number
     of  calls to  read() are  required  to read  the message,  because the
     entire message  is always  kept in memory.   The default value  is 100
     kilobytes (100k).

message_id_field (string)
     smail expands  this attribute to form the field  Message-Id: in a mail
     message's header.  This will be used  if such a field does not already
     exist in the header.  The default value is:

         Message-Id: <$message_id@$primary_name>

message_log_mode (number, 0644)
     Each  message has  associated with  it a unique  file that  contains a
     transaction log  for that message.   This number sets  the permissions
     that smail gives this file when it creates it.

method_dir (string, methods)
     If a method  attribute for a router does not  specify a path name that
     begins with  `/', smail prefixes this directory onto  the path to form
     the complete  path for the method  file.  If this does  not begin with
     `/',  smail assumes  that  it is  in  the directory  set by  attribute
     smail_lib_dir (described  below).  See  the description of  the router
     file for more information on method files.

more_hostnames (string, off)
     A  colon-separated  list  of host  names.   These  host  names are  in
     addition  to  any names  that  smail computed  from  the domains  when
     forming the  value of the  variable hostnames. Thus, it  is useful for
     specifying names  that are not  formed from the computed  name for the
     host.

     Attribute more_hostnames can  also be called gateway_names, because it
     is often used  to indicate the list of domains  for which this machine
     is a gateway.

nobody (string, nobody)
     The default  user.  This variables defines permissions  to use when no
     other  user  is  specified.   Also,  smail  uses  this  user  in  some
     conditions when  it is  not certain  whether a set  of actions  can be
     trusted, if  performed under  other, potentially more  powerful users.
     This should  reference a login identifier that has  little power to do
     harm or access protected files.

paniclog (string, /usr/spool/smail/log/paniclog)
     The name of the file onto which smail appends panic messages and other
     important error messages.  If  this file does not exist, smail creates
     it  and assigns  it the  permissions  specified by  variable log_mode.
     smail records in this  log all errors that require human intervention,
     such  as  configuration errors  or  directory-permission errors,  that
     prevent mail spooling or delivery.

     When a configuration error occurs, smail usually moves the mail into a
     special  error  directory  under  the  input  spool  directory.   This
     prevents smail from again attempting to delivery the message until the
     configuration error has been corrected.

     Thus,  you should  regularly check  both the panic  log and  the error
     directory, especially  after you  have changed a  configuration.  When
     the problem has been resolved, you can move the diverted messages back
     into  the spool  directory, and  smail will  again attempt  to deliver
     them.

postmaster_address (string, root)
postmaster (string, root)
     This attribute  sets the  default address  of the postmaster.   If the
     address Postmaster is not resolved by any of the configured directors,
     smail then uses this address.

qualify_file (string, qualify)
     This variable names the file that contains the host-name qualification
     information.  If  this does not begin with `/',  smail assumes that it
     is  a   subdirectory  of  the  directory   defined  by  the  attribute
     smail_lib_dir.

queue_only (Boolean, off)
     If  this  flag is  set,  then  smail does  not  deliver incoming  mail
     immediately.  It  only attempts delivery when  it explicitly processes
     the input queue, such as when you invoke it with command-line option -
     q.

received_field (string)
     smail  expands this  string  to form  the  field Received:  in a  mail
     message's  header.   It inserts  this  field into  the  header if  the
     ``received'' attribute  is not explicitly turned  off for a transport.
     The default value for received_field is:

         received_field="Received: \
             ${if def:sender_host\
                  {from $sender_host by $primary_name\
                   ${if def:sender_proto: with $sender_proto}\
                   \n\t(Smail$version #$compile_num) }\
             else {by $primary_name ${if def:sender_proto:with $sender_proto }\
                   (Smail$version #$compile_num)\n\t}}\
             id $message_id; $spool_date"

require_configs (Boolean, off)
     If  this option  is turned  off  or is  not set,  then smail  does not
     require its configuration files to exist.  This applies to the primary
     and  secondary  configuration files,  and  the  director, router,  and
     transport      files      (respectively,      /usr/lib/mail/directors,
     /usr/lib/mail/routers, and /usr/lib/mail/transports).  If one of these
     files does not exist, smail ignores it and instead uses its internally
     compiled configuration.  If, however, you turn on this attribute, then
     if smail cannot find a configuration file whose file name is not null,
     it displays a panic message and exits.

     To set  a configuration  file's name to  null, turn off  the attribute
     that names  it.  For example, to  set the router file's  name to null,
     use the attribute -router.

retry_file (string, retry)
     This names  the file that contains  the retry-control information.  If
     this  name does  not  begin with  `/',  smail assumes  that  it is  in
     directory named by variable smail_lib_dir (described below).

retry_duration (interval, 5d)
     This specifies the default period of time for which smail will attempt
     to deliver a message.  If  the message cannot be delivered within this
     period  of  time,  smail assumes  it  is  undeliverable,  and sends  a
     ``bounce'' message either to the sender or to the list's owner, should
     there be  one.  A number  with no suffix  indicates seconds.  Suffices
     can be  added to  indicate a time  multiplier: m indicates  minutes, h
     indicates hours, and d indicates days.  Under COHERENT, the default is
     five days.

retry_interval (interval, 10m)
     If smail  cannot connect to a  given host, it will  wait at least this
     amount of  time before it  tries again.  This applies  to all messages
     routed to the host in question, to help process a queue efficiently.

return_path_field (string, Return-Path: <$sender>)
     smail  expands  this  string  into  field  Return-Path: in  the  mail-
     message's header.  It inserts  this field into the header if attribute
     return_path   is   turned   on  for   a   given   transport  in   file
     /usr/lib/mail/transports.

router_file (string, routers)
     This attribute  names the file that  contains the router-configuration
     information.  If  this does not begin with `/',  smail assumes that it
     is  in  the  directory  named  by attribute  smail_lib_dir  (described
     below).

second_config_file (string, none)
     This  names   the  secondary  configuration  file.    The  section  on
     configuration  files, above,  describes how this  file relates  to the
     primary configuration  file.  If this file's name  does not begin with
     `/',  smail assumes  that it  is in the  directory named  by attribute
     smail_lib_dir (described below).

     This  is  primarily  useful  in  networks  whose machines  share  file
     systems.   In particular, the  attributes smart_user,  smart_path, and
     smart_transport are set in the secondary configuration file.

sender_env_variable (string, not set)
     This attribute  names the environmental variable  that, in turn, gives
     the  name of  the mail  message's sender.  Normally,  the name  of the
     sender is determined from her login identifier, or by checking calling
     process's real-user identifier.  If sender_env_variable is set and the
     environmental variable  it names exists, then smail  uses that name by
     default.  For example, if the line

         sender_env_variable=BOGUS_NAME

     appears in /usr/lib/mail/config,  and if variable BOGUS_NAME is set in
     the  user's environment,  then smail  uses that  name to  identify the
     sender,  instead  of the  name  for  that user  that  appears in  file
     /etc/passwd.

smail (string, /bin/smail)
     This attribute  names the  smail binary.   smail uses this  to re-exec
     itself when a major configuration change has been detected, or to exec
     smail when  delivering error  messages.  If  this name does  not begin
     with  `/', smail  assumes that  this binary is  kept in  the directory
     named by attribute smail_lib_dir.

smail_lib_dir (string, /usr/lib/mail)
     This  attribute gives  the full  path name of  the directory  in which
     smail by default seeks its configuration files.

smail_util_dir (string, /usr/lib/mail)
     This attribute  gives the full  path name of the  directory that holds
     smail's utilities, in particular the utilities mkaliases and mkdbm.

smart_path (string, not set)
     This attribute  defines the  value that  the router smarthost  uses by
     default for its path attribute.  It  gives the path to a machine whose
     routing data  base is more complete  than the one on  your local host.
     By default,  this is not  set; however, if  you using UUCP  to receive
     mail service  from another system,  you must set this  variable to the
     name of that system.  For details, see the Lexicon entry for routers.

smart_transport (string, not set)
     This attribute defines the value that the smarthost router driver uses
     by default  for its attribute transport. For  details, see the Lexicon
     entry for routers.

smart_user (string, not set)
     This attribute defines the value that the smarthost router driver uses
     by default for its  attribute smart_user. For details, see the Lexicon
     entry for routers.

smtp_accept_max (number, 20)
     This attribute sets the  maximum number of SMTP connections that smail
     will  process at  any one  time.  This  is for  use with  SMTP daemons
     started with  smail's command-line option -bd,  or through the command
     smtpd. If  smail receives a  a connection request when  this number of
     SMTP-connection children  have already  been forked, smail  shuts down
     the connection  with SMTP  message 421.  If  this attribute is  set to
     zero, then the number of SMTP connections is unlimited.

smtp_accept_queue (number, 5)
     If this  number of SMTP  connection processes is  exceeded, then smail
     accepts  additional connections  but queues  their messages  for later
     processing.   When the  number of  current connection  processes drops
     below this number, smail  resumes the immediate processing of mail (if
     attribute  delivery_mode  is  set  to  foreground or  background.)  If
     delivery_mode  is set  to zero,  then smail  will always  process mail
     immediately,  regardless of  the number  SMTP  connections that  it is
     handling.   Note that  the value of  smtp_accept_queue should  be less
     than  the value  of smtp_accept_max.  Setting smtp_accept_max  to zero
     prevents smtp_accept_queue from working correctly in all cases.

smtp_banner (string)
     smail expands  this string to  the SMTP startup  banner.  smail's SMTP
     server writes this banner  when it accepts a connection request.  Each
     line of this  message is automatically preceded by identification code
     ``220''; newlines are correctly changed into a carriage-return newline
     sequence.  The default value for smtp_banner is:

         $primary_name Smail$version #$compile_num ready at $date

smtp_debug (Boolean, on)
     This Boolean  variable controls the meaning of  the DEBUG command when
     receiving  SMTP commands.   If  this variable  is on,  then the  DEBUG
     command  (with an  optional  debugging level)  sets  debugging to  the
     specified  level, or  to level  1  if no  level was  specified.  smail
     writes the debugging output to the SMTP connection.

smtp_receive_command_timeout (interval, 5m)
     This  attribute sets  the time  that smail's SMTP  daemon waits  for a
     receiver command after it displays its prompt.  If the daemon does not
     receive  the  command   within  this  interval,  it  closes  down  the
     connection and exits.  The default is 5m, that is, five minutes.

smtp_receive_message_timeout (interval, 2h)
     This  attribute sets  the  time that  smail  SMTP daemon  waits for  a
     message after it has displayed its prompt:

         354 Enter mail

     If it  does not  receive the entire  message within this  interval, it
     removes the message, closes the connection, and exits.  The default is
     2h, that is, two hours.

spool_dirs (string, /usr/spool/smail)
     This  sets  the  directory  or  directories  into which  smail  spools
     incoming mail.   If it names more than  one directory, the directories
     must be separated by a colon  `:'.  If smail cannot write a message to
     the first directory (say, due to permission problems, file-system-full
     errors,  etc.),  it  tries   to  write  the  message  into  the  other
     directories, one  after another, until  it either succeeds  in writing
     the message  or runs out of directories to  try.  Each spool directory
     is expected to have the following writable subdirectories:

          input          The actual spool files
          lock           Temporary lock files
          msglog         Temporary per-message transaction logs and audit trails
          error          Messages failing from problems requiring human intervention

spool_grade (character, C)
     This attribute  gives the default grade for mail  messages.  It can be
     overridden by  a Precedence: field in a  message's header.  smail uses
     the grade to sort messages in the input spool directory.  The grade is
     also available  in string expansions  as the variable  $grade. See the
     description of the attribute grades, above, for more information.

spool_mode (number, 0440)
     This attribute sets the permissions smail gives to spooled files.

transport_file (string, transports)
     This attribute  names the file that  holds the transport-configuration
     information.  If the directory  does not begin with `/', smail assumes
     it is in the directory named by the attribute smail_lib_dir (described
     above).

trusted_users (string, off)
     This  names the  users  who are  trusted  to specify  a  sender for  a
     message.   Users who  are not  in this list  cannot specify  a Sender:
     field in  a mail header; if  they do, smail removes  it.  If a trusted
     user specifies a From: header field, then smail also creates a Sender:
     field that names the real user who submitted the message.

     In general,  this attribute should  name every user  under whom remote
     mail is received and sent to  smail. If this list is turned off, using
     the form -trusted, then every user is trusted.

     NB,  smail uses  the real  user identifier to  verify a  trusted user.
     However, the program uucico runs under the real user identifier of the
     user who  invoked it -- and  any user can invoke  uucico. smail cannot
     distinguish this  case from  any other, and  thus will do  the ``wrong
     thing'' in  this instance.  Under  COHERENT, this attribute  is turned
     off by default to avoid this problem.

trusted_groups (string, off)
     This attribute  names the  user groups that  are trusted to  specify a
     sender of a message.  smail checks a user's effective group identifier
     to ensure that  he really is a member of  a trusted group.  Thus, were
     smail a  setgid program,  then this  string would be  of no  value and
     should be turned off.  However, if  smail is not set gid (as it is not
     under  COHERENT), then  programs that  invoke  smail under  a specific
     effective gid,  not a specific  real uid, can  be detected and  can be
     properly treated as trusted.

uucp_name (string)
     This attribute gives  the name of your local host.   It is computed at
     run-time.  This name is available in string expansions as the variable
     $uucp_name smail also uses it in the ``remote from hostname''   suffix
     to ``From''  lines for mail  being delivered to  remote machines, when
     the from attribute is turned on for a transport.

visible_domains (string)
     This is a synonym for attribute domains.

See Also

Administering COHERENT,
directors,
mail [overview],
routers,
smail,
transports

Notes

Copyright © 1987, 1988 Ronald S. Karr and Landon Curt Noll.  Copyright
© 1992 Ronald S. Karr.

For  details on  the distribution rights  and restrictions  associated with
this software, see file COPYING, which  is included with the source code to
the smail system; or type the command: smail -bc.