diff --git a/postfix/HISTORY b/postfix/HISTORY index a842a522a..43d5a7943 100644 --- a/postfix/HISTORY +++ b/postfix/HISTORY @@ -17918,3 +17918,14 @@ Apologies for any names omitted. specific to the virtual(8) delivery agent, and will have no effect when mail is delivered with a different program. Files: proto/postconf.proto, proto/VIRTUAL_README.html. + +20120824 + + Feature: support for "sendmail -R hdrs|full". Jan Kundrát. + File: sendmail/sendmail.c. + +20120902 + + Documentation: updated TUNING_README with new pointers to + the STRESS_README and POSTSCREEN_README documents. Miscellaneous + documentation clarifications based on postfix-users discussions. diff --git a/postfix/README_FILES/IPV6_README b/postfix/README_FILES/IPV6_README index d60b0e5f0..872756ee9 100644 --- a/postfix/README_FILES/IPV6_README +++ b/postfix/README_FILES/IPV6_README @@ -132,12 +132,13 @@ aa ""ttyyppee::ttaabbllee"" ppaatttteerrnn.. KKnnoowwnn LLiimmiittaattiioonnss - * The order of IPv6/IPv4 outgoing connection attempts is not yet - configurable. Currently, IPv6 is tried before IPv4. + * Postfix SMTP clients before version 2.8 try to connect over IPv6 before + trying IPv4. With more recent Postfix versions, the order of IPv6 versus + IPv4 outgoing connection attempts is configurable with the + smtp_address_preference parameter. - * Postfix currently does not support DNSBL (real-time blackhole list) lookups - for IPv6 client IP addresses; currently there are no blacklists that cover - the IPv6 address space. + * Postfix versions before 2.6 do not support DNSBL (real-time blackhole list) + lookups for IPv6 client IP addresses. * IPv6 does not have class A, B, C, etc. networks. With IPv6 networks, the setting "mynetworks_style = class" has the same effect as the setting diff --git a/postfix/README_FILES/POSTSCREEN_README b/postfix/README_FILES/POSTSCREEN_README index d5dad128e..0d2c1695b 100644 --- a/postfix/README_FILES/POSTSCREEN_README +++ b/postfix/README_FILES/POSTSCREEN_README @@ -4,6 +4,8 @@ PPoossttffiixx PPoossttssccrreeeenn HHoowwttoo IInnttrroodduuccttiioonn +This document describes features that are available in Postfix 2.8 and later. + The Postfix postscreen(8) daemon provides additional protection against mail server overload. One postscreen(8) process handles multiple inbound SMTP connections, and decides which clients may talk to a Postfix SMTP server diff --git a/postfix/README_FILES/TLS_README b/postfix/README_FILES/TLS_README index 1bf1d3076..d48c89d0c 100644 --- a/postfix/README_FILES/TLS_README +++ b/postfix/README_FILES/TLS_README @@ -1592,10 +1592,11 @@ In the examples below, user input is shown in bboolldd font, and a "#" promp indicates a super-user shell. * Become your own Certificate Authority, so that you can sign your own public - keys. This example uses the CA.pl script that ships with OpenSSL. By - default, OpenSSL installs this as /usr/local/ssl/misc/CA.pl, but your - mileage may vary. The script creates a private key in ./demoCA/private/ - cakey.pem and a public key in ./demoCA/cacert.pem. + keys. This example uses the CA.pl script that ships with OpenSSL. On some + systems, OpenSSL installs this as /usr/local/ssl/misc/CA.pl. Some systems + install this as part of a package named openssl-perl or something similar. + The script creates a private key in ./demoCA/private/cakey.pem and a public + key in ./demoCA/cacert.pem. % //uussrr//llooccaall//ssssll//mmiisscc//CCAA..ppll --nneewwccaa CA certificate filename (or enter to create) diff --git a/postfix/README_FILES/TUNING_README b/postfix/README_FILES/TUNING_README index 56f87da73..b7a3f3a3d 100644 --- a/postfix/README_FILES/TUNING_README +++ b/postfix/README_FILES/TUNING_README @@ -77,8 +77,8 @@ When Postfix responds slowly to SMTP clients: * If the number of smtpd(8) processes has reached the process limit as specified in master.cf, new SMTP clients must wait until a process becomes - available. Increase the number of processes if memory permits. See the - instructions given under "Tuning the number of Postfix processes". + available. See the STRESS_README and POSTSCREEN_README documents for + measures that help to prevent SMTP server overload. DDooiinngg mmoorree wwoorrkk wwiitthh yyoouurr SSMMTTPP sseerrvveerr pprroocceesssseess @@ -268,12 +268,12 @@ should never be the default. They should be used only for transports that deliver mail to a small number of high volume domains. A common situation where high concurrency is called for is on gateways relaying -a high volume of mail from between the Internet and an intranet mail -environment. Approximately half the mail (assuming equal volumes inbound and -outbound) will be destined for the internal mail hubs. Since the internal mail -hubs will be receiving all external mail exclusively from the gateway, it is -reasonable to configure the gateway to make greater demands on the capacity of -the internal SMTP servers. +a high volume of mail between the Internet and an intranet mail environment. +Approximately half the mail (assuming equal volumes inbound and outbound) will +be destined for the internal mail hubs. Since the internal mail hubs will be +receiving all external mail exclusively from the gateway, it is reasonable to +configure the gateway to make greater demands on the capacity of the internal +SMTP servers. The tuning of the inbound concurrency limits need not be trial and error. A high volume capable mailhub should be able to easily handle 50 or 100 (rather @@ -312,8 +312,8 @@ Postfix queue manager breaks up the list of recipients into smaller lists. Postfix will attempt to send multiple copies of the message in parallel. IMPORTANT: Be careful when increasing the recipient limit per message delivery; -some smtpd(8) servers abort the connection when they run out of memory or when -a hard recipient limit is reached, so that the message will never be delivered. +some SMTP servers abort the connection when they run out of memory or when a +hard recipient limit is reached, so that the message will never be delivered. The smtpd_recipient_limit parameter (default: 1000) controls how many recipients the Postfix smtpd(8) server will take per delivery. The default @@ -400,14 +400,14 @@ client processes, 10 SMTP server processes, and so on: /etc/postfix/main.cf: default_process_limit = 10 -You need to execute "postfix reload" to make the change effective. The limits -are enforced by the Postfix master(8) daemon which does not automatically read +You need to execute "postfix reload" to make the change effective. This limit +is enforced by the Postfix master(8) daemon which does not automatically read main.cf when it changes. You can override the process limit for specific Postfix daemons by editing the master.cf file. For example, if you do not wish to receive 100 SMTP messages at -the same time, but do not want to change the process limits for local mail -deliveries, you could specify: +the same time, but do not want to change the process limits for other Postfix +daemons, you could specify: /etc/postfix/master.cf: # ==================================================================== diff --git a/postfix/WISHLIST b/postfix/WISHLIST index f1121a6fb..d7841a01a 100644 --- a/postfix/WISHLIST +++ b/postfix/WISHLIST @@ -9,10 +9,19 @@ Wish list: Don't forget Apple's code donation for fetching mail from IMAP server. + Parallelized queue preprocessing: rip out the queue manager + code to read queue files and resolve recipients, and run + it in parallel processes. The queue manager then processes + their results as they become available. This would eliminate + the qmgr<->trivial-rewrite bottleneck. This can also eliminate + much of the scheduling disadvantage of a single queue manager + compared to hundreds of mail receiving or sending processes + (especially if there is a way to scan the queue in parallel). + mem_pool module for frequently-allocated objects such as postscreen VSTRINGS and STATE objects. Operations: create, put, get, maybe destroy. - Call-backs: create, reset, and maybe destroy. + Call-backs: init, reset, and maybe destroy. Make "rename" the default when postmapping a DB file (later: use copy+rename for postmap -i, postmap -d). diff --git a/postfix/html/IPV6_README.html b/postfix/html/IPV6_README.html index 0514d22f6..01810c08e 100644 --- a/postfix/html/IPV6_README.html +++ b/postfix/html/IPV6_README.html @@ -204,12 +204,13 @@ confused with a "type:table" pattern. @@ -391,7 +389,7 @@ default. They should be used only for transports that deliver mail to a small number of high volume domains.

A common situation where high concurrency is called for is on -gateways relaying a high volume of mail from between the Internet +gateways relaying a high volume of mail between the Internet and an intranet mail environment. Approximately half the mail (assuming equal volumes inbound and outbound) will be destined for the internal mail hubs. Since the internal mail hubs will be @@ -441,7 +439,7 @@ recipients into smaller lists. Postfix will attempt to send multiple copies of the message in parallel.

IMPORTANT: Be careful when increasing the recipient limit per -message delivery; some smtpd(8) servers abort the connection when they +message delivery; some SMTP servers abort the connection when they run out of memory or when a hard recipient limit is reached, so that the message will never be delivered.

@@ -568,13 +566,13 @@ and so on:

You need to execute "postfix reload" to make the change effective. -The limits are enforced by the Postfix master(8) daemon which does +This limit is enforced by the Postfix master(8) daemon which does not automatically read main.cf when it changes.

You can override the process limit for specific Postfix daemons by editing the master.cf file. For example, if you do not wish to receive 100 SMTP messages at the same time, but do not want to -change the process limits for local mail deliveries, you could +change the process limits for other Postfix daemons, you could specify:

diff --git a/postfix/html/mailq.1.html b/postfix/html/mailq.1.html index 7dc5ccb3d..32de6bf2d 100644 --- a/postfix/html/mailq.1.html +++ b/postfix/html/mailq.1.html @@ -217,45 +217,54 @@ SENDMAIL(1) SENDMAIL(1) Postfix versions before 2.1, the Errors-To: message header overrides the error return address. - -R return_limit (ignored) - Limit the size of bounced mail. Use the - bounce_size_limit configuration parameter instead. + -R return + Delivery status notification control. Specify + "hdrs" to return only the header if a message + bounces, "full" to return a full copy (the default + behavior). - -q Attempt to deliver all queued mail. This is imple- + The -R option specifies an upper bound; for exam- + ple, Postfix will return only the header, when a + full copy would exceed the bounce_size_limit set- + ting. + + This option is ignored before Postfix version 2.10. + + -q Attempt to deliver all queued mail. This is imple- mented by executing the postqueue(1) command. Warning: flushing undeliverable mail frequently - will result in poor delivery performance of all + will result in poor delivery performance of all other mail. -qinterval (ignored) - The interval between queue runs. Use the + The interval between queue runs. Use the queue_run_delay configuration parameter instead. -qIqueueid Schedule immediate delivery of mail with the speci- - fied queue ID. This option is implemented by exe- - cuting the postqueue(1) command, and is available + fied queue ID. This option is implemented by exe- + cuting the postqueue(1) command, and is available with Postfix version 2.4 and later. -qRsite - Schedule immediate delivery of all mail that is + Schedule immediate delivery of all mail that is queued for the named site. This option accepts only - site names that are eligible for the "fast flush" - service, and is implemented by executing the + site names that are eligible for the "fast flush" + service, and is implemented by executing the postqueue(1) command. See flush(8) for more infor- mation about the "fast flush" service. -qSsite - This command is not implemented. Use the slower + This command is not implemented. Use the slower "sendmail -q" command instead. - -t Extract recipients from message headers. These are - added to any recipients specified on the command + -t Extract recipients from message headers. These are + added to any recipients specified on the command line. - With Postfix versions prior to 2.1, this option - requires that no recipient addresses are specified + With Postfix versions prior to 2.1, this option + requires that no recipient addresses are specified on the command line. -U (ignored) @@ -268,41 +277,41 @@ SENDMAIL(1) SENDMAIL(1) This feature is available in Postfix 2.3 and later. -XV (Postfix 2.2 and earlier: -V) - Variable Envelope Return Path. Given an envelope - sender address of the form owner-listname@origin, - each recipient user@domain receives mail with a + Variable Envelope Return Path. Given an envelope + sender address of the form owner-listname@origin, + each recipient user@domain receives mail with a personalized envelope sender address. - By default, the personalized envelope sender - address is owner-listname+user=domain@origin. The - default + and = characters are configurable with - the default_verp_delimiters configuration parame- + By default, the personalized envelope sender + address is owner-listname+user=domain@origin. The + default + and = characters are configurable with + the default_verp_delimiters configuration parame- ter. -XVxy (Postfix 2.2 and earlier: -Vxy) - As -XV, but uses x and y as the VERP delimiter - characters, instead of the characters specified - with the default_verp_delimiters configuration + As -XV, but uses x and y as the VERP delimiter + characters, instead of the characters specified + with the default_verp_delimiters configuration parameter. - -v Send an email report of the first delivery attempt - (Postfix versions 2.1 and later). Mail delivery - always happens in the background. When multiple -v + -v Send an email report of the first delivery attempt + (Postfix versions 2.1 and later). Mail delivery + always happens in the background. When multiple -v options are given, enable verbose logging for debugging purposes. -X log_file (ignored) - Log mailer traffic. Use the debug_peer_list and - debug_peer_level configuration parameters instead. + Log mailer traffic. Use the debug_peer_list and + debug_peer_level configuration parameters instead. SECURITY - By design, this program is not set-user (or group) id. - However, it must handle data from untrusted, possibly - remote, users. Thus, the usual precautions need to be + By design, this program is not set-user (or group) id. + However, it must handle data from untrusted, possibly + remote, users. Thus, the usual precautions need to be taken against malicious inputs. DIAGNOSTICS - Problems are logged to syslogd(8) and to the standard + Problems are logged to syslogd(8) and to the standard error stream. ENVIRONMENT @@ -314,29 +323,29 @@ SENDMAIL(1) SENDMAIL(1) MAIL_DEBUG (value does not matter) Enable debugging with an external command, as spec- - ified with the debugger_command configuration + ified with the debugger_command configuration parameter. - NAME The sender full name. This is used only with mes- - sages that have no From: message header. See also + NAME The sender full name. This is used only with mes- + sages that have no From: message header. See also the -F option above. CONFIGURATION PARAMETERS - The following main.cf parameters are especially relevant + The following main.cf parameters are especially relevant to this program. The text below provides only a parameter - summary. See postconf(5) for more details including exam- + summary. See postconf(5) for more details including exam- ples. COMPATIBILITY CONTROLS Available with Postfix 2.9 and later: sendmail_fix_line_endings (always) - Controls how the Postfix sendmail command converts - email message line endings from <CR><LF> into UNIX + Controls how the Postfix sendmail command converts + email message line endings from <CR><LF> into UNIX format (<LF>). TROUBLE SHOOTING CONTROLS - The DEBUG_README file gives examples of how to trouble + The DEBUG_README file gives examples of how to trouble shoot a Postfix system. debugger_command (empty) @@ -344,29 +353,29 @@ SENDMAIL(1) SENDMAIL(1) mon program is invoked with the -D option. debug_peer_level (2) - The increment in verbose logging level when a - remote client or server matches a pattern in the + The increment in verbose logging level when a + remote client or server matches a pattern in the debug_peer_list parameter. debug_peer_list (empty) - Optional list of remote client or server hostname - or network address patterns that cause the verbose - logging level to increase by the amount specified + Optional list of remote client or server hostname + or network address patterns that cause the verbose + logging level to increase by the amount specified in $debug_peer_level. ACCESS CONTROLS Available in Postfix version 2.2 and later: authorized_flush_users (static:anyone) - List of users who are authorized to flush the + List of users who are authorized to flush the queue. authorized_mailq_users (static:anyone) List of users who are authorized to view the queue. authorized_submit_users (static:anyone) - List of users who are authorized to submit mail - with the sendmail(1) command (and with the privi- + List of users who are authorized to submit mail + with the sendmail(1) command (and with the privi- leged postdrop(1) helper command). RESOURCE AND RATE CONTROLS @@ -375,7 +384,7 @@ SENDMAIL(1) SENDMAIL(1) sent in a non-delivery notification. fork_attempts (5) - The maximal number of attempts to fork() a child + The maximal number of attempts to fork() a child process. fork_delay (1s) @@ -383,11 +392,11 @@ SENDMAIL(1) SENDMAIL(1) process. hopcount_limit (50) - The maximal number of Received: message headers + The maximal number of Received: message headers that is allowed in the primary message headers. queue_run_delay (300s) - The time between deferred queue scans by the queue + The time between deferred queue scans by the queue manager; prior to Postfix 2.4 the default value was 1000s. @@ -397,37 +406,37 @@ SENDMAIL(1) SENDMAIL(1) fast_flush_domains ($relay_domains) Optional list of destinations that are eligible for - per-destination logfiles with mail that is queued + per-destination logfiles with mail that is queued to those destinations. VERP CONTROLS The VERP_README file describes configuration and operation - details of Postfix support for variable envelope return + details of Postfix support for variable envelope return path addresses. default_verp_delimiters (+=) The two default VERP delimiter characters. verp_delimiter_filter (-=+) - The characters Postfix accepts as VERP delimiter - characters on the Postfix sendmail(1) command line + The characters Postfix accepts as VERP delimiter + characters on the Postfix sendmail(1) command line and in SMTP commands. MISCELLANEOUS CONTROLS alias_database (see 'postconf -d' output) - The alias databases for local(8) delivery that are + The alias databases for local(8) delivery that are updated with "newaliases" or with "sendmail -bi". command_directory (see 'postconf -d' output) - The location of all postfix administrative com- + The location of all postfix administrative com- mands. config_directory (see 'postconf -d' output) - The default location of the Postfix main.cf and + The default location of the Postfix main.cf and master.cf configuration files. daemon_directory (see 'postconf -d' output) - The directory with Postfix support programs and + The directory with Postfix support programs and daemon programs. default_database_type (see 'postconf -d' output) @@ -435,16 +444,16 @@ SENDMAIL(1) SENDMAIL(1) postalias(1) and postmap(1) commands. delay_warning_time (0h) - The time after which the sender receives the mes- + The time after which the sender receives the mes- sage headers of mail that is still queued. enable_errors_to (no) - Report mail delivery errors to the address speci- - fied with the non-standard Errors-To: message - header, instead of the envelope sender address - (this feature is removed with Postfix version 2.2, - is turned off by default with Postfix version 2.1, - and is always turned on with older Postfix ver- + Report mail delivery errors to the address speci- + fied with the non-standard Errors-To: message + header, instead of the envelope sender address + (this feature is removed with Postfix version 2.2, + is turned off by default with Postfix version 2.1, + and is always turned on with older Postfix ver- sions). mail_owner (postfix) @@ -452,21 +461,21 @@ SENDMAIL(1) SENDMAIL(1) and most Postfix daemon processes. queue_directory (see 'postconf -d' output) - The location of the Postfix top-level queue direc- + The location of the Postfix top-level queue direc- tory. remote_header_rewrite_domain (empty) - Don't rewrite message headers from remote clients + Don't rewrite message headers from remote clients at all when this parameter is empty; otherwise, re- - write message headers and append the specified + write message headers and append the specified domain name to incomplete addresses. syslog_facility (mail) The syslog facility of Postfix logging. syslog_name (see 'postconf -d' output) - The mail system name that is prepended to the - process name in syslog records, so that "smtpd" + The mail system name that is prepended to the + process name in syslog records, so that "smtpd" becomes, for example, "postfix/smtpd". FILES @@ -491,7 +500,7 @@ SENDMAIL(1) SENDMAIL(1) VERP_README, Postfix VERP howto LICENSE - The Secure Mailer license must be distributed with this + The Secure Mailer license must be distributed with this software. AUTHOR(S) diff --git a/postfix/html/newaliases.1.html b/postfix/html/newaliases.1.html index 7dc5ccb3d..32de6bf2d 100644 --- a/postfix/html/newaliases.1.html +++ b/postfix/html/newaliases.1.html @@ -217,45 +217,54 @@ SENDMAIL(1) SENDMAIL(1) Postfix versions before 2.1, the Errors-To: message header overrides the error return address. - -R return_limit (ignored) - Limit the size of bounced mail. Use the - bounce_size_limit configuration parameter instead. + -R return + Delivery status notification control. Specify + "hdrs" to return only the header if a message + bounces, "full" to return a full copy (the default + behavior). - -q Attempt to deliver all queued mail. This is imple- + The -R option specifies an upper bound; for exam- + ple, Postfix will return only the header, when a + full copy would exceed the bounce_size_limit set- + ting. + + This option is ignored before Postfix version 2.10. + + -q Attempt to deliver all queued mail. This is imple- mented by executing the postqueue(1) command. Warning: flushing undeliverable mail frequently - will result in poor delivery performance of all + will result in poor delivery performance of all other mail. -qinterval (ignored) - The interval between queue runs. Use the + The interval between queue runs. Use the queue_run_delay configuration parameter instead. -qIqueueid Schedule immediate delivery of mail with the speci- - fied queue ID. This option is implemented by exe- - cuting the postqueue(1) command, and is available + fied queue ID. This option is implemented by exe- + cuting the postqueue(1) command, and is available with Postfix version 2.4 and later. -qRsite - Schedule immediate delivery of all mail that is + Schedule immediate delivery of all mail that is queued for the named site. This option accepts only - site names that are eligible for the "fast flush" - service, and is implemented by executing the + site names that are eligible for the "fast flush" + service, and is implemented by executing the postqueue(1) command. See flush(8) for more infor- mation about the "fast flush" service. -qSsite - This command is not implemented. Use the slower + This command is not implemented. Use the slower "sendmail -q" command instead. - -t Extract recipients from message headers. These are - added to any recipients specified on the command + -t Extract recipients from message headers. These are + added to any recipients specified on the command line. - With Postfix versions prior to 2.1, this option - requires that no recipient addresses are specified + With Postfix versions prior to 2.1, this option + requires that no recipient addresses are specified on the command line. -U (ignored) @@ -268,41 +277,41 @@ SENDMAIL(1) SENDMAIL(1) This feature is available in Postfix 2.3 and later. -XV (Postfix 2.2 and earlier: -V) - Variable Envelope Return Path. Given an envelope - sender address of the form owner-listname@origin, - each recipient user@domain receives mail with a + Variable Envelope Return Path. Given an envelope + sender address of the form owner-listname@origin, + each recipient user@domain receives mail with a personalized envelope sender address. - By default, the personalized envelope sender - address is owner-listname+user=domain@origin. The - default + and = characters are configurable with - the default_verp_delimiters configuration parame- + By default, the personalized envelope sender + address is owner-listname+user=domain@origin. The + default + and = characters are configurable with + the default_verp_delimiters configuration parame- ter. -XVxy (Postfix 2.2 and earlier: -Vxy) - As -XV, but uses x and y as the VERP delimiter - characters, instead of the characters specified - with the default_verp_delimiters configuration + As -XV, but uses x and y as the VERP delimiter + characters, instead of the characters specified + with the default_verp_delimiters configuration parameter. - -v Send an email report of the first delivery attempt - (Postfix versions 2.1 and later). Mail delivery - always happens in the background. When multiple -v + -v Send an email report of the first delivery attempt + (Postfix versions 2.1 and later). Mail delivery + always happens in the background. When multiple -v options are given, enable verbose logging for debugging purposes. -X log_file (ignored) - Log mailer traffic. Use the debug_peer_list and - debug_peer_level configuration parameters instead. + Log mailer traffic. Use the debug_peer_list and + debug_peer_level configuration parameters instead. SECURITY - By design, this program is not set-user (or group) id. - However, it must handle data from untrusted, possibly - remote, users. Thus, the usual precautions need to be + By design, this program is not set-user (or group) id. + However, it must handle data from untrusted, possibly + remote, users. Thus, the usual precautions need to be taken against malicious inputs. DIAGNOSTICS - Problems are logged to syslogd(8) and to the standard + Problems are logged to syslogd(8) and to the standard error stream. ENVIRONMENT @@ -314,29 +323,29 @@ SENDMAIL(1) SENDMAIL(1) MAIL_DEBUG (value does not matter) Enable debugging with an external command, as spec- - ified with the debugger_command configuration + ified with the debugger_command configuration parameter. - NAME The sender full name. This is used only with mes- - sages that have no From: message header. See also + NAME The sender full name. This is used only with mes- + sages that have no From: message header. See also the -F option above. CONFIGURATION PARAMETERS - The following main.cf parameters are especially relevant + The following main.cf parameters are especially relevant to this program. The text below provides only a parameter - summary. See postconf(5) for more details including exam- + summary. See postconf(5) for more details including exam- ples. COMPATIBILITY CONTROLS Available with Postfix 2.9 and later: sendmail_fix_line_endings (always) - Controls how the Postfix sendmail command converts - email message line endings from <CR><LF> into UNIX + Controls how the Postfix sendmail command converts + email message line endings from <CR><LF> into UNIX format (<LF>). TROUBLE SHOOTING CONTROLS - The DEBUG_README file gives examples of how to trouble + The DEBUG_README file gives examples of how to trouble shoot a Postfix system. debugger_command (empty) @@ -344,29 +353,29 @@ SENDMAIL(1) SENDMAIL(1) mon program is invoked with the -D option. debug_peer_level (2) - The increment in verbose logging level when a - remote client or server matches a pattern in the + The increment in verbose logging level when a + remote client or server matches a pattern in the debug_peer_list parameter. debug_peer_list (empty) - Optional list of remote client or server hostname - or network address patterns that cause the verbose - logging level to increase by the amount specified + Optional list of remote client or server hostname + or network address patterns that cause the verbose + logging level to increase by the amount specified in $debug_peer_level. ACCESS CONTROLS Available in Postfix version 2.2 and later: authorized_flush_users (static:anyone) - List of users who are authorized to flush the + List of users who are authorized to flush the queue. authorized_mailq_users (static:anyone) List of users who are authorized to view the queue. authorized_submit_users (static:anyone) - List of users who are authorized to submit mail - with the sendmail(1) command (and with the privi- + List of users who are authorized to submit mail + with the sendmail(1) command (and with the privi- leged postdrop(1) helper command). RESOURCE AND RATE CONTROLS @@ -375,7 +384,7 @@ SENDMAIL(1) SENDMAIL(1) sent in a non-delivery notification. fork_attempts (5) - The maximal number of attempts to fork() a child + The maximal number of attempts to fork() a child process. fork_delay (1s) @@ -383,11 +392,11 @@ SENDMAIL(1) SENDMAIL(1) process. hopcount_limit (50) - The maximal number of Received: message headers + The maximal number of Received: message headers that is allowed in the primary message headers. queue_run_delay (300s) - The time between deferred queue scans by the queue + The time between deferred queue scans by the queue manager; prior to Postfix 2.4 the default value was 1000s. @@ -397,37 +406,37 @@ SENDMAIL(1) SENDMAIL(1) fast_flush_domains ($relay_domains) Optional list of destinations that are eligible for - per-destination logfiles with mail that is queued + per-destination logfiles with mail that is queued to those destinations. VERP CONTROLS The VERP_README file describes configuration and operation - details of Postfix support for variable envelope return + details of Postfix support for variable envelope return path addresses. default_verp_delimiters (+=) The two default VERP delimiter characters. verp_delimiter_filter (-=+) - The characters Postfix accepts as VERP delimiter - characters on the Postfix sendmail(1) command line + The characters Postfix accepts as VERP delimiter + characters on the Postfix sendmail(1) command line and in SMTP commands. MISCELLANEOUS CONTROLS alias_database (see 'postconf -d' output) - The alias databases for local(8) delivery that are + The alias databases for local(8) delivery that are updated with "newaliases" or with "sendmail -bi". command_directory (see 'postconf -d' output) - The location of all postfix administrative com- + The location of all postfix administrative com- mands. config_directory (see 'postconf -d' output) - The default location of the Postfix main.cf and + The default location of the Postfix main.cf and master.cf configuration files. daemon_directory (see 'postconf -d' output) - The directory with Postfix support programs and + The directory with Postfix support programs and daemon programs. default_database_type (see 'postconf -d' output) @@ -435,16 +444,16 @@ SENDMAIL(1) SENDMAIL(1) postalias(1) and postmap(1) commands. delay_warning_time (0h) - The time after which the sender receives the mes- + The time after which the sender receives the mes- sage headers of mail that is still queued. enable_errors_to (no) - Report mail delivery errors to the address speci- - fied with the non-standard Errors-To: message - header, instead of the envelope sender address - (this feature is removed with Postfix version 2.2, - is turned off by default with Postfix version 2.1, - and is always turned on with older Postfix ver- + Report mail delivery errors to the address speci- + fied with the non-standard Errors-To: message + header, instead of the envelope sender address + (this feature is removed with Postfix version 2.2, + is turned off by default with Postfix version 2.1, + and is always turned on with older Postfix ver- sions). mail_owner (postfix) @@ -452,21 +461,21 @@ SENDMAIL(1) SENDMAIL(1) and most Postfix daemon processes. queue_directory (see 'postconf -d' output) - The location of the Postfix top-level queue direc- + The location of the Postfix top-level queue direc- tory. remote_header_rewrite_domain (empty) - Don't rewrite message headers from remote clients + Don't rewrite message headers from remote clients at all when this parameter is empty; otherwise, re- - write message headers and append the specified + write message headers and append the specified domain name to incomplete addresses. syslog_facility (mail) The syslog facility of Postfix logging. syslog_name (see 'postconf -d' output) - The mail system name that is prepended to the - process name in syslog records, so that "smtpd" + The mail system name that is prepended to the + process name in syslog records, so that "smtpd" becomes, for example, "postfix/smtpd". FILES @@ -491,7 +500,7 @@ SENDMAIL(1) SENDMAIL(1) VERP_README, Postfix VERP howto LICENSE - The Secure Mailer license must be distributed with this + The Secure Mailer license must be distributed with this software. AUTHOR(S) diff --git a/postfix/html/postconf.5.html b/postfix/html/postconf.5.html index 23a7ce039..69804ac42 100644 --- a/postfix/html/postconf.5.html +++ b/postfix/html/postconf.5.html @@ -15220,11 +15220,19 @@ Postfix 2.3 and later use smt

Safety net to keep mail queued that would otherwise be returned to the sender. This parameter disables locally-generated bounces, -and prevents the Postfix SMTP server from rejecting mail permanently, +changes the handling of negative responses from remote servers, +content filters or plugins, +and prevents the Postfix SMTP server from rejecting mail permanently by changing 5xx reply codes into 4xx. However, soft_bounce is no cure for address rewriting mistakes or mail routing mistakes.

+

+Note: "soft_bounce = yes" is in some cases implemented by modifying +server responses. Therefore, the response that Postfix logs may +differ from the response that Postfix actually sends or receives. +

+

Example:

diff --git a/postfix/html/sendmail.1.html b/postfix/html/sendmail.1.html index 7dc5ccb3d..32de6bf2d 100644 --- a/postfix/html/sendmail.1.html +++ b/postfix/html/sendmail.1.html @@ -217,45 +217,54 @@ SENDMAIL(1) SENDMAIL(1) Postfix versions before 2.1, the Errors-To: message header overrides the error return address. - -R return_limit (ignored) - Limit the size of bounced mail. Use the - bounce_size_limit configuration parameter instead. + -R return + Delivery status notification control. Specify + "hdrs" to return only the header if a message + bounces, "full" to return a full copy (the default + behavior). - -q Attempt to deliver all queued mail. This is imple- + The -R option specifies an upper bound; for exam- + ple, Postfix will return only the header, when a + full copy would exceed the bounce_size_limit set- + ting. + + This option is ignored before Postfix version 2.10. + + -q Attempt to deliver all queued mail. This is imple- mented by executing the postqueue(1) command. Warning: flushing undeliverable mail frequently - will result in poor delivery performance of all + will result in poor delivery performance of all other mail. -qinterval (ignored) - The interval between queue runs. Use the + The interval between queue runs. Use the queue_run_delay configuration parameter instead. -qIqueueid Schedule immediate delivery of mail with the speci- - fied queue ID. This option is implemented by exe- - cuting the postqueue(1) command, and is available + fied queue ID. This option is implemented by exe- + cuting the postqueue(1) command, and is available with Postfix version 2.4 and later. -qRsite - Schedule immediate delivery of all mail that is + Schedule immediate delivery of all mail that is queued for the named site. This option accepts only - site names that are eligible for the "fast flush" - service, and is implemented by executing the + site names that are eligible for the "fast flush" + service, and is implemented by executing the postqueue(1) command. See flush(8) for more infor- mation about the "fast flush" service. -qSsite - This command is not implemented. Use the slower + This command is not implemented. Use the slower "sendmail -q" command instead. - -t Extract recipients from message headers. These are - added to any recipients specified on the command + -t Extract recipients from message headers. These are + added to any recipients specified on the command line. - With Postfix versions prior to 2.1, this option - requires that no recipient addresses are specified + With Postfix versions prior to 2.1, this option + requires that no recipient addresses are specified on the command line. -U (ignored) @@ -268,41 +277,41 @@ SENDMAIL(1) SENDMAIL(1) This feature is available in Postfix 2.3 and later. -XV (Postfix 2.2 and earlier: -V) - Variable Envelope Return Path. Given an envelope - sender address of the form owner-listname@origin, - each recipient user@domain receives mail with a + Variable Envelope Return Path. Given an envelope + sender address of the form owner-listname@origin, + each recipient user@domain receives mail with a personalized envelope sender address. - By default, the personalized envelope sender - address is owner-listname+user=domain@origin. The - default + and = characters are configurable with - the default_verp_delimiters configuration parame- + By default, the personalized envelope sender + address is owner-listname+user=domain@origin. The + default + and = characters are configurable with + the default_verp_delimiters configuration parame- ter. -XVxy (Postfix 2.2 and earlier: -Vxy) - As -XV, but uses x and y as the VERP delimiter - characters, instead of the characters specified - with the default_verp_delimiters configuration + As -XV, but uses x and y as the VERP delimiter + characters, instead of the characters specified + with the default_verp_delimiters configuration parameter. - -v Send an email report of the first delivery attempt - (Postfix versions 2.1 and later). Mail delivery - always happens in the background. When multiple -v + -v Send an email report of the first delivery attempt + (Postfix versions 2.1 and later). Mail delivery + always happens in the background. When multiple -v options are given, enable verbose logging for debugging purposes. -X log_file (ignored) - Log mailer traffic. Use the debug_peer_list and - debug_peer_level configuration parameters instead. + Log mailer traffic. Use the debug_peer_list and + debug_peer_level configuration parameters instead. SECURITY - By design, this program is not set-user (or group) id. - However, it must handle data from untrusted, possibly - remote, users. Thus, the usual precautions need to be + By design, this program is not set-user (or group) id. + However, it must handle data from untrusted, possibly + remote, users. Thus, the usual precautions need to be taken against malicious inputs. DIAGNOSTICS - Problems are logged to syslogd(8) and to the standard + Problems are logged to syslogd(8) and to the standard error stream. ENVIRONMENT @@ -314,29 +323,29 @@ SENDMAIL(1) SENDMAIL(1) MAIL_DEBUG (value does not matter) Enable debugging with an external command, as spec- - ified with the debugger_command configuration + ified with the debugger_command configuration parameter. - NAME The sender full name. This is used only with mes- - sages that have no From: message header. See also + NAME The sender full name. This is used only with mes- + sages that have no From: message header. See also the -F option above. CONFIGURATION PARAMETERS - The following main.cf parameters are especially relevant + The following main.cf parameters are especially relevant to this program. The text below provides only a parameter - summary. See postconf(5) for more details including exam- + summary. See postconf(5) for more details including exam- ples. COMPATIBILITY CONTROLS Available with Postfix 2.9 and later: sendmail_fix_line_endings (always) - Controls how the Postfix sendmail command converts - email message line endings from <CR><LF> into UNIX + Controls how the Postfix sendmail command converts + email message line endings from <CR><LF> into UNIX format (<LF>). TROUBLE SHOOTING CONTROLS - The DEBUG_README file gives examples of how to trouble + The DEBUG_README file gives examples of how to trouble shoot a Postfix system. debugger_command (empty) @@ -344,29 +353,29 @@ SENDMAIL(1) SENDMAIL(1) mon program is invoked with the -D option. debug_peer_level (2) - The increment in verbose logging level when a - remote client or server matches a pattern in the + The increment in verbose logging level when a + remote client or server matches a pattern in the debug_peer_list parameter. debug_peer_list (empty) - Optional list of remote client or server hostname - or network address patterns that cause the verbose - logging level to increase by the amount specified + Optional list of remote client or server hostname + or network address patterns that cause the verbose + logging level to increase by the amount specified in $debug_peer_level. ACCESS CONTROLS Available in Postfix version 2.2 and later: authorized_flush_users (static:anyone) - List of users who are authorized to flush the + List of users who are authorized to flush the queue. authorized_mailq_users (static:anyone) List of users who are authorized to view the queue. authorized_submit_users (static:anyone) - List of users who are authorized to submit mail - with the sendmail(1) command (and with the privi- + List of users who are authorized to submit mail + with the sendmail(1) command (and with the privi- leged postdrop(1) helper command). RESOURCE AND RATE CONTROLS @@ -375,7 +384,7 @@ SENDMAIL(1) SENDMAIL(1) sent in a non-delivery notification. fork_attempts (5) - The maximal number of attempts to fork() a child + The maximal number of attempts to fork() a child process. fork_delay (1s) @@ -383,11 +392,11 @@ SENDMAIL(1) SENDMAIL(1) process. hopcount_limit (50) - The maximal number of Received: message headers + The maximal number of Received: message headers that is allowed in the primary message headers. queue_run_delay (300s) - The time between deferred queue scans by the queue + The time between deferred queue scans by the queue manager; prior to Postfix 2.4 the default value was 1000s. @@ -397,37 +406,37 @@ SENDMAIL(1) SENDMAIL(1) fast_flush_domains ($relay_domains) Optional list of destinations that are eligible for - per-destination logfiles with mail that is queued + per-destination logfiles with mail that is queued to those destinations. VERP CONTROLS The VERP_README file describes configuration and operation - details of Postfix support for variable envelope return + details of Postfix support for variable envelope return path addresses. default_verp_delimiters (+=) The two default VERP delimiter characters. verp_delimiter_filter (-=+) - The characters Postfix accepts as VERP delimiter - characters on the Postfix sendmail(1) command line + The characters Postfix accepts as VERP delimiter + characters on the Postfix sendmail(1) command line and in SMTP commands. MISCELLANEOUS CONTROLS alias_database (see 'postconf -d' output) - The alias databases for local(8) delivery that are + The alias databases for local(8) delivery that are updated with "newaliases" or with "sendmail -bi". command_directory (see 'postconf -d' output) - The location of all postfix administrative com- + The location of all postfix administrative com- mands. config_directory (see 'postconf -d' output) - The default location of the Postfix main.cf and + The default location of the Postfix main.cf and master.cf configuration files. daemon_directory (see 'postconf -d' output) - The directory with Postfix support programs and + The directory with Postfix support programs and daemon programs. default_database_type (see 'postconf -d' output) @@ -435,16 +444,16 @@ SENDMAIL(1) SENDMAIL(1) postalias(1) and postmap(1) commands. delay_warning_time (0h) - The time after which the sender receives the mes- + The time after which the sender receives the mes- sage headers of mail that is still queued. enable_errors_to (no) - Report mail delivery errors to the address speci- - fied with the non-standard Errors-To: message - header, instead of the envelope sender address - (this feature is removed with Postfix version 2.2, - is turned off by default with Postfix version 2.1, - and is always turned on with older Postfix ver- + Report mail delivery errors to the address speci- + fied with the non-standard Errors-To: message + header, instead of the envelope sender address + (this feature is removed with Postfix version 2.2, + is turned off by default with Postfix version 2.1, + and is always turned on with older Postfix ver- sions). mail_owner (postfix) @@ -452,21 +461,21 @@ SENDMAIL(1) SENDMAIL(1) and most Postfix daemon processes. queue_directory (see 'postconf -d' output) - The location of the Postfix top-level queue direc- + The location of the Postfix top-level queue direc- tory. remote_header_rewrite_domain (empty) - Don't rewrite message headers from remote clients + Don't rewrite message headers from remote clients at all when this parameter is empty; otherwise, re- - write message headers and append the specified + write message headers and append the specified domain name to incomplete addresses. syslog_facility (mail) The syslog facility of Postfix logging. syslog_name (see 'postconf -d' output) - The mail system name that is prepended to the - process name in syslog records, so that "smtpd" + The mail system name that is prepended to the + process name in syslog records, so that "smtpd" becomes, for example, "postfix/smtpd". FILES @@ -491,7 +500,7 @@ SENDMAIL(1) SENDMAIL(1) VERP_README, Postfix VERP howto LICENSE - The Secure Mailer license must be distributed with this + The Secure Mailer license must be distributed with this software. AUTHOR(S) diff --git a/postfix/man/man1/sendmail.1 b/postfix/man/man1/sendmail.1 index ae11e70e6..9d16aa23a 100644 --- a/postfix/man/man1/sendmail.1 +++ b/postfix/man/man1/sendmail.1 @@ -179,9 +179,16 @@ configuration parameter in \fBmain.cf\fR instead. Set the envelope sender address. This is the address where delivery problems are sent to. With Postfix versions before 2.1, the \fBErrors-To:\fR message header overrides the error return address. -.IP "\fB-R \fIreturn_limit\fR (ignored)" -Limit the size of bounced mail. Use the \fBbounce_size_limit\fR -configuration parameter instead. +.IP "\fB-R \fIreturn\fR" +Delivery status notification control. Specify "hdrs" to +return only the header if a message bounces, "full" to +return a full copy (the default behavior). + +The \fB-R\fR option specifies an upper bound; for example, +Postfix will return only the header, when a full copy would +exceed the bounce_size_limit setting. + +This option is ignored before Postfix version 2.10. .IP \fB-q\fR Attempt to deliver all queued mail. This is implemented by executing the \fBpostqueue\fR(1) command. diff --git a/postfix/man/man5/postconf.5 b/postfix/man/man5/postconf.5 index 2e2b9190d..76f1c736a 100644 --- a/postfix/man/man5/postconf.5 +++ b/postfix/man/man5/postconf.5 @@ -9849,10 +9849,16 @@ Postfix 2.3 and later use smtpd_tls_security_level instead. .SH soft_bounce (default: no) Safety net to keep mail queued that would otherwise be returned to the sender. This parameter disables locally-generated bounces, -and prevents the Postfix SMTP server from rejecting mail permanently, +changes the handling of negative responses from remote servers, +content filters or plugins, +and prevents the Postfix SMTP server from rejecting mail permanently by changing 5xx reply codes into 4xx. However, soft_bounce is no cure for address rewriting mistakes or mail routing mistakes. .PP +Note: "soft_bounce = yes" is in some cases implemented by modifying +server responses. Therefore, the response that Postfix logs may +differ from the response that Postfix actually sends or receives. +.PP Example: .PP .nf diff --git a/postfix/proto/IPV6_README.html b/postfix/proto/IPV6_README.html index cf5ed5eed..25f83538d 100644 --- a/postfix/proto/IPV6_README.html +++ b/postfix/proto/IPV6_README.html @@ -204,12 +204,13 @@ confused with a "type:table" pattern.

@@ -391,7 +389,7 @@ default. They should be used only for transports that deliver mail to a small number of high volume domains.

A common situation where high concurrency is called for is on -gateways relaying a high volume of mail from between the Internet +gateways relaying a high volume of mail between the Internet and an intranet mail environment. Approximately half the mail (assuming equal volumes inbound and outbound) will be destined for the internal mail hubs. Since the internal mail hubs will be @@ -441,7 +439,7 @@ recipients into smaller lists. Postfix will attempt to send multiple copies of the message in parallel.

IMPORTANT: Be careful when increasing the recipient limit per -message delivery; some smtpd(8) servers abort the connection when they +message delivery; some SMTP servers abort the connection when they run out of memory or when a hard recipient limit is reached, so that the message will never be delivered.

@@ -568,13 +566,13 @@ and so on:

You need to execute "postfix reload" to make the change effective. -The limits are enforced by the Postfix master(8) daemon which does +This limit is enforced by the Postfix master(8) daemon which does not automatically read main.cf when it changes.

You can override the process limit for specific Postfix daemons by editing the master.cf file. For example, if you do not wish to receive 100 SMTP messages at the same time, but do not want to -change the process limits for local mail deliveries, you could +change the process limits for other Postfix daemons, you could specify:

diff --git a/postfix/proto/postconf.proto b/postfix/proto/postconf.proto index 0b9b04052..df84dc128 100644 --- a/postfix/proto/postconf.proto +++ b/postfix/proto/postconf.proto @@ -6248,11 +6248,19 @@ The default time unit is s (seconds).

Safety net to keep mail queued that would otherwise be returned to the sender. This parameter disables locally-generated bounces, -and prevents the Postfix SMTP server from rejecting mail permanently, +changes the handling of negative responses from remote servers, +content filters or plugins, +and prevents the Postfix SMTP server from rejecting mail permanently by changing 5xx reply codes into 4xx. However, soft_bounce is no cure for address rewriting mistakes or mail routing mistakes.

+

+Note: "soft_bounce = yes" is in some cases implemented by modifying +server responses. Therefore, the response that Postfix logs may +differ from the response that Postfix actually sends or receives. +

+

Example:

diff --git a/postfix/src/global/mail_version.h b/postfix/src/global/mail_version.h index 74e37ec06..6d55f5da8 100644 --- a/postfix/src/global/mail_version.h +++ b/postfix/src/global/mail_version.h @@ -20,7 +20,7 @@ * Patches change both the patchlevel and the release date. Snapshots have no * patchlevel; they change the release date only. */ -#define MAIL_RELEASE_DATE "20120801" +#define MAIL_RELEASE_DATE "20120902" #define MAIL_VERSION_NUMBER "2.10" #ifdef SNAPSHOT diff --git a/postfix/src/global/rec_type.h b/postfix/src/global/rec_type.h index 3edb5fcbd..f6668cdc8 100644 --- a/postfix/src/global/rec_type.h +++ b/postfix/src/global/rec_type.h @@ -68,7 +68,7 @@ #define REC_TYPE_VERP 'V' /* VERP delimiters */ #define REC_TYPE_DSN_RET '<' /* DSN full/hdrs */ -#define REC_TYPE_DSN_ENVID 'i' /* DSN full/hdrs */ +#define REC_TYPE_DSN_ENVID 'i' /* DSN envelope id */ #define REC_TYPE_DSN_ORCPT 'o' /* DSN orig rcpt address */ #define REC_TYPE_DSN_NOTIFY 'n' /* DSN notify flags */ diff --git a/postfix/src/sendmail/sendmail.c b/postfix/src/sendmail/sendmail.c index d0bc76dee..c7394cd67 100644 --- a/postfix/src/sendmail/sendmail.c +++ b/postfix/src/sendmail/sendmail.c @@ -173,9 +173,16 @@ /* Set the envelope sender address. This is the address where /* delivery problems are sent to. With Postfix versions before 2.1, the /* \fBErrors-To:\fR message header overrides the error return address. -/* .IP "\fB-R \fIreturn_limit\fR (ignored)" -/* Limit the size of bounced mail. Use the \fBbounce_size_limit\fR -/* configuration parameter instead. +/* .IP "\fB-R \fIreturn\fR" +/* Delivery status notification control. Specify "hdrs" to +/* return only the header if a message bounces, "full" to +/* return a full copy (the default behavior). +/* +/* The \fB-R\fR option specifies an upper bound; for example, +/* Postfix will return only the header, when a full copy would +/* exceed the bounce_size_limit setting. +/* +/* This option is ignored before Postfix version 2.10. /* .IP \fB-q\fR /* Attempt to deliver all queued mail. This is implemented by /* executing the \fBpostqueue\fR(1) command. @@ -605,7 +612,7 @@ static void output_header(void *context, int header_class, /* enqueue - post one message */ static void enqueue(const int flags, const char *encoding, - const char *dsn_envid, int dsn_notify, + const char *dsn_envid, int dsn_notify, int dsn_ret, const char *rewrite_context, const char *sender, const char *full_name, char **recipients) { @@ -744,6 +751,9 @@ static void enqueue(const int flags, const char *encoding, if (dsn_notify) rec_fprintf(dst, REC_TYPE_ATTR, "%s=%d", MAIL_ATTR_DSN_NOTIFY, dsn_notify); + if (dsn_ret) + rec_fprintf(dst, REC_TYPE_ATTR, "%s=%d", + MAIL_ATTR_DSN_RET, dsn_ret); if (REC_PUT_BUF(dst, REC_TYPE_RCPT, buf) < 0) msg_fatal_status(EX_TEMPFAIL, "%s(%ld): error writing queue file: %m", @@ -883,6 +893,10 @@ static void enqueue(const int flags, const char *encoding, if (dsn_notify) rec_fprintf(dst, REC_TYPE_ATTR, "%s=%d", MAIL_ATTR_DSN_NOTIFY, dsn_notify); + if (dsn_ret) + rec_fprintf(dst, REC_TYPE_ATTR, "%s=%d", + MAIL_ATTR_DSN_RET, dsn_ret); + if (rec_put(dst, REC_TYPE_RCPT, *cpp, strlen(*cpp)) < 0) msg_fatal_status(EX_TEMPFAIL, "%s(%ld): error writing queue file: %m", @@ -970,6 +984,7 @@ int main(int argc, char **argv) uid_t uid; const char *rewrite_context = MAIL_ATTR_RWR_LOCAL; int dsn_notify = 0; + int dsn_ret = 0; const char *dsn_envid = 0; int saved_optind; @@ -1162,6 +1177,10 @@ int main(int argc, char **argv) if ((dsn_notify = dsn_notify_mask(optarg)) == 0) msg_warn("bad -N option value -- ignored"); break; + case 'R': + if ((dsn_ret = dsn_ret_code(optarg)) == 0) + msg_warn("bad -R option value -- ignored"); + break; case 'V': /* DSN, was: VERP */ if (strlen(optarg) > 100) msg_warn("too long -V option value -- ignored"); @@ -1289,6 +1308,8 @@ int main(int argc, char **argv) msg_fatal_status(EX_USAGE, "-t option cannot be used with -bv"); if (dsn_notify) msg_fatal_status(EX_USAGE, "-N option cannot be used with -bv"); + if (dsn_ret) + msg_fatal_status(EX_USAGE, "-R option cannot be used with -bv"); if (msg_verbose == 1) msg_fatal_status(EX_USAGE, "-v option cannot be used with -bv"); } @@ -1333,7 +1354,7 @@ int main(int argc, char **argv) mail_run_replace(var_command_dir, ext_argv->argv); /* NOTREACHED */ } else { - enqueue(flags, encoding, dsn_envid, dsn_notify, + enqueue(flags, encoding, dsn_envid, dsn_notify, dsn_ret, rewrite_context, sender, full_name, argv + OPTIND); exit(0); /* NOTREACHED */