CANONICAL(5)                                         CANONICAL(5)

NAME
       canonical - format of Postfix canonical table

SYNOPSIS
       postmap /usr/local/etc/postfix/canonical

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

       postmap -q - /usr/local/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 /usr/local/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  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 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 or
              $proxy_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.

       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  in  Postfix
       version 2.1.

       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, or
              include.

       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)