]> git.ipfire.org Git - thirdparty/postfix.git/commitdiff
postfix-3.8-20220325
authorWietse Venema <wietse@porcupine.org>
Fri, 25 Mar 2022 05:00:00 +0000 (00:00 -0500)
committerViktor Dukhovni <postfix-users@dukhovni.org>
Sun, 27 Mar 2022 14:58:07 +0000 (10:58 -0400)
postfix/HISTORY
postfix/WISHLIST
postfix/conf/virtual
postfix/html/virtual.5.html
postfix/man/man5/virtual.5
postfix/mantools/missing-proxy-read-maps
postfix/proto/virtual
postfix/src/global/mail_params.h
postfix/src/global/mail_version.h
postfix/src/util/dict.c
postfix/src/util/hash_fnv.c

index dc80b6d45d838ec6e93a18e43bd4926725385f82..61b4c852168851994cf8ef667793eccb5dda5c7b 100644 (file)
@@ -26306,3 +26306,25 @@ Apologies for any names omitted.
        util/htable.c.
 
        Cleanup: unused initialization. File: util/make_dirs.c
+
+20220222
+
+       Documentation: updated comment text. File: util/hash_fnv.c.
+
+29220312
+
+       Cleanup: when a main.cf like file may have changed while
+       it was read, forget the settings before re-reading the file.
+       File: util/dict.c.
+
+20220322
+
+       Cleanup: added missing _checks, _reply_footer, _reply_filter,
+       _command_filter, and _delivery_status_filter parameter names
+       to the proxy_read_maps default value. Files: global/mail_params.h,
+       mantools/missing-proxy-read-maps.
+
+20220325
+
+       Documentation: how to stop recursion in virtual_alias_maps.
+       File: proto/virtual.
index 7e0bc51a8a197a92d7e38ab94ec5b3146a4362c2..c6672507e416f1d093e91f5ca18ee08e74557130 100644 (file)
@@ -6,6 +6,18 @@ Wish list:
 
        Disable -DSNAPSHOT and -DNONPROD in makedefs.
 
+       postscreen_dnsbl_sites is evaluated in the reverse order, breaking
+       expectations when different reply patterns have different weights.
+       We need a compatibility_level feature to correct this.
+
+       In the cleanup daemon, open the milter*header_checks greedily,
+       before the chroot() call. This code is implemented and needs
+       to be tested.
+
+       In the pgsql: client, make the client encoding configurable
+       with a sensible default (UTF8). This code is implemented
+       and needs to be tested.
+
        FILTER_README needs some text on multi-instance implementations,
        and existing multi-instance references need to be updated.
 
index 96390fee80e5962e1db383292caafdc690baefb1..e99eee4881c1bddfc2ca01a9b2644bc5d903b9a5 100644 (file)
 #        The  optional  virtual(5)  alias  table rewrites recipient
 #        addresses for all local, all virtual, and all remote  mail
 #        destinations.   This  is unlike the aliases(5) table which
-#        is used only for local(8) delivery.  Virtual  aliasing  is
-#        recursive,  and  is  implemented by the Postfix cleanup(8)
-#        daemon before mail is queued.
+#        is used only for local(8) delivery. This feature is imple-
+#        mented  in  the  Postfix  cleanup(8) daemon before mail is
+#        queued.
+# 
+#        Virtual aliasing is recursive; to terminate recursion  for
+#        a specific address, alias that address to itself.
 # 
 #        The main applications of virtual aliasing are:
 # 
-#        o      To redirect mail for one address  to  one  or  more
+#        o      To  redirect  mail  for  one address to one or more
 #               addresses.
 # 
-#        o      To   implement  virtual  alias  domains  where  all
-#               addresses  are  aliased  to  addresses   in   other
+#        o      To  implement  virtual  alias  domains  where   all
+#               addresses   are   aliased  to  addresses  in  other
 #               domains.
 # 
-#               Virtual  alias  domains are not to be confused with
-#               the virtual mailbox domains  that  are  implemented
-#               with  the  Postfix  virtual(8) mail delivery agent.
-#               With  virtual  mailbox  domains,   each   recipient
+#               Virtual alias domains are not to be  confused  with
+#               the  virtual  mailbox  domains that are implemented
+#               with the Postfix virtual(8)  mail  delivery  agent.
+#               With   virtual   mailbox  domains,  each  recipient
 #               address can have its own mailbox.
 # 
-#        Virtual  aliasing  is  applied  only to recipient envelope
-#        addresses, and  does  not  affect  message  headers.   Use
-#        canonical(5)   mapping  to  rewrite  header  and  envelope
+#        Virtual aliasing is applied  only  to  recipient  envelope
+#        addresses,  and  does  not  affect  message  headers.  Use
+#        canonical(5)  mapping  to  rewrite  header  and   envelope
 #        addresses in general.
 # 
-#        Normally, the virtual(5) alias 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
+#        Normally,  the  virtual(5)  alias  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/virtual" to rebuild an indexed  file
+#        "postmap  /etc/postfix/virtual" to rebuild an indexed file
 #        after changing the corresponding text file.
 # 
-#        When  the  table  is provided via other means such as NIS,
-#        LDAP or SQL, the same lookups are  done  as  for  ordinary
+#        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 regu-
-#        lar-expression map where patterns  are  given  as  regular
-#        expressions,  or  lookups  can  be directed to a TCP-based
-#        server. In those case, the lookups are done in a  slightly
+#        Alternatively, the  table  can  be  provided  as  a  regu-
+#        lar-expression  map  where  patterns  are given as regular
+#        expressions, or lookups can be  directed  to  a  TCP-based
+#        server.  In those case, the lookups are done in a slightly
 #        different way as described below under "REGULAR EXPRESSION
 #        TABLES" or "TCP-BASED TABLES".
 # 
 # CASE FOLDING
-#        The search string is folded to lowercase  before  database
-#        lookup.  As  of Postfix 2.3, the search string is not case
-#        folded with database types such as regexp: or pcre:  whose
+#        The  search  string is folded to lowercase before database
+#        lookup. As of Postfix 2.3, the search string is  not  case
+#        folded  with database types such as regexp: or pcre: whose
 #        lookup fields can match both upper and lower case.
 # 
 # TABLE FORMAT
 #        The input format for the postmap(1) command is as follows:
 # 
 #        pattern address, address, ...
-#               When pattern matches a mail address, replace it  by
+#               When  pattern matches a mail address, replace it by
 #               the corresponding address.
 # 
 #        blank lines and comments
-#               Empty  lines and whitespace-only lines are ignored,
-#               as are lines whose first  non-whitespace  character
+#               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-
+#               A logical line starts with non-whitespace  text.  A
+#               line  that starts with whitespace continues a logi-
 #               cal line.
 # 
 # TABLE SEARCH ORDER
 #        With lookups from indexed files such as DB or DBM, or from
-#        networked  tables  such  as  NIS,  LDAP   or   SQL,   each
+#        networked   tables   such   as  NIS,  LDAP  or  SQL,  each
 #        user@domain query produces a sequence of query patterns as
 #        described below.
 # 
-#        Each query pattern is sent to each specified lookup  table
-#        before  trying  the  next  query pattern, until a match is
+#        Each  query pattern is sent to each specified lookup table
+#        before trying the next query pattern,  until  a  match  is
 #        found.
 # 
 #        user@domain address, address, ...
-#               Redirect mail for  user@domain  to  address.   This
+#               Redirect  mail  for  user@domain  to address.  This
 #               form has the highest precedence.
 # 
 #        user address, address, ...
 #               Redirect mail for user@site to address when site is
-#               equal to $myorigin, when site is listed in  $mydes-
-#               tination,  or when it is listed in $inet_interfaces
+#               equal  to $myorigin, when site is listed in $mydes-
+#               tination, or when it is listed in  $inet_interfaces
 #               or $proxy_interfaces.
 # 
-#               This functionality overlaps with the  functionality
+#               This  functionality overlaps with the functionality
 #               of the local aliases(5) database. The difference is
 #               that virtual(5) mapping can be applied to non-local
 #               addresses.
 #               Redirect mail for other users in domain to address.
 #               This form has the lowest precedence.
 # 
-#               Note: @domain is a wild-card. With this  form,  the
-#               Postfix  SMTP server accepts mail for any recipient
-#               in domain, regardless  of  whether  that  recipient
-#               exists.   This  may  turn  your  mail system into a
-#               backscatter source: Postfix first accepts mail  for
-#               non-existent  recipients  and  then tries to return
-#               that mail as "undeliverable" to  the  often  forged
+#               Note:  @domain  is a wild-card. With this form, the
+#               Postfix SMTP server accepts mail for any  recipient
+#               in  domain,  regardless  of  whether that recipient
+#               exists.  This may turn  your  mail  system  into  a
+#               backscatter  source: Postfix first accepts mail for
+#               non-existent recipients and then  tries  to  return
+#               that  mail  as  "undeliverable" to the often forged
 #               sender address.
 # 
-#               To  avoid  backscatter  with  mail  for a wild-card
+#               To avoid backscatter  with  mail  for  a  wild-card
 #               domain, replace the wild-card mapping with explicit
-#               1:1  mappings, or add a reject_unverified_recipient
+#               1:1 mappings, or add a  reject_unverified_recipient
 #               restriction for that domain:
 # 
 #                   smtpd_recipient_restrictions =
 #                           inline:{example.com=reject_unverified_recipient}
 #                   unverified_recipient_reject_code = 550
 # 
-#               In the above example, Postfix may contact a  remote
-#               server  if  the  recipient  is  aliased to a remote
+#               In  the above example, Postfix may contact a remote
+#               server if the recipient  is  aliased  to  a  remote
 #               address.
 # 
 # RESULT ADDRESS REWRITING
 #        The lookup result is subject to address rewriting:
 # 
-#        o      When the result  has  the  form  @otherdomain,  the
-#               result  becomes the same user in otherdomain.  This
+#        o      When  the  result  has  the  form @otherdomain, the
+#               result becomes the same user in otherdomain.   This
 #               works only for the first address in a multi-address
 #               lookup result.
 # 
-#        o      When  "append_at_myorigin=yes", append "@$myorigin"
+#        o      When "append_at_myorigin=yes", append  "@$myorigin"
 #               to addresses without "@domain".
 # 
 #        o      When "append_dot_mydomain=yes", append ".$mydomain"
 # 
 # ADDRESS EXTENSION
 #        When a mail address localpart contains the optional recip-
-#        ient delimiter (e.g., user+foo@domain), the  lookup  order
+#        ient  delimiter  (e.g., user+foo@domain), the lookup order
 #        becomes: user+foo@domain, user@domain, user+foo, user, and
 #        @domain.
 # 
-#        The  propagate_unmatched_extensions   parameter   controls
-#        whether  an  unmatched  address extension (+foo) is propa-
+#        The   propagate_unmatched_extensions   parameter  controls
+#        whether an unmatched address extension  (+foo)  is  propa-
 #        gated to the result of a table lookup.
 # 
 # VIRTUAL ALIAS DOMAINS
-#        Besides virtual aliases, the virtual alias table can  also
+#        Besides  virtual aliases, the virtual alias table can also
 #        be used to implement virtual alias domains. With a virtual
-#        alias domain,  all  recipient  addresses  are  aliased  to
+#        alias  domain,  all  recipient  addresses  are  aliased to
 #        addresses in other domains.
 # 
 #        Virtual alias domains are not to be confused with the vir-
 #        tual mailbox domains that are implemented with the Postfix
 #        virtual(8)  mail  delivery  agent.  With  virtual  mailbox
-#        domains, each recipient address can have its own  mailbox.
+#        domains,  each recipient address can have its own mailbox.
 # 
-#        With  a  virtual  alias domain, the virtual domain has its
-#        own user name space. Local  (i.e.  non-virtual)  usernames
-#        are  not visible in a virtual alias domain. In particular,
-#        local aliases(5) and local mailing lists are  not  visible
+#        With a virtual alias domain, the virtual  domain  has  its
+#        own  user  name  space. Local (i.e. non-virtual) usernames
+#        are not visible in a virtual alias domain. In  particular,
+#        local  aliases(5)  and local mailing lists are not visible
 #        as localname@virtual-alias.domain.
 # 
 #        Support for a virtual alias domain looks like:
 #            virtual_alias_maps = hash:/etc/postfix/virtual
 # 
 #        Note: some systems use dbm databases instead of hash.  See
-#        the output  from  "postconf  -m"  for  available  database
+#        the  output  from  "postconf  -m"  for  available database
 #        types.
 # 
 #        /etc/postfix/virtual:
 #            user1@virtual-alias.domain      address1
 #            user2@virtual-alias.domain      address2, address3
 # 
-#        The  virtual-alias.domain anything entry is required for a
+#        The virtual-alias.domain anything entry is required for  a
 #        virtual alias domain. Without this entry, mail is rejected
-#        with  "relay  access  denied", or bounces with "mail loops
+#        with "relay access denied", or bounces  with  "mail  loops
 #        back to myself".
 # 
-#        Do not specify virtual alias domain names in  the  main.cf
+#        Do  not  specify virtual alias domain names in the main.cf
 #        mydestination or relay_domains configuration parameters.
 # 
-#        With  a  virtual  alias  domain,  the  Postfix SMTP server
-#        accepts  mail  for  known-user@virtual-alias.domain,   and
-#        rejects   mail  for  unknown-user@virtual-alias.domain  as
+#        With a virtual  alias  domain,  the  Postfix  SMTP  server
+#        accepts   mail  for  known-user@virtual-alias.domain,  and
+#        rejects  mail  for  unknown-user@virtual-alias.domain   as
 #        undeliverable.
 # 
-#        Instead of specifying the virtual alias  domain  name  via
-#        the  virtual_alias_maps table, you may also specify it via
+#        Instead  of  specifying  the virtual alias domain name via
+#        the virtual_alias_maps table, you may also specify it  via
 #        the main.cf virtual_alias_domains configuration parameter.
-#        This  latter parameter uses the same syntax as the main.cf
+#        This latter parameter uses the same syntax as the  main.cf
 #        mydestination configuration parameter.
 # 
 # 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 address being looked up. Thus, user@domain mail
-#        addresses  are  not  broken up into their user and @domain
+#        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.
 # 
-#        Results  are  the  same as with indexed file lookups, with
-#        the additional feature that parenthesized substrings  from
+#        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.
 # 
 # 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  available  in  Postfix  2.5  and
+#        ble(5).   This  feature  is  available  in Postfix 2.5 and
 #        later.
 # 
 #        Each lookup operation uses the entire address once.  Thus,
-#        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.
 # 
 #        Results are the same as with indexed file lookups.
 # 
 # BUGS
-#        The table format does not understand quoting  conventions.
+#        The  table format does not understand quoting conventions.
 # 
 # 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"
+#        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.
 # 
 #        virtual_alias_maps ($virtual_maps)
-#               Optional lookup tables  that  alias  specific  mail
-#               addresses  or  domains  to  other  local  or remote
+#               Optional  lookup  tables  that  alias specific mail
+#               addresses or  domains  to  other  local  or  remote
 #               addresses.
 # 
 #        virtual_alias_domains ($virtual_alias_maps)
-#               Postfix is the final destination for the  specified
+#               Postfix  is the final destination for the specified
 #               list of virtual alias domains, that is, domains for
-#               which all addresses are  aliased  to  addresses  in
+#               which  all  addresses  are  aliased to addresses in
 #               other local or remote domains.
 # 
 #        propagate_unmatched_extensions (canonical, virtual)
-#               What  address  lookup tables copy an address exten-
+#               What address lookup tables copy an  address  exten-
 #               sion from the lookup key to the lookup result.
 # 
 #        Other parameters of interest:
 # 
 #        mydestination  ($myhostname,  localhost.$mydomain,  local-
 #        host)
-#               The  list  of  domains  that  are delivered via the
+#               The list of domains  that  are  delivered  via  the
 #               $local_transport mail delivery transport.
 # 
 #        myorigin ($myhostname)
 #               The domain name that locally-posted mail appears to
-#               come  from,  and that locally posted mail is deliv-
+#               come from, and that locally posted mail  is  deliv-
 #               ered to.
 # 
 #        owner_request_special (yes)
 #               Enable special treatment for owner-listname entries
 #               in the aliases(5) file, and don't split owner-list-
-#               name and listname-request address  localparts  when
+#               name  and  listname-request address localparts when
 #               the recipient_delimiter is set to "-".
 # 
 #        proxy_interfaces (empty)
 #               The network interface addresses that this mail sys-
-#               tem receives mail on by way of a proxy  or  network
+#               tem  receives  mail on by way of a proxy or network
 #               address translation unit.
 # 
 # SEE ALSO
 #        canonical(5), canonical address mapping
 # 
 # README FILES
-#        Use  "postconf  readme_directory" or "postconf html_direc-
+#        Use "postconf readme_directory" or  "postconf  html_direc-
 #        tory" to locate this information.
 #        ADDRESS_REWRITING_README, address rewriting guide
 #        DATABASE_README, Postfix lookup table overview
 #        VIRTUAL_README, domain hosting guide
 # 
 # LICENSE
-#        The Secure Mailer license must be  distributed  with  this
+#        The  Secure  Mailer  license must be distributed with this
 #        software.
 # 
 # AUTHOR(S)
index 27b1392853be6091e6ff27359c0a4efce61096aa..590b35714c26f064510aeae7bdbc1047cda5cf18 100644 (file)
@@ -20,95 +20,98 @@ VIRTUAL(5)                                                          VIRTUAL(5)
        The  optional  <a href="virtual.5.html"><b>virtual</b>(5)</a>  alias table rewrites recipient addresses for
        all local, all virtual, and all  remote  mail  destinations.   This  is
        unlike  the  <a href="aliases.5.html"><b>aliases</b>(5)</a> table which is used only for <a href="local.8.html"><b>local</b>(8)</a> delivery.
-       Virtual aliasing is  recursive,  and  is  implemented  by  the  Postfix
-       <a href="cleanup.8.html"><b>cleanup</b>(8)</a> daemon before mail is queued.
+       This feature is implemented in the  Postfix  <a href="cleanup.8.html"><b>cleanup</b>(8)</a>  daemon  before
+       mail is queued.
+
+       Virtual  aliasing  is  recursive; to terminate recursion for a specific
+       address, alias that address to itself.
 
        The main applications of virtual aliasing are:
 
        <b>o</b>      To redirect mail for one address to one or more addresses.
 
-       <b>o</b>      To  implement  virtual  alias  domains  where  all addresses are
+       <b>o</b>      To implement virtual  alias  domains  where  all  addresses  are
               aliased to addresses in other domains.
 
-              Virtual alias domains are not to be confused  with  the  virtual
+              Virtual  alias  domains  are not to be confused with the virtual
               mailbox domains that are implemented with the Postfix <a href="virtual.8.html"><b>virtual</b>(8)</a>
-              mail delivery agent. With <a href="ADDRESS_CLASS_README.html#virtual_mailbox_class">virtual mailbox domains</a>, each  recipi-
+              mail  delivery agent. With <a href="ADDRESS_CLASS_README.html#virtual_mailbox_class">virtual mailbox domains</a>, each recipi-
               ent address can have its own mailbox.
 
-       Virtual  aliasing  is applied only to recipient envelope addresses, and
-       does not affect message headers.  Use <a href="canonical.5.html"><b>canonical</b>(5)</a> mapping  to  rewrite
+       Virtual aliasing is applied only to recipient envelope  addresses,  and
+       does  not  affect message headers.  Use <a href="canonical.5.html"><b>canonical</b>(5)</a> mapping to rewrite
        header and envelope addresses in general.
 
-       Normally,  the  <a href="virtual.5.html"><b>virtual</b>(5)</a> alias table is specified as a text file that
+       Normally, the <a href="virtual.5.html"><b>virtual</b>(5)</a> alias table is specified as a text  file  that
        serves as input to the <a href="postmap.1.html"><b>postmap</b>(1)</a> command.  The result, an indexed file
-       in  <b>dbm</b>  or  <b>db</b>  format, is used for fast searching by the mail system.
+       in <b>dbm</b> or <b>db</b> format, is used for fast searching  by  the  mail  system.
        Execute  the  command  "<b>postmap  /etc/postfix/virtual</b>"  to  rebuild  an
        indexed file after changing the corresponding text file.
 
-       When  the  table  is provided via other means such as NIS, LDAP or SQL,
+       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 expressions, or lookups can be
-       directed to a TCP-based server. In those case, the lookups are done  in
-       a  slightly  different way as described below under "REGULAR EXPRESSION
+       Alternatively,  the  table  can be provided as a regular-expression map
+       where patterns are given as regular  expressions,  or  lookups  can  be
+       directed  to a TCP-based server. In those case, the lookups are done in
+       a slightly different way as described below under  "REGULAR  EXPRESSION
        TABLES" or "TCP-BASED TABLES".
 
 <b>CASE FOLDING</b>
-       The search string is folded to lowercase before database lookup. As  of
-       Postfix  2.3,  the search string is not case folded with database types
-       such as <a href="regexp_table.5.html">regexp</a>: or <a href="pcre_table.5.html">pcre</a>: whose lookup fields can match both  upper  and
+       The  search string is folded to lowercase before database lookup. As of
+       Postfix 2.3, the search string is not case folded with  database  types
+       such  as  <a href="regexp_table.5.html">regexp</a>: or <a href="pcre_table.5.html">pcre</a>: whose lookup fields can match both upper and
        lower case.
 
 <b>TABLE FORMAT</b>
        The input format for the <a href="postmap.1.html"><b>postmap</b>(1)</a> command is as follows:
 
        <i>pattern address, address, ...</i>
-              When  <i>pattern</i>  matches  a mail address, replace it by the corre-
+              When <i>pattern</i> matches a mail address, replace it  by  the  corre-
               sponding <i>address</i>.
 
        blank lines and comments
-              Empty lines and whitespace-only lines are ignored, as are  lines
+              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
+              A logical line starts with  non-whitespace  text.  A  line  that
               starts with whitespace continues a logical line.
 
 <b>TABLE SEARCH ORDER</b>
-       With lookups from indexed files such as DB or DBM,  or  from  networked
-       tables  such  as  NIS,  LDAP  or SQL, each <i>user</i>@<i>domain</i> query produces a
+       With  lookups  from  indexed files such as DB or DBM, or from networked
+       tables such as NIS, LDAP or SQL,  each  <i>user</i>@<i>domain</i>  query  produces  a
        sequence of query patterns as described below.
 
        Each query pattern is sent to each specified lookup table before trying
        the next query pattern, until a match is found.
 
        <i>user</i>@<i>domain address, address, ...</i>
-              Redirect  mail  for  <i>user</i>@<i>domain</i>  to <i>address</i>.  This form has the
+              Redirect mail for <i>user</i>@<i>domain</i> to <i>address</i>.   This  form  has  the
               highest precedence.
 
        <i>user address, address, ...</i>
-              Redirect mail for <i>user</i>@<i>site</i> to <i>address</i> when  <i>site</i>  is  equal  to
-              $<b><a href="postconf.5.html#myorigin">myorigin</a></b>,  when <i>site</i> is listed in $<b><a href="postconf.5.html#mydestination">mydestination</a></b>, or when it is
+              Redirect  mail  for  <i>user</i>@<i>site</i>  to <i>address</i> when <i>site</i> is equal to
+              $<b><a href="postconf.5.html#myorigin">myorigin</a></b>, when <i>site</i> is listed in $<b><a href="postconf.5.html#mydestination">mydestination</a></b>, or when it  is
               listed in $<b><a href="postconf.5.html#inet_interfaces">inet_interfaces</a></b> or $<b><a href="postconf.5.html#proxy_interfaces">proxy_interfaces</a></b>.
 
-              This functionality overlaps with the functionality of the  local
-              <i>aliases</i>(5)  database.  The difference is that <a href="virtual.5.html"><b>virtual</b>(5)</a> mapping
+              This  functionality overlaps with the functionality of the local
+              <i>aliases</i>(5) database. The difference is that  <a href="virtual.5.html"><b>virtual</b>(5)</a>  mapping
               can be applied to non-local addresses.
 
        @<i>domain address, address, ...</i>
-              Redirect mail for other users in <i>domain</i> to <i>address</i>.   This  form
+              Redirect  mail  for other users in <i>domain</i> to <i>address</i>.  This form
               has the lowest precedence.
 
-              Note:  @<i>domain</i>  is a wild-card. With this form, the Postfix SMTP
-              server accepts mail for any recipient in <i>domain</i>,  regardless  of
-              whether  that  recipient exists.  This may turn your mail system
-              into a  backscatter  source:  Postfix  first  accepts  mail  for
-              non-existent  recipients  and  then tries to return that mail as
+              Note: @<i>domain</i> is a wild-card. With this form, the  Postfix  SMTP
+              server  accepts  mail for any recipient in <i>domain</i>, regardless of
+              whether that recipient exists.  This may turn your  mail  system
+              into  a  backscatter  source:  Postfix  first  accepts  mail for
+              non-existent recipients and then tries to return  that  mail  as
               "undeliverable" to the often forged sender address.
 
-              To avoid backscatter with mail for a wild-card  domain,  replace
-              the  wild-card  mapping  with  explicit  1:1  mappings, or add a
+              To  avoid  backscatter with mail for a wild-card domain, replace
+              the wild-card mapping with  explicit  1:1  mappings,  or  add  a
               <a href="postconf.5.html#reject_unverified_recipient">reject_unverified_recipient</a> restriction for that domain:
 
                   <a href="postconf.5.html#smtpd_recipient_restrictions">smtpd_recipient_restrictions</a> =
@@ -124,11 +127,11 @@ VIRTUAL(5)                                                          VIRTUAL(5)
 <b>RESULT ADDRESS REWRITING</b>
        The lookup result is subject to address rewriting:
 
-       <b>o</b>      When  the  result  has the form @<i>otherdomain</i>, the result becomes
-              the same <i>user</i> in <i>otherdomain</i>.  This works  only  for  the  first
+       <b>o</b>      When the result has the form @<i>otherdomain</i>,  the  result  becomes
+              the  same  <i>user</i>  in  <i>otherdomain</i>.  This works only for the first
               address in a multi-address lookup result.
 
-       <b>o</b>      When  "<b><a href="postconf.5.html#append_at_myorigin">append_at_myorigin</a>=yes</b>", append "<b>@$<a href="postconf.5.html#myorigin">myorigin</a></b>" to addresses
+       <b>o</b>      When "<b><a href="postconf.5.html#append_at_myorigin">append_at_myorigin</a>=yes</b>", append "<b>@$<a href="postconf.5.html#myorigin">myorigin</a></b>" to  addresses
               without "@domain".
 
        <b>o</b>      When "<b><a href="postconf.5.html#append_dot_mydomain">append_dot_mydomain</a>=yes</b>", append "<b>.$<a href="postconf.5.html#mydomain">mydomain</a></b>" to addresses
@@ -136,26 +139,26 @@ VIRTUAL(5)                                                          VIRTUAL(5)
 
 <b>ADDRESS EXTENSION</b>
        When a mail address localpart contains the optional recipient delimiter
-       (e.g., <i>user+foo</i>@<i>domain</i>), the  lookup  order  becomes:  <i>user+foo</i>@<i>domain</i>,
+       (e.g.,  <i>user+foo</i>@<i>domain</i>),  the  lookup  order becomes: <i>user+foo</i>@<i>domain</i>,
        <i>user</i>@<i>domain</i>, <i>user+foo</i>, <i>user</i>, and @<i>domain</i>.
 
-       The   <b><a href="postconf.5.html#propagate_unmatched_extensions">propagate_unmatched_extensions</a></b>   parameter  controls  whether  an
+       The  <b><a href="postconf.5.html#propagate_unmatched_extensions">propagate_unmatched_extensions</a></b>  parameter  controls   whether   an
        unmatched address extension (<i>+foo</i>) is propagated to the result of a ta-
        ble lookup.
 
 <b>VIRTUAL ALIAS DOMAINS</b>
-       Besides  virtual  aliases,  the virtual alias table can also be used to
-       implement <a href="ADDRESS_CLASS_README.html#virtual_alias_class">virtual alias domains</a>.  With  a  virtual  alias  domain,  all
+       Besides virtual aliases, the virtual alias table can also  be  used  to
+       implement  virtual  alias  domains.  With  a  <a href="ADDRESS_CLASS_README.html#virtual_alias_class">virtual alias domain</a>, all
        recipient addresses are aliased to addresses in other domains.
 
-       Virtual  alias  domains are not to be confused with the virtual mailbox
-       domains that are implemented with the Postfix <a href="virtual.8.html"><b>virtual</b>(8)</a> mail  delivery
-       agent.  With  virtual  mailbox domains, each recipient address can have
+       Virtual alias domains are not to be confused with the  virtual  mailbox
+       domains  that are implemented with the Postfix <a href="virtual.8.html"><b>virtual</b>(8)</a> mail delivery
+       agent. With <a href="ADDRESS_CLASS_README.html#virtual_mailbox_class">virtual mailbox domains</a>, each recipient  address  can  have
        its own mailbox.
 
-       With a <a href="ADDRESS_CLASS_README.html#virtual_alias_class">virtual alias domain</a>, the virtual domain has its own  user  name
-       space.  Local (i.e. non-virtual) usernames are not visible in a virtual
-       alias domain. In particular, local <a href="aliases.5.html"><b>aliases</b>(5)</a> and local  mailing  lists
+       With  a  <a href="ADDRESS_CLASS_README.html#virtual_alias_class">virtual alias domain</a>, the virtual domain has its own user name
+       space. Local (i.e. non-virtual) usernames are not visible in a  virtual
+       alias  domain.  In particular, local <a href="aliases.5.html"><b>aliases</b>(5)</a> and local mailing lists
        are not visible as <i>localname@virtual-alias.domain</i>.
 
        Support for a <a href="ADDRESS_CLASS_README.html#virtual_alias_class">virtual alias domain</a> looks like:
@@ -163,7 +166,7 @@ VIRTUAL(5)                                                          VIRTUAL(5)
        /etc/postfix/<a href="postconf.5.html">main.cf</a>:
            <a href="postconf.5.html#virtual_alias_maps">virtual_alias_maps</a> = <a href="DATABASE_README.html#types">hash</a>:/etc/postfix/virtual
 
-       Note:  some  systems use <b>dbm</b> databases instead of <b>hash</b>.  See the output
+       Note: some systems use <b>dbm</b> databases instead of <b>hash</b>.  See  the  output
        from "<b>postconf -m</b>" for available database types.
 
        /etc/postfix/virtual:
@@ -173,46 +176,46 @@ VIRTUAL(5)                                                          VIRTUAL(5)
            <i>user2@virtual-alias.domain      address2, address3</i>
 
        The <i>virtual-alias.domain anything</i> entry is required for a virtual alias
-       domain.  <b>Without  this  entry,  mail  is  rejected  with  "relay access</b>
+       domain. <b>Without  this  entry,  mail  is  rejected  with  "relay  access</b>
        <b>denied", or bounces with "mail loops back to myself".</b>
 
-       Do not specify <a href="ADDRESS_CLASS_README.html#virtual_alias_class">virtual alias domain</a> names in the <a href="postconf.5.html"><b>main.cf</a>  <a href="postconf.5.html#mydestination">mydestination</a></b>
+       Do  not specify <a href="ADDRESS_CLASS_README.html#virtual_alias_class">virtual alias domain</a> names in the <a href="postconf.5.html"><b>main.cf</a> <a href="postconf.5.html#mydestination">mydestination</a></b>
        or <b><a href="postconf.5.html#relay_domains">relay_domains</a></b> configuration parameters.
 
-       With  a  <a href="ADDRESS_CLASS_README.html#virtual_alias_class">virtual alias domain</a>, the Postfix SMTP server accepts mail for
+       With a <a href="ADDRESS_CLASS_README.html#virtual_alias_class">virtual alias domain</a>, the Postfix SMTP server accepts  mail  for
        <i>known-user@virtual-alias.domain</i>, and rejects mail for <i>unknown-user</i>@<i>vir-</i>
        <i>tual-alias.domain</i> as undeliverable.
 
-       Instead  of  specifying  the  virtual  alias  domain  name via the <b><a href="postconf.5.html#virtual_alias_maps">vir</a>-</b>
-       <b><a href="postconf.5.html#virtual_alias_maps">tual_alias_maps</a></b> table, you may also specify it  via  the  <a href="postconf.5.html"><b>main.cf</a>  <a href="postconf.5.html#virtual_alias_domains">vir-</b>
+       Instead of specifying the  virtual  alias  domain  name  via  the  <b><a href="postconf.5.html#virtual_alias_maps">vir</a>-</b>
+       <b><a href="postconf.5.html#virtual_alias_maps">tual_alias_maps</a></b>  table,  you  may  also specify it via the <a href="postconf.5.html"><b>main.cf</a> <a href="postconf.5.html#virtual_alias_domains">vir-</b>
        <b>tual_alias_domains</a></b> configuration parameter.  This latter parameter uses
        the same syntax as the <a href="postconf.5.html"><b>main.cf</a> <a href="postconf.5.html#mydestination">mydestination</a></b> configuration parameter.
 
 <b>REGULAR EXPRESSION TABLES</b>
-       This section describes how the table lookups change when the  table  is
-       given  in the form of regular expressions. For a description of regular
+       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 <a href="regexp_table.5.html"><b>regexp_table</b>(5)</a> or <a href="pcre_table.5.html"><b>pcre_table</b>(5)</a>.
 
-       Each pattern is a regular expression that  is  applied  to  the  entire
-       address  being looked up. Thus, <i>user@domain</i> mail addresses are not bro-
-       ken up into their <i>user</i> and <i>@domain</i> constituent parts, nor  is  <i>user+foo</i>
+       Each  pattern  is  a  regular  expression that is applied to the entire
+       address being looked up. Thus, <i>user@domain</i> mail addresses are not  bro-
+       ken  up  into their <i>user</i> and <i>@domain</i> constituent parts, nor is <i>user+foo</i>
        broken up into <i>user</i> and <i>foo</i>.
 
-       Patterns  are  applied  in the order as specified in the table, until a
+       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 interpo-
+       Results  are the same as with indexed file lookups, with the additional
+       feature that parenthesized substrings from the pattern can be  interpo-
        lated as <b>$1</b>, <b>$2</b> and so on.
 
 <b>TCP-BASED TABLES</b>
-       This section describes how the table lookups change  when  lookups  are
-       directed   to  a  TCP-based  server.  For  a  description  of  the  TCP
-       client/server lookup  protocol,  see  <a href="tcp_table.5.html"><b>tcp_table</b>(5)</a>.   This  feature  is
+       This  section  describes  how the table lookups change when lookups are
+       directed  to  a  TCP-based  server.  For  a  description  of  the   TCP
+       client/server  lookup  protocol,  see  <a href="tcp_table.5.html"><b>tcp_table</b>(5)</a>.   This  feature is
        available in Postfix 2.5 and later.
 
-       Each  lookup operation uses the entire address once.  Thus, <i>user@domain</i>
-       mail addresses are not broken up  into  their  <i>user</i>  and  <i>@domain</i>  con-
+       Each lookup operation uses the entire address once.  Thus,  <i>user@domain</i>
+       mail  addresses  are  not  broken  up  into their <i>user</i> and <i>@domain</i> con-
        stituent parts, nor is <i>user+foo</i> broken up into <i>user</i> and <i>foo</i>.
 
        Results are the same as with indexed file lookups.
@@ -226,40 +229,40 @@ VIRTUAL(5)                                                          VIRTUAL(5)
        Use the "<b>postfix reload</b>" command after a configuration change.
 
        <b><a href="postconf.5.html#virtual_alias_maps">virtual_alias_maps</a> ($<a href="postconf.5.html#virtual_maps">virtual_maps</a>)</b>
-              Optional  lookup  tables  that  alias specific mail addresses or
+              Optional lookup tables that alias  specific  mail  addresses  or
               domains to other local or remote addresses.
 
        <b><a href="postconf.5.html#virtual_alias_domains">virtual_alias_domains</a> ($<a href="postconf.5.html#virtual_alias_maps">virtual_alias_maps</a>)</b>
-              Postfix is the final destination for the specified list of  vir-
+              Postfix  is the final destination for the specified list of vir-
               tual alias domains, that is, domains for which all addresses are
               aliased to addresses in other local or remote domains.
 
        <b><a href="postconf.5.html#propagate_unmatched_extensions">propagate_unmatched_extensions</a> (canonical, virtual)</b>
-              What address lookup tables copy an address  extension  from  the
+              What  address  lookup  tables copy an address extension from the
               lookup key to the lookup result.
 
        Other parameters of interest:
 
        <b><a href="postconf.5.html#inet_interfaces">inet_interfaces</a> (all)</b>
-              The  network  interface addresses that this mail system receives
+              The network interface addresses that this mail  system  receives
               mail on.
 
        <b><a href="postconf.5.html#mydestination">mydestination</a> ($<a href="postconf.5.html#myhostname">myhostname</a>, localhost.$<a href="postconf.5.html#mydomain">mydomain</a>, localhost)</b>
-              The list of domains that are delivered via the  $<a href="postconf.5.html#local_transport">local_transport</a>
+              The  list of domains that are delivered via the $<a href="postconf.5.html#local_transport">local_transport</a>
               mail delivery transport.
 
        <b><a href="postconf.5.html#myorigin">myorigin</a> ($<a href="postconf.5.html#myhostname">myhostname</a>)</b>
-              The  domain  name that locally-posted mail appears to come from,
+              The domain name that locally-posted mail appears to  come  from,
               and that locally posted mail is delivered to.
 
        <b><a href="postconf.5.html#owner_request_special">owner_request_special</a> (yes)</b>
-              Enable special  treatment  for  owner-<i>listname</i>  entries  in  the
+              Enable  special  treatment  for  owner-<i>listname</i>  entries  in the
               <a href="aliases.5.html"><b>aliases</b>(5)</a>  file,  and  don't  split  owner-<i>listname</i>  and  <i>list-</i>
-              <i>name</i>-request address localparts when the <a href="postconf.5.html#recipient_delimiter">recipient_delimiter</a>  is
+              <i>name</i>-request  address localparts when the <a href="postconf.5.html#recipient_delimiter">recipient_delimiter</a> is
               set to "-".
 
        <b><a href="postconf.5.html#proxy_interfaces">proxy_interfaces</a> (empty)</b>
-              The  network  interface addresses that this mail system receives
+              The network interface addresses that this mail  system  receives
               mail on by way of a proxy or network address translation unit.
 
 <b>SEE ALSO</b>
index 702f060ef37ef8e95600c6d1b94275544b0f4c94..5a66c7f537b8fe40cb5b342b73e194ce3877a006 100644 (file)
@@ -20,9 +20,11 @@ The optional \fBvirtual\fR(5) alias table rewrites recipient
 addresses for all local, all virtual, and all remote mail
 destinations.
 This is unlike the \fBaliases\fR(5) table which is used
-only for \fBlocal\fR(8) delivery.  Virtual aliasing is
-recursive, and is implemented by the Postfix \fBcleanup\fR(8)
-daemon before mail is queued.
+only for \fBlocal\fR(8) delivery. This feature is implemented
+in the Postfix \fBcleanup\fR(8) daemon before mail is queued.
+
+Virtual aliasing is recursive; to terminate recursion for
+a specific address, alias that address to itself.
 
 The main applications of virtual aliasing are:
 .IP \(bu
index 11ddc4fbe21beb4323b7013cd546ff7c28f51a0f..c6d1d26b78ed951b76d2796db90a3fcffe1857d4 100755 (executable)
@@ -47,7 +47,7 @@ open(ALL_PARAM_NAMES, "$command|")
          || die "can't execute $command: !$\n";  
 while ($param_name = <ALL_PARAM_NAMES>) { 
     chomp($param_name);
-    next unless ($param_name =~ /_maps$/);
+    next unless ($param_name =~ /_(checks|delivery_status_filter|reply_filter|command_filter|maps)$/);
     next if ($param_name =~ /^(proxy_read|proxy_write)_maps$/);
     next if defined($proxy_read_maps{$param_name});
     die "unknown parameter: $param_name\n"
index 84edde41c7b3270951c0001a87c7ca736ba2f9bc..6e328817c229027deec88de9983a771726f51620 100644 (file)
 #      addresses for all local, all virtual, and all remote mail
 #      destinations.
 #      This is unlike the \fBaliases\fR(5) table which is used
-#      only for \fBlocal\fR(8) delivery.  Virtual aliasing is
-#      recursive, and is implemented by the Postfix \fBcleanup\fR(8)
-#      daemon before mail is queued.
+#      only for \fBlocal\fR(8) delivery. This feature is implemented
+#      in the Postfix \fBcleanup\fR(8) daemon before mail is queued.
+#
+#      Virtual aliasing is recursive; to terminate recursion for
+#      a specific address, alias that address to itself.
 #
 #      The main applications of virtual aliasing are:
 # .IP \(bu
index 01cce33ce7045ed44572738eba686dc28266fec9..e728006e3948c0c84683fe0465a7a12cd703cca2 100644 (file)
@@ -2502,7 +2502,33 @@ extern int var_local_rcpt_code;
                                " $" VAR_PSC_REJ_FTR_MAPS \
                                " $" VAR_SMTPD_REJ_FTR_MAPS \
                                " $" VAR_TLS_SERVER_SNI_MAPS \
-                               " $" VAR_TLSP_CLNT_POLICY
+                               " $" VAR_TLSP_CLNT_POLICY \
+                               " $" VAR_DSN_FILTER \
+                               " $" VAR_LMTP_DSN_FILTER \
+                               " $" VAR_LMTP_DNS_RE_FILTER \
+                               " $" VAR_LMTP_RESP_FILTER \
+                               " $" VAR_LOCAL_DSN_FILTER \
+                               " $" VAR_PIPE_DSN_FILTER \
+                               " $" VAR_PSC_CMD_FILTER \
+                               " $" VAR_SMTP_DSN_FILTER \
+                               " $" VAR_SMTP_DNS_RE_FILTER \
+                               " $" VAR_SMTP_RESP_FILTER \
+                               " $" VAR_SMTPD_CMD_FILTER \
+                               " $" VAR_SMTPD_DNS_RE_FILTER \
+                               " $" VAR_VIRT_DSN_FILTER \
+                               " $" VAR_BODY_CHECKS \
+                               " $" VAR_HEADER_CHECKS \
+                               " $" VAR_LMTP_BODY_CHKS \
+                               " $" VAR_LMTP_HEAD_CHKS \
+                               " $" VAR_LMTP_MIME_CHKS \
+                               " $" VAR_LMTP_NEST_CHKS \
+                               " $" VAR_MILT_HEAD_CHECKS \
+                               " $" VAR_MIMEHDR_CHECKS \
+                               " $" VAR_NESTHDR_CHECKS \
+                               " $" VAR_SMTP_BODY_CHKS \
+                               " $" VAR_SMTP_HEAD_CHKS \
+                               " $" VAR_SMTP_MIME_CHKS \
+                               " $" VAR_SMTP_NEST_CHKS
 extern char *var_proxy_read_maps;
 
 #define VAR_PROXY_WRITE_MAPS   "proxy_write_maps"
index 2542fa37ed207fffa5999106517d9287dc22a9ff..b27d33690e9f817419fd87296c9ee782a28e9d33 100644 (file)
@@ -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      "20220220"
+#define MAIL_RELEASE_DATE      "20220325"
 #define MAIL_VERSION_NUMBER    "3.8"
 
 #ifdef SNAPSHOT
index 5d53860f17d57e3f1fa52b47389dad0f8cc667aa..cb17601c571161d7668fd81f76ffd16d2c1aeb61 100644 (file)
@@ -463,6 +463,7 @@ int     dict_load_file_xt(const char *dict_name, const char *path)
        if (msg_verbose > 1)
            msg_info("pausing to let %s cool down", path);
        doze(300000);
+       dict_unregister(dict_name);
     }
     return (1);
 }
index b56d176acf625459c5b4a8887b9fe341b5791f74..b4d7b304b7ea756d321233d8b0795ea6f2f482cc 100644 (file)
 /*     strings, avoiding an unnecessary strlen() call.
 /*
 /*     To thwart collision attacks, the hash function is seeded
-/*     once from /dev/urandom, and if that is unavailable, from
-/*     wallclock time, monotonic system clocks, and the process
-/*     ID. To disable seeding (typically, for regression tests),
-/*     specify the NORANDOMIZE environment variable; the value
-/*     does not matter.
+/*     once with ldseed(). To disable seeding (typically, to make
+/*     tests predictable), specify the NORANDOMIZE environment
+/*     variable; the value does not matter.
 /*
-/*     This function implements a workaround for a "sticky state"
-/*     problem with FNV hash functions: when an input produces a
-/*     zero hash state, and the next input byte is zero, then the
-/*     hash state would not change. To avoid this, hash_fnv() adds
-/*     1 to each input value. Compile with -DSTRICT_FNV1A to get
-/*     the standard behavior.
+/*     This implementation works around a "sticky state" problem
+/*     with FNV hash functions: when an input produces a zero hash
+/*     state, and the next input byte is zero, then the hash state
+/*     would not change. To avoid this, hash_fnv() adds 1 to each
+/*     input value. Compile with -DSTRICT_FNV1A to get the standard
+/*     behavior.
 /*
 /*     The default HASH_FNV_T result type is uint64_t. When compiled
 /*     with -DUSE_FNV_32BIT, the result type is uint32_t. On ancient