diff --git a/postfix/HISTORY b/postfix/HISTORY index e3d94f5d4..e57440d02 100644 --- a/postfix/HISTORY +++ b/postfix/HISTORY @@ -5405,3 +5405,19 @@ Apologies for any names omitted. for myhostname, inet_interfaces, and mynetworks_style. This broke the default mynetworks setting calculation. File: postconf/postconf.c. + +20010803 + + Feature: masquerade_classes parameter for fine control of + address masquerading. The default setting is backwards + compatible: envelope_sender header_sender header_recipient. + Files: cleanup/whatever.c. + +20010806 + + Bugfix: did not address masquerade the always_bcc recipient + after extracting envelope recipients from message headers. + File: cleanup/cleanup_extracted.c. + + Bugfix: did not address masquerade the envelope recipients + extracted from message headers. File: cleanup/cleanup_message.c. diff --git a/postfix/RELEASE_NOTES b/postfix/RELEASE_NOTES index 026c4140f..d5c715dc2 100644 --- a/postfix/RELEASE_NOTES +++ b/postfix/RELEASE_NOTES @@ -1,17 +1,29 @@ -Incompatible changes with snapshot-20010801 +Incompatible changes with snapshot-20010802 =========================================== +The default setting for the maps_rbl_domains parameter is "empty", +because mail-abuse.org has become a subscription-based service. + +The permit_mx_backup feature has changed. It accepts mail only when +the primary MX hosts for the recipient match the networks that are +specified with the new auth_permit_mx_backup configuration parameter. +Postfix will not accept mail when permit_mx_backup is used while +auth_permit_mx_backup is not configured. + The protocol between Postfix master and child processes has changed. You must stop and start Postfix in order to switch between Snapshot 20010801 and releases that implement the older protocol. -Major changes with snapshot-20010801 +Major changes with snapshot-20010802 ==================================== Specify "disable_verp_bounces = yes" to have Postfix send one RFC-standard, non-VERP, bounce report for multi-recipient mail, even when VERP style delivery is requested. +Fine control over address masquerading. The masquerade_classes +parameter controls header and envelope sender and recipient addresses. + Variable coupling between message receiving rates and message delivery rates. When the message receiving rate exceeds the message delivery rate, an SMTP server will pause for $in_flow_delay seconds @@ -20,14 +32,14 @@ a chance catch up and access the disk, while still allowing new mail to arrive. The in_flow_delay feature has effect mainly when your system is -being flooded port through a limited number of SMTP connections. -This is also useful for mass-mailing applications, because it avoids -the need to hand-tune the rate at which mail is sent into Postfix. +being flooded through a limited number of SMTP connections. This +is useful for mass-mailing applications, because it eliminates the +need to hand-tune the rate for sending mail into Postfix. The in_flow_delay feature has negligible effect when mail arrives via many different SMTP connections. With the default limit of 50 SMTP server processes and with the default $in_flow_delay of 1 -second, total mail inflow is limited to 50 messages per second more +second, the mail inflow is limited to 50 messages per second more than the number of messages that are delivered per second. Many systems saturate at values much smaller than 50 messages per second. diff --git a/postfix/conf/canonical b/postfix/conf/canonical index 6be24c040..34288f8ca 100644 --- a/postfix/conf/canonical +++ b/postfix/conf/canonical @@ -151,6 +151,11 @@ # The network interface addresses that this system # receives mail on. # +# masquerade_classes +# List of address classes subject to masquerading: +# zero or more of envelope_sender, envelope_recipi- +# ent, header_sender, header_recipient. +# # masquerade_domains # List of domains that hide their subdomain struc- # ture. @@ -166,17 +171,16 @@ # myorigin # The domain that is appended to locally-posted mail. # +# 3 +# +# CANONICAL(5) CANONICAL(5) +# # owner_request_special # Give special treatment to owner-xxx and xxx-request # addresses. # # SEE ALSO # cleanup(8) canonicalize and enqueue mail -# -# 3 -# -# CANONICAL(5) CANONICAL(5) -# # postmap(1) create mapping table # virtual(5) virtual domain mapping # pcre_table(5) format of PCRE tables diff --git a/postfix/conf/master.cf b/postfix/conf/master.cf index fc4417323..d4cd4fb35 100644 --- a/postfix/conf/master.cf +++ b/postfix/conf/master.cf @@ -84,6 +84,11 @@ error unix - - n - - error local unix - n n - - local virtual unix - n n - - virtual lmtp unix - - n - - lmtp +# +# Interfaces to non-Postfix software. Be sure to examine the manual +# pages of the non-Postfix software to find out what options it wants. +# The Cyrus deliver program has changed incompatibly. +# cyrus unix - n n - - pipe flags=R user=cyrus argv=/cyrus/bin/deliver -e -m ${extension} ${user} uucp unix - n n - - pipe diff --git a/postfix/conf/pcre_table b/postfix/conf/pcre_table index 389466383..d34d5b28d 100644 --- a/postfix/conf/pcre_table +++ b/postfix/conf/pcre_table @@ -43,13 +43,13 @@ # is `U', which makes matching ungreedy (see PCRE documenta- # tion and source for more info). # -# Each pattern is applied to the entire string being looked -# up. 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, and 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. +# Each pattern is applied to the entire lookup key string. +# 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, and 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 # table, until a pattern is found that matches the search @@ -59,11 +59,11 @@ # # PCRE_TABLE(5) PCRE_TABLE(5) # -# Substitution of sub-strings from the matched expression is -# possible using the conventional perl syntax ($1, $2, -# etc.). The macros in the replacement string may need to be -# written as ${n} or $(n) if they aren't followed by whites- -# pace. +# Substitution of substrings from the matched expression +# into the result string is possible using the conventional +# perl syntax ($1, $2, etc.). The macros in the result +# string may need to be written as ${n} or $(n) if they +# aren't followed by whitespace. # # EXAMPLES # # Protect your outgoing majordomo exploders diff --git a/postfix/conf/regexp_table b/postfix/conf/regexp_table index f9b8a5e2e..5da339f48 100644 --- a/postfix/conf/regexp_table +++ b/postfix/conf/regexp_table @@ -46,13 +46,13 @@ # Other flags are `x' (disable extended expression syntax), # and `m' (enable multi-line mode). # -# Each pattern is applied to the entire string being looked -# up. 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, and 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. +# Each pattern is applied to the entire lookup key string. +# 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, and 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 # @@ -63,10 +63,10 @@ # table, until a pattern is found that matches the search # string. # -# Substitution of sub-strings from the matched expression is -# possible using $1, $2, etc.. The macros in the replacement -# string may need to be written as ${n} or $(n) if they -# aren't followed by whitespace. +# Substitution of substrings from the matched expression +# into the result string is possible using $1, $2, etc.. The +# macros in the result string may need to be written as ${n} +# or $(n) if they aren't followed by whitespace. # # EXAMPLES # # Disallow sender-specified routing. This is a must if you relay mail diff --git a/postfix/conf/sample-rewrite.cf b/postfix/conf/sample-rewrite.cf index b4073fb4b..deed2785f 100644 --- a/postfix/conf/sample-rewrite.cf +++ b/postfix/conf/sample-rewrite.cf @@ -27,6 +27,19 @@ append_dot_mydomain = yes # empty_address_recipient = MAILER-DAEMON +# The masquerade_classes parameter controls what addresses are +# subject to address masquerading. +# +# By default, address masquerading is limited to envelope recipient +# addresses, and to header sender and header recipient addresses. +# This allows you to use address masquerading on a mail gateway while +# still being able to forward mail to users on individual machines. +# +# Specify zero or more of: envelope_sender, envelope_recipient, +# header_sender, header_recipient +# +masquerade_classes = envelope_sender, header_sender, header_recipient + # The masquerade_domains parameter gives an optional list of domains # that must have their subdomain structure stripped off. # diff --git a/postfix/conf/sample-smtpd.cf b/postfix/conf/sample-smtpd.cf index 082cb760c..fc513f145 100644 --- a/postfix/conf/sample-smtpd.cf +++ b/postfix/conf/sample-smtpd.cf @@ -282,7 +282,8 @@ smtpd_sender_restrictions = # - to destinations matching $relay_domains or subdomain thereof, # except for addresses with sender-specified routing. # reject_unauth_pipelining: reject mail from improperly pipelining spamware -# permit_mx_backup: accept mail for sites that list me as MX host. +# permit_mx_backup: accept mail for sites whose primary MX hosts +# match the networks specified with auth_mx_backup_networks. # reject_unknown_recipient_domain: reject domains without A or MX record. # check_recipient_access maptype:mapname # maptype:mapname: look up recipient address, parent domain, or localpart@. @@ -309,6 +310,20 @@ smtpd_sender_restrictions = # smtpd_recipient_restrictions = permit_mynetworks,check_relay_domains +# The auth_mx_backup_networks parameter specifies a list of networks +# for which the permit_mx_backup feature (see above) can be used. +# +# By default, auth_mx_backup_networks is empty and no networks are +# authorized to use the permit_mx_backup feature. You can specify +# a complete class A network (X.0.0.0/8), a complete class B network +# (X.X.0.0/16), and so on. If you want stricter control, specify a +# list of network/mask patterns, where the mask specifies the number +# of bits in the network part of a host address. You can also specify +# the absolute pathname of a pattern file instead of listing the +# patterns here. +# +auth_mx_backup_networks = + # # ADDITIONAL UCE CONTROLS # diff --git a/postfix/html/canonical.5.html b/postfix/html/canonical.5.html index aab106032..53ce0960d 100644 --- a/postfix/html/canonical.5.html +++ b/postfix/html/canonical.5.html @@ -143,6 +143,11 @@ CANONICAL(5) CANONICAL(5) The network interface addresses that this system receives mail on. + masquerade_classes + List of address classes subject to masquerading: + zero or more of envelope_sender, envelope_recipi- + ent, header_sender, header_recipient. + masquerade_domains List of domains that hide their subdomain struc- ture. diff --git a/postfix/html/cleanup.8.html b/postfix/html/cleanup.8.html index 48ab1db87..f1ce60526 100644 --- a/postfix/html/cleanup.8.html +++ b/postfix/html/cleanup.8.html @@ -40,17 +40,18 @@ CLEANUP(8) CLEANUP(8) and message header addresses (i.e. strip host or domain information below all domains listed in the masquerade_domains parameter, except for user names - listed in masquerade_exceptions). Address mas- - querading does not affect envelope recipients. + listed in masquerade_exceptions). By default, + address masquerading does not affect envelope + recipients. o Optionally, expand envelope recipients according to - information found in the virtual(5) lookup tables. + information found in the virtual(5) lookup tables. - The cleanup daemon performs sanity checks on the content - of each message. When it finds a problem, by default it - returns a diagnostic status to the client, and leaves it - up to the client to deal with the problem. Alternatively, - the client can request the cleanup daemon to bounce the + The cleanup daemon performs sanity checks on the content + of each message. When it finds a problem, by default it + returns a diagnostic status to the client, and leaves it + up to the client to deal with the problem. Alternatively, + the client can request the cleanup daemon to bounce the message back to the sender in case of trouble. STANDARDS @@ -60,30 +61,30 @@ CLEANUP(8) CLEANUP(8) Problems and transactions are logged to syslogd(8). BUGS - Table-driven rewriting rules make it hard to express if + Table-driven rewriting rules make it hard to express if then else and other logical relationships. CONFIGURATION PARAMETERS - The following main.cf parameters are especially relevant - to this program. See the Postfix main.cf file for syntax - details and for default values. Use the postfix reload + The following main.cf parameters are especially relevant + to this program. See the Postfix main.cf file for syntax + details and for default values. Use the postfix reload command after a configuration change. Content filtering body_checks Lookup tables with content filters for message body - lines. These filters see physical lines one at a + lines. These filters see physical lines one at a time, in chunks of at most line_length_limit bytes. header_checks - Lookup tables with content filters for message - header lines. These filters see logical headers + Lookup tables with content filters for message + header lines. These filters see logical headers one at a time, including headers that span multiple lines. Miscellaneous always_bcc - Address to send a copy of each message that enters + Address to send a copy of each message that enters the system. hopcount_limit @@ -96,8 +97,8 @@ CLEANUP(8) CLEANUP(8) Address transformations empty_address_recipient - The destination for undeliverable mail from <>. - This substitution is done before all other address + The destination for undeliverable mail from <>. + This substitution is done before all other address rewriting. canonical_maps @@ -112,12 +113,17 @@ CLEANUP(8) CLEANUP(8) Address mapping lookup table for envelope and header sender addresses. + masquerade_classes + List of address classes subject to masquerading: + zero or more of envelope_sender, envelope_recipi- + ent, header_sender, header_recipient. + masquerade_domains - List of domains that hide their subdomain struc- + List of domains that hide their subdomain struc- ture. masquerade_exceptions - List of user names that are not subject to address + List of user names that are not subject to address masquerading. virtual_maps @@ -126,7 +132,7 @@ CLEANUP(8) CLEANUP(8) Resource controls duplicate_filter_limit - Limit the number of envelope recipients that are + Limit the number of envelope recipients that are remembered. header_size_limit @@ -135,11 +141,11 @@ CLEANUP(8) CLEANUP(8) in_flow_delay Amount of time to pause before accepting a message, - when the message arrival rate exceeds the message + when the message arrival rate exceeds the message delivery rate. extract_recipient_limit - Limit the amount of recipients extracted from mes- + Limit the amount of recipients extracted from mes- sage headers. SEE ALSO @@ -154,7 +160,7 @@ CLEANUP(8) CLEANUP(8) /etc/postfix/virtual*, virtual mapping table 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/faq.html b/postfix/html/faq.html index 64ea296ba..734337f5b 100644 --- a/postfix/html/faq.html +++ b/postfix/html/faq.html @@ -1521,7 +1521,10 @@ href="uce.html#reject_unauth_destination">reject_unauth_destination: reject when the destination is not local.
-Subtle point: address masquerading is applied only to message -headers and envelope sender addresses, not to envelope recipients. +Subtle point: by default, address masquerading is applied only to +message headers and to envelope sender addresses, but not to envelope +recipients. This allows you to use address masquerading on a mail +gateway machine, while still being able to forward mail from outside +to users on individual machines. + +
+ +In order to subject envelope recipient addresses to masquerading, +too, specify (only available with Postfix versions after 20010802): + +
+
+If you do this, Postfix will no longer be able to send mail to
+individual machines.
-Relevant configuration parameters:
-$mydestination,
-$inet_interfaces.
+Relevant configuration parameters: auth_mx_backup_networks, $mydestination, $inet_interfaces.
@@ -966,6 +969,52 @@ to speed up deliveries.
+
+
+
+That is, no networks are authorized by default.
+
+
+
+
+
+
+
+You can also specify the absolute pathname of a pattern file instead
+of listing the patterns in the main.cf file.
+
+ Virtual address mapping
diff --git a/postfix/html/uce.html b/postfix/html/uce.html
index b756a43be..a7c5a609e 100644
--- a/postfix/html/uce.html
+++ b/postfix/html/uce.html
@@ -722,17 +722,20 @@ code for rejected requests (default: 554).
+
+
+
+
+
+
+
+
+
+
+
+
+