    CANONICAL(5)                                         CANONICAL(5)

    NAME
           canonical - format of Postfix canonical table

    SYNOPSIS
           postmap /etc/postfix/canonical

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

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

    DESCRIPTION
           The  optional canonical table specifies an address mapping
           for local and non-local addresses. The mapping is used  by
           the  cleanup(8) daemon.  The address mapping is recursive.

           Normally, the canonical 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.  In  that  case, the lookups are done in a slightly
           different way as described below.

           The  canonical  mapping  affects   both   message   header
           addresses (i.e. addresses that appear inside messages) and
           message envelope addresses  (for  example,  the  addresses
           that  are  used in SMTP protocol commands). Think Sendmail
           rule set S3, if you like.

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

           The canonical mapping is not to be confused  with  virtual
           domain support. Use the virtual(5) map for that purpose.

           The  canonical  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.

           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
                  user@domain is replaced 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
                  user@site is replaced by address when site is equal
                  to  $myorigin,  when  site is listed in $mydestina-
                  tion, or when it is listed in $inet_interfaces.

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

           @domain address
                  Every  address  in  domain  is replaced by address.
                  This form has the lowest precedence.

           In all the above forms, when address has the form  @other-
           domain, the result is the same user in otherdomain.

    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.  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.

    BUGS
           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
           command after a configuration change.

           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.

           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.

           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) create mapping table
           virtual(5) virtual domain mapping
           pcre_table(5) format of PCRE tables
           regexp_table(5) format of POSIX regular expression tables

    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)