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

  man pages->Tru64 Unix man pages -> sendmail.m4 (8)              



NAME    [Toc]    [Back]

       sendmail.m4  - Introduction to using m4 macros to create a
       sendmail.cf configuration file

OPERANDS    [Toc]    [Back]

       The following list provides definitions  of  the  operands
       used  in  the configuration files.  The operands appear in
       the recommended usage order.   This  macro  specifies  the
       name  of the next-highest domain above your own (yyy.xxx).
       It is used to determine which hosts you can send  mail  to
       that  might be close enough to be reached directly, and to
       figure out where MyDomains are located.  This macro specifies
  the  list of all the domains under ParentDomain that
       are aliases for your own.  It is a list of  single  tokens
       separated  with blanks.  These are qualified under ParentDomain
 in actual use.  You must include  the  single-token
       component  of  MyDomain.  For example, if the ParentDomain
       is ECD.COM and MyDomain is AP.ECD.COM, then MyDomains must
       include  at  least  the token AP.  This operand is used in
       conjunction with the _MailHub operand.  This macro  specifies
  the  fully-qualified domain that you are in. It must
       end in _ParentDomain.

              If you set both MyDomain and  ParentDomain  to  the
              string LOCAL, sendmail assumes that you do not have
              a domain, but instead  use  single-token  hostnames
              (which  can  include dashes and underscores but not
              dots) and that you are using /etc/hosts or NIS, but
              not BIND.  This macro is used to initialize the $=w
              operand.  If your host is known  by  several  names
              inside  of  _MyDomain, you must put the first token
              of all names (optionally including the first  token
              of your /bin/hostname) into this list.

              In  a  TruCluster  Server  cluster, you should also
              specify the cluster alias and the unqualified hostnames
  of  all  the  members  of the cluster.  This
              macro specifies the domain name (@DOMAIN)  appended
              to  any  mail  address that leaves the local domain
              and does not have a domain  name  in  its  address.
              (For  example,  local  user  names  do not have the
              domain name in the address.)

              Usually, _MyDomain  is  specified;  therefore,  the
              mail  leaves  the domain with a host name (such as,
              wicked@AP.ECD.COM) even though  there  is  no  such

              If you do this, you need an MX RR at the root ("@")
              of the domain that  points  to  some  set  of  mail
              servers  whose  MyDomain's  variables  include your
              domain.  This is irrelevant if you are using  LOCAL
              for  MyDomain  and ParentDomain.  Use this macro if
              you are using rdist, or  NIS  to  ensure  that  all
              aliases  on  all  machines in your local domain are
              equivalent.  (They do not need  to  have  the  same
              values, but the same alias names must be present on
              all machines.)


              It is recommended that you use this  macro,  unless
              you have specific reasons for not using it.

              If  you  use  this macro, mail sent to @MyDomain is
              treated as local mail, which means that any host in
              the  domain  can strip off the @MyDomain and search
              its aliases database to decide what to do with  the

              Mail  sent  to other hosts in the local domain with
              MailCluster  turned  on  will  have  the   hostname
              (rather  than  ExportedName)  appended to the username.
  Because it is local mail, you know  it  came
              from  some host in the local domain and you presumably
 want to know which host.


              Setting ExportedName to  MyDomain  and  turning  on
              MailCluster,  creates an environment where all mail
              names are equivalent on all hosts  in  the  domain.
              This  simplifies  the address formats for all local
              mail.  You use this macro if  your  machine  recognizes
  mail  to  user@localdomain and therefore can
              access anyone's mailbox (usually through an aliases
              file containing the real mailboxes for everyone who
              might receive such mail).  A Mail  Hub  treats  all
              mail to user@localdomain as local mail by using the
              aliases file.

              This is different than a Mail Cluster, where  every
              host acts as a Mail Hub (by virtue of everyone having
 the same "all  knowing"  aliases  file).   This
              macro  specifies  the mail spool location (which is
              usually /var/spool/mqueue).  Note that there is  no
              advantage to using /usr/spool/mail for this if that
              is a symlink to /var/spool/mail.  Using the correct
              names  and  avoiding symlinks is recommended.  This
              macro specifies the list of  user  names  that  are
              allowed  to  run  sendmail  with the -f option that
              sets the envelope sender address.  There are  users
              that have a legitimate need to use the -f; however,
              for security reasons, it is recommended  that  only
              those  users  be  allowed  that option.  This macro
              specifies the list of users that have the @hostname
              of  the  sending host added to their From: line, if
              they send mail to some  other  host  in  the  local
              domain.   This procedure is performed regardless of
              the MailCluster and MailHub.  This macro  sets  the
              unqualified hostname.

              This  macro is not required. Under Tru64 UNIX sendmail
 it is recommended that you  do  not  use  this
              operand.  This macro enables your machine to recognize
  POP  customers  as  username.POP.   This   is
              preferable  to  HostPOP.  as shown in the following
              example. If you use this  macro,  you  must  format
              your aliases as follows: username:username.POP

              Instead  of  the  following  format: username:username@POP

              Be aware that older versions of the popaka  utility
              create  the  @pop  style  address.   If you want to
              change, turn both TagPOP and HostPOP  on  and  wait
              for  a  new  popaka utility, at which point you can
              shut off HostPOP.  This macro enables  your  system
              to  be  able  to  recognize IMAP customers as username@IMAP.
  Older popaka utilities generate aliases
              in this form.  If you are using an older version of
              the popaka utilities, you can enable HostIMAP. However,
 you will not be able to name any host in your
              domain "IMAP" because it would  conflict  with  the
              sendmail.cf  file's  internal meaning for the @IMAP
              string.  It is  recommend  that  you  use  TagIMAP.
              This  macro  enables  you to recognize DECnet-style
              addresses or  to  communicate  with  DECnet.   This
              macro only applies to DECnet. You use this macro to
              define this to your DECnet node name if your  sendmail
  binary  does  not define $=y as the result of
              DECnet's getnodename() call.  If you  have  such  a
              binary,  it  is  best  not  to define this variable
              because that way you can share a single sendmail.cf
              file  across  all  of your DECnet nodes.  Otherwise
              you need to build a separate sendmail configuration
              file  for  DECnet node, just to set $=y. Tru64 UNIX
              automatically defines $=y  if  DECnet's  installed.
              This  macro  applies  to  DECnet only.  You can use
              this macro, if you are using the UTK  Mail11  package.
   This  macro enables your system to recognize
              UUCP addresses. If you do not also  define  _GateUUCP,
  you  must  run  UUCP  on  your host.  In most
              cases, mail with UUCP addresses  is  relayed  to  a
              host  that recognizes UUCP addresses to process the
              address.  This macro enables your system to  recognize
  POP customers.  This macro instructs sendmail
              to format your headers in RFC 976 format. For example:

              From: waxie@ap.ecd.com (Paul Waxie)

              If you use this macro, you should define this to be
              T.  These macros control how mail that is  destined
              for  some  other  host in your local domain is handled.

              TransDomain is the transport used  to  reach  other
              hosts  or  to reach the designated gateway (usually
              smtpl which specifies local SMTP).

              If you decide to route all such  local-domain  mail
              through  a  gateway,  then  specify the name of the
              gateway in GateDomain. If you want the mail  to  go
              directly  to  the  gateway, do not specify anything
              for the GateDomain operand.

              In practice, TransDomain is always set to smtpl and
              GateDomain  is  always  either  null or the name of
              your local mail hub.  However, there is no  penalty
              for  sending  local  mail directly between workstations
  and  no  advantage  for  sending  such  mail
              through  your mail hub. Using a gateway is not recommended
 for local mail.  These two macros  perform
              the  same  functions  as TransDomain and GateDomain
              except that they control mail which is sent to  the
              parent domain rather than to the local domain.

              In most domains, there are no security filters that
              restrict SMTP traffic between hosts in the  domain.
              If   that  is  true  in  your  domain  then  it  is
              recommended that you set TransParent  to  smtp  and
              set GateParent to null string.

              As  with local-domain mail, there is no real advantage
 to using a  gateway  for  local  mail.   These
              macros  specify  the  transport  to be used and the
              gateway host for mail leaving the domain.

              If you are directly connected to the Internet, then
              you  can  set  TransINET to smtp and leave GateINET

              If you need to use a gateway to reach the Internet,
              then  set  TransINET  to  the  protocol used by the
              gateway (uucp, mail11, or smtp) and set GateINET to
              the  name  of  the host you will reach through that
              transport.  That host will presumably deliver  your
              mail  to  its  ultimate  recipient or forward it to
              another host that will deliver the mail or  forward
              it on.

              If  you  leave  GateINET  empty,  then TransINET is
              ignored because it must be the  local  smtp  transport.
   These  macros specify the transport and the
              gateway for UUCP mail. Note  that  if  GateUUCP  is
              empty,  then  TransUUCP  is ignored since the local
              uucp transport must be used. In which case  uux  is
              used as the transport.

              You  might  set  TransUUCP to smtpr.  GateUUCP host
              has aliases for all of your  users.   This  permits
              outbound  UUCP  addresses  to  omit your local host
              name.  This macro specifies the UUCP host name  for
              all  of the members of your TruCluster Server cluster
 running the UUCP protocol. Use  this  macro  if
              you  are  running  UUCP on your system.  See protocols.map(4) for more information.  This macro specifies
  the  arguments for UUCP. For a complete list
              of the possible options, see  uux(1).   This  macro
              specifies  the  name of a host on your network that
              is capable of accepting mail sent to the USENET.

              If there is no such host  on  your  network,  leave
              this macro empty.

              Note that Tru64 UNIX does not currently include the
              software necessary on the receiving  host,  because
              it  varies  according  to whether you are running C
              News or B News or INN.  This macro applies to  DECnet
  mail  only.   If  your  users  or your inbound
              mail11 listener puts a pseudodomain name other than
              on  incoming  addresses,  sendmail  needs  to know.
              This macro applies to DECnet only.

              If GateIV is set to an empty string, then  sendmail
              attempts to deliver the mail directly using TransIV
              (which is almost always smtp).

              If you have MX RRs for all  of  your  mail11  hosts
              then you can use SMTP to reach them or at least the
              closest relay host.

              If GateIV is set to a fully  qualified  host  name,
              then  TransIV  is  used to forward the mail to that
              host, unless GateIV is set to  the  same  hostname.
              In  this case the mail11 mailer is called directly.

              This lets you share a sendmail.cf file  across  all
              of  your  workstations and mail11 gateway machines,
              because the mail will go to the  designated  mail11
              gateway  first, which, on forwarding, the mail will
              recognize its own name as  the  designated  gateway
              and instead call the mail11 transport.

              It  is recommended that you set TransIV to smtpr if
              the GateIV host has aliases for all of your  users.
              This  enables outbound DECnet addresses to omit the
              local host name.   This  macro  applies  to  DECnet

              Mail from a DECnet node is always encapsulated in a
              pseudodomain.  The DECnet pseudodomain is an  arbitrary
  string that should be used uniformly by your
              site or organization.  The DECnet pseudodomain must
              always appear after the parent domain. For example,
              in the following domain name, QNET  is  the  DECnet
              pseudodomain portion of the domain names:



              PhaseIVdomain  is  the  non-qualified  name  of the
              pseudodomain.  It is always qualified with  ParentDomain
 before being emitted into the Internet.

              This  can  be  anything you want but is usually the
              name of the DECnet network.  Do  not  set  this  to
              DNET.  Set  it  to the proper name of your network,
              not the name of  the  network's  technology.   This
              macro  specifies  the  Phase  IV  node names of the
              nodes in your TruCluster Server cluster.  Use  this
              macro  only  if  your node is running DECnet.  This
              macro specifies the Phase IV node address. Use this
              macro  only  if  your node is running DECnet.  This
              macro applies to DECnet only.

              This macro specifies the  location  of  the  mail11
              binary.  For this operating system it is located in
              /usr/sbin/mail11v3.  This macro applies  to  DECnet

              Unnamed  DECnet  nodes  are  reachable  through the
              AA.NNN:: notation. The AA in this case is  actually
              of  higher precedence than the NNN. You may want to
              reverse the order when rewriting into Internet form
              because  Internet  addresses have higher precedence
              toward the right side. Whatever you do, you must do
              it  consistently across all mail11 gateways in your
              network, and you  will  probably  not  be  able  to
              change your mind later.  This macro applies to DECnet

              This macro applies to  DECnet  Phase  V  only.   It
              specifies  the  namespace that sendmail assumes for
              any mail it receives in without a namespace, if you
              are  running DECnet Phase V. It is recommended that
              you make it the name of the namespace you  are  in.
              If  you  are  running DECnet Phase IV, you must get
              the name of the namespace from your network  administrator.
   These  macros  apply  to DECnet Phase V
              only.  They specify  the  transport,  gateway,  and
              pseudodomain for DECnet Phase V mail.

              Note  that  Phase  V  names  are always reversed so
              there is no  ReversePhaseV  variable.   This  macro
              specifies  the  Phase  V node names of the nodes in
              your TruCluster Server cluster. Use this macro only
              if your node is running DECnet.  This macro enables
              your system to MR or UMC addresses. If you  do  not
              define  GateMsgRout  you must run UMC on your host.
              Most hosts use a gateway to reach MR.   This  macro
              applies to DEC MessageRouter (mail-plus) only. They
              define the transport,  gateway,  and  pseudodomain.
              This  macro applies to the DEC MessageRouter (mailplus)
 only. It specifies other  pseudodomains  that
              the  software or your users may use, expecting them
              to be recognized as Message  Router  pseudodomains.
              Use  this macro if you have an IDA version of sendmail.
  This turns on split rewrite rules (O/).   It
              also  allows  for  local aliases lookup. If you are
              usingTru64 UNIX's sendmail utility,  it  is  recommended
  that  you  set  this operand to be T.  This
              macro specifies that aliases in your local  aliases
              file  are  _NonHiddenUsers.   You  must  have  _IDA
              defined because it uses  IDA  features  to  do  the
              aliases  lookup.  See the explanation of _NonHiddenUsers
 and _IDA.  This macro  specifies  to  bypass
              most  of  the  other  routing options (for example,
              GateDomain) and forces your  mail  to  be  sent  by
              _TransINET  to your _GateINET machine.  This allows
              workstations with  simple  mail  configurations  to
              create  mail  locally,  but have it appear as if it
              came from the main relay (GateINET) machine.  Using
              this  option  can  simplify  things  for the system
              administrator, by funneling all mail  through  central,
 well-maintained machines.

              The  only  mail  that  is delivered locally (to the
              simple workstation) is the mail  addressed  to  the
              user  names  contained  in  _NonHiddenUsers.   This
              macro enables sendmail  to  work  in  a  TruCluster
              Server  cluster  environment.   Set it to T if your
              system is part of a cluster.  This macro  specifies
              the  alias  for your TruCluster Server cluster. Use
              it only if your system is configured as part  of  a
              cluster.   This  macro  specifies  the  unqualified
              names of the nodes in your TruCluster Server  cluster
 that can handle X.25 (PSI) mail. Use this macro
              only if you are running X.25 on your system.   This
              macro  specifies  that  sendmail  will  use an LDAP
              server to resolve aliases. If  you  intend  to  use
              LDAP,  set this macro to T.  See Lightweight Directory
 Access Protocol for  more  information.   This
              macro  defines  the map type and LDAP search string
              for sendmail to specify when it  contacts  an  LDAP
              server  for  alias  resolution.   The  map  type is

              The sendmail command supports most of the  standard
              map  options  as  well as options specific to LDAP.
              The following LDAP options are the ones most  users
              need,  but  you  can  specify additional parameters
              depending on your application.

              You must specify arguments for each LDAP option  as
              strings,  therefore, you must enclose the arguments
              in double quotes  (").  Also,  the  arguments  must
              immediately follow the associated LDAP option, that
              is, leave  no  space  between  options  and  double
              quotes.   LDAP  base Distinguished Name (DN) search
              string LDAP server's host name list. This  contains
              the list of server names to use for an LDAP search.
              The list of names  is  separated  by  white  space.
              String  containing  a list of attribute/value pairs
              for which to search in the LDAP database. The  syntax
  for each pair is attribute=%s, where %s is the
              token for which to search.

              If   you   need   to   specify   more   than    one
              attribute/value pair, you must enclose each pair in
              parentheses (). In addition,  you  must  begin  the
              string       with       (|).      For      example:

              You can specify up to 1024  attribute/value  pairs.
              String   containing   a   list  of  comma-separated
              attributes for which to  return  values.  For  each
              LDAP  record that matches the attribute/value pairs
              you specify in  the  -k  option,  the  LDAP  server
              returns  the  corresponding  attribute  you specify
              with the -v option.

              The brackets {} are necessary to tell the  m4  command
  to treat the double quotes as literal; otherwise,
 the quotes are not  preserved  in  the  sendmail.cf
 output file.

              For  example,  assume  your LDAP base DN is compaq,
              your LDAP server name is ldap.site.com, the  search
              attribute  is mailaddr, and the return attribute is
              forwardAddr. You would specify the _LDAPParam macro
              as  follows (the backslash indicates line continuation):
   define(_LDAPParam,   {ldapx   -b"o=compaq"
              -h"ldap.site.com" \
               -k"(mailaddr=%s)" -v{"forwardAddr"}})dnl

DESCRIPTION    [Toc]    [Back]

       The  mailsetup  script enables you to create new mail configurations.
  If you have experience creating  sendmail.cf
       configuration  files  or  your system requires specialized
       configuration files, you might want to create your configuration
 files manually.

       Use  the macros described in this reference page to generate
 a configuration file. You should save your  configuration
  file  under  the name hostname.m4, where hostname is
       the name of your system or  the  alias  for  a  TruCluster
       Server cluster.

       After  you  create the m4 file with the operands you need,
       you can generate the sendmail.cf file by issuing the  following
 command: # m4 -D_Configfile=hostname.m4 sendmail m4
       > sendmail.cf

       You must be in the /var/adm/sendmail directory to use this

       The  sendmail.m4  package  used  byTru64 UNIX provides the
       following  functions:  Rewrites  addresses,  encapsulating
       mail  from  non-Internet  protocols  (for example, DECnet)
       within pseudodomains.  This helps to ensure  that  replies
       are  sent  back  to the correct address, where they can be
       handled appropriately.  Performs  routing,  based  on  the
       domain  to  which  the  mail  is  sent.  Supports multiple
       return address formats, including domain-based  addresses.
       For  example,  a  host with the name myhost.mysite.ecd.com
       would  normally  format   a   user's   mail   address   as
       user@myhost.mysite.ecd.com,          or         user@cluster_alias.mysite.ecd.com
 in a  TruCluster  Server  cluster
       (which  changes  the  address only for SMTP). By using the
       _ExportedName operand, you can set the return  address  to
       be  mysite.ecd.com.  By  using  the  _MailHub and MyDomain
       operands,  your  mail   system   recognizes   the   phrase
       mysite.ecd.com as a synonym for this host.

       The  dnl command is "delete to newline" command and causes
       the m4 compiler to ignore the dnl characters and all  text
       that  follows it, up to and including the end of line.  If
       you do not follow a define command  with  a  dnl  command,
       then  the newline after the right parenthesis ()) is emitted
 into  the output (which is a sendmail.cf file).

       Blank lines are permitted in the  sendmail.cf  file;  however,
 they are unnecessary and not recommended.

       Braces  ({})  are used as quoting characters.  You can use
       them even when they are not required.

       Note that null definitions have the following of the form:
       define(Operand, {})

       The  only  rule you must follow in creating the configuration
 m4 file is to surround literal text with braces ({});
       however,  you must leave macro names (which you presumably
       want expanded by m4) unquoted. (That is,  do  not  enclose
       macros that you want expanded in braces ({}).)

   Mailers    [Toc]    [Back]
       The sendmail program invokes a mailer to handle your mail.
       Usually, this is local (for local delivery on  the  host),
       smtp  (standard  SMTP), smtpl (SMTP local), or smtpr (SMTP
       to relay) for delivery over the  Internet.  These  mailers
       (smtp,  smtpl, and smtpr) invoke SMTP to deliver the mail;
       however, they  differ  in  how  they  rewrite  the  return
       address.   If  you are in doubt as to which mailer to use,
       it is safest to use smtp.

       The smtp mailer qualifies your mail with the  ExportedName
       operand,  except for mail sent from NonHiddenUsers or from
       an alias (if AliasesLocal is true).

       The smtpl  mailer  handles  mail  sent  within  you  local
       domain.   This  mailer  is used when mail is sent to users
       within the local domain. Depending on how the _MailCluster
       and  _NonHiddenUsers operands are defined, the hostname is
       removed from the return address before the mail is sent.

       The smtpr mailer always removes the hostname,  except  for
       _NonHiddenUsers.  This is useful when the relay machine is
       a mail hub and has aliases for all users in your mail system.

   Routing    [Toc]    [Back]
       The  sendmail.m4  package  performs some routing decisions
       based on the domain in which the address  ends.   In  general,
 you can configure your system to check for some special
 cases (for example, DECnet or UUCP style  addresses).
       If the address does not conform to any of the cases specified,
 it will check to see if the  mail  resides  in  your
       local  domain (_GateLocal), parent domain (GateParent), or
       is outside your local network (GateINET).  You can configure
  your  system to pass mail to and from the Internet by
       setting the _GateINET operand to the name of the  Internet
       gateway  on  your local network and leaving the GateDomain
       and GateParent operands blank.

   Lightweight Directory Access Protocol    [Toc]    [Back]
       The sendmail command supports  the  Lightweight  Directory
       Access  Protocol  (LDAP)  for alias resolution. LDAP is an
       open protocol for accessing directory  services.  An  LDAP
       server  provides  information, such as email addresses and
       public keys, to applications running on client systems.

       Usually, when sendmail parses a  recipient's  address  and
       determines  that  the  address  is  local, it looks up the
       address to determine if there are any  aliases  associated
       with  it  (see  aliases(4)).  If sendmail does not find an
       alias, it looks in the file in the recipient's home directory
  to  see  if  the recipient has any personal aliases.
       While this works well for a single system, it becomes cumbersome
  to maintain in a distributed environment. Performance
 suffers if the list of aliases becomes too large.

       With LDAP as another means for storing user alias information,
 sendmail can share aliases in a distributed fashion,
       and as a result, system  administrators  do  not  have  to
       maintain several databases. Furthermore, because there are
       fewer databases and the LDAP servers that serve  them  are
       typically  dedicated  machines, address resolution is more
       efficient. (Note that the sendmail command itself requires
       a  fair  amount of resources, and performing alias resolution
 on the same system can be costly.)

       To configure sendmail with LDAP, set the _LDAPMap  operand
       to  {T} and specify the LDAP search string in the _LDAPParam
 operand. The appropriate map line and rules are  added
       to  the  system  sendmail.cf  file. This tells sendmail to
       perform an LDAP lookup for  the  receipient's  address  in
       addition  to  the standard alias and lookup. If no matches
       are found, the recipient address is considered to be local
       to this system.

[ Back ]
 Similar pages
Name OS Title
sendmail.cf Tru64 Contains the sendmail configuration file data
makemap OpenBSD create database maps for sendmail
makemap FreeBSD create database maps for sendmail
makemap Tru64 Create database maps for sendmail
vgcfgbackup HP-UX create or update LVM volume group configuration backup file
dgcfgbackup HP-UX create or update VxVM volume group configuration backup file
aliases OpenBSD aliases file for sendmail
aliases FreeBSD aliases file for sendmail
aliases HP-UX aliases file for sendmail
aliases IRIX aliases file for sendmail
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service