<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>> (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. > Prepend > 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 <<b>sysexits.h</b>>. 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>