Home | History | Annotate | Line # | Download | only in proto
STANDARD_CONFIGURATION_README.html revision 1.1.1.5
      1      1.1      tron <!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN"
      2      1.1      tron         "http://www.w3.org/TR/html4/loose.dtd">
      3      1.1      tron 
      4      1.1      tron <html>
      5      1.1      tron 
      6      1.1      tron <head>
      7      1.1      tron 
      8      1.1      tron <title>Postfix Standard Configuration Examples</title>
      9      1.1      tron 
     10  1.1.1.5  christos <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
     11      1.1      tron 
     12      1.1      tron </head>
     13      1.1      tron 
     14      1.1      tron <body>
     15      1.1      tron 
     16      1.1      tron <h1><img src="postfix-logo.jpg" width="203" height="98" ALT="">Postfix Standard Configuration Examples</h1>
     17      1.1      tron 
     18      1.1      tron <hr>
     19      1.1      tron 
     20      1.1      tron <h2>Purpose of this document</h2>
     21      1.1      tron 
     22      1.1      tron <p> This document presents a number of typical Postfix configurations.
     23      1.1      tron This document should be reviewed after you have followed the basic
     24      1.1      tron configuration steps as described in the BASIC_CONFIGURATION_README
     25      1.1      tron document. In particular, do not proceed here if you don't already
     26      1.1      tron have Postfix working for local mail submission and for local mail
     27      1.1      tron delivery. </p>
     28      1.1      tron 
     29      1.1      tron <p> The first part of this document presents standard configurations
     30      1.1      tron that each solve one specific problem. </p>
     31      1.1      tron 
     32      1.1      tron <ul>
     33      1.1      tron 
     34      1.1      tron <li><a href="#stand_alone">Postfix on a stand-alone Internet host</a>
     35      1.1      tron 
     36      1.1      tron <li><a href="#null_client">Postfix on a null client</a>
     37      1.1      tron 
     38      1.1      tron <li><a href="#local_network">Postfix on a local network</a>
     39      1.1      tron 
     40      1.1      tron <li><a href="#firewall">Postfix email firewall/gateway</a>
     41      1.1      tron 
     42      1.1      tron </ul>
     43      1.1      tron 
     44      1.1      tron <p> The second part of this document presents additional configurations
     45      1.1      tron for hosts in specific environments. </p>
     46      1.1      tron 
     47      1.1      tron <ul>
     48      1.1      tron 
     49      1.1      tron <li><a href="#some_local">Delivering some but not all accounts locally</a>
     50      1.1      tron 
     51      1.1      tron <li><a href="#intranet">Running Postfix behind a firewall</a>
     52      1.1      tron 
     53      1.1      tron <li><a href="#backup">Configuring Postfix as primary or backup MX host for a remote
     54      1.1      tron site</a>
     55      1.1      tron 
     56      1.1      tron <li><a href="#dialup">Postfix on a dialup machine</a>
     57      1.1      tron 
     58      1.1      tron <li><a href="#fantasy">Postfix on hosts without a real
     59      1.1      tron Internet hostname</a>
     60      1.1      tron 
     61      1.1      tron </ul>
     62      1.1      tron 
     63      1.1      tron <h2><a name="stand_alone">Postfix on a stand-alone Internet host</a></h2>
     64      1.1      tron 
     65      1.1      tron <p> Postfix should work out of the box without change on a stand-alone
     66      1.1      tron machine that has direct Internet access.  At least, that is how
     67      1.1      tron Postfix installs when you download the Postfix source code via
     68      1.1      tron http://www.postfix.org/. </p>
     69      1.1      tron 
     70      1.1      tron <p> You can use the command "<b>postconf -n</b>" to find out what
     71      1.1      tron settings are overruled by your main.cf. Besides a few pathname
     72      1.1      tron settings, few parameters should be set on a stand-alone box, beyond
     73      1.1      tron what is covered in the BASIC_CONFIGURATION_README document: </p>
     74      1.1      tron 
     75      1.1      tron <blockquote>
     76      1.1      tron <pre>
     77      1.1      tron /etc/postfix/main.cf:
     78      1.1      tron     # Optional: send mail as user@domainname instead of user@hostname.
     79      1.1      tron     #myorigin = $mydomain
     80      1.1      tron 
     81      1.1      tron     # Optional: specify NAT/proxy external address.
     82      1.1      tron     #proxy_interfaces = 1.2.3.4
     83      1.1      tron 
     84      1.1      tron     # Alternative 1: don't relay mail from other hosts.
     85      1.1      tron     mynetworks_style = host
     86      1.1      tron     relay_domains =
     87      1.1      tron 
     88      1.1      tron     # Alternative 2: relay mail from local clients only.
     89      1.1      tron     # mynetworks = 192.168.1.0/28
     90      1.1      tron     # relay_domains =
     91      1.1      tron </pre>
     92      1.1      tron </blockquote>
     93      1.1      tron 
     94      1.1      tron <p> See also the section "<a href="#fantasy">Postfix on hosts without
     95      1.1      tron a real Internet hostname</a>" if this is applicable to your configuration.
     96      1.1      tron </p>
     97      1.1      tron 
     98      1.1      tron <h2><a name="null_client">Postfix on a null client</a></h2>
     99      1.1      tron 
    100      1.1      tron <p> A null client is a machine that can only send mail. It receives no
    101      1.1      tron mail from the network, and it does not deliver any mail locally. A
    102      1.1      tron null client typically uses POP, IMAP or NFS for mailbox access. </p>
    103      1.1      tron 
    104      1.1      tron <p> In this example we assume that the Internet domain name is
    105  1.1.1.4      tron "example.com" and that the machine is named "hostname.example.com".
    106      1.1      tron As usual, the examples show only parameters that are not left at
    107      1.1      tron their default settings. </p>
    108      1.1      tron 
    109      1.1      tron <blockquote>
    110      1.1      tron <pre>
    111      1.1      tron 1 /etc/postfix/main.cf:
    112  1.1.1.4      tron 2     myhostname = hostname.example.com
    113  1.1.1.4      tron 3     myorigin = $mydomain
    114  1.1.1.4      tron 4     relayhost = $mydomain
    115  1.1.1.4      tron 5     inet_interfaces = loopback-only
    116  1.1.1.4      tron 6     mydestination =
    117      1.1      tron </pre>
    118      1.1      tron </blockquote>
    119      1.1      tron 
    120      1.1      tron <p> Translation: </p>
    121      1.1      tron 
    122      1.1      tron <ul>
    123      1.1      tron 
    124  1.1.1.4      tron <li> <p> Line 2: Set myhostname to hostname.example.com, in case
    125  1.1.1.4      tron the machine name isn't set to a fully-qualified domain name (use
    126  1.1.1.4      tron the command "postconf -d myhostname" to find out what the machine
    127  1.1.1.4      tron name is).  </p>
    128  1.1.1.4      tron 
    129  1.1.1.4      tron <li> <p> Line 2: The myhostname value also provides the default
    130  1.1.1.4      tron value for the mydomain parameter (here, "mydomain = example.com").
    131  1.1.1.4      tron </p>
    132      1.1      tron 
    133  1.1.1.4      tron <li> <p> Line 3: Send mail as "user (a] example.com" (instead of
    134  1.1.1.4      tron "user (a] hostname.example.com"), so that nothing ever has a reason
    135  1.1.1.4      tron to send mail to "user (a] hostname.example.com". </p>
    136  1.1.1.4      tron 
    137  1.1.1.4      tron <li> <p> Line 4: Forward all mail to the mail server that is
    138      1.1      tron responsible for the "example.com" domain. This prevents mail from
    139      1.1      tron getting stuck on the null client if it is turned off while some
    140  1.1.1.4      tron remote destination is unreachable. Specify a real hostname
    141  1.1.1.4      tron here if your "example.com" domain has no MX record. </p>
    142      1.1      tron 
    143  1.1.1.4      tron <li> <p> Line 5: Do not accept mail from the network. </p>
    144      1.1      tron 
    145  1.1.1.4      tron <li> <p> Line 6: Disable local mail delivery. All mail goes to
    146  1.1.1.4      tron the mail server as specified in line 4.  </p>
    147      1.1      tron 
    148      1.1      tron </ul>
    149      1.1      tron 
    150      1.1      tron <h2><a name="local_network">Postfix on a local network</a></h2>
    151      1.1      tron 
    152      1.1      tron <p> This section describes a local area network environment of one
    153      1.1      tron main server and multiple other systems that send and receive email.
    154      1.1      tron As usual we assume that the Internet domain name is "example.com".
    155      1.1      tron All systems are configured to send mail as "user (a] example.com", and
    156      1.1      tron all systems receive mail for "user (a] hostname.example.com".  The main
    157      1.1      tron server also receives mail for "user (a] example.com". We call this
    158      1.1      tron machine by the name of mailhost.example.com. </p>
    159      1.1      tron 
    160      1.1      tron <p> A drawback of sending mail as "user (a] example.com" is that mail
    161      1.1      tron for "root" and other system accounts is also sent to the central
    162      1.1      tron mailhost. See the section "<a href="#some_local">Delivering some
    163      1.1      tron but not all accounts locally</a>" below for possible solutions.
    164      1.1      tron </p>
    165      1.1      tron 
    166      1.1      tron <p> As usual, the examples show only parameters that are not left
    167      1.1      tron at their default settings. </p>
    168      1.1      tron 
    169      1.1      tron <p> First we present the non-mailhost configuration, because it is
    170      1.1      tron the simpler one. This machine sends mail as "user (a] example.com" and
    171  1.1.1.5  christos is the final destination for "user (a] hostname.example.com". </p>
    172      1.1      tron 
    173      1.1      tron <blockquote>
    174      1.1      tron <pre>
    175      1.1      tron 1 /etc/postfix/main.cf:
    176      1.1      tron 2     myorigin = $mydomain
    177      1.1      tron 3     mynetworks = 127.0.0.0/8 10.0.0.0/24
    178      1.1      tron 4     relay_domains =
    179      1.1      tron 5     # Optional: forward all non-local mail to mailhost
    180      1.1      tron 6     #relayhost = $mydomain
    181      1.1      tron </pre>
    182      1.1      tron </blockquote>
    183      1.1      tron 
    184      1.1      tron <p> Translation: </p>
    185      1.1      tron 
    186      1.1      tron <ul>
    187      1.1      tron 
    188      1.1      tron <li> <p> Line 2: Send mail as "user (a] example.com". </p>
    189      1.1      tron 
    190      1.1      tron <li> <p> Line 3: Specify the trusted networks. </p>
    191      1.1      tron 
    192      1.1      tron <li> <p> Line 4: This host does not relay mail from untrusted networks. </p>
    193      1.1      tron 
    194      1.1      tron <li> <p> Line 6: This is needed if no direct Internet access is
    195      1.1      tron available.  See also below, "<a href="#firewall">Postfix behind
    196      1.1      tron a firewall</a>". </p>
    197      1.1      tron 
    198      1.1      tron </ul>
    199      1.1      tron 
    200      1.1      tron <p> Next we present the mailhost configuration.  This machine sends
    201  1.1.1.5  christos mail as "user (a] example.com" and is the final destination for
    202      1.1      tron "user (a] hostname.example.com" as well as "user (a] example.com". </p>
    203      1.1      tron 
    204      1.1      tron <blockquote>
    205      1.1      tron <pre>
    206      1.1      tron  1 DNS:
    207      1.1      tron  2     example.com    IN    MX  10 mailhost.example.com.
    208      1.1      tron  3 
    209      1.1      tron  4 /etc/postfix/main.cf:
    210      1.1      tron  5     myorigin = $mydomain
    211      1.1      tron  6     mydestination = $myhostname localhost.$mydomain localhost $mydomain
    212      1.1      tron  7     mynetworks = 127.0.0.0/8 10.0.0.0/24
    213      1.1      tron  8     relay_domains =
    214      1.1      tron  9     # Optional: forward all non-local mail to firewall
    215      1.1      tron 10     #relayhost = [firewall.example.com]
    216      1.1      tron </pre>
    217      1.1      tron </blockquote>
    218      1.1      tron 
    219      1.1      tron <p> Translation: </p>
    220      1.1      tron 
    221      1.1      tron <ul>
    222      1.1      tron 
    223      1.1      tron <li> <p> Line 2: Send mail for the domain "example.com" to the
    224      1.1      tron machine mailhost.example.com.  Remember to specify the "." at the
    225      1.1      tron end of the line. </p>
    226      1.1      tron 
    227      1.1      tron <li> <p> Line 5: Send mail as "user (a] example.com". </p>
    228      1.1      tron 
    229      1.1      tron <li> <p> Line 6: This host is the final mail destination for the
    230      1.1      tron "example.com" domain, in addition to the names of the machine
    231      1.1      tron itself. </p>
    232      1.1      tron 
    233      1.1      tron <li> <p> Line 7: Specify the trusted networks. </p>
    234      1.1      tron 
    235      1.1      tron <li> <p> Line 8: This host does not relay mail from untrusted networks. </p>
    236      1.1      tron 
    237      1.1      tron <li> <p> Line 10: This is needed only when the mailhost has to
    238      1.1      tron forward non-local mail via a mail server on a firewall.  The
    239      1.1      tron <tt>[]</tt> forces Postfix to do no MX record lookups. </p>
    240      1.1      tron 
    241      1.1      tron </ul>
    242      1.1      tron 
    243      1.1      tron <p> In an environment like this, users access their mailbox in one
    244      1.1      tron or more of the following ways:
    245      1.1      tron 
    246      1.1      tron <ul>
    247      1.1      tron 
    248      1.1      tron <li> <p> Mailbox access via NFS or equivalent.  </p>
    249      1.1      tron 
    250      1.1      tron <li> <p> Mailbox access via POP or IMAP. </p>
    251      1.1      tron 
    252      1.1      tron <li> <p> Mailbox on the user's preferred machine. </p>
    253      1.1      tron 
    254      1.1      tron </ul>
    255      1.1      tron 
    256      1.1      tron <p> In the latter case, each user has an alias on the mailhost that
    257      1.1      tron forwards mail to her preferred machine: </p>
    258      1.1      tron 
    259      1.1      tron <blockquote>
    260      1.1      tron <pre>
    261      1.1      tron /etc/aliases:
    262      1.1      tron     joe:    joe (a] joes.preferred.machine
    263      1.1      tron     jane:   jane (a] janes.preferred.machine
    264      1.1      tron </pre>
    265      1.1      tron </blockquote>
    266      1.1      tron 
    267      1.1      tron <p> On some systems the alias database is not in /etc/aliases.  To
    268      1.1      tron find out the location for your system, execute the command "<b>postconf
    269      1.1      tron alias_maps</b>". </p>
    270      1.1      tron 
    271      1.1      tron <p> Execute the command "<b>newaliases</b>" whenever you change
    272      1.1      tron the aliases file.  </p>
    273      1.1      tron 
    274      1.1      tron <h2><a name="firewall">Postfix email firewall/gateway</a></h2>
    275      1.1      tron 
    276      1.1      tron <p> The idea is to set up a Postfix email firewall/gateway that
    277      1.1      tron forwards mail for "example.com" to an inside gateway machine but
    278      1.1      tron rejects mail for "anything.example.com". There is only one problem:
    279      1.1      tron with "relay_domains = example.com", the firewall normally also
    280      1.1      tron accepts mail for "anything.example.com".  That would not be right.
    281      1.1      tron </p>
    282      1.1      tron 
    283      1.1      tron <p> Note: this example requires Postfix version 2.0 and later. To find
    284      1.1      tron out what Postfix version you have, execute the command "<b>postconf
    285      1.1      tron mail_version</b>". </p>
    286      1.1      tron 
    287      1.1      tron <p> The solution is presented in multiple parts. This first part
    288      1.1      tron gets rid of local mail delivery on the firewall, making the firewall
    289      1.1      tron harder to break. </p>
    290      1.1      tron 
    291      1.1      tron <blockquote>
    292      1.1      tron <pre>
    293      1.1      tron 1 /etc/postfix/main.cf:
    294      1.1      tron 2     myorigin = example.com
    295      1.1      tron 3     mydestination =
    296      1.1      tron 4     local_recipient_maps =
    297      1.1      tron 5     local_transport = error:local mail delivery is disabled
    298      1.1      tron 6 
    299      1.1      tron 7 /etc/postfix/master.cf:
    300      1.1      tron 8     Comment out the local delivery agent
    301      1.1      tron </pre>
    302      1.1      tron </blockquote>
    303      1.1      tron 
    304      1.1      tron <p> Translation: </p>
    305      1.1      tron 
    306      1.1      tron <ul>
    307      1.1      tron 
    308      1.1      tron <li> <p> Line 2: Send mail from this machine as "user (a] example.com",
    309      1.1      tron so that no reason exists to send mail to "user (a] firewall.example.com".
    310      1.1      tron </p>
    311      1.1      tron 
    312      1.1      tron <li> <p> Lines 3-8: Disable local mail delivery on the firewall
    313      1.1      tron machine. </p>
    314      1.1      tron 
    315      1.1      tron </ul>
    316      1.1      tron 
    317      1.1      tron <p> For the sake of technical correctness the firewall must be able
    318      1.1      tron to receive mail for postmaster@[firewall ip address]. Reportedly,
    319      1.1      tron some things actually expect this ability to exist. The second part
    320      1.1      tron of the solution therefore adds support for postmaster@[firewall ip
    321      1.1      tron address], and as a bonus we do abuse@[firewall ip address] as well.
    322      1.1      tron All the mail to these two accounts is forwarded to an inside address.
    323      1.1      tron </p>
    324      1.1      tron 
    325      1.1      tron <blockquote>
    326      1.1      tron <pre>
    327      1.1      tron 1 /etc/postfix/main.cf:
    328      1.1      tron 2     virtual_alias_maps = hash:/etc/postfix/virtual
    329      1.1      tron 3 
    330      1.1      tron 4 /etc/postfix/virtual:
    331      1.1      tron 5     postmaster      postmaster (a] example.com
    332      1.1      tron 6     abuse           abuse (a] example.com
    333      1.1      tron </pre>
    334      1.1      tron </blockquote>
    335      1.1      tron 
    336      1.1      tron <p> Translation: </p>
    337      1.1      tron 
    338      1.1      tron <ul>
    339      1.1      tron 
    340      1.1      tron <li> <p> Because mydestination is empty (see the previous example),
    341      1.1      tron only address literals matching $inet_interfaces or $proxy_interfaces
    342      1.1      tron are deemed local.  So "localpart@[a.d.d.r]" can be matched as simply
    343      1.1      tron "localpart" in canonical(5) and virtual(5). This avoids the need to
    344  1.1.1.5  christos specify firewall IP addresses in Postfix configuration files. </p>
    345      1.1      tron 
    346      1.1      tron </ul>
    347      1.1      tron 
    348      1.1      tron <p> The last part of the solution does the email forwarding, which
    349      1.1      tron is the real purpose of the firewall email function. </p>
    350      1.1      tron 
    351      1.1      tron <blockquote>
    352      1.1      tron <pre>
    353      1.1      tron  1 /etc/postfix/main.cf:
    354      1.1      tron  2     mynetworks = 127.0.0.0/8 12.34.56.0/24
    355      1.1      tron  3     relay_domains = example.com
    356      1.1      tron  4     parent_domain_matches_subdomains = 
    357      1.1      tron  5         debug_peer_list smtpd_access_maps
    358  1.1.1.4      tron <br>
    359  1.1.1.4      tron  6a    # Postfix 2.10 and later support separate relay control and
    360  1.1.1.4      tron  7a    # spam control.
    361  1.1.1.4      tron  8a    smtpd_relay_restrictions =
    362  1.1.1.4      tron  9a        permit_mynetworks reject_unauth_destination
    363  1.1.1.4      tron 10a    smtpd_recipient_restrictions = ...spam blocking rules....
    364  1.1.1.4      tron <br>
    365  1.1.1.4      tron  6b    # Older configurations combine relay control and spam control. To
    366  1.1.1.4      tron  7b    # use this with Postfix &ge; 2.10 specify "smtpd_relay_restrictions=".
    367  1.1.1.4      tron  8b    smtpd_recipient_restrictions =
    368  1.1.1.4      tron  9b        permit_mynetworks reject_unauth_destination
    369  1.1.1.4      tron 10b        ...spam blocking rules....
    370  1.1.1.4      tron <br>
    371  1.1.1.4      tron 11     relay_recipient_maps = hash:/etc/postfix/relay_recipients
    372  1.1.1.4      tron 12     transport_maps = hash:/etc/postfix/transport
    373  1.1.1.4      tron 13 
    374  1.1.1.4      tron 14 /etc/postfix/relay_recipients:
    375  1.1.1.4      tron 15     user1 (a] example.com   x
    376  1.1.1.4      tron 16     user2 (a] example.com   x
    377  1.1.1.4      tron 17      . . .
    378  1.1.1.4      tron 18 
    379  1.1.1.4      tron 19 /etc/postfix/transport:
    380  1.1.1.4      tron 20     example.com   smtp:[inside-gateway.example.com]
    381      1.1      tron </pre>
    382      1.1      tron </blockquote>
    383      1.1      tron 
    384      1.1      tron <p> Translation: </p>
    385      1.1      tron 
    386      1.1      tron <ul>
    387  1.1.1.4      tron  
    388  1.1.1.4      tron <li><p> Lines 1-10: Accept mail from local systems in $mynetworks,
    389      1.1      tron and accept mail from outside for "user (a] example.com" but not for
    390      1.1      tron "user (a] anything.example.com". The magic is in lines 4-5. </p>
    391      1.1      tron 
    392  1.1.1.4      tron <li> <p> Lines 11, 13-16: Define the list of valid addresses in the
    393      1.1      tron "example.com" domain that can receive mail from the Internet. This
    394      1.1      tron prevents the mail queue from filling up with undeliverable
    395      1.1      tron MAILER-DAEMON messages. If you can't maintain a list of valid
    396      1.1      tron recipients then you must specify "relay_recipient_maps =" (that
    397      1.1      tron is, an empty value), or you must specify an "@example.com  x"
    398      1.1      tron wild-card in the relay_recipients table. </p>
    399      1.1      tron 
    400  1.1.1.4      tron <li> <p> Lines 12, 19-20: Route mail for "example.com" to the inside
    401      1.1      tron gateway machine. The <tt>[]</tt> forces Postfix to do no MX lookup.
    402      1.1      tron </p>
    403      1.1      tron 
    404      1.1      tron </ul>
    405      1.1      tron 
    406      1.1      tron <p>Specify <b>dbm</b> instead of <b>hash</b> if your system uses
    407      1.1      tron <b>dbm</b> files instead of <b>db</b> files. To find out what lookup
    408      1.1      tron tables Postfix supports, use the command "<b>postconf -m</b>".  </p>
    409      1.1      tron 
    410      1.1      tron <p> Execute the command "<b>postmap /etc/postfix/relay_recipients</b>"
    411      1.1      tron whenever you change the relay_recipients table. </p>
    412      1.1      tron 
    413      1.1      tron <p> Execute the command "<b>postmap /etc/postfix/transport</b>"
    414      1.1      tron whenever you change the transport table. </p>
    415      1.1      tron 
    416      1.1      tron <p> In some installations, there may be separate instances of Postfix
    417      1.1      tron processing inbound and outbound mail on a multi-homed firewall. The
    418      1.1      tron inbound Postfix instance has an SMTP server listening on the external
    419      1.1      tron firewall interface, and the outbound Postfix instance has an SMTP server
    420      1.1      tron listening on the internal interface. In such a configuration is it is
    421      1.1      tron tempting to configure $inet_interfaces in each instance with just the
    422      1.1      tron corresponding interface address. </p>
    423      1.1      tron 
    424      1.1      tron <p> In most cases, using inet_interfaces in this way will not work,
    425      1.1      tron because as documented in the $inet_interfaces reference manual, the
    426      1.1      tron smtp(8) delivery agent will also use the specified interface address
    427      1.1      tron as the source address for outbound connections and will be unable to
    428      1.1      tron reach hosts on "the other side" of the firewall. The symptoms are that
    429      1.1      tron the firewall is unable to connect to hosts that are in fact up. See the
    430      1.1      tron inet_interfaces parameter documentation for suggested work-arounds.</p>
    431      1.1      tron 
    432      1.1      tron <h2><a name="some_local">Delivering some but not all accounts
    433      1.1      tron locally</a></h2>
    434      1.1      tron 
    435      1.1      tron <p> A drawback of sending mail as "user (a] example.com" (instead of
    436      1.1      tron "user (a] hostname.example.com") is that mail for "root" and other
    437      1.1      tron system accounts is also sent to the central mailhost.  In order to
    438      1.1      tron deliver such accounts locally, you can set up virtual aliases as
    439      1.1      tron follows:  </p>
    440      1.1      tron 
    441      1.1      tron <blockquote>
    442      1.1      tron <pre>
    443      1.1      tron 1 /etc/postfix/main.cf:
    444      1.1      tron 2     virtual_alias_maps = hash:/etc/postfix/virtual
    445      1.1      tron 3 
    446      1.1      tron 4 /etc/postfix/virtual:
    447      1.1      tron 5     root     root@localhost
    448      1.1      tron 6     . . .
    449      1.1      tron </pre>
    450      1.1      tron </blockquote>
    451      1.1      tron 
    452      1.1      tron <p> Translation: </p>
    453      1.1      tron 
    454      1.1      tron <ul>
    455      1.1      tron 
    456      1.1      tron <li> <p> Line 5: As described in the virtual(5) manual page, the
    457      1.1      tron bare name "root" matches "root@site" when "site" is equal to
    458      1.1      tron $myorigin, when "site" is listed in $mydestination, or when it
    459      1.1      tron matches $inet_interfaces or $proxy_interfaces. </p>
    460      1.1      tron 
    461      1.1      tron </ul>
    462      1.1      tron 
    463  1.1.1.2      tron <p> Execute the command "<b>postmap /etc/postfix/virtual</b>" after
    464  1.1.1.3      tron editing the file. </p>
    465  1.1.1.2      tron 
    466      1.1      tron <h2><a name="intranet">Running Postfix behind a firewall</a></h2>
    467      1.1      tron 
    468      1.1      tron <p> The simplest way to set up Postfix on a host behind a firewalled
    469      1.1      tron network is to send all mail to a gateway host, and to let that mail
    470      1.1      tron host take care of internal and external forwarding. Examples of that
    471      1.1      tron are shown in the <a href="#local_network">local area network</a>
    472      1.1      tron section above. A more sophisticated approach is to send only external
    473  1.1.1.3      tron mail to the gateway host, and to send intranet mail directly. </p>
    474      1.1      tron 
    475      1.1      tron <p> Note: this example requires Postfix version 2.0 and later. To find
    476      1.1      tron out what Postfix version you have, execute the command "<b>postconf
    477      1.1      tron mail_version</b>". </p>
    478      1.1      tron 
    479      1.1      tron <p> The following example presents additional configuration. You
    480      1.1      tron need to combine this with basic configuration information as
    481  1.1.1.5  christos discussed in the first half of this document. </p>
    482      1.1      tron 
    483      1.1      tron <blockquote>
    484      1.1      tron <pre>
    485      1.1      tron  1 /etc/postfix/main.cf:
    486      1.1      tron  2     transport_maps = hash:/etc/postfix/transport
    487      1.1      tron  3     relayhost =
    488      1.1      tron  4     # Optional for a machine that isn't "always on"
    489      1.1      tron  5     #fallback_relay = [gateway.example.com]
    490      1.1      tron  6 
    491      1.1      tron  7 /etc/postfix/transport:
    492      1.1      tron  8     # Internal delivery.
    493      1.1      tron  9     example.com      :
    494      1.1      tron 10     .example.com     :
    495      1.1      tron 11     # External delivery.
    496      1.1      tron 12     *                smtp:[gateway.example.com]
    497      1.1      tron </pre>
    498      1.1      tron </blockquote>
    499      1.1      tron 
    500      1.1      tron <p> Translation: </p>
    501      1.1      tron 
    502      1.1      tron <ul>
    503      1.1      tron 
    504      1.1      tron <li> <p> Lines 2, 7-12: Request that intranet mail is delivered
    505      1.1      tron directly, and that external mail is given to a gateway. Obviously,
    506      1.1      tron this example assumes that the organization uses DNS MX records
    507      1.1      tron internally.  The <tt>[]</tt> forces Postfix to do no MX lookup.
    508      1.1      tron </p>
    509      1.1      tron 
    510      1.1      tron <li> <p> Line 3: IMPORTANT: do not specify a relayhost in main.cf.
    511      1.1      tron </p>
    512      1.1      tron 
    513      1.1      tron <li> <p> Line 5: This prevents mail from being stuck in the queue
    514      1.1      tron when the machine is turned off.  Postfix tries to deliver mail
    515      1.1      tron directly, and gives undeliverable mail to a gateway.  </p>
    516      1.1      tron 
    517      1.1      tron </ul>
    518      1.1      tron 
    519      1.1      tron <p> Specify <b>dbm</b> instead of <b>hash</b> if your system uses
    520      1.1      tron <b>dbm</b> files instead of <b>db</b> files. To find out what lookup
    521      1.1      tron tables Postfix supports, use the command "<b>postconf -m</b>". </p>
    522      1.1      tron 
    523      1.1      tron <p> Execute the command "<b>postmap /etc/postfix/transport</b>" whenever
    524      1.1      tron you edit the transport table. </p>
    525      1.1      tron 
    526      1.1      tron <h2><a name="backup">Configuring Postfix as primary or backup MX host for a remote site</a></h2>
    527      1.1      tron 
    528      1.1      tron <p> This section presents additional configuration. You need to
    529  1.1.1.5  christos combine this with basic configuration information as discussed in the
    530      1.1      tron first half of this document. </p>
    531      1.1      tron 
    532      1.1      tron <p> When your system is SECONDARY MX host for a remote site this
    533      1.1      tron is all you need: </p>
    534      1.1      tron 
    535      1.1      tron <blockquote>
    536      1.1      tron <pre>
    537      1.1      tron  1 DNS:
    538      1.1      tron  2     the.backed-up.domain.tld        IN      MX 100 your.machine.tld.
    539      1.1      tron  3 
    540      1.1      tron  4 /etc/postfix/main.cf:
    541      1.1      tron  5     relay_domains = . . . the.backed-up.domain.tld
    542  1.1.1.4      tron <br>
    543  1.1.1.4      tron  6a    # Postfix 2.10 and later support separate relay control and
    544  1.1.1.4      tron  7a    # spam control.
    545  1.1.1.4      tron  8a    smtpd_relay_restrictions =
    546  1.1.1.4      tron  9a        permit_mynetworks reject_unauth_destination
    547  1.1.1.4      tron 10a    smtpd_recipient_restrictions = ...spam blocking rules....
    548  1.1.1.4      tron <br>
    549  1.1.1.4      tron  6b    # Older configurations combine relay control and spam control. To
    550  1.1.1.4      tron  7b    # use this with Postfix &ge; 2.10 specify "smtpd_relay_restrictions=".
    551  1.1.1.4      tron  8b    smtpd_recipient_restrictions =
    552  1.1.1.4      tron  9b        permit_mynetworks reject_unauth_destination
    553  1.1.1.4      tron 10b        ...spam blocking rules....
    554  1.1.1.4      tron <br>
    555  1.1.1.4      tron 11     # You must specify your NAT/proxy external address.
    556  1.1.1.4      tron 12     #proxy_interfaces = 1.2.3.4
    557      1.1      tron 13 
    558  1.1.1.4      tron 14     relay_recipient_maps = hash:/etc/postfix/relay_recipients
    559  1.1.1.4      tron 15 
    560  1.1.1.4      tron 16 /etc/postfix/relay_recipients:
    561  1.1.1.4      tron 17     user1 (a] the.backed-up.domain.tld   x
    562  1.1.1.4      tron 18     user2 (a] the.backed-up.domain.tld   x
    563  1.1.1.4      tron 19      . . .
    564      1.1      tron </pre>
    565      1.1      tron </blockquote>
    566      1.1      tron 
    567      1.1      tron <p> When your system is PRIMARY MX host for a remote site you 
    568      1.1      tron need the above, plus: </p>
    569      1.1      tron 
    570      1.1      tron <blockquote>
    571      1.1      tron <pre>
    572  1.1.1.4      tron 20 /etc/postfix/main.cf:
    573  1.1.1.4      tron 21     transport_maps = hash:/etc/postfix/transport
    574  1.1.1.4      tron 22 
    575  1.1.1.4      tron 23 /etc/postfix/transport:
    576  1.1.1.4      tron 24     the.backed-up.domain.tld       relay:[their.mail.host.tld]
    577      1.1      tron </pre>
    578      1.1      tron </blockquote>
    579      1.1      tron 
    580      1.1      tron <p> Important notes:
    581      1.1      tron 
    582      1.1      tron <ul>
    583      1.1      tron 
    584      1.1      tron <li><p>Do not list the.backed-up.domain.tld in mydestination.</p>
    585      1.1      tron 
    586      1.1      tron <li><p>Do not list the.backed-up.domain.tld in virtual_alias_domains.</p>
    587      1.1      tron 
    588      1.1      tron <li><p>Do not list the.backed-up.domain.tld in virtual_mailbox_domains.</p>
    589      1.1      tron 
    590  1.1.1.4      tron <li> <p> Lines 1-9: Forward mail from the Internet for
    591      1.1      tron "the.backed-up.domain.tld" to the primary MX host for that domain.
    592      1.1      tron </p>
    593      1.1      tron 
    594  1.1.1.4      tron <li> <p> Line 12: This is a must if Postfix receives mail via a
    595      1.1      tron NAT relay or proxy that presents a different IP address to the
    596      1.1      tron world than the local machine. </p>
    597      1.1      tron 
    598  1.1.1.4      tron <li> <p> Lines 14-18: Define the list of valid addresses in the
    599      1.1      tron "the.backed-up.domain.tld" domain.  This prevents your mail queue
    600      1.1      tron from filling up with undeliverable MAILER-DAEMON messages. If you
    601      1.1      tron can't maintain a list of valid recipients then you must specify
    602      1.1      tron "relay_recipient_maps =" (that is, an empty value), or you must
    603      1.1      tron specify an "@the.backed-up.domain.tld  x" wild-card in the
    604      1.1      tron relay_recipients table. </p>
    605      1.1      tron 
    606  1.1.1.4      tron <li> <p> Line 24: The <tt>[]</tt> forces Postfix to do no MX lookup. </p>
    607      1.1      tron 
    608      1.1      tron </ul>
    609      1.1      tron 
    610      1.1      tron <p> Specify <b>dbm</b> instead of <b>hash</b> if your system uses
    611      1.1      tron <b>dbm</b> files instead of <b>db</b> files. To find out what lookup
    612      1.1      tron tables Postfix supports, use the command "<b>postconf -m</b>". </p>
    613      1.1      tron 
    614      1.1      tron <p> Execute the command "<b>postmap /etc/postfix/transport</b>"
    615      1.1      tron whenever you change the transport table. </p>
    616      1.1      tron 
    617      1.1      tron <p> NOTE for Postfix &lt; 2.2: Do not use the fallback_relay feature
    618      1.1      tron when relaying mail
    619      1.1      tron for a backup or primary MX domain. Mail would loop between the
    620      1.1      tron Postfix MX host and the fallback_relay host when the final destination
    621      1.1      tron is unavailable. </p>
    622      1.1      tron  
    623      1.1      tron <ul>
    624      1.1      tron 
    625      1.1      tron <li> In main.cf specify "<tt>relay_transport = relay</tt>",
    626      1.1      tron 
    627      1.1      tron <li> In master.cf specify "<tt>-o fallback_relay =</tt>" at the    
    628      1.1      tron end of the <tt>relay</tt> entry.
    629      1.1      tron 
    630      1.1      tron <li> In transport maps, specify "<tt>relay:<i>nexthop...</i></tt>"
    631      1.1      tron as the right-hand side for backup or primary MX domain entries.
    632      1.1      tron 
    633      1.1      tron </ul>
    634      1.1      tron 
    635      1.1      tron <p> These are default settings in Postfix version 2.2 and later.
    636      1.1      tron </p>
    637      1.1      tron 
    638      1.1      tron <h2><a name="dialup">Postfix on a dialup machine</a></h2>
    639      1.1      tron 
    640      1.1      tron <p> This section applies to dialup connections that are down most
    641      1.1      tron of the time. For dialup connections that are up 24x7, see the <a
    642      1.1      tron href="#local_network">local area network</a> section above.  </p>
    643      1.1      tron 
    644      1.1      tron <p> This section presents additional configuration. You need to
    645  1.1.1.5  christos combine this with basic configuration information as discussed in the
    646      1.1      tron first half of this document. </p>
    647      1.1      tron 
    648      1.1      tron <p> If you do not have your own hostname and IP address (usually
    649      1.1      tron with dialup, cable TV or DSL connections) then you should also
    650      1.1      tron study the section on "<a href="#fantasy">Postfix on hosts without
    651      1.1      tron a real Internet hostname</a>".  </p>
    652      1.1      tron 
    653      1.1      tron <ul>
    654      1.1      tron 
    655      1.1      tron <li> Route all outgoing mail to your network provider.
    656      1.1      tron 
    657      1.1      tron <p> If your machine is disconnected most of the time, there isn't
    658      1.1      tron a lot of opportunity for Postfix to deliver mail to hard-to-reach
    659      1.1      tron corners of the Internet. It's better to give the mail to a machine
    660      1.1      tron that is connected all the time. In the example below, the <tt>[]</tt>
    661      1.1      tron prevents Postfix from trying to look up DNS MX records.  </p>
    662      1.1      tron 
    663      1.1      tron <pre>
    664      1.1      tron /etc/postfix/main.cf:
    665      1.1      tron     relayhost = [smtprelay.someprovider.com]
    666      1.1      tron </pre>
    667      1.1      tron 
    668      1.1      tron <li> <p><a name="spontaneous_smtp">Disable spontaneous SMTP mail
    669      1.1      tron delivery (if using on-demand dialup IP only).</a> </p>
    670      1.1      tron 
    671      1.1      tron <p> Normally, Postfix attempts to deliver outbound mail at its convenience.
    672      1.1      tron If your machine uses on-demand dialup IP, this causes your system
    673      1.1      tron to place a telephone call whenever you submit new mail, and whenever
    674      1.1      tron Postfix retries to deliver delayed mail. To prevent such telephone
    675      1.1      tron calls from being placed, disable spontaneous SMTP mail deliveries. </p>
    676      1.1      tron 
    677      1.1      tron <pre>
    678      1.1      tron /etc/postfix/main.cf:
    679      1.1      tron     defer_transports = smtp (Only for on-demand dialup IP hosts)
    680      1.1      tron </pre>
    681      1.1      tron 
    682      1.1      tron <li> <p>Disable SMTP client DNS lookups (dialup LAN only).</p>
    683      1.1      tron 
    684      1.1      tron <pre>
    685      1.1      tron /etc/postfix/main.cf:
    686      1.1      tron     disable_dns_lookups = yes (Only for on-demand dialup IP hosts)
    687      1.1      tron </pre>
    688      1.1      tron 
    689      1.1      tron <li> Flush the mail queue whenever the Internet link is established.
    690      1.1      tron 
    691      1.1      tron <p> Put the following command into your PPP or SLIP dialup scripts: </p>
    692      1.1      tron 
    693      1.1      tron <pre>
    694      1.1      tron /usr/sbin/sendmail -q (whenever the Internet link is up)
    695      1.1      tron </pre>
    696      1.1      tron 
    697      1.1      tron <p> The exact location of the Postfix sendmail command is system-specific.
    698      1.1      tron Use the command "<b>postconf sendmail_path</b>" to find out where the
    699      1.1      tron Postfix sendmail command is located on your machine. </p>
    700      1.1      tron 
    701      1.1      tron <p> In order to find out if the mail queue is flushed, use something
    702      1.1      tron like: </p>
    703      1.1      tron 
    704      1.1      tron <pre>
    705      1.1      tron #!/bin/sh
    706      1.1      tron 
    707      1.1      tron # Start mail deliveries.
    708      1.1      tron /usr/sbin/sendmail -q
    709      1.1      tron 
    710      1.1      tron # Allow deliveries to start.
    711      1.1      tron sleep 10
    712      1.1      tron 
    713      1.1      tron # Loop until all messages have been tried at least once.
    714      1.1      tron while mailq | grep '^[^ ]*\*' &gt;/dev/null
    715      1.1      tron do  
    716      1.1      tron     sleep 10
    717      1.1      tron done
    718      1.1      tron </pre>
    719      1.1      tron 
    720      1.1      tron <p> If you have disabled <a href="#spontaneous_smtp">spontaneous
    721      1.1      tron SMTP mail delivery</a>, you also need to run the "<b>sendmail -q</b>"
    722      1.1      tron command every now and then while the dialup link is up, so that
    723      1.1      tron newly-posted mail is flushed from the queue. </p>
    724      1.1      tron 
    725      1.1      tron </ul>
    726      1.1      tron 
    727      1.1      tron <h2><a name="fantasy">Postfix on hosts without a real Internet
    728      1.1      tron hostname</a></h2>
    729      1.1      tron 
    730      1.1      tron <p> This section is for hosts that don't have their own Internet
    731      1.1      tron hostname.  Typically these are systems that get a dynamic IP address
    732      1.1      tron via DHCP or via dialup. Postfix will let you send and receive mail
    733      1.1      tron just fine between accounts on a machine with a fantasy name. However,
    734      1.1      tron you cannot use a fantasy hostname in your email address when sending
    735      1.1      tron mail into the Internet, because no-one would be able to reply to
    736      1.1      tron your mail. In fact, more and more sites refuse mail addresses with
    737      1.1      tron non-existent domain names. </p>
    738      1.1      tron 
    739      1.1      tron <p> Note: the following information is Postfix version dependent.
    740      1.1      tron To find out what Postfix version you have, execute the command
    741      1.1      tron "<b>postconf mail_version</b>". </p>
    742      1.1      tron 
    743      1.1      tron <h3>Solution 1: Postfix version 2.2 and later </h3>
    744      1.1      tron 
    745      1.1      tron <p> Postfix 2.2 uses the generic(5) address mapping to replace
    746      1.1      tron local fantasy email addresses by valid Internet addresses.  This
    747      1.1      tron mapping happens ONLY when mail leaves the machine; not when you
    748      1.1      tron send mail between users on the same machine. </p>
    749      1.1      tron 
    750      1.1      tron <p> The following example presents additional configuration. You
    751      1.1      tron need to combine this with basic configuration information as
    752  1.1.1.5  christos discussed in the first half of this document. </p>
    753      1.1      tron 
    754      1.1      tron <blockquote>
    755      1.1      tron <pre>
    756      1.1      tron 1 /etc/postfix/main.cf:
    757      1.1      tron 2     smtp_generic_maps = hash:/etc/postfix/generic
    758      1.1      tron 3 
    759      1.1      tron 4 /etc/postfix/generic:
    760      1.1      tron 5     his (a] localdomain.local             hisaccount (a] hisisp.example
    761      1.1      tron 6     her (a] localdomain.local             heraccount (a] herisp.example
    762      1.1      tron 7     @localdomain.local                hisaccount+local (a] hisisp.example
    763      1.1      tron </pre>
    764      1.1      tron </blockquote>
    765      1.1      tron 
    766      1.1      tron <p> When mail is sent to a remote host via SMTP: </p>
    767      1.1      tron 
    768      1.1      tron <ul>
    769      1.1      tron 
    770      1.1      tron <li> <p> Line 5 replaces <i>his (a] localdomain.local</i> by his ISP
    771      1.1      tron mail address, </p>
    772      1.1      tron 
    773      1.1      tron <li> <p> Line 6 replaces <i>her (a] localdomain.local</i> by her ISP
    774      1.1      tron mail address, and </p>
    775      1.1      tron 
    776      1.1      tron <li> <p> Line 7 replaces other local addresses by his ISP account,
    777      1.1      tron with an address extension of +<i>local</i> (this example assumes
    778      1.1      tron that the ISP supports "+" style address extensions). </p>
    779      1.1      tron 
    780      1.1      tron </ul>
    781      1.1      tron 
    782      1.1      tron <p>Specify <b>dbm</b> instead of <b>hash</b> if your system uses
    783      1.1      tron <b>dbm</b> files instead of <b>db</b> files. To find out what lookup
    784      1.1      tron tables Postfix supports, use the command "<b>postconf -m</b>".  </p>
    785      1.1      tron 
    786      1.1      tron <p> Execute the command "<b>postmap /etc/postfix/generic</b>"
    787      1.1      tron whenever you change the generic table. </p>
    788      1.1      tron 
    789      1.1      tron <h3>Solution 2: Postfix version 2.1 and earlier </h3>
    790      1.1      tron 
    791      1.1      tron <p> The solution with older Postfix systems is to use valid
    792      1.1      tron Internet addresses where possible, and to let Postfix map valid
    793      1.1      tron Internet addresses to local fantasy addresses. With this, you can
    794      1.1      tron send mail to the Internet and to local fantasy addresses, including
    795      1.1      tron mail to local fantasy addresses that don't have a valid Internet
    796      1.1      tron address of their own.</p>
    797      1.1      tron 
    798      1.1      tron <p> The following example presents additional configuration. You
    799      1.1      tron need to combine this with basic configuration information as
    800  1.1.1.5  christos discussed in the first half of this document. </p>
    801      1.1      tron 
    802      1.1      tron <blockquote>
    803      1.1      tron <pre>
    804      1.1      tron  1 /etc/postfix/main.cf:
    805      1.1      tron  2     myhostname = hostname.localdomain
    806      1.1      tron  3     mydomain = localdomain
    807      1.1      tron  4 
    808      1.1      tron  5     canonical_maps = hash:/etc/postfix/canonical
    809      1.1      tron  6 
    810      1.1      tron  7     virtual_alias_maps = hash:/etc/postfix/virtual
    811      1.1      tron  8 
    812      1.1      tron  9 /etc/postfix/canonical:
    813      1.1      tron 10     your-login-name    your-account (a] your-isp.com
    814      1.1      tron 11 
    815      1.1      tron 12 /etc/postfix/virtual:
    816      1.1      tron 13     your-account (a] your-isp.com       your-login-name
    817      1.1      tron </pre>
    818      1.1      tron </blockquote>
    819      1.1      tron 
    820      1.1      tron <p> Translation: </p>
    821      1.1      tron 
    822      1.1      tron <ul>
    823      1.1      tron 
    824      1.1      tron <li> <p> Lines 2-3: Substitute your fantasy hostname here. Do not
    825      1.1      tron use a domain name that is already in use by real organizations
    826      1.1      tron on the Internet. See RFC 2606 for examples of domain
    827      1.1      tron names that are guaranteed not to be owned by anyone. </p>
    828      1.1      tron 
    829      1.1      tron <li> <p> Lines 5, 9, 10: This provides the mapping from
    830      1.1      tron "your-login-name (a] hostname.localdomain" to "your-account (a] your-isp.com".
    831      1.1      tron This part is required. </p>
    832      1.1      tron 
    833      1.1      tron <li> <p> Lines 7, 12, 13: Deliver mail for "your-account (a] your-isp.com"
    834      1.1      tron locally, instead of sending it to the ISP. This part is not required
    835      1.1      tron but is convenient.
    836      1.1      tron 
    837      1.1      tron </ul>
    838      1.1      tron 
    839      1.1      tron <p>Specify <b>dbm</b> instead of <b>hash</b> if your system uses
    840      1.1      tron <b>dbm</b> files instead of <b>db</b> files. To find out what lookup
    841      1.1      tron tables Postfix supports, use the command "<b>postconf -m</b>".  </p>
    842      1.1      tron 
    843      1.1      tron <p> Execute the command "<b>postmap /etc/postfix/canonical</b>"
    844      1.1      tron whenever you change the canonical table. </p>
    845      1.1      tron 
    846      1.1      tron <p> Execute the command "<b>postmap /etc/postfix/virtual</b>"
    847      1.1      tron whenever you change the virtual table. </p>
    848      1.1      tron 
    849      1.1      tron </body>
    850      1.1      tron 
    851      1.1      tron </html>
    852