Postfix 2.0 patchlevel 13 fixes minor problems that surfaced in hte past couple weeks. This will be one of the last updates to the 2.0 Postfix release. - After "postfix reload", the master daemon now warns when the inet_interfaces parameter setting has changed, and ignores the change, instead of passing incorrect information to the smtp server. - After the last change to the postdrop command, the postcat command no longer recognized "maildrop" queue files as valid. - Mail could bounce when two messages were delivered simultaneously to a non-existent mailbox file. The safe_open() code that prevents race condition exploits will now try a little harder when it actually encounters a race condition. diff -cr /tmp/postfix-2.0.12/HISTORY ./HISTORY *** /tmp/postfix-2.0.12/HISTORY Wed Jun 11 11:54:25 2003 --- ./HISTORY Sun Jun 29 18:19:05 2003 *************** *** 7814,7823 **** Workaround: Solaris blocking socket read() may hang. Hernan Perez Masci and Leandro Santi. File: smtpd/smtpd.c. ! 20030612 Bugfix: the stricter postdrop input filter broke "sendmail -bs". Found by Lutz Jaenicke. File: smtpd/smtpd.c. Open problems: --- 7814,7852 ---- Workaround: Solaris blocking socket read() may hang. Hernan Perez Masci and Leandro Santi. File: smtpd/smtpd.c. ! 20030611 Bugfix: the stricter postdrop input filter broke "sendmail -bs". Found by Lutz Jaenicke. File: smtpd/smtpd.c. + + 20030616 + + Cleanup: more accurate "postfix check" warning for files + that miss one or more of the required mode 02111 execute + permission bits. Matthias Andree. File: conf/postfix-script. + + 20030618 + + Workaround: after "postfix reload", the master daemon now + warns when inet_interfaces has changed, and ignores the + change, instead of passing incorrect information to the + smtp server. File: master/master_ent.c. + + 20030620 + + Bugfix: after the last change to postdrop, postcat no longer + recognized maildrop queue files as valid. File: postcat/postcat.c. + + 20030621 + + Workaround: the safe_open(O_CREAT) race condition exploit + avoiding code tries a little harder when it encounters a + race condition. File: util/safe_open.c. + + 20030629 + + Cleanup: replaced references to "simulated virtual domains" + by "virtual alias domains". Victor Duchovni, Morgan Stanley. Open problems: diff -cr /tmp/postfix-2.0.12/README_FILES/VIRTUAL_README ./README_FILES/VIRTUAL_README *** /tmp/postfix-2.0.12/README_FILES/VIRTUAL_README Sat Apr 26 14:41:18 2003 --- ./README_FILES/VIRTUAL_README Sun Jun 29 17:10:56 2003 *************** *** 8,14 **** You can use the virtual delivery agent for mailbox delivery of some or all domains that are handled by a machine. ! This mechanism is different from simulated virtual domains. Those are implemented by translating every recipient address into a different address. For that, see the virtual(5) manual page. --- 8,14 ---- You can use the virtual delivery agent for mailbox delivery of some or all domains that are handled by a machine. ! This mechanism is different from virtual alias domains. Those are implemented by translating every recipient address into a different address. For that, see the virtual(5) manual page. Only in ./README_FILES: VIRTUAL_README.orig diff -cr /tmp/postfix-2.0.12/conf/postfix-script ./conf/postfix-script *** /tmp/postfix-2.0.12/conf/postfix-script Thu Dec 12 16:48:43 2002 --- ./conf/postfix-script Sun Jun 29 17:16:16 2003 *************** *** 181,187 **** find $command_directory/postqueue $command_directory/postdrop \ -prune ! -perm -02111 \ ! -exec $WARN not set-gid: {} \; for name in `ls -d $queue_directory/* | \ egrep '/(bin|etc|lib|usr)$'` ; \ --- 181,187 ---- find $command_directory/postqueue $command_directory/postdrop \ -prune ! -perm -02111 \ ! -exec $WARN not set-gid or not owner+group+world executable: {} \; for name in `ls -d $queue_directory/* | \ egrep '/(bin|etc|lib|usr)$'` ; \ diff -cr /tmp/postfix-2.0.12/conf/transport ./conf/transport *** /tmp/postfix-2.0.12/conf/transport Fri Feb 28 13:28:36 2003 --- ./conf/transport Mon Jun 16 12:55:12 2003 *************** *** 16,36 **** # relay hosts. The mapping is used by the trivial-rewrite(8) # daemon. # ! # Normally, the transport table is specified as a text file ! # that serves as input to the postmap(1) command. The ! # result, an indexed file in dbm or db format, is used for ! # fast searching by the mail system. Execute the command ! # postmap /etc/postfix/transport in order to rebuild the # indexed file after changing the transport table. # ! # When the table is provided via other means such as NIS, ! # LDAP or SQL, the same lookups are done as for ordinary # indexed files. # ! # Alternatively, the table can be provided as a regular- # expression map where patterns are given as regular expres- ! # sions. In that case, the lookups are done in a slightly ! # different way as described in section "REGULAR EXPRESSION # TABLES". # # TABLE FORMAT --- 16,55 ---- # relay hosts. The mapping is used by the trivial-rewrite(8) # daemon. # ! # This mapping overrides the default routing that is built ! # into Postfix: ! # ! # mydestination ! # A list of domains that is by default delivered via ! # $local_transport. ! # ! # virtual_mailbox_domains ! # A list of domains that is by default delivered via ! # $virtual_transport. ! # ! # relay_domains ! # A list of domains that is by default delivered via ! # $relay_transport. ! # ! # any other destination ! # Mail for any other destination is by default deliv- ! # ered via $default_transport. ! # ! # Normally, the transport table is specified as a text file ! # that serves as input to the postmap(1) command. The ! # result, an indexed file in dbm or db format, is used for ! # fast searching by the mail system. Execute the command ! # postmap /etc/postfix/transport in order to rebuild the # indexed file after changing the transport table. # ! # When the table is provided via other means such as NIS, ! # LDAP or SQL, the same lookups are done as for ordinary # indexed files. # ! # Alternatively, the table can be provided as a regular- # expression map where patterns are given as regular expres- ! # sions. In that case, the lookups are done in a slightly ! # different way as described in section "REGULAR EXPRESSION # TABLES". # # TABLE FORMAT *************** *** 41,68 **** # domain, use the corresponding result. # # blank lines and comments ! # Empty lines and whitespace-only lines are ignored, ! # as are lines whose first non-whitespace character # is a `#'. # # multi-line text ! # A logical line starts with non-whitespace text. A ! # line that starts with whitespace continues a logi- # cal line. # ! # The pattern specifies an email address, a domain name, or ! # a domain name hierarchy, as described in section "TABLE # LOOKUP". # ! # The result is of the form transport:nexthop. The trans- ! # port field specifies a mail delivery transport such as ! # smtp or local. The nexthop field specifies where and how # to deliver mail. More details are given in section "RESULT # FORMAT". # # TABLE LOOKUP # With lookups from indexed files such as DB or DBM, or from ! # networked tables such as NIS, LDAP or SQL, patterns are # tried in the order as listed below: # # user+extension@domain transport:nexthop --- 60,87 ---- # domain, use the corresponding result. # # blank lines and comments ! # Empty lines and whitespace-only lines are ignored, ! # as are lines whose first non-whitespace character # is a `#'. # # multi-line text ! # A logical line starts with non-whitespace text. A ! # line that starts with whitespace continues a logi- # cal line. # ! # The pattern specifies an email address, a domain name, or ! # a domain name hierarchy, as described in section "TABLE # LOOKUP". # ! # The result is of the form transport:nexthop. The trans- ! # port field specifies a mail delivery transport such as ! # smtp or local. The nexthop field specifies where and how # to deliver mail. More details are given in section "RESULT # FORMAT". # # TABLE LOOKUP # With lookups from indexed files such as DB or DBM, or from ! # networked tables such as NIS, LDAP or SQL, patterns are # tried in the order as listed below: # # user+extension@domain transport:nexthop *************** *** 74,207 **** # to nexthop. # # domain transport:nexthop ! # Mail for domain is delivered through transport to # nexthop. # # .domain transport:nexthop ! # Mail for any subdomain of domain is delivered ! # through transport to nexthop. This applies only # when the string transport_maps is not listed in the # parent_domain_matches_subdomains configuration set- ! # ting. Otherwise, a domain name matches itself and # its subdomains. # # Note 1: the special pattern * represents any address (i.e. # it functions as the wild-card pattern). # ! # Note 2: the null recipient address is looked up as # $empty_address_recipient@$myhostname (default: mailer-dae- # mon@hostname). # # RESULT FORMAT ! # The transport field specifies the name of a mail delivery # transport (the first name of a mail delivery service entry # in the Postfix master.cf file). # ! # The interpretation of the nexthop field is transport # dependent. In the case of SMTP, specify host:service for a ! # non-default server port, and use [host] or [host]:port in ! # order to disable MX (mail exchanger) DNS lookups. The [] # form is required when you specify an IP address instead of # a hostname. # ! # A null transport and null nexthop result means "do not ! # change": use the delivery transport and nexthop informa- ! # tion that would be used when the entire transport table # did not exist. # ! # A non-null transport field with a null nexthop field # resets the nexthop information to the recipient domain. # ! # A null transport field with non-null nexthop field does # not modify the transport information. # # EXAMPLES ! # In order to deliver internal mail directly, while using a ! # mail relay for all other mail, specify a null entry for ! # internal destinations (do not change the delivery trans- ! # port or the nexthop information) and specify a wildcard # for all other destinations. # # my.domain : # .my.domain : # * smtp:outbound-relay.my.domain # ! # In order to send mail for foo.org and its subdomains via # the uucp transport to the UUCP host named foo: # # foo.org uucp:foo # .foo.org uucp:foo # ! # When no nexthop host name is specified, the destination ! # domain name is used instead. For example, the following ! # directs mail for user@foo.org via the slow transport to a ! # mail exchanger for foo.org. The slow transport could be ! # something that runs at most one delivery process at a # time: # # foo.org slow: # # When no transport is specified, Postfix uses the transport # that matches the address domain class (see TRANSPORT FIELD ! # discussion above). The following sends all mail for # foo.org and its subdomains to host gateway.foo.org: # # foo.org :[gateway.foo.org] # .foo.org :[gateway.foo.org] # ! # In the above example, the [] are used to suppress MX ! # lookups. The result would likely point to your local # machine. # ! # In the case of delivery via SMTP, one may specify host- # name:service instead of just a host: # # foo.org smtp:bar.org:2025 # ! # This directs mail for user@foo.org to host bar.org port ! # 2025. Instead of a numerical port a symbolic name may be ! # used. Specify [] around the hostname in order to disable # MX lookups. # # The error mailer can be used to bounce mail: # ! # .foo.org error:mail for *.foo.org is not deliv- # erable # ! # This causes all mail for user@anything.foo.org to be # bounced. # # REGULAR EXPRESSION TABLES ! # 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, # see regexp_table(5) or pcre_table(5). # ! # Each pattern is a regular expression that is applied to # the entire domain being looked up. Thus, some.domain.hier- # archy is not broken up into parent domains. # ! # Patterns are applied in the order as specified in the ! # table, until a pattern is found that matches the search # string. # ! # Results 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. # # CONFIGURATION PARAMETERS ! # The following main.cf parameters are especially relevant ! # to this topic. See the Postfix main.cf file for syntax ! # details and for default values. Use the postfix reload # command after a configuration change. # # empty_address_recipient ! # The address that is looked up instead of the null # sender address. # # parent_domain_matches_subdomains ! # List of Postfix features that use domain.tld pat- ! # terns to match sub.domain.tld (as opposed to # requiring .domain.tld patterns). # # transport_maps --- 93,226 ---- # to nexthop. # # domain transport:nexthop ! # Mail for domain is delivered through transport to # nexthop. # # .domain transport:nexthop ! # Mail for any subdomain of domain is delivered ! # through transport to nexthop. This applies only # when the string transport_maps is not listed in the # parent_domain_matches_subdomains configuration set- ! # ting. Otherwise, a domain name matches itself and # its subdomains. # # Note 1: the special pattern * represents any address (i.e. # it functions as the wild-card pattern). # ! # Note 2: the null recipient address is looked up as # $empty_address_recipient@$myhostname (default: mailer-dae- # mon@hostname). # # RESULT FORMAT ! # The transport field specifies the name of a mail delivery # transport (the first name of a mail delivery service entry # in the Postfix master.cf file). # ! # The interpretation of the nexthop field is transport # dependent. In the case of SMTP, specify host:service for a ! # non-default server port, and use [host] or [host]:port in ! # order to disable MX (mail exchanger) DNS lookups. The [] # form is required when you specify an IP address instead of # a hostname. # ! # A null transport and null nexthop result means "do not ! # change": use the delivery transport and nexthop informa- ! # tion that would be used when the entire transport table # did not exist. # ! # A non-null transport field with a null nexthop field # resets the nexthop information to the recipient domain. # ! # A null transport field with non-null nexthop field does # not modify the transport information. # # EXAMPLES ! # In order to deliver internal mail directly, while using a ! # mail relay for all other mail, specify a null entry for ! # internal destinations (do not change the delivery trans- ! # port or the nexthop information) and specify a wildcard # for all other destinations. # # my.domain : # .my.domain : # * smtp:outbound-relay.my.domain # ! # In order to send mail for foo.org and its subdomains via # the uucp transport to the UUCP host named foo: # # foo.org uucp:foo # .foo.org uucp:foo # ! # When no nexthop host name is specified, the destination ! # domain name is used instead. For example, the following ! # directs mail for user@foo.org via the slow transport to a ! # mail exchanger for foo.org. The slow transport could be ! # something that runs at most one delivery process at a # time: # # foo.org slow: # # When no transport is specified, Postfix uses the transport # that matches the address domain class (see TRANSPORT FIELD ! # discussion above). The following sends all mail for # foo.org and its subdomains to host gateway.foo.org: # # foo.org :[gateway.foo.org] # .foo.org :[gateway.foo.org] # ! # In the above example, the [] are used to suppress MX ! # lookups. The result would likely point to your local # machine. # ! # In the case of delivery via SMTP, one may specify host- # name:service instead of just a host: # # foo.org smtp:bar.org:2025 # ! # This directs mail for user@foo.org to host bar.org port ! # 2025. Instead of a numerical port a symbolic name may be ! # used. Specify [] around the hostname in order to disable # MX lookups. # # The error mailer can be used to bounce mail: # ! # .foo.org error:mail for *.foo.org is not deliv- # erable # ! # This causes all mail for user@anything.foo.org to be # bounced. # # REGULAR EXPRESSION TABLES ! # 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, # see regexp_table(5) or pcre_table(5). # ! # Each pattern is a regular expression that is applied to # the entire domain being looked up. Thus, some.domain.hier- # archy is not broken up into parent domains. # ! # Patterns are applied in the order as specified in the ! # table, until a pattern is found that matches the search # string. # ! # Results 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. # # CONFIGURATION PARAMETERS ! # The following main.cf parameters are especially relevant ! # to this topic. See the Postfix main.cf file for syntax ! # details and for default values. Use the postfix reload # command after a configuration change. # # empty_address_recipient ! # The address that is looked up instead of the null # sender address. # # parent_domain_matches_subdomains ! # List of Postfix features that use domain.tld pat- ! # terns to match sub.domain.tld (as opposed to # requiring .domain.tld patterns). # # transport_maps *************** *** 214,220 **** # regexp_table(5) format of POSIX regular expression tables # # LICENSE ! # The Secure Mailer license must be distributed with this # software. # # AUTHOR(S) --- 233,239 ---- # regexp_table(5) format of POSIX regular expression tables # # LICENSE ! # The Secure Mailer license must be distributed with this # software. # # AUTHOR(S) diff -cr /tmp/postfix-2.0.12/html/faq.html ./html/faq.html *** /tmp/postfix-2.0.12/html/faq.html Sun Jan 12 13:22:08 2003 --- ./html/faq.html Sun Jun 29 17:10:56 2003 *************** *** 2618,2625 ****

! If you want to deliver the domain as a Postfix simulated virtual(5) domain, then you should list the virtual domain name in the tables specified with the virtual_alias_domains parameter instead. --- 2618,2626 ----

! If you want to deliver the domain as a ! virtual(5) alias domain, where each address is aliased to ! a real local or remote address, then you should list the virtual domain name in the tables specified with the virtual_alias_domains parameter instead. *************** *** 2638,2644 ****