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 "nullclient.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 myorigin = $mydomain 1133 relayhost = $mydomain 1144 inet_interfaces = loopback-only 1155 local_transport = error:local delivery is disabled 1166 1177 /etc/postfix/master.cf: 1188 Comment out the local delivery agent entry 119</pre> 120</blockquote> 121 122<p> Translation: </p> 123 124<ul> 125 126<li> <p> Line 2: Send mail as "user@example.com" (instead of 127"user@nullclient.example.com"), so that nothing ever has a reason 128to send mail to "user@nullclient.example.com". </p> 129 130<li> <p> Line 3: Forward all mail to the mail server that is 131responsible for the "example.com" domain. This prevents mail from 132getting stuck on the null client if it is turned off while some 133remote destination is unreachable. </p> 134 135<li> <p> Line 4: Do not accept mail from the network. </p> 136 137<li> <p> Lines 5-8: Disable local mail delivery. All mail goes to 138the mail server as specified in line 3. </p> 139 140</ul> 141 142<h2><a name="local_network">Postfix on a local network</a></h2> 143 144<p> This section describes a local area network environment of one 145main server and multiple other systems that send and receive email. 146As usual we assume that the Internet domain name is "example.com". 147All systems are configured to send mail as "user@example.com", and 148all systems receive mail for "user@hostname.example.com". The main 149server also receives mail for "user@example.com". We call this 150machine by the name of mailhost.example.com. </p> 151 152<p> A drawback of sending mail as "user@example.com" is that mail 153for "root" and other system accounts is also sent to the central 154mailhost. See the section "<a href="#some_local">Delivering some 155but not all accounts locally</a>" below for possible solutions. 156</p> 157 158<p> As usual, the examples show only parameters that are not left 159at their default settings. </p> 160 161<p> First we present the non-mailhost configuration, because it is 162the simpler one. This machine sends mail as "user@example.com" and 163is final destination for "user@hostname.example.com". </p> 164 165<blockquote> 166<pre> 1671 /etc/postfix/main.cf: 1682 myorigin = $mydomain 1693 mynetworks = 127.0.0.0/8 10.0.0.0/24 1704 relay_domains = 1715 # Optional: forward all non-local mail to mailhost 1726 #relayhost = $mydomain 173</pre> 174</blockquote> 175 176<p> Translation: </p> 177 178<ul> 179 180<li> <p> Line 2: Send mail as "user@example.com". </p> 181 182<li> <p> Line 3: Specify the trusted networks. </p> 183 184<li> <p> Line 4: This host does not relay mail from untrusted networks. </p> 185 186<li> <p> Line 6: This is needed if no direct Internet access is 187available. See also below, "<a href="#firewall">Postfix behind 188a firewall</a>". </p> 189 190</ul> 191 192<p> Next we present the mailhost configuration. This machine sends 193mail as "user@example.com" and is final destination for 194"user@hostname.example.com" as well as "user@example.com". </p> 195 196<blockquote> 197<pre> 198 1 DNS: 199 2 example.com IN MX 10 mailhost.example.com. 200 3 201 4 /etc/postfix/main.cf: 202 5 myorigin = $mydomain 203 6 mydestination = $myhostname localhost.$mydomain localhost $mydomain 204 7 mynetworks = 127.0.0.0/8 10.0.0.0/24 205 8 relay_domains = 206 9 # Optional: forward all non-local mail to firewall 20710 #relayhost = [firewall.example.com] 208</pre> 209</blockquote> 210 211<p> Translation: </p> 212 213<ul> 214 215<li> <p> Line 2: Send mail for the domain "example.com" to the 216machine mailhost.example.com. Remember to specify the "." at the 217end of the line. </p> 218 219<li> <p> Line 5: Send mail as "user@example.com". </p> 220 221<li> <p> Line 6: This host is the final mail destination for the 222"example.com" domain, in addition to the names of the machine 223itself. </p> 224 225<li> <p> Line 7: Specify the trusted networks. </p> 226 227<li> <p> Line 8: This host does not relay mail from untrusted networks. </p> 228 229<li> <p> Line 10: This is needed only when the mailhost has to 230forward non-local mail via a mail server on a firewall. The 231<tt>[]</tt> forces Postfix to do no MX record lookups. </p> 232 233</ul> 234 235<p> In an environment like this, users access their mailbox in one 236or more of the following ways: 237 238<ul> 239 240<li> <p> Mailbox access via NFS or equivalent. </p> 241 242<li> <p> Mailbox access via POP or IMAP. </p> 243 244<li> <p> Mailbox on the user's preferred machine. </p> 245 246</ul> 247 248<p> In the latter case, each user has an alias on the mailhost that 249forwards mail to her preferred machine: </p> 250 251<blockquote> 252<pre> 253/etc/aliases: 254 joe: joe@joes.preferred.machine 255 jane: jane@janes.preferred.machine 256</pre> 257</blockquote> 258 259<p> On some systems the alias database is not in /etc/aliases. To 260find out the location for your system, execute the command "<b>postconf 261alias_maps</b>". </p> 262 263<p> Execute the command "<b>newaliases</b>" whenever you change 264the aliases file. </p> 265 266<h2><a name="firewall">Postfix email firewall/gateway</a></h2> 267 268<p> The idea is to set up a Postfix email firewall/gateway that 269forwards mail for "example.com" to an inside gateway machine but 270rejects mail for "anything.example.com". There is only one problem: 271with "relay_domains = example.com", the firewall normally also 272accepts mail for "anything.example.com". That would not be right. 273</p> 274 275<p> Note: this example requires Postfix version 2.0 and later. To find 276out what Postfix version you have, execute the command "<b>postconf 277mail_version</b>". </p> 278 279<p> The solution is presented in multiple parts. This first part 280gets rid of local mail delivery on the firewall, making the firewall 281harder to break. </p> 282 283<blockquote> 284<pre> 2851 /etc/postfix/main.cf: 2862 myorigin = example.com 2873 mydestination = 2884 local_recipient_maps = 2895 local_transport = error:local mail delivery is disabled 2906 2917 /etc/postfix/master.cf: 2928 Comment out the local delivery agent 293</pre> 294</blockquote> 295 296<p> Translation: </p> 297 298<ul> 299 300<li> <p> Line 2: Send mail from this machine as "user@example.com", 301so that no reason exists to send mail to "user@firewall.example.com". 302</p> 303 304<li> <p> Lines 3-8: Disable local mail delivery on the firewall 305machine. </p> 306 307</ul> 308 309<p> For the sake of technical correctness the firewall must be able 310to receive mail for postmaster@[firewall ip address]. Reportedly, 311some things actually expect this ability to exist. The second part 312of the solution therefore adds support for postmaster@[firewall ip 313address], and as a bonus we do abuse@[firewall ip address] as well. 314All the mail to these two accounts is forwarded to an inside address. 315</p> 316 317<blockquote> 318<pre> 3191 /etc/postfix/main.cf: 3202 virtual_alias_maps = hash:/etc/postfix/virtual 3213 3224 /etc/postfix/virtual: 3235 postmaster postmaster@example.com 3246 abuse abuse@example.com 325</pre> 326</blockquote> 327 328<p> Translation: </p> 329 330<ul> 331 332<li> <p> Because mydestination is empty (see the previous example), 333only address literals matching $inet_interfaces or $proxy_interfaces 334are deemed local. So "localpart@[a.d.d.r]" can be matched as simply 335"localpart" in canonical(5) and virtual(5). This avoids the need to 336specify firewall IP addresses into Postfix configuration files. </p> 337 338</ul> 339 340<p> The last part of the solution does the email forwarding, which 341is the real purpose of the firewall email function. </p> 342 343<blockquote> 344<pre> 345 1 /etc/postfix/main.cf: 346 2 mynetworks = 127.0.0.0/8 12.34.56.0/24 347 3 relay_domains = example.com 348 4 parent_domain_matches_subdomains = 349 5 debug_peer_list smtpd_access_maps 350 6 smtpd_recipient_restrictions = 351 7 permit_mynetworks reject_unauth_destination 352 8 353 9 relay_recipient_maps = hash:/etc/postfix/relay_recipients 35410 transport_maps = hash:/etc/postfix/transport 35511 35612 /etc/postfix/relay_recipients: 35713 user1@example.com x 35814 user2@example.com x 35915 . . . 36016 36117 /etc/postfix/transport: 36218 example.com smtp:[inside-gateway.example.com] 363</pre> 364</blockquote> 365 366<p> Translation: </p> 367 368<ul> 369 370<li><p> Lines 1-7: Accept mail from local systems in $mynetworks, 371and accept mail from outside for "user@example.com" but not for 372"user@anything.example.com". The magic is in lines 4-5. </p> 373 374<li> <p> Lines 9, 12-14: Define the list of valid addresses in the 375"example.com" domain that can receive mail from the Internet. This 376prevents the mail queue from filling up with undeliverable 377MAILER-DAEMON messages. If you can't maintain a list of valid 378recipients then you must specify "relay_recipient_maps =" (that 379is, an empty value), or you must specify an "@example.com x" 380wild-card in the relay_recipients table. </p> 381 382<li> <p> Lines 10, 17-18: Route mail for "example.com" to the inside 383gateway machine. The <tt>[]</tt> forces Postfix to do no MX lookup. 384</p> 385 386</ul> 387 388<p>Specify <b>dbm</b> instead of <b>hash</b> if your system uses 389<b>dbm</b> files instead of <b>db</b> files. To find out what lookup 390tables Postfix supports, use the command "<b>postconf -m</b>". </p> 391 392<p> Execute the command "<b>postmap /etc/postfix/relay_recipients</b>" 393whenever you change the relay_recipients table. </p> 394 395<p> Execute the command "<b>postmap /etc/postfix/transport</b>" 396whenever you change the transport table. </p> 397 398<p> In some installations, there may be separate instances of Postfix 399processing inbound and outbound mail on a multi-homed firewall. The 400inbound Postfix instance has an SMTP server listening on the external 401firewall interface, and the outbound Postfix instance has an SMTP server 402listening on the internal interface. In such a configuration is it is 403tempting to configure $inet_interfaces in each instance with just the 404corresponding interface address. </p> 405 406<p> In most cases, using inet_interfaces in this way will not work, 407because as documented in the $inet_interfaces reference manual, the 408smtp(8) delivery agent will also use the specified interface address 409as the source address for outbound connections and will be unable to 410reach hosts on "the other side" of the firewall. The symptoms are that 411the firewall is unable to connect to hosts that are in fact up. See the 412inet_interfaces parameter documentation for suggested work-arounds.</p> 413 414<h2><a name="some_local">Delivering some but not all accounts 415locally</a></h2> 416 417<p> A drawback of sending mail as "user@example.com" (instead of 418"user@hostname.example.com") is that mail for "root" and other 419system accounts is also sent to the central mailhost. In order to 420deliver such accounts locally, you can set up virtual aliases as 421follows: </p> 422 423<blockquote> 424<pre> 4251 /etc/postfix/main.cf: 4262 virtual_alias_maps = hash:/etc/postfix/virtual 4273 4284 /etc/postfix/virtual: 4295 root root@localhost 4306 . . . 431</pre> 432</blockquote> 433 434<p> Translation: </p> 435 436<ul> 437 438<li> <p> Line 5: As described in the virtual(5) manual page, the 439bare name "root" matches "root@site" when "site" is equal to 440$myorigin, when "site" is listed in $mydestination, or when it 441matches $inet_interfaces or $proxy_interfaces. </p> 442 443</ul> 444 445<h2><a name="intranet">Running Postfix behind a firewall</a></h2> 446 447<p> The simplest way to set up Postfix on a host behind a firewalled 448network is to send all mail to a gateway host, and to let that mail 449host take care of internal and external forwarding. Examples of that 450are shown in the <a href="#local_network">local area network</a> 451section above. A more sophisticated approach is to send only external 452mail to the gateway host, and to send intranet mail directly. 453That's what Wietse does at work. </p> 454 455<p> Note: this example requires Postfix version 2.0 and later. To find 456out what Postfix version you have, execute the command "<b>postconf 457mail_version</b>". </p> 458 459<p> The following example presents additional configuration. You 460need to combine this with basic configuration information as 461discussed the first half of this document. </p> 462 463<blockquote> 464<pre> 465 1 /etc/postfix/main.cf: 466 2 transport_maps = hash:/etc/postfix/transport 467 3 relayhost = 468 4 # Optional for a machine that isn't "always on" 469 5 #fallback_relay = [gateway.example.com] 470 6 471 7 /etc/postfix/transport: 472 8 # Internal delivery. 473 9 example.com : 47410 .example.com : 47511 # External delivery. 47612 * smtp:[gateway.example.com] 477</pre> 478</blockquote> 479 480<p> Translation: </p> 481 482<ul> 483 484<li> <p> Lines 2, 7-12: Request that intranet mail is delivered 485directly, and that external mail is given to a gateway. Obviously, 486this example assumes that the organization uses DNS MX records 487internally. The <tt>[]</tt> forces Postfix to do no MX lookup. 488</p> 489 490<li> <p> Line 3: IMPORTANT: do not specify a relayhost in main.cf. 491</p> 492 493<li> <p> Line 5: This prevents mail from being stuck in the queue 494when the machine is turned off. Postfix tries to deliver mail 495directly, and gives undeliverable mail to a gateway. </p> 496 497</ul> 498 499<p> Specify <b>dbm</b> instead of <b>hash</b> if your system uses 500<b>dbm</b> files instead of <b>db</b> files. To find out what lookup 501tables Postfix supports, use the command "<b>postconf -m</b>". </p> 502 503<p> Execute the command "<b>postmap /etc/postfix/transport</b>" whenever 504you edit the transport table. </p> 505 506<h2><a name="backup">Configuring Postfix as primary or backup MX host for a remote site</a></h2> 507 508<p> This section presents additional configuration. You need to 509combine this with basic configuration information as discussed the 510first half of this document. </p> 511 512<p> When your system is SECONDARY MX host for a remote site this 513is all you need: </p> 514 515<blockquote> 516<pre> 517 1 DNS: 518 2 the.backed-up.domain.tld IN MX 100 your.machine.tld. 519 3 520 4 /etc/postfix/main.cf: 521 5 relay_domains = . . . the.backed-up.domain.tld 522 6 smtpd_recipient_restrictions = 523 7 permit_mynetworks reject_unauth_destination 524 8 525 9 # You must specify your NAT/proxy external address. 52610 #proxy_interfaces = 1.2.3.4 52711 52812 relay_recipient_maps = hash:/etc/postfix/relay_recipients 52913 53014 /etc/postfix/relay_recipients: 53115 user1@the.backed-up.domain.tld x 53216 user2@the.backed-up.domain.tld x 53317 . . . 534</pre> 535</blockquote> 536 537<p> When your system is PRIMARY MX host for a remote site you 538need the above, plus: </p> 539 540<blockquote> 541<pre> 54218 /etc/postfix/main.cf: 54319 transport_maps = hash:/etc/postfix/transport 54420 54521 /etc/postfix/transport: 54622 the.backed-up.domain.tld relay:[their.mail.host.tld] 547</pre> 548</blockquote> 549 550<p> Important notes: 551 552<ul> 553 554<li><p>Do not list the.backed-up.domain.tld in mydestination.</p> 555 556<li><p>Do not list the.backed-up.domain.tld in virtual_alias_domains.</p> 557 558<li><p>Do not list the.backed-up.domain.tld in virtual_mailbox_domains.</p> 559 560<li> <p> Lines 1-7: Forward mail from the Internet for 561"the.backed-up.domain.tld" to the primary MX host for that domain. 562</p> 563 564<li> <p> Line 10: This is a must if Postfix receives mail via a 565NAT relay or proxy that presents a different IP address to the 566world than the local machine. </p> 567 568<li> <p> Lines 12-16: Define the list of valid addresses in the 569"the.backed-up.domain.tld" domain. This prevents your mail queue 570from filling up with undeliverable MAILER-DAEMON messages. If you 571can't maintain a list of valid recipients then you must specify 572"relay_recipient_maps =" (that is, an empty value), or you must 573specify an "@the.backed-up.domain.tld x" wild-card in the 574relay_recipients table. </p> 575 576<li> <p> Line 22: The <tt>[]</tt> forces Postfix to do no MX lookup. </p> 577 578</ul> 579 580<p> Specify <b>dbm</b> instead of <b>hash</b> if your system uses 581<b>dbm</b> files instead of <b>db</b> files. To find out what lookup 582tables Postfix supports, use the command "<b>postconf -m</b>". </p> 583 584<p> Execute the command "<b>postmap /etc/postfix/transport</b>" 585whenever you change the transport table. </p> 586 587<p> NOTE for Postfix < 2.2: Do not use the fallback_relay feature 588when relaying mail 589for a backup or primary MX domain. Mail would loop between the 590Postfix MX host and the fallback_relay host when the final destination 591is unavailable. </p> 592 593<ul> 594 595<li> In main.cf specify "<tt>relay_transport = relay</tt>", 596 597<li> In master.cf specify "<tt>-o fallback_relay =</tt>" at the 598end of the <tt>relay</tt> entry. 599 600<li> In transport maps, specify "<tt>relay:<i>nexthop...</i></tt>" 601as the right-hand side for backup or primary MX domain entries. 602 603</ul> 604 605<p> These are default settings in Postfix version 2.2 and later. 606</p> 607 608<h2><a name="dialup">Postfix on a dialup machine</a></h2> 609 610<p> This section applies to dialup connections that are down most 611of the time. For dialup connections that are up 24x7, see the <a 612href="#local_network">local area network</a> section above. </p> 613 614<p> This section presents additional configuration. You need to 615combine this with basic configuration information as discussed the 616first half of this document. </p> 617 618<p> If you do not have your own hostname and IP address (usually 619with dialup, cable TV or DSL connections) then you should also 620study the section on "<a href="#fantasy">Postfix on hosts without 621a real Internet hostname</a>". </p> 622 623<ul> 624 625<li> Route all outgoing mail to your network provider. 626 627<p> If your machine is disconnected most of the time, there isn't 628a lot of opportunity for Postfix to deliver mail to hard-to-reach 629corners of the Internet. It's better to give the mail to a machine 630that is connected all the time. In the example below, the <tt>[]</tt> 631prevents Postfix from trying to look up DNS MX records. </p> 632 633<pre> 634/etc/postfix/main.cf: 635 relayhost = [smtprelay.someprovider.com] 636</pre> 637 638<li> <p><a name="spontaneous_smtp">Disable spontaneous SMTP mail 639delivery (if using on-demand dialup IP only).</a> </p> 640 641<p> Normally, Postfix attempts to deliver outbound mail at its convenience. 642If your machine uses on-demand dialup IP, this causes your system 643to place a telephone call whenever you submit new mail, and whenever 644Postfix retries to deliver delayed mail. To prevent such telephone 645calls from being placed, disable spontaneous SMTP mail deliveries. </p> 646 647<pre> 648/etc/postfix/main.cf: 649 defer_transports = smtp (Only for on-demand dialup IP hosts) 650</pre> 651 652<li> <p>Disable SMTP client DNS lookups (dialup LAN only).</p> 653 654<pre> 655/etc/postfix/main.cf: 656 disable_dns_lookups = yes (Only for on-demand dialup IP hosts) 657</pre> 658 659<li> Flush the mail queue whenever the Internet link is established. 660 661<p> Put the following command into your PPP or SLIP dialup scripts: </p> 662 663<pre> 664/usr/sbin/sendmail -q (whenever the Internet link is up) 665</pre> 666 667<p> The exact location of the Postfix sendmail command is system-specific. 668Use the command "<b>postconf sendmail_path</b>" to find out where the 669Postfix sendmail command is located on your machine. </p> 670 671<p> In order to find out if the mail queue is flushed, use something 672like: </p> 673 674<pre> 675#!/bin/sh 676 677# Start mail deliveries. 678/usr/sbin/sendmail -q 679 680# Allow deliveries to start. 681sleep 10 682 683# Loop until all messages have been tried at least once. 684while mailq | grep '^[^ ]*\*' >/dev/null 685do 686 sleep 10 687done 688</pre> 689 690<p> If you have disabled <a href="#spontaneous_smtp">spontaneous 691SMTP mail delivery</a>, you also need to run the "<b>sendmail -q</b>" 692command every now and then while the dialup link is up, so that 693newly-posted mail is flushed from the queue. </p> 694 695</ul> 696 697<h2><a name="fantasy">Postfix on hosts without a real Internet 698hostname</a></h2> 699 700<p> This section is for hosts that don't have their own Internet 701hostname. Typically these are systems that get a dynamic IP address 702via DHCP or via dialup. Postfix will let you send and receive mail 703just fine between accounts on a machine with a fantasy name. However, 704you cannot use a fantasy hostname in your email address when sending 705mail into the Internet, because no-one would be able to reply to 706your mail. In fact, more and more sites refuse mail addresses with 707non-existent domain names. </p> 708 709<p> Note: the following information is Postfix version dependent. 710To find out what Postfix version you have, execute the command 711"<b>postconf mail_version</b>". </p> 712 713<h3>Solution 1: Postfix version 2.2 and later </h3> 714 715<p> Postfix 2.2 uses the generic(5) address mapping to replace 716local fantasy email addresses by valid Internet addresses. This 717mapping happens ONLY when mail leaves the machine; not when you 718send mail between users on the same machine. </p> 719 720<p> The following example presents additional configuration. You 721need to combine this with basic configuration information as 722discussed the first half of this document. </p> 723 724<blockquote> 725<pre> 7261 /etc/postfix/main.cf: 7272 smtp_generic_maps = hash:/etc/postfix/generic 7283 7294 /etc/postfix/generic: 7305 his@localdomain.local hisaccount@hisisp.example 7316 her@localdomain.local heraccount@herisp.example 7327 @localdomain.local hisaccount+local@hisisp.example 733</pre> 734</blockquote> 735 736<p> When mail is sent to a remote host via SMTP: </p> 737 738<ul> 739 740<li> <p> Line 5 replaces <i>his@localdomain.local</i> by his ISP 741mail address, </p> 742 743<li> <p> Line 6 replaces <i>her@localdomain.local</i> by her ISP 744mail address, and </p> 745 746<li> <p> Line 7 replaces other local addresses by his ISP account, 747with an address extension of +<i>local</i> (this example assumes 748that the ISP supports "+" style address extensions). </p> 749 750</ul> 751 752<p>Specify <b>dbm</b> instead of <b>hash</b> if your system uses 753<b>dbm</b> files instead of <b>db</b> files. To find out what lookup 754tables Postfix supports, use the command "<b>postconf -m</b>". </p> 755 756<p> Execute the command "<b>postmap /etc/postfix/generic</b>" 757whenever you change the generic table. </p> 758 759<h3>Solution 2: Postfix version 2.1 and earlier </h3> 760 761<p> The solution with older Postfix systems is to use valid 762Internet addresses where possible, and to let Postfix map valid 763Internet addresses to local fantasy addresses. With this, you can 764send mail to the Internet and to local fantasy addresses, including 765mail to local fantasy addresses that don't have a valid Internet 766address of their own.</p> 767 768<p> The following example presents additional configuration. You 769need to combine this with basic configuration information as 770discussed the first half of this document. </p> 771 772<blockquote> 773<pre> 774 1 /etc/postfix/main.cf: 775 2 myhostname = hostname.localdomain 776 3 mydomain = localdomain 777 4 778 5 canonical_maps = hash:/etc/postfix/canonical 779 6 780 7 virtual_alias_maps = hash:/etc/postfix/virtual 781 8 782 9 /etc/postfix/canonical: 78310 your-login-name your-account@your-isp.com 78411 78512 /etc/postfix/virtual: 78613 your-account@your-isp.com your-login-name 787</pre> 788</blockquote> 789 790<p> Translation: </p> 791 792<ul> 793 794<li> <p> Lines 2-3: Substitute your fantasy hostname here. Do not 795use a domain name that is already in use by real organizations 796on the Internet. See RFC 2606 for examples of domain 797names that are guaranteed not to be owned by anyone. </p> 798 799<li> <p> Lines 5, 9, 10: This provides the mapping from 800"your-login-name@hostname.localdomain" to "your-account@your-isp.com". 801This part is required. </p> 802 803<li> <p> Lines 7, 12, 13: Deliver mail for "your-account@your-isp.com" 804locally, instead of sending it to the ISP. This part is not required 805but is convenient. 806 807</ul> 808 809<p>Specify <b>dbm</b> instead of <b>hash</b> if your system uses 810<b>dbm</b> files instead of <b>db</b> files. To find out what lookup 811tables Postfix supports, use the command "<b>postconf -m</b>". </p> 812 813<p> Execute the command "<b>postmap /etc/postfix/canonical</b>" 814whenever you change the canonical table. </p> 815 816<p> Execute the command "<b>postmap /etc/postfix/virtual</b>" 817whenever you change the virtual table. </p> 818 819</body> 820 821</html> 822