diff --git a/postfix/HISTORY b/postfix/HISTORY index 983f1ca47..4c0e83677 100644 --- a/postfix/HISTORY +++ b/postfix/HISTORY @@ -15648,21 +15648,30 @@ Apologies for any names omitted. Cleanup: don't supply the "-o stress" command-line option with a single-process service. File: master/master_ent.c. -20100116 +20100115 Bugfix: the valid_hostname() fuction did not set the "non-numeric" flag after encountering the '-' character. Reported by Jan Schampera. File: util/valid_hostname.c. - Cleanup: when a content_filter parameter or FILTER command - specifies an empty next-hop destination, the queue manager - now uses the recipient domain instead of $myhostname. Specify - "legacy_filter_nexthop = yes" for backwards compatibility - with Postfix 2.6 and earlier, or specify a non-empty next-hop - destination. Files: *qmgr/qmgr_message.c proto/access, - proto/header_checks, proto/postconf.proto, proto/FILTER_README. +20100116 Documentation: the content_filter and FILTER features never supported the special cases of transport_maps. References to transport_maps syntax are now removed from content filter discussions. Files: proto/postconf.proto, proto/FILTER_README. + + Workaround: as of Postfix 2.3 the VRFY command did not allow + a mailbox address inside <>, which broke expectations. RFC + 2821 (and 5321) is vague about the VRFY request format, but + spends lots of text on the reply format. File: smtpd/smtpd.c. + +20010117 + + Cleanup: when a content_filter parameter or FILTER command + specifies an empty next-hop destination, the queue manager + now uses the recipient domain instead of $myhostname. Specify + "default_filter_nexthop = $myhostname" for compatibility + with Postfix 2.6 and earlier, or specify a non-empty next-hop + filter destination. Files: *qmgr/qmgr_message.c proto/access, + proto/header_checks, proto/postconf.proto, proto/FILTER_README. diff --git a/postfix/README_FILES/FILTER_README b/postfix/README_FILES/FILTER_README index 872741515..abee2a526 100644 --- a/postfix/README_FILES/FILTER_README +++ b/postfix/README_FILES/FILTER_README @@ -221,17 +221,18 @@ Once you're satisfied with the content filtering script: The content_filter configuration parameter expects a value of the form transport:destination. The transport name specifies the first field of a - mail delivery agent definition in master.cf; the syntax of destination is - described in the manual page of the corresponding delivery agent. + mail delivery agent definition in master.cf; the syntax of the next-hop + destination is described in the manual page of the corresponding delivery + agent. - The meaning of an empty filter destination is version dependent. Postfix - 2.7 and later will use the recipient domain; earlier versions will use - $myhostname. Specify "legacy_filter_nexthop = yes" for compatibility with - Postfix 2.6 or earlier, or specify a non-empty filter destination. + The meaning of an empty next-hop filter destination is version dependent. + Postfix 2.7 and later will use the recipient domain; earlier versions will + use $myhostname. Specify "default_filter_nexthop = $myhostname" for + compatibility with Postfix 2.6 or earlier, or specify a non-empty next-hop + filter destination. - The content_filter setting has a lower precedence than a content filter - that is specified with an access(5) table or in a header_checks(5) or - body_checks(5) table. + The content_filter setting has lower precedence than a FILTER action that + is specified in an access(5), header_checks(5) or body_checks(5) table. * Execute "ppoossttffiixx rreellooaadd" to complete the change. @@ -340,17 +341,18 @@ To enable the advanced content filter method for all mail, specify in main.cf: * The content_filter configuration parameter expects a value of the form transport:destination. The transport name specifies the first field of a - mail delivery agent definition in master.cf; the syntax of destination is - described in the manual page of the corresponding delivery agent. + mail delivery agent definition in master.cf; the syntax of the next-hop + destination is described in the manual page of the corresponding delivery + agent. - * The meaning of an empty filter destination is version dependent. Postfix - 2.7 and later will use the recipient domain; earlier versions will use - $myhostname. Specify "legacy_filter_nexthop = yes" for compatibility with - Postfix 2.6 or earlier, or specify a non-empty filter destination. + * The meaning of an empty next-hop filter destination is version dependent. + Postfix 2.7 and later will use the recipient domain; earlier versions will + use $myhostname. Specify "default_filter_nexthop = $myhostname" for + compatibility with Postfix 2.6 or earlier, or specify a non-empty next-hop + filter destination. - * The content_filter setting has a lower precedence than a content filter - that is specified with an access(5) table or in a header_checks(5) or - body_checks(5) table. + * The content_filter setting has lower precedence than a FILTER action that + is specified in an access(5), header_checks(5) or body_checks(5) table. AAddvvaanncceedd ccoonntteenntt ffiilltteerr:: sseennddiinngg uunnffiilltteerreedd mmaaiill ttoo tthhee ccoonntteenntt ffiilltteerr diff --git a/postfix/RELEASE_NOTES b/postfix/RELEASE_NOTES index 337050ac0..db765d560 100644 --- a/postfix/RELEASE_NOTES +++ b/postfix/RELEASE_NOTES @@ -14,23 +14,27 @@ specifies the release date of a stable release or snapshot release. If you upgrade from Postfix 2.5 or earlier, read RELEASE_NOTES-2.6 before proceeding. -Incompatibility with snapshot 20100116 +Incompatibility with snapshot 20100117 ====================================== The meaning of an empty content filter next-hop destination has changed. Postfix now uses the recipient domain, instead of using $myhostname as in Postfix 2.6 and earlier. To get the old behavior -use "legacy_filter_nexthop = yes", or specify a non-empty next-hop -filter destination. +use "default_filter_nexthop = $myhostname", or specify a non-empty +next-hop content filter destination. -Major changes with snapshot 20100116 +Major changes with snapshot 20100117 ==================================== -The FILTER command can now be used to implement sender reputation -schemes that dynamically choose the SMTP source IP address. This -is implemented by specifying a FILTER with an empty next-hop -destination, and by configuring SMTP transports in master.cf with -appropriate "-o myhostname" and "-o smtp_bind_address" settings. +The FILTER action in access maps or header/body_checks now supports +sender reputation schemes that dynamically choose the SMTP source +IP address. + +This is implemented by specifying FILTER actions with empty next-hop +destinations in access maps or header/body_checks, and by configuring +in master.cf one Postfix SMTP client for each SMTP source IP address, +where each client has its own "-o myhostname" and "-o smtp_bind_address" +settings. Incompatibility with snapshot 20100101 ====================================== diff --git a/postfix/conf/access b/postfix/conf/access index e7691e5c8..e52790472 100644 --- a/postfix/conf/access +++ b/postfix/conf/access @@ -282,10 +282,10 @@ # sage through the specified external content filter. # The transport name specifies the first field of a # mail delivery agent definition in master.cf; the -# syntax of destination is described in the manual -# page of the corresponding delivery agent. More -# information about external content filters is in -# the Postfix FILTER_README file. +# syntax of the next-hop destination is described in +# the manual page of the corresponding delivery +# agent. More information about external content +# filters is in the Postfix FILTER_README file. # # Note 1: do not use $number regular expression sub- # stitutions for transport or destination unless you @@ -298,135 +298,136 @@ # # Note 3: the purpose of the FILTER command is to # override message routing. To override the recipi- -# ent's transport but not destination, specify an -# empty destination (Postfix 2.7 and later), or spec- -# ify a transport:destination that delivers through a -# different Postfix instance (Postfix 2.6 and ear- -# lier). Other options are using the recipient-depen- -# dent transport_maps or the sender-dependent sender- -# _dependent_default_transport_maps features. +# ent's transport but not the next-hop destination, +# specify an empty filter destination (Postfix 2.7 +# and later), or specify a transport:destination that +# delivers through a different Postfix instance +# (Postfix 2.6 and earlier). Other options are using +# the recipient-dependent transport_maps or the sen- +# der-dependent sender_dependent_default_transport- +# _maps features. # # This feature is available in Postfix 2.0 and later. # # HOLD optional text... -# Place the message on the hold queue, where it will -# sit until someone either deletes it or releases it -# for delivery. Log the optional text if specified, +# Place the message on the hold queue, where it will +# sit until someone either deletes it or releases it +# for delivery. Log the optional text if specified, # otherwise log a generic message. # -# Mail that is placed on hold can be examined with -# the postcat(1) command, and can be destroyed or +# Mail that is placed on hold can be examined with +# the postcat(1) command, and can be destroyed or # released with the postsuper(1) command. # -# Note: use "postsuper -r" to release mail that was -# kept on hold for a significant fraction of $maxi- +# Note: use "postsuper -r" to release mail that was +# kept on hold for a significant fraction of $maxi- # mal_queue_lifetime or $bounce_queue_lifetime, or -# longer. Use "postsuper -H" only for mail that will +# longer. Use "postsuper -H" only for mail that will # not expire within a few delivery attempts. # -# Note: this action currently affects all recipients +# Note: this action currently affects all recipients # of the message. # # This feature is available in Postfix 2.0 and later. # # PREPEND headername: headervalue -# Prepend the specified message header to the mes- -# sage. When more than one PREPEND action executes, -# the first prepended header appears before the sec- +# Prepend the specified message header to the mes- +# sage. When more than one PREPEND action executes, +# the first prepended header appears before the sec- # ond etc. prepended header. # -# Note: this action must execute before the message -# content is received; it cannot execute in the con- +# Note: this action must execute before the message +# content is received; it cannot execute in the con- # text of smtpd_end_of_data_restrictions. # # This feature is available in Postfix 2.1 and later. # # REDIRECT user@domain -# After the message is queued, send the message to +# After the message is queued, send the message to # the specified address instead of the intended # recipient(s). # -# Note: this action overrides the FILTER action, and +# Note: this action overrides the FILTER action, and # currently affects all recipients of the message. # # This feature is available in Postfix 2.1 and later. # # WARN optional text... # Log a warning with the optional text, together with -# client information and if available, with helo, +# client information and if available, with helo, # sender, recipient and protocol information. # # This feature is available in Postfix 2.1 and later. # # ENHANCED STATUS CODES -# Postfix version 2.3 and later support enhanced status -# codes as defined in RFC 3463. When an enhanced status -# code is specified in an access table, it is subject to -# modification. The following transformations are needed -# when the same access table is used for client, helo, -# sender, or recipient access restrictions; they happen +# Postfix version 2.3 and later support enhanced status +# codes as defined in RFC 3463. When an enhanced status +# code is specified in an access table, it is subject to +# modification. The following transformations are needed +# when the same access table is used for client, helo, +# sender, or recipient access restrictions; they happen # regardless of whether Postfix replies to a MAIL FROM, RCPT # TO or other SMTP command. # -# o When a sender address matches a REJECT action, the -# Postfix SMTP server will transform a recipient DSN -# status (e.g., 4.1.1-4.1.6) into the corresponding +# o When a sender address matches a REJECT action, the +# Postfix SMTP server will transform a recipient DSN +# status (e.g., 4.1.1-4.1.6) into the corresponding # sender DSN status, and vice versa. # -# o When non-address information matches a REJECT -# action (such as the HELO command argument or the -# client hostname/address), the Postfix SMTP server -# will transform a sender or recipient DSN status -# into a generic non-address DSN status (e.g., +# o When non-address information matches a REJECT +# action (such as the HELO command argument or the +# client hostname/address), the Postfix SMTP server +# will transform a sender or recipient DSN status +# into a generic non-address DSN status (e.g., # 4.0.0). # # REGULAR EXPRESSION TABLES -# This section describes how the table lookups change when +# This section describes how the table lookups change when # the table is given in the form of regular expressions. For -# a description of regular expression lookup table syntax, +# a description of regular expression lookup table syntax, # see regexp_table(5) or pcre_table(5). # -# Each pattern is a regular expression that is applied to +# Each pattern is a regular expression that is applied to # the entire string being looked up. Depending on the appli- -# cation, that string is an entire client hostname, an +# cation, that string is an entire client hostname, an # entire client IP address, or an entire mail address. Thus, # no parent domain or parent network search is done, -# user@domain mail addresses are not broken up into their +# user@domain mail addresses are not broken up into their # user@ and domain constituent parts, nor is user+foo broken # up into user and foo. # -# Patterns are applied in the order as specified in the ta- -# ble, until a pattern is found that matches the search +# Patterns are applied in the order as specified in the ta- +# ble, until a pattern is found that matches the search # string. # -# Actions are the same as with indexed file lookups, with -# the additional feature that parenthesized substrings from +# Actions are the same as with indexed file lookups, with +# the additional feature that parenthesized substrings from # the pattern can be interpolated as $1, $2 and so on. # # TCP-BASED TABLES -# This section describes how the table lookups change when +# This section describes how the table lookups change when # lookups are directed to a TCP-based server. For a descrip- # tion of the TCP client/server lookup protocol, see tcp_ta- # ble(5). This feature is not available up to and including # Postfix version 2.4. # -# Each lookup operation uses the entire query string once. -# Depending on the application, that string is an entire +# Each lookup operation uses the entire query string once. +# Depending on the application, that string is an entire # client hostname, an entire client IP address, or an entire -# mail address. Thus, no parent domain or parent network -# search is done, user@domain mail addresses are not broken -# up into their user@ and domain constituent parts, nor is +# mail address. Thus, no parent domain or parent network +# search is done, user@domain mail addresses are not broken +# up into their user@ and domain constituent parts, nor is # user+foo broken up into user and foo. # # Actions are the same as with indexed file lookups. # # EXAMPLE -# The following example uses an indexed file, so that the -# order of table entries does not matter. The example per- -# mits access by the client at address 1.2.3.4 but rejects -# all other clients in 1.2.3.0/24. Instead of hash lookup -# tables, some systems use dbm. Use the command "postconf -# -m" to find out what lookup tables Postfix supports on +# The following example uses an indexed file, so that the +# order of table entries does not matter. The example per- +# mits access by the client at address 1.2.3.4 but rejects +# all other clients in 1.2.3.0/24. Instead of hash lookup +# tables, some systems use dbm. Use the command "postconf +# -m" to find out what lookup tables Postfix supports on # your system. # # /etc/postfix/main.cf: @@ -437,11 +438,11 @@ # 1.2.3 REJECT # 1.2.3.4 OK # -# Execute the command "postmap /etc/postfix/access" after +# Execute the command "postmap /etc/postfix/access" after # editing the file. # # BUGS -# The table format does not understand quoting conventions. +# The table format does not understand quoting conventions. # # SEE ALSO # postmap(1), Postfix lookup table manager @@ -450,13 +451,13 @@ # transport(5), transport:nexthop syntax # # README FILES -# Use "postconf readme_directory" or "postconf html_direc- +# Use "postconf readme_directory" or "postconf html_direc- # tory" to locate this information. # SMTPD_ACCESS_README, built-in SMTP server access control # DATABASE_README, Postfix lookup table overview # # 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/conf/header_checks b/postfix/conf/header_checks index ba355ebc8..23d4972cc 100644 --- a/postfix/conf/header_checks +++ b/postfix/conf/header_checks @@ -170,11 +170,11 @@ # After the message is queued, send the entire mes- # sage through the specified external content filter. # The transport name specifies the first field of a -# mail delivery agent definition master.cf; the syn- -# tax of destination is described in the manual page -# of the corresponding delivery agent. More informa- -# tion about external content filters is in the Post- -# fix FILTER_README file. +# mail delivery agent definition in master.cf; the +# syntax of the next-hop destination is described in +# the manual page of the corresponding delivery +# agent. More information about external content +# filters is in the Postfix FILTER_README file. # # Note 1: do not use $number regular expression sub- # stitutions for transport or destination unless you @@ -187,34 +187,35 @@ # # Note 3: the purpose of the FILTER command is to # override message routing. To override the recipi- -# ent's transport but not destination, specify an -# empty destination (Postfix 2.7 and later), or spec- -# ify a transport:destination that delivers through a -# different Postfix instance (Postfix 2.6 and ear- -# lier). Other options are using the recipient-depen- -# dent transport_maps or the sender-dependent sender- -# _dependent_default_transport_maps features. +# ent's transport but not the next-hop destination, +# specify an empty filter destination (Postfix 2.7 +# and later), or specify a transport:destination that +# delivers through a different Postfix instance +# (Postfix 2.6 and earlier). Other options are using +# the recipient-dependent transport_maps or the sen- +# der-dependent sender_dependent_default_transport- +# _maps features. # # This feature is available in Postfix 2.0 and later. # # HOLD optional text... -# Arrange for the message to be placed on the hold -# queue, and inspect the next input line. The mes- -# sage remains on hold until someone either deletes -# it or releases it for delivery. Log the optional +# Arrange for the message to be placed on the hold +# queue, and inspect the next input line. The mes- +# sage remains on hold until someone either deletes +# it or releases it for delivery. Log the optional # text if specified, otherwise log a generic message. # -# Mail that is placed on hold can be examined with -# the postcat(1) command, and can be destroyed or +# Mail that is placed on hold can be examined with +# the postcat(1) command, and can be destroyed or # released with the postsuper(1) command. # -# Note: use "postsuper -r" to release mail that was -# kept on hold for a significant fraction of $maxi- +# Note: use "postsuper -r" to release mail that was +# kept on hold for a significant fraction of $maxi- # mal_queue_lifetime or $bounce_queue_lifetime, or -# longer. Use "postsuper -H" only for mail that will +# longer. Use "postsuper -H" only for mail that will # not expire within a few delivery attempts. # -# Note: this action affects all recipients of the +# Note: this action affects all recipients of the # message. # # This feature is available in Postfix 2.0 and later. @@ -223,23 +224,23 @@ # the next input line. # # PREPEND text... -# Prepend one line with the specified text, and +# Prepend one line with the specified text, and # inspect the next input line. # # Notes: # -# o The prepended text is output on a separate +# o The prepended text is output on a separate # line, immediately before the input that # triggered the PREPEND action. # # o The prepended text is not considered part of -# the input stream: it is not subject to +# the input stream: it is not subject to # header/body checks or address rewriting, and # it does not affect the way that Postfix adds # missing message headers. # # o When prepending text before a message header -# line, the prepended text must begin with a +# line, the prepended text must begin with a # valid message header label. # # o This action cannot be used to prepend multi- @@ -248,46 +249,46 @@ # This feature is available in Postfix 2.1 and later. # # REDIRECT user@domain -# Write a message redirection request to the queue -# file, and inspect the next input line. After the +# Write a message redirection request to the queue +# file, and inspect the next input line. After the # message is queued, it will be sent to the specified # address instead of the intended recipient(s). # -# Note: this action overrides the FILTER action, and -# affects all recipients of the message. If multiple -# REDIRECT actions fire, only the last one is exe- +# Note: this action overrides the FILTER action, and +# affects all recipients of the message. If multiple +# REDIRECT actions fire, only the last one is exe- # cuted. # # This feature is available in Postfix 2.1 and later. # # REPLACE text... -# Replace the current line with the specified text, +# Replace the current line with the specified text, # and inspect the next input line. # # This feature is available in Postfix 2.2 and later. -# The description below applies to Postfix 2.2.2 and +# The description below applies to Postfix 2.2.2 and # later. # # Notes: # -# o When replacing a message header line, the -# replacement text must begin with a valid +# o When replacing a message header line, the +# replacement text must begin with a valid # header label. # -# o The replaced text remains part of the input -# stream. Unlike the result from the PREPEND -# action, a replaced message header may be -# subject to address rewriting and may affect -# the way that Postfix adds missing message +# o The replaced text remains part of the input +# stream. Unlike the result from the PREPEND +# action, a replaced message header may be +# subject to address rewriting and may affect +# the way that Postfix adds missing message # headers. # # REJECT optional text... -# Reject the entire message. Reply with optional +# Reject the entire message. Reply with optional # text... when the optional text is specified, other- # wise reply with a generic error message. # -# Note: this action disables further header or -# body_checks inspection of the current message and +# Note: this action disables further header or +# body_checks inspection of the current message and # affects all recipients. # # Postfix version 2.3 and later support enhanced sta- @@ -296,37 +297,37 @@ # enhanced status code of "5.7.1". # # WARN optional text... -# Log a warning with the optional text... (or log a -# generic message), and inspect the next input line. +# Log a warning with the optional text... (or log a +# generic message), and inspect the next input line. # This action is useful for debugging and for testing # a pattern before applying more drastic actions. # # BUGS # Empty lines never match, because some map types mis-behave -# when given a zero-length search string. This limitation -# may be removed for regular expression tables in a future +# when given a zero-length search string. This limitation +# may be removed for regular expression tables in a future # release. # -# Many people overlook the main limitations of header and +# Many people overlook the main limitations of header and # body_checks rules. # -# o These rules operate on one logical message header +# o These rules operate on one logical message header # or one body line at a time. A decision made for one # line is not carried over to the next line. # -# o If text in the message body is encoded (RFC 2045) +# o If text in the message body is encoded (RFC 2045) # then the rules need to be specified for the encoded # form. # -# o Likewise, when message headers are encoded (RFC -# 2047) then the rules need to be specified for the +# o Likewise, when message headers are encoded (RFC +# 2047) then the rules need to be specified for the # encoded form. # -# Message headers added by the cleanup(8) daemon itself are +# Message headers added by the cleanup(8) daemon itself are # excluded from inspection. Examples of such message headers # are From:, To:, Message-ID:, Date:. # -# Message headers deleted by the cleanup(8) daemon will be +# Message headers deleted by the cleanup(8) daemon will be # examined before they are deleted. Examples are: Bcc:, Con- # tent-Length:, Return-Path:. # @@ -334,11 +335,11 @@ # body_checks # Lookup tables with content filter rules for message # body lines. These filters see one physical line at -# a time, in chunks of at most $line_length_limit +# a time, in chunks of at most $line_length_limit # bytes. # # body_checks_size_limit -# The amount of content per message body segment +# The amount of content per message body segment # (attachment) that is subjected to $body_checks fil- # tering. # @@ -348,35 +349,35 @@ # # nested_header_checks (default: $header_checks) # Lookup tables with content filter rules for message -# header lines: respectively, these are applied to -# the initial message headers (not including MIME -# headers), to the MIME headers anywhere in the mes- -# sage, and to the initial headers of attached mes- +# header lines: respectively, these are applied to +# the initial message headers (not including MIME +# headers), to the MIME headers anywhere in the mes- +# sage, and to the initial headers of attached mes- # sages. # -# Note: these filters see one logical message header -# at a time, even when a message header spans multi- -# ple lines. Message headers that are longer than +# Note: these filters see one logical message header +# at a time, even when a message header spans multi- +# ple lines. Message headers that are longer than # $header_size_limit characters are truncated. # # disable_mime_input_processing -# While receiving mail, give no special treatment to -# MIME related message headers; all text after the +# While receiving mail, give no special treatment to +# MIME related message headers; all text after the # initial message headers is considered to be part of -# the message body. This means that header_checks is -# applied to all the initial message headers, and +# the message body. This means that header_checks is +# applied to all the initial message headers, and # that body_checks is applied to the remainder of the # message. # -# Note: when used in this manner, body_checks will -# process a multi-line message header one line at a +# Note: when used in this manner, body_checks will +# process a multi-line message header one line at a # time. # # EXAMPLES -# Header pattern to block attachments with bad file name -# extensions. For convenience, the PCRE /x flag is speci- -# fied, so that there is no need to collapse the pattern -# into a single line of text. The purpose of the +# Header pattern to block attachments with bad file name +# extensions. For convenience, the PCRE /x flag is speci- +# fied, so that there is no need to collapse the pattern +# into a single line of text. The purpose of the # [[:xdigit:]] sub-expressions is to recognize Windows CLSID # strings. # @@ -415,7 +416,7 @@ # RFC 2047, message header encoding for non-ASCII text # # README FILES -# Use "postconf readme_directory" or "postconf html_direc- +# Use "postconf readme_directory" or "postconf html_direc- # tory" to locate this information. # DATABASE_README, Postfix lookup table overview # CONTENT_INSPECTION_README, Postfix content inspection overview @@ -423,7 +424,7 @@ # BACKSCATTER_README, blocking returned forged mail # # 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/FILTER_README.html b/postfix/html/FILTER_README.html index 5052c65ab..85ca1f888 100644 --- a/postfix/html/FILTER_README.html +++ b/postfix/html/FILTER_README.html @@ -399,18 +399,19 @@ and causes mail to be given to the content filter instead.
The content_filter configuration parameter expects a value of the form transport:destination. The transport name specifies the first field of a mail delivery agent definition in -master.cf; the syntax of destination is described in the -manual page of the corresponding delivery agent.
+master.cf; the syntax of the next-hop destination is described +in the manual page of the corresponding delivery agent. -The meaning of an empty filter destination is version -dependent. Postfix 2.7 and later will use the recipient domain; -earlier versions will use $myhostname. Specify "legacy_filter_nexthop -= yes" for compatibility with Postfix 2.6 or earlier, or specify a -non-empty filter destination.
+The meaning of an empty next-hop filter destination is +version dependent. Postfix 2.7 and later will use the recipient +domain; earlier versions will use $myhostname. Specify +"default_filter_nexthop = $myhostname" for compatibility with Postfix +2.6 or earlier, or specify a non-empty next-hop filter destination. +
-The content_filter setting has a lower precedence than a content -filter that is specified with an access(5) table or in a header_checks(5) -or body_checks(5) table.
+The content_filter setting has lower precedence than a FILTER +action that is specified in an access(5), header_checks(5) or +body_checks(5) table.
Execute "postfix reload" to complete the change.
@@ -625,18 +626,18 @@ of its final destination.The content_filter configuration parameter expects a value of the form transport:destination. The transport name specifies the first field of a mail delivery agent definition in -master.cf; the syntax of destination is described in the -manual page of the corresponding delivery agent.
+master.cf; the syntax of the next-hop destination is described +in the manual page of the corresponding delivery agent. -The meaning of an empty filter destination is version -dependent. Postfix 2.7 and later will use the recipient domain; -earlier versions will use $myhostname. Specify "legacy_filter_nexthop -= yes" for compatibility with Postfix 2.6 or earlier, or specify a -non-empty filter destination.
+The meaning of an empty next-hop filter destination +is version dependent. Postfix 2.7 and later will use the recipient +domain; earlier versions will use $myhostname. Specify +"default_filter_nexthop = $myhostname" for compatibility with Postfix +2.6 or earlier, or specify a non-empty next-hop filter destination. -
The content_filter setting has a lower precedence than a -content filter that is specified with an access(5) table or in a -header_checks(5) or body_checks(5) table.
+The content_filter setting has lower precedence than a +FILTER action that is specified in an access(5), header_checks(5) +or body_checks(5) table.
diff --git a/postfix/html/access.5.html b/postfix/html/access.5.html index c2c6ca745..c284f86a4 100644 --- a/postfix/html/access.5.html +++ b/postfix/html/access.5.html @@ -288,10 +288,10 @@ ACCESS(5) ACCESS(5) sage through the specified external content filter. The transport name specifies the first field of a mail delivery agent definition in master.cf; the - syntax of destination is described in the manual - page of the corresponding delivery agent. More - information about external content filters is in - the Postfix FILTER_README file. + syntax of the next-hop destination is described in + the manual page of the corresponding delivery + agent. More information about external content + filters is in the Postfix FILTER_README file. Note 1: do not use $number regular expression sub- stitutions for transport or destination unless you @@ -304,135 +304,136 @@ ACCESS(5) ACCESS(5) Note 3: the purpose of the FILTER command is to override message routing. To override the recipi- - ent's transport but not destination, specify an - empty destination (Postfix 2.7 and later), or spec- - ify a transport:destination that delivers through a - different Postfix instance (Postfix 2.6 and ear- - lier). Other options are using the recipient-depen- - dent transport_maps or the sender-dependent sender- - _dependent_default_transport_maps features. + ent's transport but not the next-hop destination, + specify an empty filter destination (Postfix 2.7 + and later), or specify a transport:destination that + delivers through a different Postfix instance + (Postfix 2.6 and earlier). Other options are using + the recipient-dependent transport_maps or the sen- + der-dependent sender_dependent_default_transport- + _maps features. This feature is available in Postfix 2.0 and later. HOLD optional text... - Place the message on the hold queue, where it will - sit until someone either deletes it or releases it - for delivery. Log the optional text if specified, + Place the message on the hold queue, where it will + sit until someone either deletes it or releases it + for delivery. Log the optional text if specified, otherwise log a generic message. - Mail that is placed on hold can be examined with - the postcat(1) command, and can be destroyed or + Mail that is placed on hold can be examined with + the postcat(1) command, and can be destroyed or released with the postsuper(1) command. - Note: use "postsuper -r" to release mail that was - kept on hold for a significant fraction of $maxi- + Note: use "postsuper -r" to release mail that was + kept on hold for a significant fraction of $maxi- mal_queue_lifetime or $bounce_queue_lifetime, or - longer. Use "postsuper -H" only for mail that will + longer. Use "postsuper -H" only for mail that will not expire within a few delivery attempts. - Note: this action currently affects all recipients + Note: this action currently affects all recipients of the message. This feature is available in Postfix 2.0 and later. PREPEND headername: headervalue - Prepend the specified message header to the mes- - sage. When more than one PREPEND action executes, - the first prepended header appears before the sec- + Prepend the specified message header to the mes- + sage. When more than one PREPEND action executes, + the first prepended header appears before the sec- ond etc. prepended header. - Note: this action must execute before the message - content is received; it cannot execute in the con- + Note: this action must execute before the message + content is received; it cannot execute in the con- text of smtpd_end_of_data_restrictions. This feature is available in Postfix 2.1 and later. REDIRECT user@domain - After the message is queued, send the message to + After the message is queued, send the message to the specified address instead of the intended recipient(s). - Note: this action overrides the FILTER action, and + Note: this action overrides the FILTER action, and currently affects all recipients of the message. This feature is available in Postfix 2.1 and later. WARN optional text... Log a warning with the optional text, together with - client information and if available, with helo, + client information and if available, with helo, sender, recipient and protocol information. This feature is available in Postfix 2.1 and later. ENHANCED STATUS CODES - Postfix version 2.3 and later support enhanced status - codes as defined in RFC 3463. When an enhanced status - code is specified in an access table, it is subject to - modification. The following transformations are needed - when the same access table is used for client, helo, - sender, or recipient access restrictions; they happen + Postfix version 2.3 and later support enhanced status + codes as defined in RFC 3463. When an enhanced status + code is specified in an access table, it is subject to + modification. The following transformations are needed + when the same access table is used for client, helo, + sender, or recipient access restrictions; they happen regardless of whether Postfix replies to a MAIL FROM, RCPT TO or other SMTP command. - o When a sender address matches a REJECT action, the - Postfix SMTP server will transform a recipient DSN - status (e.g., 4.1.1-4.1.6) into the corresponding + o When a sender address matches a REJECT action, the + Postfix SMTP server will transform a recipient DSN + status (e.g., 4.1.1-4.1.6) into the corresponding sender DSN status, and vice versa. - o When non-address information matches a REJECT - action (such as the HELO command argument or the - client hostname/address), the Postfix SMTP server - will transform a sender or recipient DSN status - into a generic non-address DSN status (e.g., + o When non-address information matches a REJECT + action (such as the HELO command argument or the + client hostname/address), the Postfix SMTP server + will transform a sender or recipient DSN status + into a generic non-address DSN status (e.g., 4.0.0). REGULAR EXPRESSION TABLES - This section describes how the table lookups change when + This section describes how the table lookups change when the table is given in the form of regular expressions. For - a description of regular expression lookup table syntax, + a description of regular expression lookup table syntax, see regexp_table(5) or pcre_table(5). - Each pattern is a regular expression that is applied to + Each pattern is a regular expression that is applied to the entire string being looked up. Depending on the appli- - cation, that string is an entire client hostname, an + cation, that string is an entire client hostname, an entire client IP address, or an entire mail address. Thus, no parent domain or parent network search is done, - user@domain mail addresses are not broken up into their + user@domain mail addresses are not broken up into their user@ and domain constituent parts, nor is user+foo broken up into user and foo. - Patterns are applied in the order as specified in the ta- - ble, until a pattern is found that matches the search + Patterns are applied in the order as specified in the ta- + ble, until a pattern is found that matches the search string. - Actions are the same as with indexed file lookups, with - the additional feature that parenthesized substrings from + Actions are the same as with indexed file lookups, with + the additional feature that parenthesized substrings from the pattern can be interpolated as $1, $2 and so on. TCP-BASED TABLES - This section describes how the table lookups change when + This section describes how the table lookups change when lookups are directed to a TCP-based server. For a descrip- tion of the TCP client/server lookup protocol, see tcp_ta- ble(5). This feature is not available up to and including Postfix version 2.4. - Each lookup operation uses the entire query string once. - Depending on the application, that string is an entire + Each lookup operation uses the entire query string once. + Depending on the application, that string is an entire client hostname, an entire client IP address, or an entire - mail address. Thus, no parent domain or parent network - search is done, user@domain mail addresses are not broken - up into their user@ and domain constituent parts, nor is + mail address. Thus, no parent domain or parent network + search is done, user@domain mail addresses are not broken + up into their user@ and domain constituent parts, nor is user+foo broken up into user and foo. Actions are the same as with indexed file lookups. EXAMPLE - The following example uses an indexed file, so that the - order of table entries does not matter. The example per- - mits access by the client at address 1.2.3.4 but rejects - all other clients in 1.2.3.0/24. Instead of hash lookup - tables, some systems use dbm. Use the command "postconf - -m" to find out what lookup tables Postfix supports on + The following example uses an indexed file, so that the + order of table entries does not matter. The example per- + mits access by the client at address 1.2.3.4 but rejects + all other clients in 1.2.3.0/24. Instead of hash lookup + tables, some systems use dbm. Use the command "postconf + -m" to find out what lookup tables Postfix supports on your system. /etc/postfix/main.cf: @@ -443,11 +444,11 @@ ACCESS(5) ACCESS(5) 1.2.3 REJECT 1.2.3.4 OK - Execute the command "postmap /etc/postfix/access" after + Execute the command "postmap /etc/postfix/access" after editing the file. BUGS - The table format does not understand quoting conventions. + The table format does not understand quoting conventions. SEE ALSO postmap(1), Postfix lookup table manager @@ -460,7 +461,7 @@ ACCESS(5) ACCESS(5) DATABASE_README, Postfix lookup table overview 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/header_checks.5.html b/postfix/html/header_checks.5.html index 542ec2937..1a406ba40 100644 --- a/postfix/html/header_checks.5.html +++ b/postfix/html/header_checks.5.html @@ -176,11 +176,11 @@ HEADER_CHECKS(5) HEADER_CHECKS(5) After the message is queued, send the entire mes- sage through the specified external content filter. The transport name specifies the first field of a - mail delivery agent definition master.cf; the syn- - tax of destination is described in the manual page - of the corresponding delivery agent. More informa- - tion about external content filters is in the Post- - fix FILTER_README file. + mail delivery agent definition in master.cf; the + syntax of the next-hop destination is described in + the manual page of the corresponding delivery + agent. More information about external content + filters is in the Postfix FILTER_README file. Note 1: do not use $number regular expression sub- stitutions for transport or destination unless you @@ -193,34 +193,35 @@ HEADER_CHECKS(5) HEADER_CHECKS(5) Note 3: the purpose of the FILTER command is to override message routing. To override the recipi- - ent's transport but not destination, specify an - empty destination (Postfix 2.7 and later), or spec- - ify a transport:destination that delivers through a - different Postfix instance (Postfix 2.6 and ear- - lier). Other options are using the recipient-depen- - dent transport_maps or the sender-dependent sender- - _dependent_default_transport_maps features. + ent's transport but not the next-hop destination, + specify an empty filter destination (Postfix 2.7 + and later), or specify a transport:destination that + delivers through a different Postfix instance + (Postfix 2.6 and earlier). Other options are using + the recipient-dependent transport_maps or the sen- + der-dependent sender_dependent_default_transport- + _maps features. This feature is available in Postfix 2.0 and later. HOLD optional text... - Arrange for the message to be placed on the hold - queue, and inspect the next input line. The mes- - sage remains on hold until someone either deletes - it or releases it for delivery. Log the optional + Arrange for the message to be placed on the hold + queue, and inspect the next input line. The mes- + sage remains on hold until someone either deletes + it or releases it for delivery. Log the optional text if specified, otherwise log a generic message. - Mail that is placed on hold can be examined with - the postcat(1) command, and can be destroyed or + Mail that is placed on hold can be examined with + the postcat(1) command, and can be destroyed or released with the postsuper(1) command. - Note: use "postsuper -r" to release mail that was - kept on hold for a significant fraction of $maxi- + Note: use "postsuper -r" to release mail that was + kept on hold for a significant fraction of $maxi- mal_queue_lifetime or $bounce_queue_lifetime, or - longer. Use "postsuper -H" only for mail that will + longer. Use "postsuper -H" only for mail that will not expire within a few delivery attempts. - Note: this action affects all recipients of the + Note: this action affects all recipients of the message. This feature is available in Postfix 2.0 and later. @@ -229,23 +230,23 @@ HEADER_CHECKS(5) HEADER_CHECKS(5) the next input line. PREPEND text... - Prepend one line with the specified text, and + Prepend one line with the specified text, and inspect the next input line. Notes: - o The prepended text is output on a separate + o The prepended text is output on a separate line, immediately before the input that triggered the PREPEND action. o The prepended text is not considered part of - the input stream: it is not subject to + the input stream: it is not subject to header/body checks or address rewriting, and it does not affect the way that Postfix adds missing message headers. o When prepending text before a message header - line, the prepended text must begin with a + line, the prepended text must begin with a valid message header label. o This action cannot be used to prepend multi- @@ -254,46 +255,46 @@ HEADER_CHECKS(5) HEADER_CHECKS(5) This feature is available in Postfix 2.1 and later. REDIRECT user@domain - Write a message redirection request to the queue - file, and inspect the next input line. After the + Write a message redirection request to the queue + file, and inspect the next input line. After the message is queued, it will be sent to the specified address instead of the intended recipient(s). - Note: this action overrides the FILTER action, and - affects all recipients of the message. If multiple - REDIRECT actions fire, only the last one is exe- + Note: this action overrides the FILTER action, and + affects all recipients of the message. If multiple + REDIRECT actions fire, only the last one is exe- cuted. This feature is available in Postfix 2.1 and later. REPLACE text... - Replace the current line with the specified text, + Replace the current line with the specified text, and inspect the next input line. This feature is available in Postfix 2.2 and later. - The description below applies to Postfix 2.2.2 and + The description below applies to Postfix 2.2.2 and later. Notes: - o When replacing a message header line, the - replacement text must begin with a valid + o When replacing a message header line, the + replacement text must begin with a valid header label. - o The replaced text remains part of the input - stream. Unlike the result from the PREPEND - action, a replaced message header may be - subject to address rewriting and may affect - the way that Postfix adds missing message + o The replaced text remains part of the input + stream. Unlike the result from the PREPEND + action, a replaced message header may be + subject to address rewriting and may affect + the way that Postfix adds missing message headers. REJECT optional text... - Reject the entire message. Reply with optional + Reject the entire message. Reply with optional text... when the optional text is specified, other- wise reply with a generic error message. - Note: this action disables further header or - body_checks inspection of the current message and + Note: this action disables further header or + body_checks inspection of the current message and affects all recipients. Postfix version 2.3 and later support enhanced sta- @@ -302,37 +303,37 @@ HEADER_CHECKS(5) HEADER_CHECKS(5) enhanced status code of "5.7.1". WARN optional text... - Log a warning with the optional text... (or log a - generic message), and inspect the next input line. + Log a warning with the optional text... (or log a + generic message), and inspect the next input line. This action is useful for debugging and for testing a pattern before applying more drastic actions. BUGS Empty lines never match, because some map types mis-behave - when given a zero-length search string. This limitation - may be removed for regular expression tables in a future + when given a zero-length search string. This limitation + may be removed for regular expression tables in a future release. - Many people overlook the main limitations of header and + Many people overlook the main limitations of header and body_checks rules. - o These rules operate on one logical message header + o These rules operate on one logical message header or one body line at a time. A decision made for one line is not carried over to the next line. - o If text in the message body is encoded (RFC 2045) + o If text in the message body is encoded (RFC 2045) then the rules need to be specified for the encoded form. - o Likewise, when message headers are encoded (RFC - 2047) then the rules need to be specified for the + o Likewise, when message headers are encoded (RFC + 2047) then the rules need to be specified for the encoded form. - Message headers added by the cleanup(8) daemon itself are + Message headers added by the cleanup(8) daemon itself are excluded from inspection. Examples of such message headers are From:, To:, Message-ID:, Date:. - Message headers deleted by the cleanup(8) daemon will be + Message headers deleted by the cleanup(8) daemon will be examined before they are deleted. Examples are: Bcc:, Con- tent-Length:, Return-Path:. @@ -340,11 +341,11 @@ HEADER_CHECKS(5) HEADER_CHECKS(5) body_checks Lookup tables with content filter rules for message body lines. These filters see one physical line at - a time, in chunks of at most $line_length_limit + a time, in chunks of at most $line_length_limit bytes. body_checks_size_limit - The amount of content per message body segment + The amount of content per message body segment (attachment) that is subjected to $body_checks fil- tering. @@ -354,35 +355,35 @@ HEADER_CHECKS(5) HEADER_CHECKS(5) nested_header_checks (default: $header_checks) Lookup tables with content filter rules for message - header lines: respectively, these are applied to - the initial message headers (not including MIME - headers), to the MIME headers anywhere in the mes- - sage, and to the initial headers of attached mes- + header lines: respectively, these are applied to + the initial message headers (not including MIME + headers), to the MIME headers anywhere in the mes- + sage, and to the initial headers of attached mes- sages. - Note: these filters see one logical message header - at a time, even when a message header spans multi- - ple lines. Message headers that are longer than + Note: these filters see one logical message header + at a time, even when a message header spans multi- + ple lines. Message headers that are longer than $header_size_limit characters are truncated. disable_mime_input_processing - While receiving mail, give no special treatment to - MIME related message headers; all text after the + While receiving mail, give no special treatment to + MIME related message headers; all text after the initial message headers is considered to be part of - the message body. This means that header_checks is - applied to all the initial message headers, and + the message body. This means that header_checks is + applied to all the initial message headers, and that body_checks is applied to the remainder of the message. - Note: when used in this manner, body_checks will - process a multi-line message header one line at a + Note: when used in this manner, body_checks will + process a multi-line message header one line at a time. EXAMPLES - Header pattern to block attachments with bad file name - extensions. For convenience, the PCRE /x flag is speci- - fied, so that there is no need to collapse the pattern - into a single line of text. The purpose of the + Header pattern to block attachments with bad file name + extensions. For convenience, the PCRE /x flag is speci- + fied, so that there is no need to collapse the pattern + into a single line of text. The purpose of the [[:xdigit:]] sub-expressions is to recognize Windows CLSID strings. @@ -427,7 +428,7 @@ HEADER_CHECKS(5) HEADER_CHECKS(5) BACKSCATTER_README, blocking returned forged mail 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/oqmgr.8.html b/postfix/html/oqmgr.8.html index e25247fbd..5e6db842b 100644 --- a/postfix/html/oqmgr.8.html +++ b/postfix/html/oqmgr.8.html @@ -195,14 +195,15 @@ OQMGR(8) OQMGR(8) Available with Postfix version 2.7 and later: - legacy_filter_nexthop (no) - When a FILTER command does not specify a destina- - tion, force the destination to be $myhostname, - instead of using the recipient domain. + default_filter_nexthop (empty) + When a content_filter or FILTER request specifies + no explicit next-hop destination, use $default_fil- + ter_nexthop instead; when that value is empty, use + the domain in the recipient address. ACTIVE QUEUE CONTROLS qmgr_clog_warn_time (300s) - The minimal delay between warnings that a specific + The minimal delay between warnings that a specific destination is clogging up the Postfix active queue. @@ -210,23 +211,23 @@ OQMGR(8) OQMGR(8) The maximal number of messages in the active queue. qmgr_message_recipient_limit (20000) - The maximal number of recipients held in memory by - the Postfix queue manager, and the maximal size of + The maximal number of recipients held in memory by + the Postfix queue manager, and the maximal size of the size of the short-term, in-memory "dead" desti- nation status cache. DELIVERY CONCURRENCY CONTROLS qmgr_fudge_factor (100) - Obsolete feature: the percentage of delivery - resources that a busy mail system will use up for + Obsolete feature: the percentage of delivery + resources that a busy mail system will use up for delivery of a large mailing list message. initial_destination_concurrency (5) - The initial per-destination concurrency level for + The initial per-destination concurrency level for parallel delivery to the same destination. default_destination_concurrency_limit (20) - The default maximal number of parallel deliveries + The default maximal number of parallel deliveries to the same destination. transport_destination_concurrency_limit ($default_destina- @@ -241,9 +242,9 @@ OQMGR(8) OQMGR(8) sage transport. default_destination_concurrency_failed_cohort_limit (1) - How many pseudo-cohorts must suffer connection or - handshake failure before a specific destination is - considered unavailable (and further delivery is + How many pseudo-cohorts must suffer connection or + handshake failure before a specific destination is + considered unavailable (and further delivery is suspended). transport_destination_concurrency_failed_cohort_limit @@ -251,8 +252,8 @@ OQMGR(8) OQMGR(8) Idem, for delivery via the named message transport. default_destination_concurrency_negative_feedback (1) - The per-destination amount of delivery concurrency - negative feedback, after a delivery completes with + The per-destination amount of delivery concurrency + negative feedback, after a delivery completes with a connection or handshake failure. transport_destination_concurrency_negative_feedback @@ -260,7 +261,7 @@ OQMGR(8) OQMGR(8) Idem, for delivery via the named message transport. default_destination_concurrency_positive_feedback (1) - The per-destination amount of delivery concurrency + The per-destination amount of delivery concurrency positive feedback, after a delivery completes with- out connection or handshake failure. @@ -274,7 +275,7 @@ OQMGR(8) OQMGR(8) RECIPIENT SCHEDULING CONTROLS default_destination_recipient_limit (50) - The default maximal number of recipients per mes- + The default maximal number of recipients per mes- sage delivery. transport_destination_recipient_limit @@ -282,41 +283,41 @@ OQMGR(8) OQMGR(8) OTHER RESOURCE AND RATE CONTROLS minimal_backoff_time (300s) - The minimal time between attempts to deliver a - deferred message; prior to Postfix 2.4 the default + The minimal time between attempts to deliver a + deferred message; prior to Postfix 2.4 the default value was 1000s. maximal_backoff_time (4000s) - The maximal time between attempts to deliver a + The maximal time between attempts to deliver a deferred message. maximal_queue_lifetime (5d) - The maximal time a message is queued before it is + The maximal time a message is queued before it is sent back as undeliverable. 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. transport_retry_time (60s) The time between attempts by the Postfix queue man- - ager to contact a malfunctioning message delivery + ager to contact a malfunctioning message delivery transport. Available in Postfix version 2.1 and later: bounce_queue_lifetime (5d) - The maximal time a bounce message is queued before + The maximal time a bounce message is queued before it is considered undeliverable. Available in Postfix version 2.5 and later: default_destination_rate_delay (0s) The default amount of delay that is inserted - between individual deliveries to the same destina- - tion; with per-destination recipient limit > 1, a - destination is a domain, otherwise it is a recipi- + between individual deliveries to the same destina- + tion; with per-destination recipient limit > 1, a + destination is a domain, otherwise it is a recipi- ent. transport_destination_rate_delay $default_destina- @@ -325,7 +326,7 @@ OQMGR(8) OQMGR(8) MISCELLANEOUS CONTROLS 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. defer_transports (empty) @@ -334,11 +335,11 @@ OQMGR(8) OQMGR(8) "sendmail -q" or equivalent. delay_logging_resolution_limit (2) - The maximal number of digits after the decimal + The maximal number of digits after the decimal point when logging sub-second delay values. helpful_warnings (yes) - Log warnings about problematic configuration set- + Log warnings about problematic configuration set- tings, and provide helpful suggestions. ipc_timeout (3600s) @@ -346,23 +347,23 @@ OQMGR(8) OQMGR(8) over an internal communication channel. process_id (read-only) - The process ID of a Postfix command or daemon + The process ID of a Postfix command or daemon process. process_name (read-only) - The process name of a Postfix command or daemon + The process name of a Postfix command or daemon process. 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. 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 @@ -385,7 +386,7 @@ OQMGR(8) OQMGR(8) QSHAPE_README, Postfix queue analysis 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/pickup.8.html b/postfix/html/pickup.8.html index 3532a6628..ac1e147d2 100644 --- a/postfix/html/pickup.8.html +++ b/postfix/html/pickup.8.html @@ -53,8 +53,8 @@ PICKUP(8) PICKUP(8) CONTENT INSPECTION CONTROLS content_filter (empty) - The name of a mail delivery transport that filters - mail after it is queued. + After the message is queued, send the entire mes- + sage to the specified transport:destination. receive_override_options (empty) Enable or disable recipient validation, built-in diff --git a/postfix/html/postconf.5.html b/postfix/html/postconf.5.html index bffafa67e..db5c78f15 100644 --- a/postfix/html/postconf.5.html +++ b/postfix/html/postconf.5.html @@ -1540,24 +1540,25 @@ is already bounded by $max_idle.After the message is queued, send the entire message to the specified transport:destination. The transport name specifies the first field of a mail delivery agent definition in -master.cf; the syntax of destination is described in the -manual page of the corresponding delivery agent. More information -about external content filters is in the Postfix FILTER_README file. -
+master.cf; the syntax of the next-hop destination is described +in the manual page of the corresponding delivery agent. More +information about external content filters is in the Postfix +FILTER_README file.Notes:
This setting has a lower precedence than a content filter that -is specified with an access(5) table or in a header_checks(5) or -body_checks(5) table.
+This setting has lower precedence than a FILTER action +that is specified in an access(5), header_checks(5) or body_checks(5) +table.
-The meaning of an empty filter destination is version -dependent. Postfix 2.7 and later will use the recipient domain; -earlier versions will use $myhostname. Specify "legacy_filter_nexthop -= yes" for compatibility with Postfix 2.6 or earlier, or specify -a non-empty filter destination.
+The meaning of an empty next-hop filter destination +is version dependent. Postfix 2.7 and later will use the recipient +domain; earlier versions will use $myhostname. Specify +"default_filter_nexthop = $myhostname" for compatibility with Postfix +2.6 or earlier, or specify a content_filter value with an explicit +next-hop destination.
When a content_filter or FILTER request specifies no explicit +next-hop destination, use $default_filter_nexthop instead; when +that value is empty, use the domain in the recipient address. +Specify "default_filter_nexthop = $myhostname" for compatibility +with Postfix version 2.6 and earlier, or specify an explicit next-hop +destination with each content_filter value or FILTER action.
+ +This feature is available in Postfix 2.7 and later.
+ +When a FILTER command does not specify a destination, force the -destination to be $myhostname, instead of using the recipient domain. -Specify "legacy_filter_nexthop = yes" for compatibility with Postfix -version 2.6 and earlier, or specify a non-empty filter destination. -
- -This feature is available in Postfix 2.7 and later.
- -The content_filter configuration parameter expects a value of the form transport:destination. The transport name specifies the first field of a mail delivery agent definition in -master.cf; the syntax of destination is described in the -manual page of the corresponding delivery agent.
+master.cf; the syntax of the next-hop destination is described +in the manual page of the corresponding delivery agent. -The meaning of an empty filter destination is version -dependent. Postfix 2.7 and later will use the recipient domain; -earlier versions will use $myhostname. Specify "legacy_filter_nexthop -= yes" for compatibility with Postfix 2.6 or earlier, or specify a -non-empty filter destination.
+The meaning of an empty next-hop filter destination is +version dependent. Postfix 2.7 and later will use the recipient +domain; earlier versions will use $myhostname. Specify +"default_filter_nexthop = $myhostname" for compatibility with Postfix +2.6 or earlier, or specify a non-empty next-hop filter destination. +
-The content_filter setting has a lower precedence than a content -filter that is specified with an access(5) table or in a header_checks(5) -or body_checks(5) table.
+The content_filter setting has lower precedence than a FILTER +action that is specified in an access(5), header_checks(5) or +body_checks(5) table.
Execute "postfix reload" to complete the change.
@@ -625,18 +626,18 @@ of its final destination.The content_filter configuration parameter expects a value of the form transport:destination. The transport name specifies the first field of a mail delivery agent definition in -master.cf; the syntax of destination is described in the -manual page of the corresponding delivery agent.
+master.cf; the syntax of the next-hop destination is described +in the manual page of the corresponding delivery agent. -The meaning of an empty filter destination is version -dependent. Postfix 2.7 and later will use the recipient domain; -earlier versions will use $myhostname. Specify "legacy_filter_nexthop -= yes" for compatibility with Postfix 2.6 or earlier, or specify a -non-empty filter destination.
+The meaning of an empty next-hop filter destination +is version dependent. Postfix 2.7 and later will use the recipient +domain; earlier versions will use $myhostname. Specify +"default_filter_nexthop = $myhostname" for compatibility with Postfix +2.6 or earlier, or specify a non-empty next-hop filter destination. -
The content_filter setting has a lower precedence than a -content filter that is specified with an access(5) table or in a -header_checks(5) or body_checks(5) table.
+The content_filter setting has lower precedence than a +FILTER action that is specified in an access(5), header_checks(5) +or body_checks(5) table.
diff --git a/postfix/proto/access b/postfix/proto/access index 7ddacb81b..6e7007c64 100644 --- a/postfix/proto/access +++ b/postfix/proto/access @@ -274,10 +274,11 @@ # After the message is queued, send the entire message through # the specified external content filter. The \fItransport\fR # name specifies the first field of a mail delivery agent -# definition in master.cf; the syntax of \fIdestination\fR -# is described in the manual page of the corresponding delivery -# agent. More information about external content filters is -# in the Postfix FILTER_README file. +# definition in master.cf; the syntax of the next-hop +# \fIdestination\fR is described in the manual page of the +# corresponding delivery agent. More information about +# external content filters is in the Postfix FILTER_README +# file. # .sp # Note 1: do not use $\fInumber\fR regular expression # substitutions for \fItransport\fR or \fIdestination\fR @@ -290,12 +291,13 @@ # .sp # Note 3: the purpose of the FILTER command is to override # message routing. To override the recipient's \fItransport\fR -# but not \fIdestination\fR, specify an empty \fIdestination\fR -# (Postfix 2.7 and later), or specify a \fItransport:destination\fR -# that delivers through a different Postfix instance (Postfix -# 2.6 and earlier). Other options are using the recipient-dependent -# \fBtrans\%port\%_maps\fR or the sen\%der-dependent -# \fBsender\%_de\%pen\%dent_default_trans\%port\%_maps\fR +# but not the next-hop \fIdestination\fR, specify an empty +# filter \fIdestination\fR (Postfix 2.7 and later), or specify +# a \fItransport:destination\fR that delivers through a +# different Postfix instance (Postfix 2.6 and earlier). Other +# options are using the recipient-dependent \fBtrans\%port\%_maps\fR +# or the sen\%der-dependent +# \fBsender\%_de\%pen\%dent\%_de\%fault\%_trans\%port\%_maps\fR # features. # .sp # This feature is available in Postfix 2.0 and later. diff --git a/postfix/proto/header_checks b/postfix/proto/header_checks index e1df4d97a..e01fe6219 100644 --- a/postfix/proto/header_checks +++ b/postfix/proto/header_checks @@ -182,10 +182,11 @@ # After the message is queued, send the entire message through # the specified external content filter. The \fItransport\fR # name specifies the first field of a mail delivery agent -# definition master.cf; the syntax of \fIdestination\fR is -# described in the manual page of the corresponding delivery -# agent. More information about external content filters is -# in the Postfix FILTER_README file. +# definition in master.cf; the syntax of the next-hop +# \fIdestination\fR is described in the manual page of the +# corresponding delivery agent. More information about +# external content filters is in the Postfix FILTER_README +# file. # .sp # Note 1: do not use $\fInumber\fR regular expression # substitutions for \fItransport\fR or \fIdestination\fR @@ -198,12 +199,13 @@ # .sp # Note 3: the purpose of the FILTER command is to override # message routing. To override the recipient's \fItransport\fR -# but not \fIdestination\fR, specify an empty \fIdestination\fR -# (Postfix 2.7 and later), or specify a \fItransport:destination\fR -# that delivers through a different Postfix instance (Postfix -# 2.6 and earlier). Other options are using the recipient-dependent -# \fBtrans\%port\%_maps\fR or the sen\%der-dependent -# \fBsender\%_de\%pen\%dent_default_trans\%port\%_maps\fR +# but not the next-hop \fIdestination\fR, specify an empty +# filter \fIdestination\fR (Postfix 2.7 and later), or specify +# a \fItransport:destination\fR that delivers through a +# different Postfix instance (Postfix 2.6 and earlier). Other +# options are using the recipient-dependent \fBtrans\%port\%_maps\fR +# or the sen\%der-dependent +# \fBsender\%_de\%pen\%dent\%_de\%fault\%_trans\%port\%_maps\fR # features. # .sp # This feature is available in Postfix 2.0 and later. diff --git a/postfix/proto/postconf.proto b/postfix/proto/postconf.proto index 113c66c80..f827592fb 100644 --- a/postfix/proto/postconf.proto +++ b/postfix/proto/postconf.proto @@ -6864,24 +6864,25 @@ allowed set are replaced by underscores.After the message is queued, send the entire message to the specified transport:destination. The transport name specifies the first field of a mail delivery agent definition in -master.cf; the syntax of destination is described in the -manual page of the corresponding delivery agent. More information -about external content filters is in the Postfix FILTER_README file. -
+master.cf; the syntax of the next-hop destination is described +in the manual page of the corresponding delivery agent. More +information about external content filters is in the Postfix +FILTER_README file.Notes:
This setting has a lower precedence than a content filter that -is specified with an access(5) table or in a header_checks(5) or -body_checks(5) table.
+This setting has lower precedence than a FILTER action +that is specified in an access(5), header_checks(5) or body_checks(5) +table.
-The meaning of an empty filter destination is version -dependent. Postfix 2.7 and later will use the recipient domain; -earlier versions will use $myhostname. Specify "legacy_filter_nexthop -= yes" for compatibility with Postfix 2.6 or earlier, or specify -a non-empty filter destination.
+The meaning of an empty next-hop filter destination +is version dependent. Postfix 2.7 and later will use the recipient +domain; earlier versions will use $myhostname. Specify +"default_filter_nexthop = $myhostname" for compatibility with Postfix +2.6 or earlier, or specify a content_filter value with an explicit +next-hop destination.
This feature is available in Postfix 2.7 and later.
-%PARAM legacy_filter_nexthop no +%PARAM default_filter_nexthop -When a FILTER command does not specify a destination, force the -destination to be $myhostname, instead of using the recipient domain. -Specify "legacy_filter_nexthop = yes" for compatibility with Postfix -version 2.6 and earlier, or specify a non-empty filter destination. -
+When a content_filter or FILTER request specifies no explicit +next-hop destination, use $default_filter_nexthop instead; when +that value is empty, use the domain in the recipient address. +Specify "default_filter_nexthop = $myhostname" for compatibility +with Postfix version 2.6 and earlier, or specify an explicit next-hop +destination with each content_filter value or FILTER action.
This feature is available in Postfix 2.7 and later.
diff --git a/postfix/src/global/mail_params.h b/postfix/src/global/mail_params.h index 71c2b3f9d..6952706dc 100644 --- a/postfix/src/global/mail_params.h +++ b/postfix/src/global/mail_params.h @@ -2253,9 +2253,9 @@ extern void mail_params_init(void); #define DEF_FILTER_XPORT "" extern char *var_filter_xport; -#define VAR_LEGACY_FILTER_NEXTHOP "legacy_filter_nexthop" -#define DEF_LEGACY_FILTER_NEXTHOP 0 -extern bool var_legacy_filter_nexthop; +#define VAR_DEF_FILTER_NEXTHOP "default_filter_nexthop" +#define DEF_DEF_FILTER_NEXTHOP "" +extern char *var_def_filter_nexthop; /* * Fast flush service support. diff --git a/postfix/src/global/mail_version.h b/postfix/src/global/mail_version.h index 85a6d560f..ba98408e0 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 "20100116" +#define MAIL_RELEASE_DATE "20100117" #define MAIL_VERSION_NUMBER "2.7" #ifdef SNAPSHOT diff --git a/postfix/src/oqmgr/qmgr.c b/postfix/src/oqmgr/qmgr.c index 2d6d84fbe..edff94dc8 100644 --- a/postfix/src/oqmgr/qmgr.c +++ b/postfix/src/oqmgr/qmgr.c @@ -159,9 +159,10 @@ /* character. /* .PP /* Available with Postfix version 2.7 and later: -/* .IP "\fBlegacy_filter_nexthop (no)\fR" -/* When a FILTER command does not specify a destination, force the -/* destination to be $myhostname, instead of using the recipient domain. +/* .IP "\fBdefault_filter_nexthop (empty)\fR" +/* When a content_filter or FILTER request specifies no explicit +/* next-hop destination, use $default_filter_nexthop instead; when +/* that value is empty, use the domain in the recipient address. /* ACTIVE QUEUE CONTROLS /* .ad /* .fi @@ -374,7 +375,7 @@ char *var_conc_neg_feedback; int var_conc_cohort_limit; int var_conc_feedback_debug; int var_dest_rate_delay; -bool var_legacy_filter_nexthop; +char *var_def_filter_nexthop; static QMGR_SCAN *qmgr_scans[2]; @@ -604,6 +605,7 @@ int main(int argc, char **argv) VAR_DEFER_XPORTS, DEF_DEFER_XPORTS, &var_defer_xports, 0, 0, VAR_CONC_POS_FDBACK, DEF_CONC_POS_FDBACK, &var_conc_pos_feedback, 1, 0, VAR_CONC_NEG_FDBACK, DEF_CONC_NEG_FDBACK, &var_conc_neg_feedback, 1, 0, + VAR_DEF_FILTER_NEXTHOP, DEF_DEF_FILTER_NEXTHOP, &var_def_filter_nexthop, 0, 0, 0, }; static const CONFIG_TIME_TABLE time_table[] = { @@ -633,7 +635,6 @@ int main(int argc, char **argv) static const CONFIG_BOOL_TABLE bool_table[] = { VAR_VERP_BOUNCE_OFF, DEF_VERP_BOUNCE_OFF, &var_verp_bounce_off, VAR_CONC_FDBACK_DEBUG, DEF_CONC_FDBACK_DEBUG, &var_conc_feedback_debug, - VAR_LEGACY_FILTER_NEXTHOP, DEF_LEGACY_FILTER_NEXTHOP, &var_legacy_filter_nexthop, 0, }; diff --git a/postfix/src/oqmgr/qmgr_message.c b/postfix/src/oqmgr/qmgr_message.c index cb7b87ce1..05e6a339a 100644 --- a/postfix/src/oqmgr/qmgr_message.c +++ b/postfix/src/oqmgr/qmgr_message.c @@ -1009,8 +1009,8 @@ static void qmgr_message_resolve(QMGR_MESSAGE *message) reply.flags = 0; vstring_strcpy(reply.transport, message->filter_xport); if (FILTER_WITHOUT_NEXTHOP(STR(reply.transport), nexthop) - && (var_legacy_filter_nexthop != 0 - || RCPT_WITHOUT_DOMAIN(recipient->address, nexthop))) + && *(nexthop = var_def_filter_nexthop) == 0 + && RCPT_WITHOUT_DOMAIN(recipient->address, nexthop)) nexthop = var_myhostname; vstring_strcpy(reply.nexthop, nexthop); vstring_strcpy(reply.recipient, recipient->address); diff --git a/postfix/src/pickup/pickup.c b/postfix/src/pickup/pickup.c index 921c07d91..5d9d78c24 100644 --- a/postfix/src/pickup/pickup.c +++ b/postfix/src/pickup/pickup.c @@ -46,8 +46,8 @@ /* .ad /* .fi /* .IP "\fBcontent_filter (empty)\fR" -/* The name of a mail delivery transport that filters mail after -/* it is queued. +/* After the message is queued, send the entire message to the +/* specified \fItransport:destination\fR. /* .IP "\fBreceive_override_options (empty)\fR" /* Enable or disable recipient validation, built-in content /* filtering, or address mapping. diff --git a/postfix/src/qmgr/qmgr.c b/postfix/src/qmgr/qmgr.c index e2ef6e540..d6d7fe541 100644 --- a/postfix/src/qmgr/qmgr.c +++ b/postfix/src/qmgr/qmgr.c @@ -163,9 +163,10 @@ /* character. /* .PP /* Available with Postfix version 2.7 and later: -/* .IP "\fBlegacy_filter_nexthop (no)\fR" -/* When a FILTER command does not specify a destination, force the -/* destination to be $myhostname, instead of using the recipient domain. +/* .IP "\fBdefault_filter_nexthop (empty)\fR" +/* When a content_filter or FILTER request specifies no explicit +/* next-hop destination, use $default_filter_nexthop instead; when +/* that value is empty, use the domain in the recipient address. /* ACTIVE QUEUE CONTROLS /* .ad /* .fi @@ -434,7 +435,7 @@ char *var_conc_neg_feedback; int var_conc_cohort_limit; int var_conc_feedback_debug; int var_dest_rate_delay; -bool var_legacy_filter_nexthop; +char *var_def_filter_nexthop; static QMGR_SCAN *qmgr_scans[2]; @@ -671,6 +672,7 @@ int main(int argc, char **argv) VAR_DEFER_XPORTS, DEF_DEFER_XPORTS, &var_defer_xports, 0, 0, VAR_CONC_POS_FDBACK, DEF_CONC_POS_FDBACK, &var_conc_pos_feedback, 1, 0, VAR_CONC_NEG_FDBACK, DEF_CONC_NEG_FDBACK, &var_conc_neg_feedback, 1, 0, + VAR_DEF_FILTER_NEXTHOP, DEF_DEF_FILTER_NEXTHOP, &var_def_filter_nexthop, 0, 0, 0, }; static const CONFIG_TIME_TABLE time_table[] = { @@ -708,7 +710,6 @@ int main(int argc, char **argv) static const CONFIG_BOOL_TABLE bool_table[] = { VAR_VERP_BOUNCE_OFF, DEF_VERP_BOUNCE_OFF, &var_verp_bounce_off, VAR_CONC_FDBACK_DEBUG, DEF_CONC_FDBACK_DEBUG, &var_conc_feedback_debug, - VAR_LEGACY_FILTER_NEXTHOP, DEF_LEGACY_FILTER_NEXTHOP, &var_legacy_filter_nexthop, 0, }; diff --git a/postfix/src/qmgr/qmgr_message.c b/postfix/src/qmgr/qmgr_message.c index 25ed0b75d..e54750849 100644 --- a/postfix/src/qmgr/qmgr_message.c +++ b/postfix/src/qmgr/qmgr_message.c @@ -1068,8 +1068,8 @@ static void qmgr_message_resolve(QMGR_MESSAGE *message) reply.flags = 0; vstring_strcpy(reply.transport, message->filter_xport); if (FILTER_WITHOUT_NEXTHOP(STR(reply.transport), nexthop) - && (var_legacy_filter_nexthop != 0 - || RCPT_WITHOUT_DOMAIN(recipient->address, nexthop))) + && *(nexthop = var_def_filter_nexthop) == 0 + && RCPT_WITHOUT_DOMAIN(recipient->address, nexthop)) nexthop = var_myhostname; vstring_strcpy(reply.nexthop, nexthop); vstring_strcpy(reply.recipient, recipient->address); diff --git a/postfix/src/qmqpd/qmqpd.c b/postfix/src/qmqpd/qmqpd.c index 28f4f2213..4c5c6cfa8 100644 --- a/postfix/src/qmqpd/qmqpd.c +++ b/postfix/src/qmqpd/qmqpd.c @@ -45,8 +45,8 @@ /* .ad /* .fi /* .IP "\fBcontent_filter (empty)\fR" -/* The name of a mail delivery transport that filters mail after -/* it is queued. +/* After the message is queued, send the entire message to the +/* specified \fItransport:destination\fR. /* .IP "\fBreceive_override_options (empty)\fR" /* Enable or disable recipient validation, built-in content /* filtering, or address mapping. diff --git a/postfix/src/smtpd/smtpd.c b/postfix/src/smtpd/smtpd.c index 57acbedac..6ea2abcde 100644 --- a/postfix/src/smtpd/smtpd.c +++ b/postfix/src/smtpd/smtpd.c @@ -150,8 +150,8 @@ /* filter is expected to inject mail back into a (Postfix or other) /* MTA for further delivery. See the FILTER_README document for details. /* .IP "\fBcontent_filter (empty)\fR" -/* The name of a mail delivery transport that filters mail after -/* it is queued. +/* After the message is queued, send the entire message to the +/* specified \fItransport:destination\fR. /* BEFORE QUEUE EXTERNAL CONTENT INSPECTION CONTROLS /* .ad /* .fi @@ -3227,9 +3227,9 @@ static int vrfy_cmd(SMTPD_STATE *state, int argc, SMTPD_TOKEN *argv) smtpd_chat_reply(state, "501 5.1.3 Bad recipient address syntax"); return (-1); } - /* Not: state->addr_buf */ + /* Use state->addr_buf, with the unquoted result from extract_addr() */ if (SMTPD_STAND_ALONE(state) == 0 - && (err = smtpd_check_rcpt(state, argv[1].strval)) != 0) { + && (err = smtpd_check_rcpt(state, STR(state->addr_buf))) != 0) { smtpd_chat_reply(state, "%s", err); return (-1); } @@ -3237,8 +3237,8 @@ static int vrfy_cmd(SMTPD_STATE *state, int argc, SMTPD_TOKEN *argv) /* * XXX 2821 new feature: Section 3.5.1 requires that the VRFY response is * either "full name