# phpman > man > transport(5)

[TRANSPORT(5)](https://www.chedong.com/phpMan.php/man/TRANSPORT/5/markdown)                             File Formats Manual                            [TRANSPORT(5)](https://www.chedong.com/phpMan.php/man/TRANSPORT/5/markdown)



## NAME
       transport - Postfix transport table format

## SYNOPSIS
### postmap /etc/postfix/transport

       **postmap** **-q** **"**_string_**"** **/etc/postfix/transport**

       **postmap** **-q** **-** **/etc/postfix/transport** **<**_inputfile_

## DESCRIPTION
       The  optional [**transport**(5)](https://www.chedong.com/phpMan.php/man/transport/5/markdown) table specifies a mapping from email addresses to message delivery
       transports and next-hop destinations.  Message delivery transports such as **local** or **smtp**  are
       defined in the **master.cf** file, and next-hop destinations are typically hosts or domain names.
       The table is searched by the [**trivial-rewrite**(8)](https://www.chedong.com/phpMan.php/man/trivial-rewrite/8/markdown) daemon.

       This mapping overrides the default _transport_:_nexthop_ selection that is built into Postfix:

       **local**___**transport** **(default:** **local:$myhostname)**
              This is the default for final delivery to domains listed with **mydestination**,  and  for
              [_ipaddress_] destinations that match **$inet**___**interfaces** or **$proxy**___**interfaces**. The default
              _nexthop_ destination is the MTA hostname.

       **virtual**___**transport** **(default:** **virtual:)**
              This is the default for final delivery to domains listed with **virtual**___**mailbox**___**domains**.
              The default _nexthop_ destination is the recipient domain.

       **relay**___**transport** **(default:** **relay:)**
              This is the default for remote delivery to domains listed with **relay**___**domains**. In order
              of decreasing precedence, the  _nexthop_  destination  is  taken  from  **relay**___**transport**,
              **sender**___**dependent**___**relayhost**___**maps**, **relayhost**, or from the recipient domain.

       **default**___**transport** **(default:** **smtp:)**
              This is the default for remote delivery to other destinations.  In order of decreasing
              precedence, the _nexthop_  destination  is  taken  from  **sender**___**dependent**___**default**___**trans**‐‐
              **port**___**maps,**  **default**___**transport**, **sender**___**dependent**___**relayhost**___**maps**, **relayhost**, or from the
              recipient domain.

       Normally, the [**transport**(5)](https://www.chedong.com/phpMan.php/man/transport/5/markdown) table is specified as a text file that  serves  as  input  to  the
       [**postmap**(1)](https://www.chedong.com/phpMan.php/man/postmap/1/markdown)  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**" to rebuild
       an indexed file after changing the corresponding 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  expressions,  or lookups can be directed to TCP-based server. In those case, the
       lookups are done in a slightly different way as described below under "REGULAR EXPRESSION TA‐
       BLES" 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  lookup
       fields can match both upper and lower case.

## TABLE FORMAT
       The input format for the [**postmap**(1)](https://www.chedong.com/phpMan.php/man/postmap/1/markdown) command is as follows:

       _pattern_ _result_
              When _pattern_ matches the recipient address or domain, use the corresponding _result_.

       blank lines and comments
              Empty lines and whitespace-only lines are ignored, as are lines whose first non-white‐
              space character is a `#'.

       multi-line text
              A logical line starts with non-whitespace text. A line  that  starts  with  whitespace
              continues a logical line.

       The  _pattern_  specifies  an  email address, a domain name, or a domain name hierarchy, as de‐
       scribed in section "TABLE SEARCH ORDER".

       The _result_ is of the form _transport:nexthop_ and specifies how or where to deliver mail.  This
       is described in section "RESULT FORMAT".

## 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+extension@domain_ _transport_:_nexthop_
              Deliver mail for _user+extension@domain_ through _transport_ to _nexthop_.

       _user@domain_ _transport_:_nexthop_
              Deliver mail for _user@domain_ through _transport_ to _nexthop_.

       _domain_ _transport_:_nexthop_
              Deliver mail for _domain_ through _transport_ to _nexthop_.

       _.domain_ _transport_:_nexthop_
              Deliver mail for any subdomain of _domain_ through _transport_ to  _nexthop_.  This  applies
              only  when the string **transport**___**maps** is not listed in the **parent**___**domain**___**matches**___**subdo**‐‐
              **mains** configuration setting.  Otherwise, a domain name matches itself and  its  subdo‐
              mains.

       ***** _transport_:_nexthop_
              The  special pattern ***** represents any address (i.e. it functions as the wild-card pat‐
              tern, and is unique to Postfix transport tables).

       Note 1: the null recipient address is looked up as **$empty**___**address**___**recipient**@**$myhostname**  (de‐
       fault: mailer-daemon@hostname).

       Note 2: _user@domain_ or _user+extension@domain_ lookup is available in Postfix 2.0 and later.

## RESULT FORMAT
       The lookup result is of the form _transport_**:**_nexthop_.  The _transport_ field specifies a mail de‐
       livery transport such as **smtp** or **local**. The _nexthop_ field specifies where and how to  deliver
       mail.

       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 nexthop field usually specifies one recipient domain or hostname.  In  the  case  of  the
       Postfix  SMTP/LMTP client, the nexthop field may contain a list of nexthop destinations sepa‐
       rated by comma or whitespace (Postfix 3.5 and later).

       The syntax of a nexthop destination is transport dependent.  With SMTP, specify a service  on
       a  non-default  port as _host_:_service_, and disable MX (mail exchanger) DNS lookups with [_host_]
       or [_host_]:_port_. The [] form is required when you specify an IP address instead of a hostname.

       A null _transport_ and null _nexthop_ field means "do not change": use the delivery transport and
       nexthop information 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 transport 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 **example.com** and its subdomains via the **uucp** transport to  the  UUCP
       host named **example**:

            **example.com**      **uucp:example**
            **.example.com**     **uucp:example**

       When  no nexthop host name is specified, the destination domain name is used instead. For ex‐
       ample, the following directs mail for _user_@**example.com** via the **slow** transport to a  mail  ex‐
       changer  for **example.com**.  The **slow** transport could be configured to run at most one delivery
       process at a time:

            **example.com**      **slow:**

       When no transport is specified, Postfix uses the transport that matches  the  address  domain
       class  (see  DESCRIPTION above).  The following sends all mail for **example.com** and its subdo‐
       mains to host **gateway.example.com**:

            **example.com**      **:[gateway.example.com]**
            **.example.com**     **:[gateway.example.com]**

       In the above example, the [] suppress MX lookups.  This prevents mail routing loops when your
       machine is primary MX host for **example.com**.

       In  the  case  of  delivery  via SMTP or LMTP, one may specify _host_:_service_ instead of just a
       host:

            **example.com**      **smtp:bar.example:2025**

       This directs mail for _user_@**example.com** to host **bar.example** port **2025**. Instead of a  numerical
       port  a  symbolic name may be used. Specify [] around the hostname if MX lookups must be dis‐
       abled.

       Deliveries via SMTP or LMTP support multiple destinations (Postfix >= 3.5):

            **example.com**      **smtp:bar.example,** **foo.example**

       This tries to deliver to **bar.example** before trying to deliver to **foo.example**.

       The error mailer can be used to bounce mail:

            **.example.com**     **error:mail** **for** ***.example.com** **is** **not** **deliverable**

       This causes all mail for _user_@_anything_**.example.com** 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 **reg**‐‐
       **exp**___**[table**(5)](https://www.chedong.com/phpMan.php/man/table/5/markdown) or **pcre**___**[table**(5)](https://www.chedong.com/phpMan.php/man/table/5/markdown).

       Each pattern is a regular expression that is applied to the entire address being  looked  up.
       Thus,  _some.domain.hierarchy_  is not looked up via its parent domains, nor is _user+foo@domain_
       looked up as _user@domain_.

       Patterns are applied in the order as specified in the table, until a pattern  is  found  that
       matches the search string.

       The [**trivial-rewrite**(8)](https://www.chedong.com/phpMan.php/man/trivial-rewrite/8/markdown) server disallows regular expression substitution of $1 etc. in regular
       expression lookup tables, because that could open a security hole (Postfix  version  2.3  and
       later).

## TCP-BASED TABLES
       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  **tcp**___**[table**(5)](https://www.chedong.com/phpMan.php/man/table/5/markdown).   This
       feature is not available up to and including Postfix version 2.4.

       Each lookup operation uses the entire recipient address once.  Thus, _some.domain.hierarchy_ is
       not looked up via its parent domains, nor is _user+foo@domain_ looked up as _user@domain_.

       Results are the same as with indexed file lookups.

## CONFIGURATION PARAMETERS
       The following **main.cf** parameters are especially relevant.  The text below provides only a pa‐
       rameter summary. See [**postconf**(5)](https://www.chedong.com/phpMan.php/man/postconf/5/markdown) for more details including examples.

       **empty**___**address**___**recipient** **(MAILER-DAEMON)**
              The recipient of mail addressed to the null address.

       **parent**___**domain**___**matches**___**subdomains** **(see** **'postconf** **-d'** **output)**
              A  list of Postfix features where the pattern "example.com" also matches subdomains of
              example.com, instead of requiring an explicit ".example.com" pattern.

       **transport**___**maps** **(empty)**
              Optional lookup tables with mappings  from  recipient  address  to  (message  delivery
              transport, next-hop destination).

## SEE ALSO
       [trivial-rewrite(8)](https://www.chedong.com/phpMan.php/man/trivial-rewrite/8/markdown), rewrite and resolve addresses
       [master(5)](https://www.chedong.com/phpMan.php/man/master/5/markdown), master.cf file format
       [postconf(5)](https://www.chedong.com/phpMan.php/man/postconf/5/markdown), configuration parameters
       [postmap(1)](https://www.chedong.com/phpMan.php/man/postmap/1/markdown), Postfix lookup table manager

## README FILES
       Use "**postconf** **readme**___**directory**" or "**postconf** **html**___**directory**" to locate this information.
       ADDRESS_REWRITING_README, address rewriting guide
       DATABASE_README, Postfix lookup table overview
       FILTER_README, external content filter

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

       Wietse Venema
       Google, Inc.
       111 8th Avenue
       New York, NY 10011, USA



                                                                                        [TRANSPORT(5)](https://www.chedong.com/phpMan.php/man/TRANSPORT/5/markdown)
