SM(8zm)                                                                SM(8zm)



NAME
       sm - zmailer Sendmail compatible transport agent

SYNOPSIS
       sm [-8HQV] [-f configfile] -c channel -h host mailer

DESCRIPTION
       sm is a ZMailer transport agent which is usually only run by the sched-
       uler(8zm), to deliver messages by invoking a  program  with  facilities
       and in a way compatible with a Sendmail mailer.  The sm program must be
       run with the same current directory as the  scheduler,  namely  POSTOF-
       FICE/transport.

       The  program  scans  the  message  control  files  named  on  stdin for
       addresses destined for the channel and/or the host given on the command
       line.   If  any are found, all matching addresses and messages are pro-
       cessed according to the specifications for the mailer in the configura-
       tion file.

       The exit status of a mailer should be one of the standard values speci-
       fied in <sysexits.h>.  Of these, EX_OK  indicates  successful  deliver,
       and  EX_DATAERR,  EX_NOUSER,  EX_NOHOST,  EX_UNAVAILABLE, and EX_NOPERM
       indicate permanent failure.  All other exit codes will be treated as  a
       temporary failure and the delivery will be retried.

OPTIONS
       -8     tells  that  the output is 8-bit clean, and for any MIME message
              with QUOTED-PRINTABLE encoding the coding can be decoded.

       -Q     tells that the transport channel will likely treat  poorly  con-
              trol characters like TAB, and possibly SPACE too..  This encodes
              them all by using QUOTED-PRINTABLE encoding.

       -f configfile
              specifies the name of a configuration file containing specifica-
              tions  of the various known Sendmail compatible mailer programs:
              how to invoke them and how to process messages  for  them.   The
              default is MAILSHARE/sm.cf.

       -c channel
              specifies  which  channel  name should be keyed on.  There is no
              default.  If this option is not specified, the  -h  option  must
              be.

       -h host
              specifies  which  host  name  should  be  keyed on.  There is no
              default.  If this option is not specified, the  -c  option  must
              be.

       -V     prints a version message and exits.

CONFIGURATION
       The  configuration  file associates the mailer keyword from the command
       line with a specification of a delivery program.  This is very  similar
       to  the  way  the  definition of a mailer in Sendmail requires flags, a
       program name, and a command line specification.  These are in fact  the
       fields  of  the entries of the configuration file.  Lines starting with
       whitespace or a ``#'' are ignored, and all others are assumed to follow
       this format:



       mailer   flags   program             argument list

       For example:

       local    mS      sm/localm           localm -r $g $u
       prog     -       /bin/sh             sh -c $u
       tty      rs      /usr/local/to       to $u
       uucp     U       /usr/bin/uux        uux - -r -a$g -gC $h!rmail ($u)
       usenet   m       sm/usenet           usenet $u
       ean      mn      /lib/ean/gwsmean    gwsmean -d $u
       test     n       sm/test             test $u
       smsgw    nS      ${MAILBIN}/sms-gw   sms-gw $g $u

       The  mailer  field  extends from the beginning of the line to the first
       whitespace.  It is used simply as a key index to the configuration file
       contents.   Whitespace  is  used  as  the  field  separator for all the
       fields.

       The flags field contains a concatenation of one-letter  flags.   If  no
       flags  are  desired, a ``-'' character should be used to indicate pres-
       ence of the field.  All normal Sendmail flags are recognized,  but  the
       ones  that  do not make sense in the context of ZMailer will produce an
       error.

       The flags that change the behaviour of sm(8zm)  and  their  comparisons
       against sendmail-8.11 are:


       -
              sendmail: Not defined/used

              sm: Special ``no flags defined'' dummy entry

       :, |, /, %, @
              sendmail:  various  sendmail-specific  things  that  are handled
              mostly by the router(8zm) subsystem at ZMailer.

              sm: Not used.

       0
              sendmail: Equivalent of ZMailer's smtp(8zm) transport agents  -x
              option.  (Don't use MX data, only addresses)

              sm: Not used

       1, 2
              sendmail, sm: Not defined/used

       3
              sendmail:  Extend  the list of characters converted to =XX nota-
              tion when converting to Quoted-Printable to include  those  that
              don't map cleanly between ASCII and EBCDIC.  Usefull if you have
              IBM mainframes on site.

              sm: Not implemented/used

       4
              sendmail, sm: Not defined/used

       5
              sendmail: Local delivery alternate resolution  ruleset  (R5)  in
              case  no  aliases  are  found  for  currently processed address.
              (Meaningless in ZMailer; router's task)

              sm: Not used

       6
              sendmail: Strip RFC 822 headers to 7 bits.

              sm: Not implemented/used

       7
              sendmail: Will strip (set to 0) the 8th bit of  every  character
              in the message.

              sm:  Will  strip  the  8th bit of every character of the message
              body, does not touch message headers.   (Not  stripping  message
              header is sort of BUG.)

       8
              sendmail,  sm:  Tells that the recipient system is 8-bit capable
              and that no 8->7 downgrading is needed.

       9
              sendmail, sm: If set, do  limited  7->8  bit  MIME  conversions.
              These conversions are limited to text/plain data.

       a
              sendmail: Run ESMTP protocol on the SMTP connection

              sm:  Not  implemented/used  (See  ``B'') (SMTP transport agent's
              task)

       A
              sendmail: Look up the user part of  the  address  in  the  alias
              database

              sm: Not used (Router's task)

       b
              sendmail:  Force  a  blank  line  on the end of a message.  (Not
              needed in sm's usage environment.)

              sm: will activate BSMTP-type wrapping with ``hidden-dot''  algo-
              rithm; e.g.  quite ordinary SMTP stream, but in "batch mode".

       B
              sendmail: Not defined/used

              sm:  The  first  ``B'' turns on similar BSMTP wrapping as ``b'',
              but adds SIZE and, if the sm is started with option ``-8'', also
              8BITMIME  options.  The second ``B'' adds there also DSN (Deliv-
              ery Status Notification) parameters.

       c
              sendmail: Do not include comments in RFC 822 header addresses.

              sm: not implemented/used

       C
              sendmail: Header address canonicalization

              sm: Not used (router's task)

       d
              sendmail: Do not include  angle  brackets  around  route-address
              syntax addresses.  (this is broken security trick for some shell
              script usages, nor recommented!)

              sm: Not implemented/used

       D
              sendmail: ``Date:'' header wanted

              sm: Not used (router's task)

       e
              sendmail: This mailer is expensive to connect, connections  only
              from queuerun.  (Meaningless in sm)

              sm: Throw in a collection of ``X-Envelope-*:'' headers; specifi-
              cally:

               Envelope-Id:
                 This is one for the message, if it has been defined in incom-
                 ing message.

               X-Envelope-To:

               Original-Recipient:
                 These  two appear in sequence, and the first should exist for
                 every message in the system.

              Frankly, it does not make much sense to use this in  combination
              with e.g. 'm'-mode (multi-recipient processing).

       E
              sendmail, sm: Will prepend ``>'' to any message body line start-
              ing with ``From '' (From space).

       f
              sendmail, sm: adds ``-f sender'' arguments to the delivery  pro-
              gram.

       F
              sendmail: This mailer wants ``From:'' header line.

              sm: Not used (Router's task)

       g
              sendmail:  Affects  on  what  to  use  as  error source envelope
              address

              sm: Not used (Scheduler's task)

       G
              sendmail, sm: Not used

       h
              sendmail, sm: Not used

       H
              sendmail: Not used

              sm: Adds ``HELO'' or ``EHLO'' into front of  the  BSMTP  stream.
              Normally the BSMTP streams do not have ``HELO/EHLO'' in front of
              them to avoid problems with catenation  of  BSMTP  messages  for
              streamed UUCP transfers, for example.

       i
              sendmail: Do User Database rewriting on envelope sender address

              sm: Not used (router's task)

       I
              sendmail:  The  remote  system  is another sendmail, use special
              protocol  features

              sm: Not used

       j
              sendmail: Do User Database rewriting on envelope  recipients  as
              well as senders.

              sm: not implemented/used (router's task)

       J
              sendmail, sm: Not used

       k
              sendmail:  Allow  network connection to myself (for very unusual
              usage cases, likely sendmail running at another port)

              sm: not used (See ZMailer smtp(8zm) transport agent.)

       K
              sendmail: Currently unimplemented, reserved for CHUNKING.

              sm: Not used

       l
              sendmail: This mailer is local (i.e.,  final  delivery  will  be
              performed)

              sm: Not used (semi meaningless)

       L
              sendmail:  Limit the line lengths as specified in RFC 821. (This
              is deprecated option.)

              sm: Not used

       m
              sendmail, sm: This mailer can hangle multiple recipients;  Exis-
              tence  of $u macro in argv part of the mailer definition will be
              expanded with recipients.

       M
              sendmail: ``Message-ID:'' header wanted

              sm: Not used (Router's task)

       n
              sendmail, sm: Do not prepend a From-space line  (normal  mailbox
              separator line) to the message.

       o
              sendmail Always run as the owner of the recipient mailbox

              sm:  Meaningless, not used (ZMailer's sm is not really for doing
              local delivery - but see how procmail can be driven.)

       O
              sendmail: Not used.

              sm: Outputs the Original-Recipient: meta-header for each recipi-
              ent  of the message.  This carries incoming SMTP protocol ORCPT=
              parameter, if any.

       p
              sendmail: Use route-addr style reverse-path in the  SMTP  ``MAIL
              FROM:'' command rather than just the return address.

              sm: Meaningless, not used.  (smtp transport agent's task.)

       P
              sendmail,  sm:  Header ``Return-Path:'' is wanted to be added to
              the message.

       q
              sendmail: Some  SMTP  VRFY  related  thing,  not  applicable  to
              ZMailer

              sm: Not used.

       Q
              sendmail, sm: Not used.

       r
              sendmail,  rm: adds ``-r sender'' arguments to the delivery pro-
              gram.

       R
              sendmail: Open SMTP connections from a ``secure'' port.   (Mean-
              ingless in ZMailer, but see smtp(8zm) transport agent.)

              sm: Use CRLF sequence as end-of-line sequence.  Without it, will
              use LF-only end-of-line sequence.

       s
              sendmail: Strip quote characters (" and \) off of the  addresses
              before calling the actual mailer.

              sm: Not implemented/used.

       S
              sendmail,  sm:  will run the delivery program with the same real
              and effective uid as the sm process.  If this flag is  not  set,
              the  delivery  program  will  be run with the real uid of the sm
              process.  This may be useful if sm is setuid (which is not  rec-
              ommended!)

       t, T
              sendmail, sm: Not used

       u
              sendmail:  Upper case should be preserved in user names for this
              mailer.  Standards require preservation of cae in the local part
              of  addresses,  except for those addresses for which your system
              accepts responsibility.

              sm: Not used

       U
              sendmail, sm: will prepend a From-space  line,  with  a  "remote
              from  myuucpname"  at  the end, to the message.  This is what is
              expected by remote rmail(1zm) programs for incoming UUCP mail.

       v, V
              sendmail, sm: Not used

       w
              sendmail: The user must have a valid account  on  this  machine,
              i.e.,  getpwnam()  must  succeed.   If not, the mail is bounced.
              (Local delivery stuff.)

              sm: Not used.

       W
              sendmail, sm: Not used

       x
              sendmail: A ``Full-Name:'' header is wanted.

              sm: Not implemented/used

       X
              sendmail, sm: does SMTP-like 'hidden-dot' algorithm of  doubling
              all dots that are at the start of the line.

       y, Y
              sendmail, sm: Not used

       z
              sendmail:  Run Local Mail Transfer protocol (LMTP) between send-
              mail and the local mailer.  See RFC 2033.

              sm: Not implemented/used.  ZMailer's smtp(8zm) implements  LMTP.

       Z
              sendmail, sm: Not used

       The  path  field specifies the location of the delivery program.  Rela-
       tive pathnames are allowed and are relative to the  MAILBIN  directory,
       but also dollar-expressions of type: ${ZENVAR}

       The  arguments  field  extends  to  the  end  of the line.  It contains
       whitespace-separated argv parameters which may contain one of the  fol-
       lowing sequences:

       $g     which is replaced by the sender address.

       $h     which is replaced by the destination host.

       $u     which  is  replaced  by the recipient address.  If the -m mailer
              flag is set and there are several recipients for  this  message,
              the  argument  containing the $u will be replicated as necessary
              for each recipient.  (Also ${ZENVAR} expressions are allowed!)

INTERFACE
       This program reads in processable file names relative  to  the  current
       working  directory  of the scheduler (namely: $POSTIOFFICE/transport/).
       Optionally on the same line the scheduler may tell which host is to  be
       looked for from the recipients of the message.

           relative-spool-path [ <TAB> hostname ]

       This program produces diagnostic output on the standard output.  Normal
       diagnostic output is of the form:

           id/offset<TAB>notify-data<TAB>status message

       where id is the inode number of the message file, offset is a byte off-
       set  within  its  control  file  where the address being reported on is
       kept, status is one of ok, error,  or  deferred,  and  the  message  is
       descriptive text associated with the report.  The text is terminated by
       a linefeed.  Any other format (as might be produced by subprocesses) is
       passed to standard output for logging in the scheduler log.

       The exit status is a code from <sysexits.h>.


SUBPROCESS ENVIRONMENT
       TO BE WRITTEN


ENVIRONMENT VARIABLES
       ZCONFIG
              This  environment  variable is expected to be inherited from the
              scheduler(8zm), and it tells where  scheduler's  idea  of  ZENV-
              variables are located at.

Z-ENVIRONMENT VARIABLES
       DEFCHARSET

       MAILSHARE

       MAILBIN

       whatever


FILES
       /opt/mail/zmailer.conf   (ZCONFIG)
       /var/spool/postoffice    (POSTOFFICE)
       /opt/mail/sm.cf          (MAILSHARE/sm.cf)

SEE ALSO
       scheduler(8zm), smtp(8zm), zmailer.conf(5zm).

AUTHOR
       This program authored and copyright by:
          Rayan Zachariassen <no address>
       Several extensions by:
          Matti Aarnio <mea@nic.funet.fi>



                                  2003-Aug-28                          SM(8zm)