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