pipe.8.html   [plain text]


<html> <head> </head> <body> <pre>
PIPE(8)                                                   PIPE(8)

<b>NAME</b>
       pipe - Postfix delivery to external command

<b>SYNOPSIS</b>
       <b>pipe</b> [generic Postfix daemon options] command_attributes...

<b>DESCRIPTION</b>
       The  <b>pipe</b> daemon processes requests from the Postfix queue
       manager to deliver messages to  external  commands.   This
       program  expects to be run from the <a href="master.8.html"><b>master</b>(8)</a> process man-
       ager.

       Message  attributes  such  as  sender  address,  recipient
       address  and  next-hop  host name can be specified as com-
       mand-line macros that are  expanded  before  the  external
       command is executed.

       The  <b>pipe</b>  daemon updates queue files and marks recipients
       as finished, or it informs the queue manager that delivery
       should  be  tried  again at a later time. Delivery problem
       reports are sent to the <a href="bounce.8.html"><b>bounce</b>(8)</a> or  <a href="defer.8.html"><b>defer</b>(8)</a>  daemon  as
       appropriate.

<b>SINGLE-RECIPIENT</b> <b>DELIVERY</b>
       Some external commands cannot handle more than one recipi-
       ent per delivery request. Examples of such transports  are
       pagers, fax machines, and so on.

       To  prevent  Postfix  from sending multiple recipients per
       delivery request, specify

           <i>transport_</i><b>destination</b><i>_</i><b>recipient</b><i>_</i><b>limit</b> <b>=</b> <b>1</b>

       in the Postfix <b>main.cf</b> file, where <i>transport</i> is  the  name
       in the first column of the Postfix <b>master.cf</b> entry for the
       pipe-based delivery transport.

<b>COMMAND</b> <b>ATTRIBUTE</b> <b>SYNTAX</b>
       The external command attributes are given in the <b>master.cf</b>
       file at the end of a service definition.  The syntax is as
       follows:

       <b>flags=BDFORhqu.</b>&gt; (optional)
              Optional message processing flags.  By  default,  a
              message is copied unchanged.

              <b>B</b>      Append  a blank line at the end of each mes-
                     sage. This is required  by  some  mail  user
                     agents  that  recognize  "<b>From</b>  " lines only
                     when preceded by a blank line.

              <b>D</b>      Prepend a "<b>Delivered-To:</b> <i>recipient</i>"  message
                     header  with the envelope recipient address.
                     Note: for this to work, the <i>transport_</i><b>desti-</b>
                     <b>nation</b><i>_</i><b>recipient</b><i>_</i><b>limit</b> must be 1.

              <b>F</b>      Prepend  a "<b>From</b> <i>sender</i> <i>time_stamp</i>" envelope
                     header to  the  message  content.   This  is
                     expected by, for example, <b>UUCP</b> software.

              <b>O</b>      Prepend  an  "<b>X-Original-To:</b> <i>recipient</i>" mes-
                     sage header with the  recipient  address  as
                     given  to  Postfix.  Note: for this to work,
                     the    <i>transport_</i><b>destination</b><i>_</i><b>recipient</b><i>_</i><b>limit</b>
                     must be 1.

              <b>R</b>      Prepend  a  <b>Return-Path:</b> message header with
                     the envelope sender address.

              <b>h</b>      Fold the command-line <b>$recipient</b> domain name
                     and  <b>$nexthop</b> host name to lower case.  This
                     is recommended for delivery via <b>UUCP</b>.

              <b>q</b>      Quote white space and other special  charac-
                     ters in the command-line <b>$sender</b> and <b>$recip-</b>
                     <b>ient</b> address localparts (text to the left of
                     the right-most <b>@</b> character), according to an
                     8-bit transparent version of <a href="http://www.faqs.org/rfcs/rfc822.html">RFC 822</a>.   This
                     is  recommended  for  delivery  via  <b>UUCP</b> or
                     <b>BSMTP</b>.

                     The result is compatible  with  the  address
                     parsing  of  command-line  recipients by the
                     Postfix <b>sendmail</b> mail submission command.

                     The <b>q</b> flag affects  only  entire  addresses,
                     not the partial address information from the
                     <b>$user</b>, <b>$extension</b> or  <b>$mailbox</b>  command-line
                     macros.

              <b>u</b>      Fold  the  command-line  <b>$recipient</b>  address
                     localpart (text to the left  of  the  right-
                     most  <b>@</b>  character)  to lower case.  This is
                     recommended for delivery via <b>UUCP</b>.

              <b>.</b>      Prepend <b>.</b> to lines starting with  "<b>.</b>".  This
                     is needed by, for example, <b>BSMTP</b> software.

              &gt;      Prepend  &gt;  to  lines starting with "<b>From</b> ".
                     This is expected by, for example, <b>UUCP</b> soft-
                     ware.

       <b>user</b>=<i>username</i> (required)

       <b>user</b>=<i>username</i>:<i>groupname</i>
              The external command is executed with the rights of
              the specified <i>username</i>.  The  software  refuses  to
              execute  commands with root privileges, or with the
              privileges of the mail system owner.  If  <i>groupname</i>
              is  specified,  the  corresponding group ID is used
              instead of the group ID of <i>username</i>.

       <b>eol=string</b> (optional, default: <b>\n</b>)
              The output record delimiter.  Typically  one  would
              use  either <b>\r\n</b> or <b>\n</b>. The usual C-style backslash
              escape sequences are recognized: <b>\a</b> <b>\b</b> <b>\f</b> <b>\n</b> <b>\r</b>  <b>\t</b>
              <b>\v</b> <b>\</b><i>octal</i> and <b>\\</b>.

       <b>size</b>=<i>size_limit</i> (optional)
              Messages greater in size than this limit (in bytes)
              will be bounced back to the sender.

       <b>argv</b>=<i>command</i>... (required)
              The command to be executed. This must be  specified
              as the last command attribute.  The command is exe-
              cuted  directly,  i.e.  without  interpretation  of
              shell  meta  characters  by  a shell command inter-
              preter.

              In  the  command  argument  vector,  the  following
              macros are recognized and replaced with correspond-
              ing information  from  the  Postfix  queue  manager
              delivery request:

              <b>${extension</b>}
                     This  macro expands to the extension part of
                     a recipient address.  For example,  with  an
                     address  <i>user+foo@domain</i>  the  extension  is
                     <i>foo</i>.

                     A  command-line   argument   that   contains
                     <b>${extension</b>}  expands  into as many command-
                     line arguments as there are recipients.

                     This information is modified by the  <b>u</b>  flag
                     for case folding.

              <b>${mailbox</b>}
                     This  macro  expands  to  the complete local
                     part of a recipient address.   For  example,
                     with  an address <i>user+foo@domain</i> the mailbox
                     is <i>user+foo</i>.

                     A  command-line   argument   that   contains
                     <b>${mailbox</b>} expands into as many command-line
                     arguments as there are recipients.

                     This information is modified by the  <b>u</b>  flag
                     for case folding.

              <b>${nexthop</b>}
                     This macro expands to the next-hop hostname.

                     This information is modified by the  <b>h</b>  flag
                     for case folding.

              <b>${recipient</b>}
                     This macro expands to the complete recipient
                     address.

                     A  command-line   argument   that   contains
                     <b>${recipient</b>}  expands  into as many command-
                     line arguments as there are recipients.

                     This information  is  modified  by  the  <b>hqu</b>
                     flags for quoting and case folding.

              <b>${sender</b>}
                     This  macro  expands  to the envelope sender
                     address.

                     This information is modified by the  <b>q</b>  flag
                     for quoting.

              <b>${size</b>}
                     This  macro expands to Postfix's idea of the
                     message size, which is an  approximation  of
                     the size of the message as delivered.

              <b>${user</b>}
                     This macro expands to the username part of a
                     recipient address.   For  example,  with  an
                     address <i>user+foo@domain</i> the username part is
                     <i>user</i>.

                     A  command-line   argument   that   contains
                     <b>${user</b>}  expands  into  as many command-line
                     arguments as there are recipients.

                     This information is modified by the  <b>u</b>  flag
                     for case folding.

       In  addition  to  the  form  ${<i>name</i>},  the forms $<i>name</i> and
       $(<i>name</i>) are also recognized.  Specify <b>$$</b> where a single  <b>$</b>
       is wanted.

<b>DIAGNOSTICS</b>
       Command  exit status codes are expected to follow the con-
       ventions defined in &lt;<b>sysexits.h</b>&gt;.

       Problems and transactions are logged to <b>syslogd</b>(8).   Cor-
       rupted  message files are marked so that the queue manager
       can move them to the <b>corrupt</b> queue for further inspection.

<b>SECURITY</b>
       This  program  needs  a  dual personality 1) to access the
       private Postfix queue and IPC mechanisms, and 2)  to  exe-
       cute external commands as the specified user. It is there-
       fore security sensitive.

<b>CONFIGURATION</b> <b>PARAMETERS</b>
       The following <b>main.cf</b> parameters are  especially  relevant
       to  this  program. See the Postfix <b>main.cf</b> file for syntax
       details and for default values.  Use  the  <b>postfix</b>  <b>reload</b>
       command after a configuration change.

<b>Miscellaneous</b>
       <b>export</b><i>_</i><b>environment</b>
              List of names of environment parameters that can be
              exported to non-Postfix processes.

       <b>mail</b><i>_</i><b>owner</b>
              The process privileges used while  not  running  an
              external command.

<b>Resource</b> <b>controls</b>
       In  the text below, <i>transport</i> is the first field in a <b>mas-</b>
       <b>ter.cf</b> entry.

       <i>transport_</i><b>destination</b><i>_</i><b>concurrency</b><i>_</i><b>limit</b>
              Limit the number of parallel deliveries to the same
              destination,  for delivery via the named <i>transport</i>.
              The default limit is taken from the  <b>default</b><i>_</i><b>desti-</b>
              <b>nation</b><i>_</i><b>concurrency</b><i>_</i><b>limit</b>  parameter.   The limit is
              enforced by the Postfix queue manager.

       <i>transport_</i><b>destination</b><i>_</i><b>recipient</b><i>_</i><b>limit</b>
              Limit the number of recipients per  message  deliv-
              ery,  for  delivery  via  the  named <i>transport</i>. The
              default limit is taken  from  the  <b>default</b><i>_</i><b>destina-</b>
              <b>tion</b><i>_</i><b>recipient</b><i>_</i><b>limit</b>   parameter.    The  limit  is
              enforced by the Postfix queue manager.

       <i>transport_</i><b>time</b><i>_</i><b>limit</b>
              Limit the time for delivery  to  external  command,
              for  delivery  via the named <b>transport</b>. The default
              limit is taken from the <b>command</b><i>_</i><b>time</b><i>_</i><b>limit</b>  parame-
              ter.   The  limit  is enforced by the pipe delivery
              agent.

<b>SEE</b> <b>ALSO</b>
       <a href="bounce.8.html">bounce(8)</a> non-delivery status reports
       <a href="master.8.html">master(8)</a> process manager
       <a href="qmgr.8.html">qmgr(8)</a> queue manager
       syslogd(8) system logging

<b>LICENSE</b>
       The Secure Mailer license must be  distributed  with  this
       software.

<b>AUTHOR(S)</b>
       Wietse Venema
       IBM T.J. Watson Research
       P.O. Box 704
       Yorktown Heights, NY 10598, USA

                                                          PIPE(8)
</pre> </body> </html>