1 <!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN" 2 "https://www.w3.org/TR/html4/loose.dtd"> 3 4 <html> 5 6 <head> 7 8 <title> Postfix Basic Configuration </title> 9 10 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 11 <link rel='stylesheet' type='text/css' href='postfix-doc.css'> 12 13 </head> 14 15 <body> 16 17 <h1><img src="postfix-logo.jpg" width="203" height="98" ALT="">Postfix Basic Configuration </h1> 18 19 <hr> 20 21 <h2> Introduction </h2> 22 23 <p> Postfix has several hundred configuration parameters that are 24 controlled via the <a href="postconf.5.html">main.cf</a> file. Fortunately, all parameters have 25 sensible default values. In many cases, you need to configure only 26 two or three parameters before you can start to play with the mail 27 system. Here's a quick introduction to the syntax: </p> 28 29 <ul> 30 31 <li> <p> <a href="#syntax">Postfix configuration files</a></p> 32 33 </ul> 34 35 <p> The text below assumes that you already have Postfix installed 36 on the system, either by compiling the source code yourself (as 37 described in the <a href="INSTALL.html">INSTALL</a> file) or by installing an already compiled 38 version. </p> 39 40 <p> This document covers basic Postfix configuration. Information 41 about how to configure Postfix for specific applications such as 42 mailhub, firewall or dial-up client can be found in the 43 <a href="STANDARD_CONFIGURATION_README.html">STANDARD_CONFIGURATION_README</a> file. But don't go there until you 44 already have covered the material presented below. </p> 45 46 <p> The first parameters of interest specify the machine's identity 47 and role in the network. </p> 48 49 <ul> 50 51 <li> <p> <a href="#myorigin"> What domain name to use in outbound mail </a> </p> 52 53 <li> <p> <a href="#mydestination"> What domains to receive mail for </a> </p> 54 55 <li> <p> <a href="#relay_from"> What clients to relay mail from </a> </p> 56 57 <li> <p> <a href="#relay_to"> What destinations to relay mail to </a> </p> 58 59 <li> <p> <a href="#relayhost"> What delivery method: direct or 60 indirect </a> </p> 61 62 </ul> 63 64 <p> The default values for many other configuration parameters are 65 derived from just these. </p> 66 67 <p> The next parameter of interest controls the amount of mail sent 68 to the local postmaster: </p> 69 70 <ul> 71 72 <li> <p> <a href="#notify"> What trouble to report to the postmaster 73 </a> </p> 74 75 </ul> 76 77 <p> Be sure to set the following correctly if you're behind a proxy or 78 network address translator, and you are running a backup MX host 79 for some other domain: </p> 80 81 <ul> 82 83 <li> <p> <a href="#proxy_interfaces"> Proxy/NAT external network 84 addresses </a> </p> 85 86 </ul> 87 88 <p> Postfix daemon processes run in the background, and log problems 89 and normal activity to the syslog daemon. Here are a few things 90 that you need to be aware of: </p> 91 92 <ul> 93 94 <li> <p> <a href="#syslog_howto"> What you need to know about 95 Postfix logging </a> </p> 96 97 </ul> 98 99 <p> If your machine has unusual security requirements you may 100 want to run Postfix daemon processes inside a chroot environment. </p> 101 102 <ul> 103 104 <li> <p> <a href="#chroot_setup"> Running Postfix daemon processes 105 chrooted </a> </p> 106 107 </ul> 108 <p> If you run Postfix on a virtual network interface, or if your 109 machine runs other mailers on virtual interfaces, you'll have to 110 look at the other parameters listed here as well: </p> 111 112 <ul> 113 114 <li> <p> <a href="#myhostname"> My own hostname </a> </p> 115 116 <li> <p> <a href="#mydomain"> My own domain name </a> </p> 117 118 <li> <p> <a href="#inet_interfaces"> My own network addresses </a> </p> 119 120 </ul> 121 122 <h2> <a name="syntax">Postfix configuration files</a></h2> 123 124 <p> By default, Postfix configuration files are in /etc/postfix. 125 The two most important files are <a href="postconf.5.html">main.cf</a> and <a href="master.5.html">master.cf</a>; these files 126 must be owned by root. Giving someone else write permission to 127 <a href="postconf.5.html">main.cf</a> or <a href="master.5.html">master.cf</a> (or to their parent directories) means giving 128 root privileges to that person. </p> 129 130 <p> In /etc/postfix/<a href="postconf.5.html">main.cf</a> you will have to set up a minimal number 131 of configuration parameters. Postfix configuration parameters 132 resemble shell variables, with two important differences: the first 133 one is that Postfix does not know about quotes like the UNIX shell 134 does.</p> 135 136 <p> You specify a configuration parameter as: </p> 137 138 <blockquote> 139 <pre> 140 /etc/postfix/<a href="postconf.5.html">main.cf</a>: 141 parameter = value 142 </pre> 143 </blockquote> 144 145 <p> and you use it by putting a "$" character in front of its name: </p> 146 147 <blockquote> 148 <pre> 149 /etc/postfix/<a href="postconf.5.html">main.cf</a>: 150 other_parameter = $parameter 151 </pre> 152 </blockquote> 153 154 <p> You can use $parameter before it is given a value (that is the 155 second main difference with UNIX shell variables). The Postfix 156 configuration language uses lazy evaluation, and does not look at 157 a parameter value until it is needed at runtime. </p> 158 159 <p> Postfix uses database files for access control, address rewriting 160 and other purposes. The <a href="DATABASE_README.html">DATABASE_README</a> file gives an introduction 161 to how Postfix works with Berkeley DB, LDAP or SQL and other types. 162 Here is a common example of how Postfix invokes a database: </p> 163 164 <blockquote> 165 <pre> 166 /etc/postfix/<a href="postconf.5.html">main.cf</a>: 167 <a href="postconf.5.html#virtual_alias_maps">virtual_alias_maps</a> = <a href="DATABASE_README.html#types">hash</a>:/etc/postfix/virtual 168 </pre> 169 </blockquote> 170 171 <p> Whenever you make a change to the <a href="postconf.5.html">main.cf</a> or <a href="master.5.html">master.cf</a> file, 172 execute the following command as root in order to refresh a running 173 mail system: </p> 174 175 <blockquote> 176 <pre> 177 # postfix reload 178 </pre> 179 </blockquote> 180 181 <h2> <a name="myorigin"> What domain name to use in outbound mail </a> </h2> 182 183 <p> The <a href="postconf.5.html#myorigin">myorigin</a> parameter specifies the domain that appears in 184 mail that is posted on this machine. The default is to use the 185 local machine name, $<a href="postconf.5.html#myhostname">myhostname</a>, which defaults to the name of the 186 machine. Unless you are running a really small site, you probably 187 want to change that into $<a href="postconf.5.html#mydomain">mydomain</a>, which defaults to the parent 188 domain of the machine name. </p> 189 190 <p> For the sake of consistency between sender and recipient addresses, 191 <a href="postconf.5.html#myorigin">myorigin</a> also specifies the domain name that is appended 192 to an unqualified recipient address. </p> 193 194 <p> Examples (specify only one of the following): </p> 195 196 <blockquote> 197 <pre> 198 /etc/postfix/<a href="postconf.5.html">main.cf</a>: 199 <a href="postconf.5.html#myorigin">myorigin</a> = $<a href="postconf.5.html#myhostname">myhostname</a> (default: send mail as "user@$<a href="postconf.5.html#myhostname">myhostname</a>") 200 <a href="postconf.5.html#myorigin">myorigin</a> = $<a href="postconf.5.html#mydomain">mydomain</a> (probably desirable: "user@$<a href="postconf.5.html#mydomain">mydomain</a>") 201 </pre> 202 </blockquote> 203 204 <h2><a name="mydestination"> What domains to receive mail for </a> 205 </h2> 206 207 <p> The <a href="postconf.5.html#mydestination">mydestination</a> parameter specifies what domains this 208 machine will deliver locally, instead of forwarding to another 209 machine. The default is to receive mail for the machine itself. 210 See the <a href="VIRTUAL_README.html">VIRTUAL_README</a> file for how to configure Postfix for 211 <a href="VIRTUAL_README.html#canonical">hosted domains</a>. </p> 212 213 <p> You can specify zero or more domain names, "/file/name" patterns 214 and/or "<a href="DATABASE_README.html">type:table</a>" lookup tables (such as <a href="DATABASE_README.html#types">hash</a>:, <a href="DATABASE_README.html#types">btree</a>:, nis:, <a href="ldap_table.5.html">ldap</a>:, 215 or <a href="mysql_table.5.html">mysql</a>:), separated by whitespace and/or commas. A "/file/name" 216 pattern is replaced by its contents; "<a href="DATABASE_README.html">type:table</a>" requests that a 217 table lookup is done and merely tests for existence: the lookup 218 result is ignored. </p> 219 220 <p> IMPORTANT: If your machine is a mail server for its entire 221 domain, you must list $<a href="postconf.5.html#mydomain">mydomain</a> as well. </p> 222 223 <p> Example 1: default setting. </p> 224 225 <blockquote> 226 <pre> 227 /etc/postfix/<a href="postconf.5.html">main.cf</a>: 228 <a href="postconf.5.html#mydestination">mydestination</a> = $<a href="postconf.5.html#myhostname">myhostname</a> localhost.$<a href="postconf.5.html#mydomain">mydomain</a> localhost 229 </pre> 230 </blockquote> 231 232 <p> Example 2: domain-wide mail server. </p> 233 234 <blockquote> 235 <pre> 236 /etc/postfix/<a href="postconf.5.html">main.cf</a>: 237 <a href="postconf.5.html#mydestination">mydestination</a> = $<a href="postconf.5.html#myhostname">myhostname</a> localhost.$<a href="postconf.5.html#mydomain">mydomain</a> localhost $<a href="postconf.5.html#mydomain">mydomain</a> 238 </pre> 239 </blockquote> 240 241 <p> Example 3: host with multiple DNS A records. </p> 242 243 <blockquote> 244 <pre> 245 /etc/postfix/<a href="postconf.5.html">main.cf</a>: 246 <a href="postconf.5.html#mydestination">mydestination</a> = $<a href="postconf.5.html#myhostname">myhostname</a> localhost.$<a href="postconf.5.html#mydomain">mydomain</a> localhost 247 www.$<a href="postconf.5.html#mydomain">mydomain</a> ftp.$<a href="postconf.5.html#mydomain">mydomain</a> 248 </pre> 249 </blockquote> 250 251 <p> Caution: in order to avoid mail delivery loops, you must list all 252 hostnames of the machine, including $<a href="postconf.5.html#myhostname">myhostname</a>, and localhost.$<a href="postconf.5.html#mydomain">mydomain</a>. </p> 253 254 <h2> <a name="relay_from"> What clients to relay mail from </a> </h2> 255 256 <p> By default, Postfix will forward mail from clients in authorized 257 network blocks to any destination. Authorized networks are defined 258 with the <a href="postconf.5.html#mynetworks">mynetworks</a> configuration parameter. The current default is to 259 authorize the local machine only. Prior to Postfix 3.0, the default 260 was to authorize all clients in the IP subnetworks that the local 261 machine is attached to. </p> 262 263 <p> Postfix can also be configured to relay mail from "mobile" 264 clients that send mail from outside an authorized network block. 265 This is explained in the <a href="SASL_README.html">SASL_README</a> and <a href="TLS_README.html">TLS_README</a> documents. </p> 266 267 <p> IMPORTANT: If your machine is connected to a wide area network 268 then the "<a href="postconf.5.html#mynetworks_style">mynetworks_style</a> = subnet" setting may be too friendly. </p> 269 270 <p> Examples (specify only one of the following): </p> 271 272 <blockquote> 273 <pre> 274 /etc/postfix/<a href="postconf.5.html">main.cf</a>: 275 <a href="postconf.5.html#mynetworks_style">mynetworks_style</a> = subnet (not safe on a wide area network) 276 <a href="postconf.5.html#mynetworks_style">mynetworks_style</a> = host (authorize local machine only) 277 <a href="postconf.5.html#mynetworks">mynetworks</a> = 127.0.0.0/8 (authorize local machine only) 278 <a href="postconf.5.html#mynetworks">mynetworks</a> = 127.0.0.0/8 168.100.189.2/32 (authorize local machine) 279 <a href="postconf.5.html#mynetworks">mynetworks</a> = 127.0.0.0/8 168.100.189.2/28 (authorize local networks) 280 </pre> 281 </blockquote> 282 283 <p> You can specify the trusted networks in the <a href="postconf.5.html">main.cf</a> file, or 284 you can let Postfix do the work for you. The default is to let 285 Postfix do the work. The result depends on the <a href="postconf.5.html#mynetworks_style">mynetworks_style</a> 286 parameter value. 287 288 <ul> 289 290 <li> <p> Specify "<a href="postconf.5.html#mynetworks_style">mynetworks_style</a> = host" (the default when 291 <a href="postconf.5.html#compatibility_level">compatibility_level</a> ≥ 2) when Postfix should forward mail from 292 only the local machine. </p> 293 294 <li> <p> Specify "<a href="postconf.5.html#mynetworks_style">mynetworks_style</a> = subnet" (the default when 295 <a href="postconf.5.html#compatibility_level">compatibility_level</a> < 2) when Postfix should forward mail from 296 SMTP clients in the same IP subnetworks as the local machine. 297 On Linux, this works correctly only with interfaces specified 298 with the "ifconfig" or "ip" command. </p> 299 300 <li> <p> Specify "<a href="postconf.5.html#mynetworks_style">mynetworks_style</a> = class" when Postfix should 301 forward mail from SMTP clients in the same IP class A/B/C networks 302 as the local machine. Don't do this with a dialup site - it would 303 cause Postfix to "trust" your entire provider's network. Instead, 304 specify an explicit <a href="postconf.5.html#mynetworks">mynetworks</a> list by hand, as described below. 305 </p> 306 307 </ul> 308 309 <p> Alternatively, you can specify the <a href="postconf.5.html#mynetworks">mynetworks</a> list by hand, 310 in which case Postfix ignores the <a href="postconf.5.html#mynetworks_style">mynetworks_style</a> setting. 311 To specify the list of trusted networks by hand, specify network 312 blocks in CIDR (network/mask) notation, for example: </p> 313 314 <blockquote> 315 <pre> 316 /etc/postfix/<a href="postconf.5.html">main.cf</a>: 317 <a href="postconf.5.html#mynetworks">mynetworks</a> = 168.100.189.0/28, 127.0.0.0/8 318 </pre> 319 </blockquote> 320 321 <p> You can also specify the absolute pathname of a pattern file instead 322 of listing the patterns in the <a href="postconf.5.html">main.cf</a> file. </p> 323 324 <h2> <a name="relay_to"> What destinations to relay mail to </a> </h2> 325 326 <p> By default, Postfix will forward mail from strangers (clients outside 327 authorized networks) to authorized remote destinations only. 328 Authorized remote 329 destinations are defined with the <a href="postconf.5.html#relay_domains">relay_domains</a> configuration 330 parameter. The default is to authorize all domains (and subdomains) 331 of the domains listed with the <a href="postconf.5.html#mydestination">mydestination</a> parameter. </p> 332 333 <p> Examples (specify only one of the following): </p> 334 335 <blockquote> 336 <pre> 337 /etc/postfix/<a href="postconf.5.html">main.cf</a>: 338 <a href="postconf.5.html#relay_domains">relay_domains</a> = $<a href="postconf.5.html#mydestination">mydestination</a> (default) 339 <a href="postconf.5.html#relay_domains">relay_domains</a> = (safe: never forward mail from strangers) 340 <a href="postconf.5.html#relay_domains">relay_domains</a> = $<a href="postconf.5.html#mydomain">mydomain</a> (forward mail to my domain and subdomains) 341 </pre> 342 </blockquote> 343 344 <h2> <a name="relayhost"> What delivery method: direct or 345 indirect </a> </h2> 346 347 <p> By default, Postfix tries to deliver mail directly to the 348 Internet. Depending on your local conditions this may not be possible 349 or desirable. For example, your system may be turned off outside 350 office hours, it may be behind a firewall, or it may be connected 351 via a provider who does not allow direct mail to the Internet. In 352 those cases you need to configure Postfix to deliver mail indirectly 353 via a <a href="postconf.5.html#relayhost">relay host</a>. </p> 354 355 <p> Examples (specify only one of the following): </p> 356 357 <blockquote> 358 <pre> 359 /etc/postfix/<a href="postconf.5.html">main.cf</a>: 360 <a href="postconf.5.html#relayhost">relayhost</a> = (default: direct delivery to Internet) 361 <a href="postconf.5.html#relayhost">relayhost</a> = $<a href="postconf.5.html#mydomain">mydomain</a> (deliver via local mailhub) 362 <a href="postconf.5.html#relayhost">relayhost</a> = [mail.$<a href="postconf.5.html#mydomain">mydomain</a>] (deliver via local mailhub) 363 <a href="postconf.5.html#relayhost">relayhost</a> = [mail.isp.tld] (deliver via provider mailhub) 364 </pre> 365 </blockquote> 366 367 <p> The form enclosed with <tt>[]</tt> eliminates DNS MX lookups. 368 Don't worry if you don't know what that means. Just be sure to 369 specify the <tt>[]</tt> around the mailhub hostname that your ISP 370 gave to you, otherwise mail may be mis-delivered. </p> 371 372 <p> The <a href="STANDARD_CONFIGURATION_README.html">STANDARD_CONFIGURATION_README</a> file has more hints and tips 373 for firewalled and/or dial-up networks. </p> 374 375 <h2> <a name="notify"> What trouble to report to the postmaster</a> </h2> 376 377 <p> You should set up a postmaster alias in the <a href="aliases.5.html">aliases(5)</a> table 378 that directs mail to a human person. The postmaster address is 379 required to exist, so that people can report mail delivery problems. 380 While you're updating the <a href="aliases.5.html">aliases(5)</a> table, be sure to direct mail 381 for the super-user to a human person too. </p> 382 383 <blockquote> 384 <pre> 385 /etc/aliases: 386 postmaster: you 387 root: you 388 </pre> 389 </blockquote> 390 391 <p> Execute the command "newaliases" after changing the aliases 392 file. Instead of /etc/aliases, your alias file may be located 393 elsewhere. Use the command "postconf <a href="postconf.5.html#alias_maps">alias_maps</a>" to find out.</p> 394 395 <p> The Postfix system reports problems to the postmaster alias. 396 You may not be interested in all types of trouble reports, so this 397 reporting mechanism is configurable. The default is to report only 398 serious problems (resource, software) to postmaster: </p> 399 400 <p> Default setting: </p> 401 402 <blockquote> 403 <pre> 404 /etc/postfix/<a href="postconf.5.html">main.cf</a>: 405 <a href="postconf.5.html#notify_classes">notify_classes</a> = resource, software 406 </pre> 407 </blockquote> 408 409 <p> The meaning of the classes is as follows: </p> 410 411 <blockquote> 412 413 <dl> 414 415 <dt> bounce </dt> <dd> Inform the postmaster of undeliverable 416 mail. Either send the postmaster a copy of undeliverable mail that 417 is returned to the sender, or send a transcript of the SMTP session 418 when Postfix rejected mail. For privacy reasons, the postmaster 419 copy of undeliverable mail is truncated after the original message 420 headers. This implies "2bounce" (see below). See also the 421 <a href="postconf.5.html#luser_relay">luser_relay</a> feature. The notification is sent to the address 422 specified with the <a href="postconf.5.html#bounce_notice_recipient">bounce_notice_recipient</a> configuration parameter 423 (default: postmaster). </dd> 424 425 <dt> 2bounce </dt> <dd> When Postfix is unable to return undeliverable 426 mail to the sender, send it to the postmaster instead (without 427 truncating the message after the primary headers). The notification 428 is sent to the address specified with the <a href="postconf.5.html#2bounce_notice_recipient">2bounce_notice_recipient</a> 429 configuration parameter (default: postmaster). </dd> 430 431 <dt> delay </dt> <dd> Inform the postmaster of delayed mail. In 432 this case, the postmaster receives message headers only. The 433 notification is sent to the address specified with the 434 <a href="postconf.5.html#delay_notice_recipient">delay_notice_recipient</a> configuration parameter (default: postmaster). 435 </dd> 436 437 <dt> policy </dt> <dd> Inform the postmaster of client requests 438 that were rejected because of (UCE) policy restrictions. The 439 postmaster receives a transcript of the SMTP session. The notification 440 is sent to the address specified with the <a href="postconf.5.html#error_notice_recipient">error_notice_recipient</a> 441 configuration parameter (default: postmaster). </dd> 442 443 <dt> protocol </dt> <dd> Inform the postmaster of protocol errors 444 (client or server side) or attempts by a client to execute 445 unimplemented commands. The postmaster receives a transcript of 446 the SMTP session. The notification is sent to the address specified 447 with the <a href="postconf.5.html#error_notice_recipient">error_notice_recipient</a> configuration parameter (default: 448 postmaster). </dd> 449 450 <dt> resource </dt> <dd> Inform the postmaster of mail not delivered 451 due to resource problems (for example, queue file write errors). 452 The notification is sent to the address specified with the 453 <a href="postconf.5.html#error_notice_recipient">error_notice_recipient</a> configuration parameter (default: postmaster). 454 </dd> 455 456 <dt> software </dt> <dd> Inform the postmaster of mail not delivered 457 due to software problems. The notification is sent to the address 458 specified with the <a href="postconf.5.html#error_notice_recipient">error_notice_recipient</a> configuration parameter 459 (default: postmaster). </dd> 460 461 </dl> 462 463 </blockquote> 464 465 <h2><a name="proxy_interfaces"> Proxy/NAT external network 466 addresses</a> </h2> 467 468 <p> Some mail servers are connected to the Internet via a network 469 address translator (NAT) or proxy. This means that systems on the 470 Internet connect to the address of the NAT or proxy, instead of 471 connecting to the network address of the mail server. The NAT or 472 proxy forwards the connection to the network address of the mail 473 server, but Postfix does not know this. </p> 474 475 <p> If you run a Postfix server behind a proxy or NAT, you need to 476 configure the <a href="postconf.5.html#proxy_interfaces">proxy_interfaces</a> parameter and specify all the external 477 proxy or NAT addresses that Postfix receives mail on. You may 478 specify symbolic hostnames instead of network addresses. </p> 479 480 <p> IMPORTANT: You must specify your proxy/NAT external addresses 481 when your system is a backup MX host for other domains, otherwise 482 mail delivery loops will happen when the primary MX host is down. 483 </p> 484 485 <p> Example: host behind NAT box running a backup MX host. </p> 486 487 <blockquote> 488 <pre> 489 /etc/postfix/<a href="postconf.5.html">main.cf</a>: 490 <a href="postconf.5.html#proxy_interfaces">proxy_interfaces</a> = 1.2.3.4 (the proxy/NAT external network address) 491 </pre> 492 </blockquote> 493 494 <h2> <a name="syslog_howto"> What you need to know about 495 Postfix logging </a> </h2> 496 497 <p> Postfix daemon processes run in the background, and log problems 498 and normal activity to the syslog daemon. The syslogd process sorts 499 events by class and severity, and appends them to logfiles. The 500 logging classes, levels and logfile names are usually specified in 501 /etc/syslog.conf. At the very least you need something like: </p> 502 503 <blockquote> 504 <pre> 505 /etc/syslog.conf: 506 mail.err /dev/console 507 mail.debug /var/log/maillog 508 </pre> 509 </blockquote> 510 511 <p> After changing the syslog.conf file, send a "HUP" signal to 512 the syslogd process. </p> 513 514 <p> IMPORTANT: many syslogd implementations will not create files. 515 You must create files before (re)starting syslogd. </p> 516 517 <p> IMPORTANT: on Linux you need to put a "-" character before the 518 pathname, e.g., -/var/log/maillog, otherwise the syslogd process 519 will use more system resources than Postfix. </p> 520 521 <p> Hopefully, the number of problems will be small, but it is a good 522 idea to run every night before the syslog files are rotated: </p> 523 524 <blockquote> 525 <pre> 526 # postfix check 527 # grep -E '(reject|warning|error|fatal|panic):' /some/log/file 528 </pre> 529 </blockquote> 530 531 <ul> 532 533 <li> <p> The first line (postfix check) causes Postfix to report 534 file permission/ownership discrepancies. </p> 535 536 <li> <p> The second line looks for problem reports from the mail 537 software, and reports how effective the relay and junk mail access 538 blocks are. This may produce a lot of output. You will want to 539 apply some postprocessing to eliminate uninteresting information. 540 </p> 541 542 </ul> 543 544 <p> The <a href="DEBUG_README.html#logging"> DEBUG_README </a> 545 document describes the meaning of the "warning" etc. labels in 546 Postfix logging. </p> 547 548 <h2> <a name="chroot_setup"> Running Postfix daemon processes 549 chrooted </a> </h2> 550 551 <p> Postfix daemon processes can be configured (via the <a href="master.5.html">master.cf</a> 552 file) to run in a chroot jail. The processes run at a fixed low 553 privilege and with file system access limited to the Postfix queue 554 directories (/var/spool/postfix). This provides a significant 555 barrier against intrusion. The barrier is not impenetrable (chroot 556 limits file system access only), but every little bit helps.</p> 557 558 <p>With the exception of Postfix daemons that deliver mail locally 559 and/or that execute non-Postfix commands, every Postfix daemon can 560 run chrooted.</p> 561 562 <p>Sites with high security requirements should consider to chroot 563 all daemons that talk to the network: the <a href="smtp.8.html">smtp(8)</a> and <a href="smtpd.8.html">smtpd(8)</a> 564 processes, and perhaps also the <a href="lmtp.8.html">lmtp(8)</a> client. The author's own 565 porcupine.org mail server runs all daemons chrooted that can be 566 chrooted. </p> 567 568 <p>The default /etc/postfix/<a href="master.5.html">master.cf</a> file specifies that no Postfix 569 daemon runs chrooted. In order to enable chroot operation, edit 570 the file /etc/postfix/<a href="master.5.html">master.cf</a>, and follow instructions in the 571 file. When you're finished, execute "postfix reload" to make the 572 change effective. </p> 573 574 <p>Note that a chrooted daemon resolves all filenames relative to 575 the Postfix queue directory (/var/spool/postfix). For successful 576 use of a chroot jail, most UNIX systems require you to bring in 577 some files or device nodes. The examples/chroot-setup directory in 578 the source code distribution has a collection of scripts that help 579 you set up Postfix chroot environments on different operating 580 systems.</p> 581 582 <p> Additionally, you almost certainly need to configure syslogd 583 so that it listens on a socket inside the Postfix queue directory. 584 Examples of syslogd command line options that achieve this for 585 specific systems: </p> 586 587 <p> FreeBSD: <tt>syslogd -l /var/spool/postfix/var/run/log</tt> </p> 588 589 <p> Linux, OpenBSD: <tt>syslogd -a /var/spool/postfix/dev/log</tt> </p> 590 591 <h2><a name="myhostname"> My own hostname </a> </h2> 592 593 <p> The <a href="postconf.5.html#myhostname">myhostname</a> parameter specifies the fully-qualified domain 594 name of the machine running the Postfix system. $<a href="postconf.5.html#myhostname">myhostname</a> 595 appears as the default value in many other Postfix configuration 596 parameters. </p> 597 598 <p> By default, <a href="postconf.5.html#myhostname">myhostname</a> is set to the local machine name. If 599 your local machine name is not in fully-qualified domain name form, 600 or if you run Postfix on a virtual interface, you will have to 601 specify the fully-qualified domain name that the mail system should 602 use. </p> 603 604 <p> Alternatively, if you specify <a href="postconf.5.html#mydomain">mydomain</a> in <a href="postconf.5.html">main.cf</a>, then Postfix 605 will use its value to generate a fully-qualified default value 606 for the <a href="postconf.5.html#myhostname">myhostname</a> parameter. </p> 607 608 <p> Examples (specify only one of the following): </p> 609 610 <blockquote> 611 <pre> 612 /etc/postfix/<a href="postconf.5.html">main.cf</a>: 613 <a href="postconf.5.html#myhostname">myhostname</a> = host.local.domain (machine name is not FQDN) 614 <a href="postconf.5.html#myhostname">myhostname</a> = host.virtual.domain (virtual interface) 615 <a href="postconf.5.html#myhostname">myhostname</a> = virtual.domain (virtual interface) 616 </pre> 617 </blockquote> 618 619 <h2><a name="mydomain"> My own domain name</a> </h2> 620 621 <p> The <a href="postconf.5.html#mydomain">mydomain</a> parameter specifies the parent domain of 622 $<a href="postconf.5.html#myhostname">myhostname</a>. By default, it is derived from $<a href="postconf.5.html#myhostname">myhostname</a> 623 by stripping off the first part (unless the result would be a 624 top-level domain). </p> 625 626 <p> Conversely, if you specify <a href="postconf.5.html#mydomain">mydomain</a> in <a href="postconf.5.html">main.cf</a>, then Postfix 627 will use its value to generate a fully-qualified default value 628 for the <a href="postconf.5.html#myhostname">myhostname</a> parameter. </p> 629 630 <p> Examples (specify only one of the following): </p> 631 632 <blockquote> 633 <pre> 634 /etc/postfix/<a href="postconf.5.html">main.cf</a>: 635 <a href="postconf.5.html#mydomain">mydomain</a> = local.domain 636 <a href="postconf.5.html#mydomain">mydomain</a> = virtual.domain (virtual interface) 637 </pre> 638 </blockquote> 639 640 <h2><a name="inet_interfaces">My own network addresses</a> </h2> 641 642 <p>The <a href="postconf.5.html#inet_interfaces">inet_interfaces</a> parameter specifies all network interface 643 addresses that the Postfix system should listen on; mail addressed 644 to "user@[network address]" will be delivered locally, 645 as if it is addressed to a domain listed in $<a href="postconf.5.html#mydestination">mydestination</a>.</p> 646 647 <p> You can override the <a href="postconf.5.html#inet_interfaces">inet_interfaces</a> setting in the Postfix 648 <a href="master.5.html">master.cf</a> file by prepending an IP address to a server name. </p> 649 650 <p> The default is to listen on all active interfaces. If you run 651 mailers on virtual interfaces, you will have to specify what 652 interfaces to listen on. </p> 653 654 <p> IMPORTANT: If you run MTAs on virtual interfaces you must 655 specify explicit <a href="postconf.5.html#inet_interfaces">inet_interfaces</a> values for the MTA that receives 656 mail for the machine itself: this MTA should never listen on the 657 virtual interfaces or you would have a mailer loop when a virtual 658 MTA is down. </p> 659 660 <p> Example: default setting. </p> 661 662 <blockquote> 663 <pre> 664 /etc/postfix/<a href="postconf.5.html">main.cf</a>: 665 <a href="postconf.5.html#inet_interfaces">inet_interfaces</a> = all 666 </pre> 667 </blockquote> 668 669 <p> Example: host running one or more virtual mailers. For 670 each Postfix instance, specify only one of the following. </p> 671 672 <blockquote> 673 <pre> 674 /etc/postfix/<a href="postconf.5.html">main.cf</a>: 675 <a href="postconf.5.html#inet_interfaces">inet_interfaces</a> = virtual.host.tld (virtual Postfix) 676 <a href="postconf.5.html#inet_interfaces">inet_interfaces</a> = $<a href="postconf.5.html#myhostname">myhostname</a> localhost... (non-virtual Postfix) 677 </pre> 678 </blockquote> 679 680 <p> Note: you need to stop and start Postfix after changing this 681 parameter. </p> 682 683 </body> 684 685 </html> 686