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 ≥ 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 ≥ 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 < 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 '^[^ ]*\*' >/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