CANONICAL(5)                                         CANONICAL(5)

NAME
       canonical - Postfix canonical table format

SYNOPSIS
       postmap /etc/postfix/canonical

       postmap -q "string" /etc/postfix/canonical

       postmap -q - /etc/postfix/canonical <inputfile

DESCRIPTION
       The  optional canonical(5) table specifies an address map-
       ping for local and non-local  addresses.  The  mapping  is
       used  by the cleanup(8) daemon, before mail is stored into
       the queue.  The address mapping is recursive.

       Normally, the canonical(5) 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/canonical" in order to  rebuild  the
       indexed file after changing the text file.

       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,  or lookups can be directed to TCP-based server. In
       that case, the lookups are done in  a  slightly  different
       way  as  described below under "REGULAR EXPRESSION TABLES"
       and "TCP-BASED TABLES".

       By default the canonical(5) mapping affects  both  message
       header  addresses  (i.e. addresses that appear inside mes-
       sages) and message envelope addresses  (for  example,  the
       addresses  that are used in SMTP protocol commands). Think
       Sendmail rule set S3, if you  like.   This  is  controlled
       with the canonical_classes parameter.

       Typically, one would use the canonical(5) table to replace
       login  names  by  Firstname.Lastname,  or  to   clean   up
       addresses produced by legacy mail systems.

       The  canonical(5)  mapping is not to be confused with vir-
       tual domain support. Use the virtual(5) map for that  pur-
       pose.

       The  canonical(5) mapping is not to be confused with local
       aliasing.  Use the aliases(5) map for that purpose.

TABLE FORMAT
       The input format for the postmap(1) command is as follows:

       pattern result
              When  pattern matches a mail address, replace it by
              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.

TABLE SEARCH ORDER
       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@domain address
              Replace user@domain by address. This form  has  the
              highest precedence.

              This  is  useful  to clean up addresses produced by
              legacy mail systems.  It can also be used  to  pro-
              duce  Firstname.Lastname  style  addresses, but see
              below for a simpler solution.

       user address
              Replace user@site by address when site is equal  to
              $myorigin,  when  site is listed in $mydestination,
              or  when  it  is  listed  in  $inet_interfaces   or
              $proxy_interfaces.

              This  form  is  useful for replacing login names by
              Firstname.Lastname.

       @domain address
              Replace other addresses in domain by address.  This
              form has the lowest precedence.

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.

       o      When "append_at_myorigin=yes", append  "@$myorigin"
              to addresses without "@domain".

       o      When "append_dot_mydomain=yes", append ".$mydomain"
              to addresses without ".domain".

ADDRESS EXTENSION
       When a mail address localpart contains the optional recip-
       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-
       gated to the result of table lookup.

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 address being looked up. Thus, 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
       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.

TCP-BASED TABLES
       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_table(5).   This  feature  is  not available up to and
       including Postfix version 2.2.

       Each lookup operation uses the entire address once.  Thus,
       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.

CONFIGURATION PARAMETERS
       The following main.cf parameters are especially  relevant.
       The  text  below  provides  only  a parameter summary. See
       postconf(5) for more details including examples.

       canonical_classes
              What addresses are  subject  to  canonical  address
              mapping.

       canonical_maps
              List of canonical mapping tables.

       recipient_canonical_maps
              Address  mapping  lookup  table  for  envelope  and
              header recipient addresses.

       sender_canonical_maps
              Address  mapping  lookup  table  for  envelope  and
              header sender addresses.

       propagate_unmatched_extensions
              A  list  of  address rewriting or forwarding mecha-
              nisms that propagate an address extension from  the
              original  address  to  the result.  Specify zero or
              more  of  canonical,   virtual,   alias,   forward,
              include, or generic.

       Other parameters of interest:

       inet_interfaces
              The  network  interface  addresses that this system
              receives mail on.  You need to stop and start Post-
              fix when this parameter changes.

       proxy_interfaces
              Other interfaces that this machine receives mail on
              by way of a proxy agent or network address transla-
              tor.

       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.

       masquerade_exceptions
              List of user names that are not subject to  address
              masquerading.

       mydestination
              List  of  domains  that  this mail system considers
              local.

       myorigin
              The domain that is appended to locally-posted mail.

       owner_request_special
              Give special treatment to owner-xxx and xxx-request
              addresses.

SEE ALSO
       cleanup(8), canonicalize and enqueue mail
       postmap(1), Postfix lookup table manager
       postconf(5), configuration parameters
       virtual(5), virtual aliasing

README FILES
       DATABASE_README, Postfix lookup table overview
       ADDRESS_REWRITING_README, address rewriting guide

LICENSE
       The  Secure  Mailer  license must be distributed with this
       software.

AUTHOR(S)
       Wietse Venema
       IBM T.J. Watson Research
       P.O. Box 704
       Yorktown Heights, NY 10598, USA

                                                     CANONICAL(5)