Expand PMF_FN_* macros.
[netbsd-mini2440.git] / external / ibm-public / postfix / dist / man / man8 / pipe.8
blobd33dbf10e3118586f7140b35ea9729e3678b2a40
1 .\"     $NetBSD$
2 .\"
3 .TH PIPE 8 
4 .ad
5 .fi
6 .SH NAME
7 pipe
8 \-
9 Postfix delivery to external command
10 .SH "SYNOPSIS"
11 .na
12 .nf
13 \fBpipe\fR [generic Postfix daemon options] command_attributes...
14 .SH DESCRIPTION
15 .ad
16 .fi
17 The \fBpipe\fR(8) daemon processes requests from the Postfix queue
18 manager to deliver messages to external commands.
19 This program expects to be run from the \fBmaster\fR(8) process
20 manager.
22 Message attributes such as sender address, recipient address and
23 next-hop host name can be specified as command-line macros that are
24 expanded before the external command is executed.
26 The \fBpipe\fR(8) daemon updates queue files and marks recipients
27 as finished, or it informs the queue manager that delivery should
28 be tried again at a later time. Delivery status reports are sent
29 to the \fBbounce\fR(8), \fBdefer\fR(8) or \fBtrace\fR(8) daemon as
30 appropriate.
31 .SH "SINGLE-RECIPIENT DELIVERY"
32 .na
33 .nf
34 .ad
35 .fi
36 Some destinations cannot handle more than one recipient per
37 delivery request. Examples are pagers or fax machines.
38 In addition, multi-recipient delivery is undesirable when
39 prepending a \fBDelivered-to:\fR or \fBX-Original-To:\fR
40 message header.
42 To prevent Postfix from sending multiple recipients per delivery
43 request, specify
44 .sp
45 .nf
46     \fItransport\fB_destination_recipient_limit = 1\fR
47 .fi
49 in the Postfix \fBmain.cf\fR file, where \fItransport\fR
50 is the name in the first column of the Postfix \fBmaster.cf\fR
51 entry for the pipe-based delivery transport.
52 .SH "COMMAND ATTRIBUTE SYNTAX"
53 .na
54 .nf
55 .ad
56 .fi
57 The external command attributes are given in the \fBmaster.cf\fR
58 file at the end of a service definition.  The syntax is as follows:
59 .IP "\fBchroot=\fIpathname\fR (optional)"
60 Change the process root directory and working directory to
61 the named directory. This happens before switching to the
62 privileges specified with the \fBuser\fR attribute, and
63 before executing the optional \fBdirectory=\fIpathname\fR
64 directive. Delivery is deferred in case of failure.
65 .sp
66 This feature is available as of Postfix 2.3.
67 .IP "\fBdirectory=\fIpathname\fR (optional)"
68 Change to the named directory before executing the external command.
69 The directory must be accessible for the user specified with the
70 \fBuser\fR attribute (see below).
71 The default working directory is \fB$queue_directory\fR.
72 Delivery is deferred in case of failure.
73 .sp
74 This feature is available as of Postfix 2.2.
75 .IP "\fBeol=\fIstring\fR (optional, default: \fB\en\fR)"
76 The output record delimiter. Typically one would use either
77 \fB\er\en\fR or \fB\en\fR. The usual C-style backslash escape
78 sequences are recognized: \fB\ea \eb \ef \en \er \et \ev
79 \e\fIddd\fR (up to three octal digits) and \fB\e\e\fR.
80 .IP "\fBflags=BDFORXhqu.>\fR (optional)"
81 Optional message processing flags. By default, a message is
82 copied unchanged.
83 .RS
84 .IP \fBB\fR
85 Append a blank line at the end of each message. This is required
86 by some mail user agents that recognize "\fBFrom \fR" lines only
87 when preceded by a blank line.
88 .IP \fBD\fR
89 Prepend a "\fBDelivered-To: \fIrecipient\fR" message header with the
90 envelope recipient address. Note: for this to work, the
91 \fItransport\fB_destination_recipient_limit\fR must be 1
92 (see SINGLE-RECIPIENT DELIVERY above for details).
93 .sp
94 The \fBD\fR flag also enforces loop detection (Postfix 2.5 and later):
95 if a message already contains a \fBDelivered-To:\fR header
96 with the same recipient address, then the message is
97 returned as undeliverable. The address comparison is case
98 insensitive.
99 .sp
100 This feature is available as of Postfix 2.0.
101 .IP \fBF\fR
102 Prepend a "\fBFrom \fIsender time_stamp\fR" envelope header to
103 the message content.
104 This is expected by, for example, \fBUUCP\fR software.
105 .IP \fBO\fR
106 Prepend an "\fBX-Original-To: \fIrecipient\fR" message header
107 with the recipient address as given to Postfix. Note: for this to
108 work, the \fItransport\fB_destination_recipient_limit\fR must be 1
109 (see SINGLE-RECIPIENT DELIVERY above for details).
111 This feature is available as of Postfix 2.0.
112 .IP \fBR\fR
113 Prepend a \fBReturn-Path:\fR message header with the envelope sender
114 address.
115 .IP \fBX\fR
116 Indicate that the external command performs final delivery.
117 This flag affects the status reported in "success" DSN
118 (delivery status notification) messages, and changes it
119 from "relayed" into "delivered".
121 This feature is available as of Postfix 2.5.
122 .IP \fBh\fR
123 Fold the command-line \fB$original_recipient\fR and
124 \fB$recipient\fR address domain part
125 (text to the right of the right-most \fB@\fR character) to
126 lower case; fold the entire command-line \fB$domain\fR and
127 \fB$nexthop\fR host or domain information to lower case.
128 This is recommended for delivery via \fBUUCP\fR.
129 .IP \fBq\fR
130 Quote white space and other special characters in the command-line
131 \fB$sender\fR, \fB$original_recipient\fR and \fB$recipient\fR
132 address localparts (text to the
133 left of the right-most \fB@\fR character), according to an 8-bit
134 transparent version of RFC 822.
135 This is recommended for delivery via \fBUUCP\fR or \fBBSMTP\fR.
137 The result is compatible with the address parsing of command-line
138 recipients by the Postfix \fBsendmail\fR(1) mail submission command.
140 The \fBq\fR flag affects only entire addresses, not the partial
141 address information from the \fB$user\fR, \fB$extension\fR or
142 \fB$mailbox\fR command-line macros.
143 .IP \fBu\fR
144 Fold the command-line \fB$original_recipient\fR and
145 \fB$recipient\fR address localpart (text to
146 the left of the right-most \fB@\fR character) to lower case.
147 This is recommended for delivery via \fBUUCP\fR.
148 .IP \fB.\fR
149 Prepend "\fB.\fR" to lines starting with "\fB.\fR". This is needed
150 by, for example, \fBBSMTP\fR software.
151 .IP \fB>\fR
152 Prepend "\fB>\fR" to lines starting with "\fBFrom \fR". This is expected
153 by, for example, \fBUUCP\fR software.
155 .IP "\fBnull_sender\fR=\fIreplacement\fR (default: MAILER-DAEMON)"
156 Replace the null sender address (typically used for delivery
157 status notifications) with the specified text
158 when expanding the \fB$sender\fR command-line macro, and
159 when generating a From_ or Return-Path: message header.
161 If the null sender replacement text is a non-empty string
162 then it is affected by the \fBq\fR flag for address quoting
163 in command-line arguments.
165 The null sender replacement text may be empty; this form
166 is recommended for content filters that feed mail back into
167 Postfix. The empty sender address is not affected by the
168 \fBq\fR flag for address quoting in command-line arguments.
170 Caution: a null sender address is easily mis-parsed by
171 naive software. For example, when the \fBpipe\fR(8) daemon
172 executes a command such as:
175     \fIWrong\fR: command -f$sender -- $recipient
178 the command will mis-parse the -f option value when the
179 sender address is a null string.  For correct parsing,
180 specify \fB$sender\fR as an argument by itself:
183     \fIRight\fR: command -f $sender -- $recipient
186 This feature is available as of Postfix 2.3.
187 .IP "\fBsize\fR=\fIsize_limit\fR (optional)"
188 Don't deliver messages that exceed this size limit (in
189 bytes); return them to the sender instead.
190 .IP "\fBuser\fR=\fIusername\fR (required)"
191 .IP "\fBuser\fR=\fIusername\fR:\fIgroupname\fR"
192 Execute the external command with the rights of the
193 specified \fIusername\fR.  The software refuses to execute
194 commands with root privileges, or with the privileges of the
195 mail system owner. If \fIgroupname\fR is specified, the
196 corresponding group ID is used instead of the group ID of
197 \fIusername\fR.
198 .IP "\fBargv\fR=\fIcommand\fR... (required)"
199 The command to be executed. This must be specified as the
200 last command attribute.
201 The command is executed directly, i.e. without interpretation of
202 shell meta characters by a shell command interpreter.
204 In the command argument vector, the following macros are recognized
205 and replaced with corresponding information from the Postfix queue
206 manager delivery request.
208 In addition to the form ${\fIname\fR}, the forms $\fIname\fR and
209 $(\fIname\fR) are also recognized.  Specify \fB$$\fR where a single
210 \fB$\fR is wanted.
212 .IP \fB${\fBclient_address\fR}\fR
213 This macro expands to the remote client network address.
215 This feature is available as of Postfix 2.2.
216 .IP \fB${\fBclient_helo\fR}\fR
217 This macro expands to the remote client HELO command parameter.
219 This feature is available as of Postfix 2.2.
220 .IP \fB${\fBclient_hostname\fR}\fR
221 This macro expands to the remote client hostname.
223 This feature is available as of Postfix 2.2.
224 .IP \fB${\fBclient_port\fR}\fR
225 This macro expands to the remote client TCP port number.
227 This feature is available as of Postfix 2.5.
228 .IP \fB${\fBclient_protocol\fR}\fR
229 This macro expands to the remote client protocol.
231 This feature is available as of Postfix 2.2.
232 .IP \fB${\fBdomain\fR}\fR
233 This macro expands to the domain portion of the recipient
234 address.  For example, with an address \fIuser+foo@domain\fR
235 the domain is \fIdomain\fR.
237 This information is modified by the \fBh\fR flag for case folding.
239 This feature is available as of Postfix 2.5.
240 .IP \fB${\fBextension\fR}\fR
241 This macro expands to the extension part of a recipient address.
242 For example, with an address \fIuser+foo@domain\fR the extension is
243 \fIfoo\fR.
245 A command-line argument that contains \fB${\fBextension\fR}\fR expands
246 into as many command-line arguments as there are recipients.
248 This information is modified by the \fBu\fR flag for case folding.
249 .IP \fB${\fBmailbox\fR}\fR
250 This macro expands to the complete local part of a recipient address.
251 For example, with an address \fIuser+foo@domain\fR the mailbox is
252 \fIuser+foo\fR.
254 A command-line argument that contains \fB${\fBmailbox\fR}\fR
255 expands to as many command-line arguments as there are recipients.
257 This information is modified by the \fBu\fR flag for case folding.
258 .IP \fB${\fBnexthop\fR}\fR
259 This macro expands to the next-hop hostname.
261 This information is modified by the \fBh\fR flag for case folding.
262 .IP \fB${\fBoriginal_recipient\fR}\fR
263 This macro expands to the complete recipient address before any
264 address rewriting or aliasing.
266 A command-line argument that contains
267 \fB${\fBoriginal_recipient\fR}\fR expands to as many
268 command-line arguments as there are recipients.
270 This information is modified by the \fBhqu\fR flags for quoting
271 and case folding.
273 This feature is available as of Postfix 2.5.
274 .IP \fB${\fBrecipient\fR}\fR
275 This macro expands to the complete recipient address.
277 A command-line argument that contains \fB${\fBrecipient\fR}\fR
278 expands to as many command-line arguments as there are recipients.
280 This information is modified by the \fBhqu\fR flags for quoting
281 and case folding.
282 .IP \fB${\fBsasl_method\fR}\fR
283 This macro expands to the name of the SASL authentication
284 mechanism in the AUTH command when the Postfix SMTP server
285 received the message.
287 This feature is available as of Postfix 2.2.
288 .IP \fB${\fBsasl_sender\fR}\fR
289 This macro expands to the SASL sender name (i.e. the original
290 submitter as per RFC 4954) in the MAIL FROM command when
291 the Postfix SMTP server received the message.
293 This feature is available as of Postfix 2.2.
294 .IP \fB${\fBsasl_username\fR}\fR
295 This macro expands to the SASL user name in the AUTH command
296 when the Postfix SMTP server received the message.
298 This feature is available as of Postfix 2.2.
299 .IP \fB${\fBsender\fR}\fR
300 This macro expands to the envelope sender address. By default,
301 the null sender address expands to MAILER-DAEMON; this can
302 be changed with the \fBnull_sender\fR attribute, as described
303 above.
305 This information is modified by the \fBq\fR flag for quoting.
306 .IP \fB${\fBsize\fR}\fR
307 This macro expands to Postfix's idea of the message size, which
308 is an approximation of the size of the message as delivered.
309 .IP \fB${\fBuser\fR}\fR
310 This macro expands to the username part of a recipient address.
311 For example, with an address \fIuser+foo@domain\fR the username
312 part is \fIuser\fR.
314 A command-line argument that contains \fB${\fBuser\fR}\fR expands
315 into as many command-line arguments as there are recipients.
317 This information is modified by the \fBu\fR flag for case folding.
319 .SH "STANDARDS"
322 RFC 3463 (Enhanced status codes)
323 .SH DIAGNOSTICS
326 Command exit status codes are expected to
327 follow the conventions defined in <\fBsysexits.h\fR>.
328 Exit status 0 means normal successful completion.
330 Postfix version 2.3 and later support RFC 3463-style enhanced
331 status codes.  If a command terminates with a non-zero exit
332 status, and the command output begins with an enhanced
333 status code, this status code takes precedence over the
334 non-zero exit status.
336 Problems and transactions are logged to \fBsyslogd\fR(8).
337 Corrupted message files are marked so that the queue manager
338 can move them to the \fBcorrupt\fR queue for further inspection.
339 .SH "SECURITY"
344 This program needs a dual personality 1) to access the private
345 Postfix queue and IPC mechanisms, and 2) to execute external
346 commands as the specified user. It is therefore security sensitive.
347 .SH "CONFIGURATION PARAMETERS"
352 Changes to \fBmain.cf\fR are picked up automatically as \fBpipe\fR(8)
353 processes run for only a limited amount of time. Use the command
354 "\fBpostfix reload\fR" to speed up a change.
356 The text below provides only a parameter summary. See
357 \fBpostconf\fR(5) for more details including examples.
358 .SH "RESOURCE AND RATE CONTROLS"
363 In the text below, \fItransport\fR is the first field in a
364 \fBmaster.cf\fR entry.
365 .IP "\fItransport\fB_destination_concurrency_limit ($default_destination_concurrency_limit)\fR"
366 Limit the number of parallel deliveries to the same destination,
367 for delivery via the named \fItransport\fR.
368 The limit is enforced by the Postfix queue manager.
369 .IP "\fItransport\fB_destination_recipient_limit ($default_destination_recipient_limit)\fR"
370 Limit the number of recipients per message delivery, for delivery
371 via the named \fItransport\fR.
372 The limit is enforced by the Postfix queue manager.
373 .IP "\fItransport\fB_time_limit ($command_time_limit)\fR"
374 Limit the time for delivery to external command, for delivery via
375 the named \fItransport\fR.
376 The limit is enforced by the pipe delivery agent.
378 Postfix 2.4 and later support a suffix that specifies the
379 time unit: s (seconds), m (minutes), h (hours), d (days),
380 w (weeks). The default time unit is seconds.
381 .SH "MISCELLANEOUS CONTROLS"
386 .IP "\fBconfig_directory (see 'postconf -d' output)\fR"
387 The default location of the Postfix main.cf and master.cf
388 configuration files.
389 .IP "\fBdaemon_timeout (18000s)\fR"
390 How much time a Postfix daemon process may take to handle a
391 request before it is terminated by a built-in watchdog timer.
392 .IP "\fBdelay_logging_resolution_limit (2)\fR"
393 The maximal number of digits after the decimal point when logging
394 sub-second delay values.
395 .IP "\fBexport_environment (see 'postconf -d' output)\fR"
396 The list of environment variables that a Postfix process will export
397 to non-Postfix processes.
398 .IP "\fBipc_timeout (3600s)\fR"
399 The time limit for sending or receiving information over an internal
400 communication channel.
401 .IP "\fBmail_owner (postfix)\fR"
402 The UNIX system account that owns the Postfix queue and most Postfix
403 daemon processes.
404 .IP "\fBmax_idle (100s)\fR"
405 The maximum amount of time that an idle Postfix daemon process waits
406 for an incoming connection before terminating voluntarily.
407 .IP "\fBmax_use (100)\fR"
408 The maximal number of incoming connections that a Postfix daemon
409 process will service before terminating voluntarily.
410 .IP "\fBprocess_id (read-only)\fR"
411 The process ID of a Postfix command or daemon process.
412 .IP "\fBprocess_name (read-only)\fR"
413 The process name of a Postfix command or daemon process.
414 .IP "\fBqueue_directory (see 'postconf -d' output)\fR"
415 The location of the Postfix top-level queue directory.
416 .IP "\fBrecipient_delimiter (empty)\fR"
417 The separator between user names and address extensions (user+foo).
418 .IP "\fBsyslog_facility (mail)\fR"
419 The syslog facility of Postfix logging.
420 .IP "\fBsyslog_name (see 'postconf -d' output)\fR"
421 The mail system name that is prepended to the process name in syslog
422 records, so that "smtpd" becomes, for example, "postfix/smtpd".
423 .SH "SEE ALSO"
426 qmgr(8), queue manager
427 bounce(8), delivery status reports
428 postconf(5), configuration parameters
429 master(5), generic daemon options
430 master(8), process manager
431 syslogd(8), system logging
432 .SH "LICENSE"
437 The Secure Mailer license must be distributed with this software.
438 .SH "AUTHOR(S)"
441 Wietse Venema
442 IBM T.J. Watson Research
443 P.O. Box 704
444 Yorktown Heights, NY 10598, USA