Import Postfix 2.10.2. Major changes since version 2.9.* are:

- Separation of relay policy (with smtpd_relay_restrictions) from spam policy
  (with smtpd_{client, helo, sender, recipient}_restrictions), which makes
  accidental open relay configuration less likely. The default is backwards
  compatible.
- HAproxy load-balancer support for postscreen(8) and smtpd(8). The nginx
  proxy was already supported by Postfix 2.9 smtpd(8), using XCLIENT commands.
- Support for the TLSv1 and TLSv2 protocols, as well as support to turn them
  off if needed for inter-operability.
- Laptop-friendly configuration. By default, Postfix now uses UNIX-domain
  sockets instead of FIFOs, and thus avoids MTIME file system updates on an
  idle mail system.
- Revised postconf(1) command. The "-x" option expands $name in a parameter
  value (both main.cf and master.cf); the "-o name=value" option overrides
  a main.cf parameter setting; and postconf(1) now warns about a $name that
  has no name=value setting.
- Sendmail-style "socketmap" lookup tables.
This commit is contained in:
tron 2013-09-25 19:06:17 +00:00
parent f72123316b
commit e6ca80d439
235 changed files with 8361 additions and 2925 deletions

View File

@ -17203,6 +17203,7 @@ Apologies for any names omitted.
smtp/smtp_params.c, smtp/smtp_proto.c, smtpd/smtpd.c,
tls/tls.h, tls/tls_client.c, tls/tls_misc.c, tls/tls_server.c,
tlsmgr/tlsmgr.c, tlsproxy/tlsproxy.c.
20111203
Cleanup: time-dependent sender addresses of address
@ -17603,10 +17604,10 @@ Apologies for any names omitted.
20120130
Bugfix (introduced: Postfix 2.3): the trace service did not
distinguish between notifications for a non-bounce or a
bounce message. This code pre-dates DSN support and should
have been updated when it was re-purposed to handle DSN
SUCCESS notifications. Problem reported by Sabahattin
distinguish between DSN SUCCESS notifications for a non-bounce
or a bounce message. This code pre-dates DSN support and
should have been updated when it was re-purposed to handle
DSN SUCCESS notifications. Problem reported by Sabahattin
Gucukoglu. File: bounce/bounce_trace_service.c.
20120202
@ -17619,9 +17620,9 @@ Apologies for any names omitted.
20120214
Bugfix (introduced: Postfix 2.4): extraneous null assignment
caused core dump when postlog emitted the "usage" message.
Reported by Kant (fnord.hammer). File: postlog/postlog.c.
Bugfix (introduced: Postfix 2.4): extraneous null assignment
caused core dump when postlog emitted the "usage" message.
Reported by Kant (fnord.hammer). File: postlog/postlog.c.
20120217
@ -17630,12 +17631,100 @@ Apologies for any names omitted.
call was moved closer to the command processor loop. Fix
by Bartek Szady. File: smtpd/smtpd.c.
20120220
Cleanup: documentation of how to use only system-supplied
certificates with *CAfile and *CApath. File: proto/postconf.proto.
Cleanup: documentation of smtp_sasl_mechanism_filter. File:
proto/postconf.proto.
20120222
Cleanup: when multiple DNSBLs block an SMTP client, the
postscreen "reject" message now gives credit to the DNSBL
with the largest weight, instead of the DNSBL that replies
first. File: postscreen/postscreeb_dnsbl.c.
Cleanup: memcache_table(5) manpage. File proto/memcache_table.
20120225
Cleanup: eliminated the build-time Perl dependency. File:
bounce/annotate.sh.
Cleanup: when -DNO_DB support was added, the makedefs script
was not updated to skip the Linux Berkeley DB tests.
FreeBSD9 is now a supported platform. Files: makedefs,
util/sys_defs.h.
20120226
Cleanup: documentation in postfix-install.
20120229
Feature: smtpd_log_access_permit_actions to enable logging
of specific permit-like actions in Postfix SMTP server
access lists. Files: mantools/postlink, proto/postconf.proto,
global/mail_params.h, smtpd/smtpd.c, smtpd/smtpd_check.c.
20120306
To improve the interaction with start-up scripts, "postfix
start" now waits for master daemon process initialization
to complete, and returns a non-zero exit status if daemon
initialization failed or if it did not complete in a
reasonable amount of time. This involves a new "-w" master
option. Files: conf/postfix-script, master/master.c,
master/master.h. master/master_monitor.c.
20120307
postconf -X option to exclude parameters from main.cf
(require two-finger action, because this is irreversible).
Files: postconf/postconf.[hc], postconf/postconf_edit.c.
20120317
Feature: Sendmail-style socketmap. Files: util/dict_sockmap.[hc],
util/netstring.[hc], proto/DATABASE_README.html,
postconf/postconf.c.
20120330
Workaround: specify "\c" at the start of an smtp_reject_footer
template to suppress the line break between the reply text
and the footer text. Files: global/smtp_reply_footer.c,
proto/postconf.proto.
20120401
Bugfix (introduced Postfix 2.6): irrelevant memory leak
that was introduced with postconf -#. File:
postconf/postconf_edit.c.
Bitrot: shut up useless warnings about Cyrus SASL call-back
function pointer type mis-matches. Files: xsasl/xsasl_cyrus.h,
xsasl/xsasl_cyrus_server.c, xsasl/xsasl_client.c.
20120404
Cleanup: added smtpd_sender_login_maps to the default
proxy_read_maps value. Files: global/mail_params.h,
proxymap/proxymap.c.
Cleanup: weed out stale TODO's from the WISHLIST, and moved
some CYA text from WISHLIST into the code. Files: WISHLIST,
smtpd/smtpd_proxy.c.
20120407
Bugfix (introduced: 20120330): don't replace <reply-code>
<space> by <reply-code> <hyphen> when a reply footer starts
with \c and contains no \n. File: global/smtp_reply_footer.c.
20120422
Bit-rot: OpenSSL 1.0.1 introduces new protocols. Update the
@ -17649,16 +17738,22 @@ Apologies for any names omitted.
Workaround: bugs in 10-year old gcc versions break compilation
with #ifdef inside a macro invocation (NOT: definition).
This synchronizes the Postfix 2.9 TLS implementation with
Postfix 2.10 to simplify code maintenance. Files: tls/tls.h,
tls/tls_client.c, tls/tls_server.c.
Files: tls/tls.h, tls/tls_client.c, tls/tls_server.c.
20120426
Bugfix (introduced Postfix 2.9): the postconf command flagged
parameters defined in master.cf as "unused" when they were
used only in main.cf. Problem reported by Michael Tokarev.
Files: postconf/postconf_user.c.
Files: postconf/postconf_user.c, postconf/test4b.ref,
postconf Makefile.in.
20120513
Cleanup: report both the first and last line number when a
malformed main.cf entry spans multiple lines, instead of
reporting the last line number only. File: util/dict.c,
util/line_number.[hc].
20120516
@ -17678,6 +17773,10 @@ Apologies for any names omitted.
without any Postfix performance impact. Problem reported
by Sahil Tandon. File: dnsblog/dnsblog.c.
Logging: postscreen now logs a warning when a dnsblog(8)
request takes longer than the hard-coded time limit of 10s.
File: postscreen/postscreen_dnsbl.c.
20120517
Workaround: to avoid crashes when the OpenSSL library is
@ -17702,11 +17801,88 @@ Apologies for any names omitted.
and qmgr servers before closing the UNIX-domain request
sockets. Files: postqueue/postqueue.c, postqueue/Makefile.in.
20120522
Robustness: set LC_ALL=C in post-install to avoid surprises
when parsing output from Postfix or non-Postfix commands.
File: postfix-install.
20120611
Bugfix (introduced: 20031216-21): with soft_bounce=yes, the
SMTP client did not move on to the next MX host or fallback
relay after a 5xx reply. File: smtp/smtp_trouble.c.
20120527-8
Infrastructure: limited support to shrink VSTREAM buffers.
The change takes place when reading from (a stream for the
first time | an empty buffer) or when writing to (a stream
for the first time | a full buffer). TODO: the change should
also happen after purging or flushing a buffer. File:
util/vstream.c.
20120531-617
Feature: haproxy support in postscreen(8) and smtpd(8). To
enable, specify "smtpd_upstream_proxy_protocol = haproxy"
or "postscreen_upstream_proxy_protocol = haproxy". Files:
mantools/postlink, proto/postconf.proto, global/Makefile.in,
global/haproxy_srvr.c, global/haproxy_srvr.h, global/mail_params.h,
global/mail_proto.h, master/single_server.c, master/multi_server.c,
master/event_server.c, postscreen/Makefile.in,
postscreen/postscreen.c, postscreen/postscreen.h,
postscreen/postscreen_endpt.c, postscreen/postscreen_haproxy.c,
postscreen/postscreen_haproxy.h, postscreen/postscreen_send.c,
postscreen/postscreen_state.c, smtpd/Makefile.in, smtpd/smtpd.h,
smtpd/smtpd_peer.c, smtpd/smtpd_sasl_glue.c, smtpd/smtpd_haproxy.c,
util/Makefile.in, util/listen.h, util/recv_pass_attr.c,
util/stream_listen.c, util/sys_defs.h, util/unix_pass_listen.c.
20120618
Cleanup: made the postscreen-to-smtpd haproxy attribute
transmission more robust for Solaris. Files: util/sys_defs.h,
util/connect.h, util/steam_listen.c, postscreen/postscreen_send.c.
Cleanup: simplified the "stream used" workaround. Files:
util/vstream.h, master/event_server.c, master/multi_server.c.
20120621
Bugfix (introduced: Postfix 2.8): the unused "pass" trigger
client could close the wrong file descriptors. File:
util/unix_pass_trigger.c.
Cleanup: simplified workarounds for Solaris streams versus
UNIX-domain sockets. Files: util/pass_accept.c (new),
util/pass_trigger.c (new), util/stream_pass_connect.c
(deleted), util/unix_pass_listen.c (deleted),
util/unix_pass_trigger.c (deleted), updated header files,
and replaced PASS_XXX macros by pass_xxx function calls.
Cleanup: don't clobber errno when logging a problem.
File util/msg_output.c.
20120627
Bugfix (introduced: 20120531-617): in the postscreen module
for HAproxy sypport, a VSTREAM buffer size request was not
LP64-clean. File: postscreen/postscreen_haproxy.c.
Cleanup: avoid single-character reads in the postscreen
HAproxy module. File: postscreen/postscreen_haproxy.c.
20120628
Workaround: heuristic to detect missing (ssize_t) type-cast
in VSTREAM buffer size requests. File: util/vstream.c.
20120629
Workaround: "sendmail -bl" emulation. File: sendmail/sendmail.c.
20120630
Cleanup: sub-optimal hash performance on systems where the
"char" type is signed. Files: util/htable.c, util/binhash.c.
20120702
@ -17714,10 +17890,123 @@ Apologies for any names omitted.
unprivileged UDP socket. Fix by Jaroslav Skarvada. File:
local/biff_notify.c.
20120713
Bugfix (introduced: 20120527-8): infrastructure to specify
a smaller-than-default VSTREAM buffer, without the complex
run-time checks. File: util/vstream.c, vstream_tweak.c.
20120714
Cleanup: semantics of requests to query or modify the VSTREAM
buffer size that will be used with the next read(2) or
write(2) operation. Files: util/vstream.c, util/vstream.h,
util/vstream_tweak.c.
20120717
Documentation: update to RFC5321.
20120730
Bugfix (introduced: 20000314): AUTH is not allowed after
MAIL. Timo Sirainen. File: smtpd/smtpd_sasl_proto.c.
MAIL. Timo Sirainen. Files: smtpd/smtpd.c, smtpd/smtpd.h,
smtpd/smtpd_sasl_proto.c.
20120801
Documentation: point of what virtual_xxx parameters are
specific to the virtual(8) delivery agent, and will have
no effect when mail is delivered with a different program.
Files: proto/postconf.proto, proto/VIRTUAL_README.html.
20120824
Feature: support for "sendmail -R hdrs|full". Jan Kundrát.
File: sendmail/sendmail.c.
20120902
Documentation: updated TUNING_README with new pointers to
the STRESS_README and POSTSCREEN_README documents. Miscellaneous
documentation clarifications based on postfix-users discussions.
20120903
Bugfix (introduced 20120317): the socketmap client should
not share unrelated client endpoint handles. File:
util/dict_sockmap.c.
20120907
Cleanup (for change 20120824): the DSN RET attribute should
not be stored once per recipient. It is a message property
just like DSN ENVID. File: sendmail/sendmail.c.
20120911
Documentation: more explicit enumeration of what happens
when setting a per-destination recipient limit value to 1.
File: proto/postconf.proto.
20120918
Documentation: clarified the bounce/queue_life-time parameter
descriptions. File: proto/postconf.proto.
20120920
Documentation: the postscreen_whitelist_interfaces parameter
syntax was defined only by example. File: proto/postconf.proto.
20120923
Infrastructure: cleaned up the support for database
lock-on-open. This is needed for databases that are not
multi-updater safe. Files: util/dict_alloc.c, util/dict.c,
util/dict_open.c, util/dict.h. tls/tls_scache.c.
20120924
Documentation: some people are read-challenged distribute
their own incorrect understanding of master.cf syntax.
File: proto/master.
Cleanup: don't emulate UNIX-domain sockets over FIFOs on
Solaris systems less than 10 years old. This allows us to
globally s/fifo/unix/ in master.cf. Files: makedefs,
util/sys_defs.h.
Laptop-friendliness: avoid disk spin-up on idle systems by
s/fifo/unix/ in master.cf. Files: conf/master.cf.
20120928-30
Feature: smtpd_relay_restrictions, proposed long ago by
Victor. The idea is to separate the mail relay policy from
the spam blocking policy, so that a permissive spam blocking
policy under smtpd_recipient_restrictions will no longer
unexpectedly result in a permissive mail relay policy.
This involves a change in default settings. Similar to the
way that local_recipient_maps was introduced, there is a
safety net that prevents unexpected mail bounces when a
site upgrades to Postfix 2.10 or later, and there is no
change in documented smtpd_recipient_restrictions behavior.
See the RELEASE_NOTES file for details. Files:
global/mail_params.h, smtpd/smtpd.c, smtpd/smtpd_check.c,
proto/postconf.proto, proto/SMTPD_ACCESS_README.html,
mantools/postlink, conf/post-install, RELEASE_NOTES.
20120931-1001
Documentation: updated the remainder of the README files
and manual pages that discuss smtpd_recipient_restrictions.
20121001
Cleanup: prepend 5.1.1 status code to "User unknown in
virtual alias table". File: trivial-rewrite/resolve.c.
20121003
@ -17725,6 +18014,17 @@ Apologies for any names omitted.
in the first character of permit, reject, etc. Reported by
Francis Picabia. File: global/server_acl.c.
20121009
Documentation: interaction between delay_warning_time,
notify_classes and delay_notice_recipient. File:
proto/postconf.proto.
20101009
Human factors: log a warning that the postcat option -m
without -h or -b has no effect. File: postcat/postcat.c.
20121010
Bugfix (introduced: Postfix 2.5): memory leak in program
@ -17733,21 +18033,106 @@ Apologies for any names omitted.
Bugfix (introduced: Postfix 2.3): memory leak in the unused
oqmgr program. Reported by Coverity. File: oqmgr/qmgr_message.c.
20121011
Documentation: how to enable /etc/hosts multi-record lookups
with main.cf settings. File: proto/LINUX_README.html.
Documentation: clarified the postscreen-tlsproxy interface.
File: tlsproxy/tlsproxy.c.
20121012
Documentation: a simpler null-client example. File:
proto/STANDARD_CONFIGURATION_README.html
20121013
Cleanup: to compute the LDAP connection cache lookup key,
join the numeric fields with null, just like string fields.
Viktor Dukhovni. File: global/dict_ldap.c.
20121029
20121015
Documentation: added section on regular-expression tables
to the aliases(5) manpage. File: proto/aliases.
Documentation: why "smtp_address_preference = any" is the
preferred setting. File: proto/postconf.proto.
20121022
Bugfix (introduced 20101009) don't complain about stray -m
option if none of -[bhm] is specified. Ralf Hildebrandt.
File: postmap/postmap.c.
20121029
Workaround: strip datalink suffix from IPv6 addresses
returned by the system getaddrinfo() routine. Such suffixes
mess up the default mynetworks value, host name/address
verification and possibly more. This change obsoletes the
20101108 change that removes datalink suffixes in the SMTP
and QMQP servers, but we leave that code alone. File:
util/myaddrinfo.c.
and QMQP servers. Files: util/myaddrinfo.c, smtpd/smtpd_peer.c,
qmqpd/qmqpd_peer.c.
20121031
Bugfix: smtpd_relay_restrictions compatibility shim did not
detect "empty" value. Sahil Tandon. The same problem existed
with the inet_protocols shim. File: conf/post-install.
20121105
Cleanup: the postscreen(8) "deep protocol" tests now log
the SMTP command that precedes a protocol violation. Files:
postscreen/postscreen_smtpd.c, proto/POSTSCREEN_README.html.
Bugfix (introduced: Postfix 1.1): wrong string termination
when handling an MBOX From_ line at the start of a message.
File: qmqpd/qmqpd.c.
20121110
Cleanup: specify $(WARN) on the MacOS X compiler command
line to suppress "nested comment" and possibly other unwanted
warnings. Problem reported by Jim Reid. File: makedefs,
Makefile.in.
20121119
Documentation: added a note that key_format is required
when postscreen(8) and verify(8) share the same memcache
(with different persistent backup databases, or course)
otherwise automatic cache cleanup breaks due to a name
collision for the "last cache cleanup" database record.
File: proto/memcache.
20121122
Cleanup: the safety-check for smtpd_recipient_restrictions
and smtpd_relay_restrictions now detects permit before
reject. File: smtpd/smtpd_check.c.
Cleanup: the safety-check for smtpd_recipient_restrictions
and smtpd_relay_restrictions is no longer case-sensitive.
File: smtpd/smtpd_check.c.
20121123
Cleanup: consistent escaping of commands in postscreen deep
protocol test logging. File: postscreen/postscreen_smtpd.c.
20121124
Documentation: the bounce behavior for automatically-added
BCC recipients has changed with Postfix 2.3 when DSN support
was introduced. File: proto/postconf.proto.
20121203
Documentation: added explicit example for -o name=value.
File: proto/master.
20121210
@ -17757,13 +18142,90 @@ Apologies for any names omitted.
testing. Files: util/ip_match.c, util/ip_match.in,
util/ip_match.ref.
20121215
Bugfix (introduced: 19980218, when recipient_delimiter
support was added): The error message for unknown local
users (or missing required aliases) should report the user
name instead of the full localpart which may contain an
address extension. Problem reported by Christian Holler.
File: local/unknown.c.
20121221
Feature: "postconf -x" support to expand $name in main.cf
parameter values. Files: postconf/postconf_main.c,
postconf/postconf.h, postconf/postconf_node.c, postconf/postconf.c.
20121222
Feature: postconf support to warn about an attempt to modify
a read-only parameter (process_name etc.) in main.cf or
master.cf. Files: postconf/postconf_readonly.c,
postconf/postconf_builtin.c.
20121223
Feature: postconf support to warn about an undefined $name
in a parameter value in main.cf or master.cf (except for
backwards-compatibility parameters such as $virtual_maps)
Files: postconf/postconf_user.c, postconf_dbms.c,
postconf_builtin.c, util/dict_ht.c, util/htable.c.
Feature: "postconf -Mx" support to expand $name in master.cf
parameter values. Files: postconf/postconf_master.c,
postconf/postconf_lookup.c, postconf/postconf_main.c,
postconf/postconf.c.
20121224
Feature: "postconf -Mn" support to print only master.cf
entries that have "-o name=value" parameter setttings.
Files: postconf/postconf_master.c.
20121226
Miscellaneous cleanups of postconf internal APIs, identifiers
and comments. No changes in behavior.
Bugfix (omission in feature 20111203): the SMTP server only
supported time-dependent address-verification sender addresses
with RCPT TO but not with MAIL FROM. File: smtpd/smtpd.c.
20121227
Feature: "postconf -o name=value" support to override main.cf
settings (for example, "postconf -x -o stress=whatever"
shows effective settings under overload). Files:
postconf/postconf.c, postconf/postconf_main.c.
20121230
Cleanup: postconf(1) master.cf options parser. Files:
postconf/postconf_master.c, postconf/postconf_user.c.
Bugfix (omission in feature 20111106): the postconf(1)
master.cf options parser didn't support "clusters" of
command-line option letters. File: postconf/postconf_master.c,
command-line option letters. Files: postconf/postconf_master.c,
postconf/test40.ref.
20130105
Undo a change made around 20121224, and always whitelist
configuration parameter names for legacy-style proxy:ldap:prefix
etc. lookup tables. Files: postconf/postconf_dbms.c,
postconf/test28.ref, postconf/test29.ref, postconf/Makefile.in.
20130107
Factor out the master.cf line parser so that it can be
reused for "postconf -Me". File: postconf/postconf_master.c.
20130121
Bugfix (introduced 20120307): the postconf -X option erased
other options. File: postconf/postconf.c.
20130131
Bugfix: the local(8) delivery agent dereferenced a null
@ -17781,8 +18243,10 @@ Apologies for any names omitted.
Duchovni, BC added by Wietse. Files: tls/tls_verify.c,
tls/tls_misc.c, proto/TLS_README.html, global/mail_params.h.
Bugfix: the 20121010 fix for tls_misc.c was documented but
not included.
20130210
Bugfix: an error handler for smtp_tls_policy_maps lookups
was never invoked. File: smtp/smtp_session.c.
20130403
@ -17811,3 +18275,34 @@ Apologies for any names omitted.
between different hostnames that resolve to the same IP
address. Found during Postfix 2.11 code maintenance. File:
smtp/smtp_connect.c.
20130518
Bugfix (introduced: 1997): memory leak after error while
forwarding mail through the cleanup server. Viktor found
one, Wietse eliminated the rest. File: local/forward.c.
20130613
Workaround: unhelpful down-stream maintainers fail to install
the new smtpd_relay_restrictions safety net, causing breakage
that could have been avoided. We now hard-code the safety
net instead. Files: global/mail_params.h, conf/post-install,
RELEASE_NOTES.
20130615
TLS Interoperability: turn on SHA-2 digests by force. This
improves interoperability with clients and servers that
deploy SHA-2 digests without the required support for
TLSv1.2-style digest negotiation. Based on patch by Viktor
Dukhovni. Files: tls/tls_client.c, tls/tls_server.c.
20130616
TLS Performance: the Postfix SMTP server TLS session cache
was ineffective because recent OpenSSL versions enable
session tickets by default, resulting in a different ticket
encryption key for each smtpd(8) process. The workaround
turns off session tickets. In 2.11 we'll enable session
tickets properly. Viktor Dukhovni. File: tls/tls_server.c.

View File

@ -43,7 +43,7 @@ should be executed as the superuser.
A command written as
% command
$ command
should be executed as an unprivileged user.
@ -58,14 +58,14 @@ because the files use backspace characters in order to produce bboolldd font
print a README file without backspace characters, use the col(1) command. For
example:
% col -bx <file | lpr
$ col -bx <file | lpr
In order to view the manual pages before installing Postfix, point your MANPATH
environment variable to the "man" subdirectory; be sure to use an absolute
path.
% export MANPATH; MANPATH="`pwd`/man:$MANPATH"
% setenv MANPATH "`pwd`/man:$MANPATH"
$ export MANPATH; MANPATH="`pwd`/man:$MANPATH"
$ setenv MANPATH "`pwd`/man:$MANPATH"
Of particular interest is the postconf(5) manual page that lists all the 500+
configuration parameters. The HTML version of this text makes it easy to
@ -80,22 +80,20 @@ At some point in time, a version of Postfix was supported on:
AIX 3.2.5, 4.1.x, 4.2.0, 4.3.x, 5.2
BSD/OS 2.x, 3.x, 4.x
Darwin 1.x
FreeBSD 2.x, 3.x, 4.x, 5.x
FreeBSD 2.x .. 9.x
HP-UX 9.x, 10.x, 11.x
IRIX 5.x, 6.x
Linux Debian 1.3.1, 2.x, 3.x
Linux RedHat 3.x (January 2004) - 9.x
Linux Slackware 3.x, 4.x, 7.x
Linux SuSE 5.x, 6.x, 7.x
Linux Ubuntu 4.10..7.04
Linux Debian 1.3.1 and later
Linux RedHat 3.x (January 2004) and later
Linux Slackware 3.x and later
Linux SuSE 5.x and later
Linux Ubuntu 4.10 and later
Mac OS X
NEXTSTEP 3.x
NetBSD 1.x
NetBSD 1.x and later
OPENSTEP 4.x
OSF1.V3 - OSF1.V5 (Digital UNIX)
Reliant UNIX 5.x
Rhapsody 5.x
SunOS 4.1.4 (March 2007)
SunOS 5.4 - 5.10 (Solaris 2.4..10)
Ultrix 4.x (well, that was long ago)
@ -118,12 +116,12 @@ If at any time in the build process you get messages like: "make: don't know
how to ..." you should be able to recover by running the following command from
the Postfix top-level directory:
% make -f Makefile.init makefiles
$ make -f Makefile.init makefiles
If you copied the Postfix source code after building it on another machine, it
is a good idea to cd into the top-level directory and first do this:
% make tidy
$ make tidy
This will get rid of any system dependencies left over from compiling the
software elsewhere.
@ -134,19 +132,19 @@ To build with GCC, or with the native compiler if people told me that is better
for your system, just cd into the top-level Postfix directory of the source
tree and type:
% make
$ make
To build with a non-default compiler, you need to specify the name of the
compiler. Here are a few examples:
% make makefiles CC=/opt/SUNWspro/bin/cc (Solaris)
% make
$ make makefiles CC=/opt/SUNWspro/bin/cc (Solaris)
$ make
% make makefiles CC="/opt/ansic/bin/cc -Ae" (HP-UX)
% make
$ make makefiles CC="/opt/ansic/bin/cc -Ae" (HP-UX)
$ make
% make makefiles CC="purify cc"
% make
$ make makefiles CC="purify cc"
$ make
and so on. In some cases, optimization is turned off automatically.
@ -187,8 +185,8 @@ configuration file, except for one: the parameter that specifies the location
of Postfix configuration files. In order to build Postfix with a configuration
directory other than /etc/postfix, use:
% make makefiles CCARGS='-DDEF_CONFIG_DIR=\"/some/where\"'
% make
$ make makefiles CCARGS='-DDEF_CONFIG_DIR=\"/some/where\"'
$ make
IMPORTANT: Be sure to get the quotes right. These details matter a lot.
@ -227,8 +225,8 @@ introduced with Postfix version 2.5.
The general method to override Postfix compile-time features is as follows:
% make makefiles name=value name=value...
% make
$ make makefiles name=value name=value...
$ make
The following is an extensive list of names and values.
@ -322,7 +320,7 @@ descriptors per process is limited by the value of the FD_SETSIZE macro. If you
expect to run more than 1000 mail delivery processes, you may need to override
the definition of the FD_SETSIZE macro to make select() work correctly:
% make makefiles CCARGS=-DFD_SETSIZE=2048
$ make makefiles CCARGS=-DFD_SETSIZE=2048
Warning: the above has no effect on some Linux versions. Apparently, on these
systems the FD_SETSIZE value can be changed only by using undocumented
@ -338,7 +336,7 @@ examples of how to increase the number of open sockets or files.
If the command
% make
$ make
is successful, then you can proceed to install Postfix (section 6).
@ -485,18 +483,18 @@ and watch your maillog file for any error messages. The pathname is /var/log/
maillog, /var/log/mail, /var/log/syslog, or something else. Typically, the
pathname is defined in the /etc/syslog.conf file.
% egrep '(reject|warning|error|fatal|panic):' /some/log/file
$ egrep '(reject|warning|error|fatal|panic):' /some/log/file
Note: the most important error message is logged first. Later messages are not
as useful.
In order to inspect the mail queue, use one of the following commands:
% mailq
$ mailq
% sendmail -bp
$ sendmail -bp
% postqueue -p
$ postqueue -p
See also the "Care and feeding" section 12 below.
@ -535,18 +533,18 @@ and watch your maillog file for any error messages. The pathname is /var/log/
maillog, /var/log/mail, /var/log/syslog, or something else. Typically, the
pathname is defined in the /etc/syslog.conf file.
% egrep '(reject|warning|error|fatal|panic):' /some/log/file
$ egrep '(reject|warning|error|fatal|panic):' /some/log/file
Note: the most important error message is logged first. Later messages are not
as useful.
In order to inspect the mail queue, use one of the following commands:
% mailq
$ mailq
% sendmail -bp
$ sendmail -bp
% postqueue -p
$ postqueue -p
See also the "Care and feeding" section 12 below.
@ -575,18 +573,18 @@ and watch your maillog file for any error messages. The pathname is /var/log/
maillog, /var/log/mail, /var/log/syslog, or something else. Typically, the
pathname is defined in the /etc/syslog.conf file.
% egrep '(reject|warning|error|fatal|panic):' /some/log/file
$ egrep '(reject|warning|error|fatal|panic):' /some/log/file
Note: the most important error message is logged first. Later messages are not
as useful.
In order to inspect the mail queue, use one of the following commands:
% mailq
$ mailq
% sendmail -bp
$ sendmail -bp
% postqueue -p
$ postqueue -p
See also the "Care and feeding" section 12 below.

View File

@ -1,5 +1,5 @@
SHELL = /bin/sh
WARN = -Wmissing-prototypes -Wformat
WARN = -Wmissing-prototypes -Wformat -Wno-comment
OPTS = 'CC=$(CC)'
DIRS = src/util src/global src/dns src/tls src/xsasl src/milter src/master \
src/postfix src/fsstone src/smtpstone \

View File

@ -246,6 +246,11 @@ To find out what database types your Postfix system supports, use the "ppooss
with the postmap(1) or postalias(1) command. The lookup table name as
used in "sdbm:table" is the database file name without the ".dir" or
".pag" suffix.
ssoocckkeettmmaapp (read-only)
Query a Sendmail-style socketmap server. The name of the table
specifies iinneett:host:port:socketmap-name for a TCP-based server, or
uunniixx:pathname:socketmap-name for a UNIX-domain server. In both cases
socketmap-name is the name of the socketmap.
ssqqlliittee (read-only)
Perform SQLite database lookups. Configuration details are given in
sqlite_table(5).

View File

@ -442,6 +442,8 @@ without sending `.' on the connection that injects mail back into Postfix.
-o smtpd_helo_restrictions=
-o smtpd_client_restrictions=
-o smtpd_sender_restrictions=
# Postfix 2.10 and later: specify empty smtpd_relay_restrictions.
-o smtpd_relay_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks=127.0.0.0/8
-o smtpd_authorized_xforward_hosts=127.0.0.0/8

View File

@ -132,12 +132,13 @@ aa ""ttyyppee::ttaabbllee"" ppaatttteerrnn..
KKnnoowwnn LLiimmiittaattiioonnss
* The order of IPv6/IPv4 outgoing connection attempts is not yet
configurable. Currently, IPv6 is tried before IPv4.
* Postfix SMTP clients before version 2.8 try to connect over IPv6 before
trying IPv4. With more recent Postfix versions, the order of IPv6 versus
IPv4 outgoing connection attempts is configurable with the
smtp_address_preference parameter.
* Postfix currently does not support DNSBL (real-time blackhole list) lookups
for IPv6 client IP addresses; currently there are no blacklists that cover
the IPv6 address space.
* Postfix versions before 2.6 do not support DNSBL (real-time blackhole list)
lookups for IPv6 client IP addresses.
* IPv6 does not have class A, B, C, etc. networks. With IPv6 networks, the
setting "mynetworks_style = class" has the same effect as the setting

View File

@ -2,6 +2,26 @@ PPoossttffiixx aanndd LLiinnuuxx
-------------------------------------------------------------------------------
HHoosstt llooookkuupp iissssuueess
By default Linux /etc/hosts lookups do not support multiple IP address per
hostname. This causes warnings from the Postfix SMTP server that "hostname XXX
does not resolve to address YYY", and is especially a problem with hosts that
have both IPv4 and IPv6 addresses. To fix, turn on support for multiple IP
addresses:
/etc/host.conf:
...
# We have machines with multiple IP addresses.
multi on
...
Alternatively, specify the RESOLV_MULTI environment variable in main.cf:
/etc/postfix/main.cf:
import_environment = MAIL_CONFIG MAIL_DEBUG MAIL_LOGTAG TZ XAUTHORITY
DISPLAY LANG=C RESOLV_MULTI=on
BBeerrkkeelleeyy DDBB iissssuueess
If you can't compile Postfix because the file "db.h" isn't found, then you MUST

View File

@ -290,6 +290,8 @@ injection SMTP service. Typical additions include:
# With multiple instances, rarely need "-o param=value" overrides
# in master.cf, each instance gets its own main.cf file.
#
# Postfix 2.10 and later: specify empty smtpd_relay_restrictions.
smtpd_relay_restrictions =
smtpd_recipient_restrictions = permit_mynetworks, reject
# Tolerate occasional high latency in the content filter.

View File

@ -4,27 +4,31 @@ PPoossttffiixx PPoossttssccrreeeenn HHoowwttoo
IInnttrroodduuccttiioonn
The Postfix postscreen(8) server performs triage on multiple inbound SMTP
connections at the same time. While a single postscreen(8) process keeps
zombies away from Postfix SMTP server processes, more Postfix SMTP server
processes remain available for legitimate clients.
This document describes features that are available in Postfix 2.8 and later.
The Postfix postscreen(8) daemon provides additional protection against mail
server overload. One postscreen(8) process handles multiple inbound SMTP
connections, and decides which clients may talk to a Postfix SMTP server
process. By keeping spambots away, postscreen(8) leaves more SMTP server
processes available for legitimate clients, and delays the onset of server
overload conditions.
postscreen(8) should not be used on SMTP ports that receive mail from end-user
clients (MUAs). In a typical deployment, postscreen(8) handles the MX service
on TCP port 25, while MUA clients submit mail via the submission service on TCP
port 587 which requires client authentication. Alternatively, a site could set
up a dedicated, non-postscreen, "port 25" server that provides submission
service and client authentication, but no MX service.
postscreen(8) maintains a temporary whitelist for clients that pass its tests;
by allowing whitelisted clients to skip tests, postscreen(8) minimizes its
impact on legitimate email traffic.
postscreen(8) should not be used on SMTP ports that receive mail from end-user
clients (MUAs). In a typical deployment, postscreen(8) is used on the "port 25"
service, while MUA clients submit mail via the submission service (port 587)
which normally requires client authentication, or via a "port 25" server that
provides no MX service (i.e. a dedicated server that provides submission
service on port 25).
postscreen(8) is part of a multi-layer defense.
* As the first layer, postscreen(8) blocks connections from zombies and other
spambots that are responsible for about 90% of all spam. It is implemented
as a single process to make this defense as cheap as possible.
as a single process to make this defense as inexpensive as possible.
* The second layer implements more complex SMTP-level access checks with
Postfix SMTP servers, policy daemons, and Milter applications.
@ -89,11 +93,11 @@ focused on.
GGeenneerraall ooppeerraattiioonn
The postscreen(8) triage process involves a number of tests, in the order as
described below. Some tests introduce a delay of a few seconds. postscreen(8)
maintains a temporary whitelist for clients that pass its tests; by allowing
whitelisted clients to skip tests, postscreen(8) minimizes its impact on
legitimate email traffic.
For each connection from an SMTP client, postscreen(8) performs a number of
tests in the order as described below. Some tests introduce a delay of a few
seconds. postscreen(8) maintains a temporary whitelist for clients that pass
its tests; by allowing whitelisted clients to skip tests, postscreen(8)
minimizes its impact on legitimate email traffic.
By default, postscreen(8) hands off all connections to a Postfix SMTP server
process after logging its findings. This mode is useful for non-destructive
@ -162,15 +166,15 @@ whitelist. The temporary whitelist is not used for SMTP client addresses that
appear on the permanent access list.
NOTE: To share a postscreen(8) cache between multiple postscreen(8)
instances, use "postscreen_cache_map = proxy:btree:$data_directory/
postscreen_cache", and disable cache cleanup
instances under the same master(8) daemon, use "postscreen_cache_map =
proxy:btree:$data_directory/postscreen_cache", and disable cache cleanup
(postscreen_cache_cleanup_interval = 0) in all postscreen(8) instances
except one that is responsible for cache cleanup.
postscreen(8) cache sharing requires Postfix 2.9 or later; earlier proxymap
(8) implementations don't support cache cleanup.
For an alternative postscreen(8) cache sharing approach see the
For an alternative postscreen(8) cache sharing approach, see the
memcache_table(5) manpage.
When the SMTP client address appears on the temporary whitelist, postscreen(8)
@ -190,16 +194,23 @@ whitelist, postscreen(8) can implement a number of whitelist tests, before it
grants the client a temporary whitelist status that allows it to talk to a
Postfix SMTP server process.
By listening on both primary and backup MX addresses, postscreen(8) can deny
the temporary whitelist status to clients that connect only to backup MX hosts
(an old spammer trick to take advantage of backup MX hosts with weaker anti-
spam policies than primary MX hosts).
When postscreen(8) is configured to monitor all primary and backup MX
addresses, it can refuse to whitelist clients that connect to a backup MX
address only (an old spammer trick to take advantage of backup MX hosts with
weaker anti-spam policies than primary MX hosts).
NOTE: The following solution is for small sites. Larger sites would have to
share the postscreen(8) cache between primary and backup MTAs, which would
introduce a common point of failure.
* First, configure the host to listen on both primary and backup MX
addresses. Use the appropriate ifconfig command for the local operating
system, or update the appropriate configuration files and "refresh" the
network protocol stack.
Second, configure Postfix to listen on the new IP address (this step is
needed when you have specified inet_interfaces in main.cf).
* Then, configure postscreen(8) to deny the temporary whitelist status on the
backup MX address(es). An example for Wietse's server is:
@ -404,11 +415,12 @@ in SMTP engine anyway. This is to make postscreen(8) logging more informative.
When a client sends non-SMTP commands, postscreen(8) logs this as:
NNOONN--SSMMTTPP CCOOMMMMAANNDD ffrroomm [address]:port command
NNOONN--SSMMTTPP CCOOMMMMAANNDD ffrroomm [address]:port aafftteerr command: text
Translation: the SMTP client at [address]:port sent a command that matches the
postscreen_forbidden_commands parameter, or that has the syntax of a message
header label.
header label (text followed by optional space and ":"). The "aafftteerr command"
portion is logged with Postfix 2.10 and later.
The postscreen_non_smtp_command_action parameter specifies the action that is
taken next. See "When tests fail after the 220 SMTP server greeting" below.
@ -428,10 +440,11 @@ in SMTP engine anyway. This is to make postscreen(8) logging more informative.
When a client sends bare newline characters, postscreen(8) logs this as:
BBAARREE NNEEWWLLIINNEE ffrroomm [address]:port
BBAARREE NNEEWWLLIINNEE ffrroomm [address]:port aafftteerr command
Translation: the SMTP client at [address]:port sent a bare newline character,
that is newline not preceded by carriage return.
that is newline not preceded by carriage return. The "aafftteerr command" portion is
logged with Postfix 2.10 and later.
The postscreen_bare_newline_action parameter specifies the action that is taken
next. See "When tests fail after the 220 SMTP server greeting" below.
@ -473,23 +486,26 @@ The following errors are reported by the built-in SMTP engine. This engine
never accepts mail, therefore it has per-session limits on the number of
commands and on the session length.
CCOOMMMMAANNDD TTIIMMEE LLIIMMIITT ffrroomm [address]:port
CCOOMMMMAANNDD TTIIMMEE LLIIMMIITT ffrroomm [address]:port aafftteerr command
Translation: the SMTP client at [address]:port reached the per-command time
limit as specified with the postscreen_command_time_limit parameter. The
session is terminated immediately.
session is terminated immediately. The "aafftteerr command" portion is logged with
Postfix 2.10 and later.
CCOOMMMMAANNDD CCOOUUNNTT LLIIMMIITT ffrroomm [address]:port
CCOOMMMMAANNDD CCOOUUNNTT LLIIMMIITT ffrroomm [address]:port aafftteerr command
Translation: the SMTP client at [address]:port reached the per-session command
count limit as specified with the postscreen_command_count_limit parameter. The
session is terminated immediately.
session is terminated immediately. The "aafftteerr command" portion is logged with
Postfix 2.10 and later.
CCOOMMMMAANNDD LLEENNGGTTHH LLIIMMIITT ffrroomm [address]:port
CCOOMMMMAANNDD LLEENNGGTTHH LLIIMMIITT ffrroomm [address]:port aafftteerr command
Translation: the SMTP client at [address]:port reached the per-command length
limit, as specified with the line_length_limit parameter. The session is
terminated immediately.
terminated immediately. The "aafftteerr command" portion is logged with Postfix 2.10
and later.
When an SMTP client makes too many connections at the same time, or when all
postscreen(8) ports are busy, postscreen(8) rejects the connection with a 421
@ -760,3 +776,10 @@ for sites that require TLS support. The implementation introduces the tlsproxy
(8) event-driven TLS proxy that decrypts/encrypts the sessions for multiple
SMTP clients.
The tlsproxy(8) implementation led to the discovery of a "new" class of
vulnerability (CVE-2011-0411) that affected multiple implementations of SMTP,
POP, IMAP, NNTP, and FTP over TLS.
postscreen(8) was officially released as part of the Postfix 2.8 stable release
in January 2011.

View File

@ -1,33 +1,251 @@
The stable Postfix release is called postfix-2.9.x where 2=major
release number, 9=minor release number, x=patchlevel. The stable
The stable Postfix release is called postfix-2.10.x where 2=major
release number, 10=minor release number, x=patchlevel. The stable
release never changes except for patches that address bugs or
emergencies. Patches change the patchlevel and the release date.
New features are developed in snapshot releases. These are called
postfix-2.10-yyyymmdd where yyyymmdd is the release date (yyyy=year,
postfix-2.11-yyyymmdd where yyyymmdd is the release date (yyyy=year,
mm=month, dd=day). Patches are never issued for snapshot releases;
instead, a new snapshot is released.
The mail_release_date configuration parameter (format: yyyymmdd)
specifies the release date of a stable release or snapshot release.
If you upgrade from Postfix 2.7 or earlier, read RELEASE_NOTES-2.8
If you upgrade from Postfix 2.8 or earlier, read RELEASE_NOTES-2.9
before proceeding.
Major changes with Postfix 2.9.6
--------------------------------
Debian Exim before 4.80-3 interoperability workaround
-----------------------------------------------------
Thanks to OpenSSL documentation, the Postfix 2.9.0..2.9.5 SMTP
client and server computed incorrect TLS certificate PUBLIC-KEY
fingerprints. Support for certificate PUBLIC-KEY finger prints
was introduced with Postfix 2.9; there is no known problem with the
certificate fingerprint algorithms available since Postfix 2.2.
Debian Exim versions before 4.80-3 may fail to communicate with
Postfix and possibly other MTAs, with the following Exim SMTP client
error message:
TLS error on connection to server-name [server-address]
(gnutls_handshake): The Diffie-Hellman prime sent by the server
is not acceptable (not long enough)
This problem may affect Debian Exim versions before 4.80-3 that use
TLS with EDH (Ephemeral Diffie-Hellman) key exchanges. For details
see http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=676563
To restore Postfix SMTP server interoperability with affected Exim
SMTP clients, configure the Postfix SMTP server to use a 2048-bit
prime number instead of 1024:
# cd /etc/postfix
# openssl dhparam -out dh2048.pem 2048
# postconf -e 'smtpd_tls_dh1024_param_file = ${config_directory}/dh2048.pem'
This change increases the CPU cost of EDH key exchanges (rarely a
problem for SMTP servers) and is unlikely to cause problems with
other SMTP client implementations.
This problem should not affect EECDH (Ephemeral Elliptic Curve
Diffie-Hellman) key exchanges.
Major changes - laptop-friendliness
-----------------------------------
[Incompat 20120924] Postfix no longer uses FIFOs to emulate UNIX-domain
sockets on Solaris 9 (Vintage 2002!) and later. If you install
Postfix for the first time on an older Solaris system, edit the
master.cf file and replace "unix" with "fifo" for the pickup and
qmgr services.
[Feature 20120924] the default master.cf file now uses "unix" instead
of "fifo" for the pickup and qmgr services. This avoids periodic
disk drive spin-up.
Major changes - permit logging
------------------------------
[Feature 20120303] [Feature 20120303] New control for "permit"
logging in smtpd_mumble_restrictions (by default, the SMTP server
logs "reject" actions but not "permit" actions). Specify
"smtpd_log_access_permit_actions = static:all" to log all "permit"-style
actions, or specify a list of explicit action names. More details
are in the postconf(5) manpage.
Major changes - postconf
------------------------
[Incompat 20121224] The postconf command produces more warnings:
- An attempt to modify a read-only parameter (process_name, process_id)
in main.cf or master.cf.
- An undefined $name in a parameter value in main.cf or master.cf
(except for backwards-compatibility parameters such as $virtual_maps).
[Feature 20121224] The postconf command has been updated to make
trouble-shooting (and support) easier. In summary, use "postconf
-Mxf" and "postconf -nxf" to review master.cf and main.cf parameter
settings with expanded parameter values.
- "postconf -x" now expands $name in main.cf and master.cf parameter
values.
- postconf warns about attempts to modify a read-only parameter
(process_name, process_id) in main.cf or master.cf.
- postconf warns about an undefined $name in a parameter value in
main.cf or master.cf (except for backwards-compatibility parameters
such as $virtual_maps).
[Feature 20121227]
- "postconf -o name=value" overrides main.cf parameter settings.
This can be used, for example, to examine stress-dependent settings
with "postconf -x -o stress=yes".
Major changes - postscreen
--------------------------
[Incompat 20121123] The postscreen deep protocol tests now log the
last command before a protocol error ("UNIMPLEMENTED" when the last
command is not implemented, "CONNECT" when there was no prior
command). The changed logfile messages are:
NON-SMTP COMMAND from [address]:port after command: text
BARE NEWLINE from [address]:port after command
COMMAND TIME LIMIT from [address]:port after command
COMMAND COUNT LIMIT from [address]:port after command
COMMAND LENGTH LIMIT from [address]:port after command
Major changes - load-balancer support
-------------------------------------
[Incompat 20120625] The postscreen(8)-to-smtpd(8) protocol has
changed. To avoid "cannot receive connection attributes" warnings
and dropped connections, execute the command "postfix reload". No
mail will be lost as long as the remote SMTP client tries again
later.
[Feature 20120625] Support for upstream proxy agent in the postscreen(8)
and smtpd(8) daemons. To enable the haproxy protocol, specify one
of the following:
postscreen_upstream_proxy_protocol = haproxy
smtpd_upstream_proxy_protocol = haproxy
Note 1: smtpd_upstream_proxy_protocol can't be used in smtpd processes
that are behind postscreen. Configure postscreen_upstream_proxy_protocol
instead.
Note 2: To use the nginx proxy with smtpd(8), enable the XCLIENT
protocol with smtpd_authorized_xclient_hosts. This supports SASL
authentication in the proxy agent (Postfix 2.9 and later).
Major changes - relay safety
----------------------------
[Incompat 20130613] New smtpd_relay_restrictions parameter built-in
default settings:
smtpd_relay_restrictions =
permit_mynetworks
permit_sasl_authenticated
defer_unauth_destination
This safety net prevents open relay problems due to mistakes
with spam filter rules in smtpd_recipient_restrictions.
If your site has a complex mail relay policy configured under
smtpd_recipient_restrictions, this safety net may defer mail that
Postfix should accept.
To fix this safety net, take one of the following actions:
- Set smtpd_relay_restrictions empty, and keep using the existing
mail relay authorization policy in smtpd_recipient_restrictions.
- Copy the existing mail relay authorization policy from
smtpd_recipient_restrictions to smtpd_relay_restrictions.
There is no need to change the value of smtpd_recipient_restrictions.
[Feature 20130613] This version introduces the smtpd_relay_restrictions
feature for mail relay control. The new built-in default settings
are:
smtpd_relay_restrictions =
permit_mynetworks
permit_sasl_authenticated
defer_unauth_destination
smtpd_recipient_restrictions =
( optional spam blocking rules would go here )
For comparison, this is the Postfix before 2.10 default:
smtpd_recipient_restrictions =
permit_mynetworks
reject_unauth_destination
( optional spam blocking rules would go here )
With Postfix versions before 2.10, the mail relay policy and spam
blocking policy were combined under smtpd_recipient_restrictions,
resulting in error-prone configuration.
As of Postfix 2.10, the mail relay policy is preferably implemented
with smtpd_relay_restrictions, so that a permissive spam blocking
policy under smtpd_recipient_restrictions will not unexpectedly
result in a permissive mail relay policy.
As of Postfix 2.10.0 the smtpd_relay_restrictions parameter built-in
default settings are:
smtpd_relay_restrictions =
permit_mynetworks
permit_sasl_authenticated
defer_unauth_destination
If your site has a complex mail relay policy configured under
smtpd_recipient_restrictions, this safety net may defer mail that
Postfix should accept.
To migrate from an earlier Postfix release with the least amount
of pain:
- Set smtpd_relay_restrictions empty, and keep using the existing
mail relay authorization policy in smtpd_recipient_restrictions.
- There is no need to change the value of smtpd_recipient_restrictions.
To take advantage of the new smtpd_relay_restrictions feature:
- Copy the existing mail relay authorization policy from
smtpd_recipient_restrictions to smtpd_relay_restrictions.
- There is no need to change the value of smtpd_recipient_restrictions.
Major changes - start-up
------------------------
[Feature 20120306] New master "-w" option, to wait for master daemon
process initialization to complete. This feature returns an error
exit status if master daemon initialization fails, or if it does
not complete in a reasonable amount of time. The exit status is
used by "postfix start" to provide more accurate information to
system start-up scripts.
Major changes - tls
-------------------
[Incompat 20130203] Thanks to OpenSSL documentation, the Postfix
2.9.0..2.9.5 SMTP client and server server used an incorrect procedure
to compute TLS certificate PUBLIC-KEY fingerprints (these may be
used in the check_ccert_access and in smtp_tls_policy_maps features).
Support for certificate PUBLIC-KEY finger prints was introduced
with Postfix 2.9; there is no known problem with the certificate
fingerprint algorithms available since Postfix 2.2.
Certificate PUBLIC-KEY finger prints may be used in the Postfix
SMTP server (with "check_ccert_access") and in the Postfix SMTP
client (with the "fingerprint" security level).
Specify "tls_legacy_public_key_fingerprints = yes" temporarily,
Specify "tls_legacy_public_key_fingerprints = yes" temporarily,
pending a migration from configuration files with incorrect Postfix
2.9.0..2.9.5 certificate PUBLIC-KEY finger prints, to the correct
fingerprints used by Postfix 2.9.6 and later.
@ -44,12 +262,10 @@ $ openssl x509 -in cert.pem -noout -pubkey | \
openssl rsa -pubin -outform DER | \
openssl dgst -md5 -c
Major changes with Postfix 2.9.2
--------------------------------
This release adds support to turn off the TLSv1.1 and TLSv1.2
protocols. Introduced with OpenSSL version 1.0.1, these are known
to cause inter-operability problems with for example hotmail.
[Feature 20120422] This release adds support to turn off the TLSv1.1
and TLSv1.2 protocols. Introduced with OpenSSL version 1.0.1, these
are known to cause inter-operability problems with for example
hotmail.
The radical workaround is to temporarily turn off problematic
protocols globally:
@ -80,340 +296,3 @@ Important:
override the next-hop destination with transport_maps, relayhost,
sender_dependent_relayhost_maps, or otherwise, you need to specify
the same destination for the smtp_tls_policy_maps lookup key.
Major changes - critical
------------------------
[Incompat 20110321] You need to "postfix reload" after upgrade from
snapshot 20110320 or earlier. The hash_queue_names algorithm was
changed to provide better performance with long queue IDs.
[Incompat 20110313] Use "postfix reload" after "make upgrade" on a
running Postfix system. This is needed because the protocol between
postscreen(8) and dnsblog(8) has changed.
Major changes - library API
---------------------------
[Incompat 20110130] The VSTREAM error flags are now split into
separate read and write error flags. As a result of this change,
all programs that use Postfix VSTREAMs MUST be recompiled.
Major changes - compatibility
-----------------------------
[Incompat 20111012] For consistency with the SMTP standard, the
(client-side) smtp_line_length_limit default value was increased
from 990 characters to 999 (i.e. 1000 characters including <CR><LF>).
Specify "smtp_line_length_limit = 990" to restore historical Postfix
behavior.
[Incompat 20111012] To simplify integration with third-party
applications, the Postfix sendmail command now always transforms
all input lines ending in <CR><LF> into UNIX format (lines ending
in <LF>). Specify "sendmail_fix_line_endings = strict" to restore
historical Postfix behavior (i.e. convert all input lines ending
in <CR><LF> only if the first line ends in <CR><LF>).
[Incompat 20111106] To work around broken remote SMTP servers, the
Postfix SMTP client by default no longer appends the "AUTH=<>"
option to the MAIL FROM command. Specify "smtp_send_dummy_mail_auth
= yes" to restore the old behavior.
Major changes - gradual degradation
-----------------------------------
[Incompat 20120114] Logfile-based alerting systems may need to be
updated to look for "error" messages in addition to "fatal" messages.
Specify "daemon_table_open_error_is_fatal = yes" to get the historical
behavior (immediate termination with "fatal" message).
[Feature 20120114] Instead of terminating immediately with a "fatal"
message when a database file can't be opened, a Postfix daemon
program now logs an "error" message, and continues execution with
reduced functionality. For the sake of sanity, the number of
"errors" over the life of a process is limited to 13.
Features that don't depend on the unavailable table will continue
to work; attempts to use features that depend on the table will
fail, and will be logged with a "warning" message.
[Feature 20120108] Instead of terminating with a fatal error, the
LDAP, *SQL and memcache clients now handle table lookup errors in
the "domain" feature, instead of terminating with a fatal error.
[Feature 20120102] Degrade gradually when some or all network
protocols specified with inet_protocols are unavailable, instead
of terminating with a fatal error. This eliminates build errors on
non-standard systems where opening an IPv4 socket results in an
error, and on non-standard systems where opening an IPv6 socket
results in an error. In the worst case, the master daemon will log
a message that it disables all type "inet" services. This will still
allow local submission and local delivery.
[Feature 20111222] Instead of terminating with a fatal error, the
Postfix SMTP server now handles errors with database lookups in
mynetworks, TLS client certificate tables, debug_peer_list,
smtpd_client_event_limit_exceptions, permit_mx_backup_networks and
local_header_rewrite_clients, and reports "server local data error"
or "temporary lookup error".
[Feature 20111229] Instead of terminating with a fatal error, the
trivial-rewrite server now handles errors with database lookups in
virtual_alias_domains, relay_domains, virtual_mailbox_domains. This
means fewer occasions where trivial-rewrite clients (such as the
SMTP server) will appear to hang.
Major changes - long queue IDs
------------------------------
Postfix 2.9 introduces support for non-repeating queue IDs (also
used as queue file names). These names are encoded in a mix of upper
case, lower case and decimal digit characters. Long queue IDs are
disabled by default to avoid breaking tools that parse logfiles and
that expect queue IDs with the smaller [A-F0-9] character set.
[Incompat 20110320] If you enable support for long queue file names,
you need to be aware that these file names are not compatible with
Postfix <= 2.8. If you must migrate back to Postfix <= 2.8, you
must first convert all long queue file names into short names,
otherwise the old Postfix version will complain.
The conversion procedure before migration to Postfix <= 2.8 is:
# postfix stop
# postconf enable_long_queue_ids=no
# postsuper
Run the postsuper command repeatedly until it no longer reports
queue file name changes.
[Feature 20110320] Support for long, non-repeating, queue IDs (queue
file names). The benefit of non-repeating names is simpler logfile
analysis, and easier queue migration (if you don't merge different
queues, there is no need to run "postsuper" to change queue file
names that don't match their message file inode number).
Specify "enable_long_queue_ids = yes" to enable the feature. This
does not change the names of existing queue files. See postconf(5)
or postconf.5.html#enable_long_queue_ids for a detailed description
of the differences with the old short queue IDs.
This changes new Postfix queue IDs from the short form 0FCEE9247A9
into the longer form 3Ps0FS1Zhtz1PFjb, and changes new Message-ID
header values from YYMMDDHHMMSS.queueid@myhostname into the shorter
form queueid@myhostname.
Major changes - memcache
------------------------
[Feature 20111209] memcache lookup and update support. This provides
a way to share postscreen(8) or verify(8) caches between Postfix
instances. See MEMCACHE_README and memcache_table(5) for details
and limitations.
[Feature 20111213] Support for a persistent backup database in the
memcache client. The memcache client updates the memcache whenever
it looks up or modifies information in the persistent database.
Major changes - postconf
------------------------
The postconf command was restructured - it now warns about unused
parameter name=value settings in main.cf or master.cf (likely to
be mistakes), it now understands "dynamic" parameter names such as
parameters whose name depends on the name of a master.cf entry, and
it can display main.cf and master.cf in a more user-friendly format.
[Feature 20120117] support for legacy database parameter names
(main.cf parameter names that are generated by prepending a suffix
to the database name).
[Feature 20111118] The "postconf -M" (display master.cf) command
now supports filtering. For example, specify "postconf -M inet"
to display only services that listen on the network.
[Feature 20111113] postconf support to warn about unused "name=value"
entries in main.cf, and about unused "-o name=value" entries in
master.cf. This should help to eliminate common errors with mis-typed
names.
[Feature 20111108] postconf support for parameter names that are
generated automatically from master.cf entries (delivery agents,
spawn services), and for parameter names that are defined with
main.cf smtpd_restriction_classes.
[Feature 20111106] "postconf -M" support to print master.cf entries,
and "postconf -f" support to fold long main.cf or master.cf lines
for human readability.
Major changes - trickle defense
-------------------------------
[Feature 20110212] Support for per-record deadlines. These change
the behavior of Postfix timeout parameters, from a time limit per
read or write system call, to a time limit to send or receive a
complete record (an SMTP command line, SMTP response line, SMTP
message content line, or TLS protocol message). This limits the
impact from hostile peers that trickle data one byte at a time.
The new configuration parameters and their default settings are:
smtpd_per_record_deadline (normal: no, overload: yes),
smtp_per_record_deadline (no), and lmtp_per_record_deadline (no).
Note: when per-record deadlines are enabled, a short time limit may
cause problems with TLS over very slow network connections. The
reason is that a TLS protocol message can be up to 16 kbytes long
(with TLSv1), and that an entire TLS protocol message must be sent
or received within the per-record deadline.
Per-record deadlines were introduced with postscreen(8) in Postfix
2.8. This program does not receive mail, and therefore it has no
problems with TLS over slow connections.
Major changes - postscreen
--------------------------
[Feature 20111211] The proxymap(8) server can now be used to share
postscreen(8) or verify(8) caches between Postfix instances. Support
for proxymap-over-TCP, to share a Postfix database between hosts,
is expected to be completed in the Postfix 2.10 development cycle.
[Feature 20111209] memcache lookup and update support. This provides
a way to share postscreen(8) or verify(8) caches between Postfix
instances.
[Feature 20110228] postscreen(8) support to force remote SMTP clients
to implement proper MX lookup policy. By listening on both primary
and backup MX addresses, postscreen(8) can deny the temporary
whitelist status to clients that connect only to backup MX hosts,
and prevent them from talking to a Postfix SMTP server process.
Example: when 1.2.3.4 is a local backup IP address, specify
"postscreen_whitelist_interfaces = !1.2.3.4 static:all".
Major changes - tls
-------------------
[Incompat 20111205] Postfix now logs the result of successful TLS
negotiation with TLS logging levels of 0. See the smtp_tls_loglevel
and smtpd_tls_loglevel descriptions in the postconf(5) manpage for
other minor differences.
[Feature 20111205] Support for TLS public key fingerprint matching
in the Postfix SMTP client (in smtp_tls_policy_maps) and server (in
check_ccert access maps). Public key fingerprints are inherently
more specific than fingerprints over the entire certificate.
[Feature 20111205] Revision of Postfix TLS logging. The main
difference is that Postfix now logs the result of successful TLS
negotiation with TLS logging levels of 0. See the smtp_tls_loglevel
and smtpd_tls_loglevel descriptions in the postconf(5) manpage for
other minor differences.
Major changes - sasl authentication
-----------------------------------
[Incompat 20111218] To support external SASL authentication, e.g.,
in an NGINX proxy daemon, the Postfix SMTP server now always checks
the smtpd_sender_login_maps table, even without having
"smtpd_sasl_auth_enable = yes" in main.cf.
[Feature 20111218] Support for external SASL authentication via the
XCLIENT command. This is used to accept SASL authentication from
an SMTP proxy such as NGINX. This support works even without having
to specify "smtpd_sasl_auth_enable = yes" in main.cf.
[Incompat 20111106] To work around broken remote SMTP servers, the
Postfix SMTP client by default no longer appends the "AUTH=<>"
option to the MAIL FROM command. Specify "smtp_send_dummy_mail_auth
= yes" to restore the old behavior.
Major changes - large file support
----------------------------------
[Feature 20110219] Postfix now uses long integers for message_size_limit,
mailbox_size_limit and virtual_mailbox_limit. On LP64 systems (64-bit
long and pointer, but 32-bit integer), these limits can now exceed
2GB.
Major changes - ipv6
--------------------
[Incompat 20110918] The following changes were made in default
settings, in preparation for general availability of IPv6:
- The default inet_protocols value is now "all" instead of "ipv4",
meaning use both IPv4 and IPv6.
To avoid an unexpected loss of performance for sites without
global IPv6 connectivity, the commands "make upgrade" and "postfix
upgrade-configuration" now append "inet_protocols = ipv4" to
main.cf when no explicit inet_protocols setting is already present.
This workaround will be removed in a future release.
- The default smtp_address_preference value is now "any" instead
of "ipv6", meaning choose randomly between IPv6 and IPv4. With
this the Postfix SMTP client will have more success delivering
mail to sites that have problematic IPv6 configurations.
Major changes - address verification
------------------------------------
[Feature 20111211] The proxymap(8) server can now be used to share
postscreen(8) or verify(8) caches between Postfix instances. Support
for proxymap-over-TCP, to share a Postfix database between hosts,
is expected to be completed in the Postfix 2.10 development cycle.
[Feature 20111209] memcache lookup and update support. This provides
a way to share postscreen(8) or verify(8) caches between Postfix
instances.
[Feature 20111203] Support for time-dependent sender addresses
of address verification probes. The default address, double-bounce,
may end up on spammer blacklists. Although Postfix discards mail
for this address, such mail still uses up network bandwidth and
server resources. Specify an address_verify_sender_ttl value of
several hours or more to frustrate address harvesting.
Major changes - session transcript notification
-----------------------------------------------
[Incompat 20120114] By default the Postfix SMTP server no longer
reports transcripts of sessions where a client command is rejected
because a lookup table is unavailable. Postfix now implements gradual
degradation, for example, the SMTP server keeps running instead of
terminating with a fatal error. This change in error handling would
result in a very large number of "transcript of session" email
notifications when an LDAP or *SQL server goes down).
To receive such reports, add the new "data" class to the notify_classes
parameter value. The reports will be sent to the error_notice_recipient
address as before. This class is also used by the Postfix SMTP
client to report about sessions that fail because a table is
unavailable.
Major changes - logging
----------------------------------------
[Incompat 20120114] Logfile-based alerting systems may need to be
updated to look for "error" messages in addition to "fatal" messages.
Specify "daemon_table_open_error_is_fatal = yes" to get the historical
behavior (immediate termination with "fatal" message).
[Incompat 20111214] Logfile-based analysis tools may need to be
updated. The submission and smtps examples in the sample master.cf
file were updated to make their logging easier to distinguish.
See the source file pflogsumm_quickfix.txt for a "quick fix".
[Incompat 20111205] Postfix now logs the result of successful TLS
negotiation with TLS logging levels of 0. See the smtp_tls_loglevel
and smtpd_tls_loglevel descriptions in the postconf(5) manpage for
other minor differences.
[Incompat 20110219] The Postfix SMTP and QMQP servers now log
"hostname X does not resolve to address Y", when a "reverse hostname"
lookup result does not resolve to the client IP address. Until now
these servers logged "Y: hostname X verification failed" or "Y:
address not listed for hostname X" which people found confusing.

View File

@ -29,13 +29,17 @@ Example:
permissive = permit
smtpd_recipient_restrictions =
permit_mynetworks
reject_unauth_destination
check_recipient_access hash:/etc/postfix/recipient_access
permit_mynetworks
# reject_unauth_destination is not needed here if the mail
# relay policy is specified with smtpd_relay_restrictions
# (available with Postfix 2.10 and later).
reject_unauth_destination
check_recipient_access hash:/etc/postfix/recipient_access
...
/etc/postfix/recipient_access:
joe@my.domain permissive
jane@my.domain restrictive
joe@my.domain permissive
jane@my.domain restrictive
With this in place, you can use "restrictive" or "permissive" on the right-hand
side of your per-client, helo, sender, or recipient SMTPD access tables.
@ -63,6 +67,7 @@ SMTP client IP address, and therefore is subject to IP spoofing.
/etc/postfix/main.cf:
smtpd_recipient_restrictions =
...
check_recipient_access hash:/etc/postfix/access
...the usual stuff...
@ -88,6 +93,7 @@ subject to SMTP sender spoofing.
/etc/postfix/main.cf:
smtpd_recipient_restrictions =
...
check_recipient_access hash:/etc/postfix/protected_destinations
...the usual stuff...
@ -131,6 +137,7 @@ The example assumes DB/DBM files, but this could also be done with LDAP or SQL.
/etc/postfix/main.cf:
smtpd_recipient_restrictions =
...
check_sender_access hash:/etc/postfix/restricted_senders
...other stuff...

View File

@ -55,7 +55,8 @@ different steps:
addresses the client may use.
Successful authentication in the Postfix SMTP server requires a functional SASL
framework. Configuring SASL should therefore always be the first step.
framework. Configuring SASL should therefore always be the first step, before
configuring Postfix.
You can read more about the following topics:
@ -832,17 +833,26 @@ These permissions are not enabled by default.
MMaaiill rreellaayy aauutthhoorriizzaattiioonn
The permit_sasl_authenticated restriction allows SASL-authenticated SMTP
clients to send mail to remote destinations. Add it to the list of
smtpd_recipient_restrictions as follows:
With permit_sasl_authenticated the Postfix SMTP server can allow SASL-
authenticated SMTP clients to send mail to remote destinations. Examples:
# With Postfix 2.10 and later, the mail relay policy is
# preferably specified under smtpd_relay_restrictions.
/etc/postfix/main.cf:
smtpd_relay_restrictions =
permit_mynetworks
ppeerrmmiitt__ssaassll__aauutthheennttiiccaatteedd
reject_unauth_destination
# Older configurations combine relay control and spam control under
# smtpd_recipient_restrictions. To use this example with Postfix >=
# 2.10 specify "smtpd_relay_restrictions=".
/etc/postfix/main.cf:
smtpd_recipient_restrictions =
...
permit_mynetworks
ppeerrmmiitt__ssaassll__aauutthheennttiiccaatteedd
reject_unauth_destination
...
permit_mynetworks
ppeerrmmiitt__ssaassll__aauutthheennttiiccaatteedd
reject_unauth_destination
...other rules...
EEnnvveellooppee sseennddeerr aaddddrreessss aauutthhoorriizzaattiioonn
@ -862,9 +872,7 @@ authenticated client is allowed to use a particular envelope sender address:
smtpd_recipient_restrictions =
...
rreejjeecctt__sseennddeerr__llooggiinn__mmiissmmaattcchh
permit_sasl_authenticated
permit_mynetworks
reject_unauth_destination
permit_sasl_authenticated
...
The controlled_envelope_senders table specifies the binding between a sender
@ -1209,7 +1217,7 @@ example. Information sent by the client (that is, you) is shown in bboolldd
250-STARTTLS
...
Instead of port 25 (smtp), specify port 587 (submission) where appriopriate.
Instead of port 25 (smtp), specify port 587 (submission) where appropriate.
EEnnccrryypptteedd SSMMTTPP sseessssiioonn ((TTLLSS))

View File

@ -27,10 +27,18 @@ abused systems end up on anti-spammer blacklists. See, for example, the
information on http://www.mail-abuse.org/ and other websites.
By default, Postfix has a moderately restrictive approach to mail relaying.
Postfix forwards mail only from clients in trusted networks, or to domains that
are configured as authorized relay destinations. For a description of the
default policy, see the smtpd_recipient_restrictions parameter in the postconf
(5) manual page, and the information that is referenced from there.
Postfix forwards mail only from clients in trusted networks, from clients that
have authenticated with SASL, or to domains that are configured as authorized
relay destinations. For a description of the default mail relay policy, see the
smtpd_relay_restrictions parameter in the postconf(5) manual page, and the
information that is referenced from there.
NOTE: Postfix versions before 2.10 did not have smtpd_relay_restrictions.
They combined the mail relay and spam blocking policies, under
smtpd_recipient_restrictions. This could lead to unexpected results. For
example, a permissive spam blocking policy could unexpectedly result in a
permissive mail relay policy. An example of this is documented under
"Dangerous use of smtpd_recipient_restrictions".
Most of the Postfix SMTP server access controls are targeted at stopping junk
email.
@ -123,8 +131,23 @@ Examples of simple restriction lists are:
# Don't accept mail from domains that don't exist.
smtpd_sender_restrictions = reject_unknown_sender_domain
# Whitelisting: local clients may specify any destination domain.
smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination
# Relay control (Postfix 2.10 and later): local clients and
# authenticated clients may specify any destination domain.
smtpd_relay_restrictions = permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination
# Spam control: exclude local clients and authenticated clients
# from DNSBL lookups.
smtpd_recipient_restrictions = permit_mynetworks,
permit_sasl_authenticated,
# reject_unauth_destination is not needed here if the mail
# relay policy is specified under smtpd_relay_restrictions
# (available with Postfix 2.10 and later).
reject_unauth_destination
reject_rbl_client zen.spamhaus.org,
reject_rhsbl_helo dbl.spamhaus.org,
reject_rhsbl_sender dbl.spamhaus.org
# Block clients that speak too early.
smtpd_data_restrictions = reject_unauth_pipelining
@ -143,23 +166,52 @@ The table below summarizes the purpose of each SMTP access restriction list.
All lists use the exact same syntax; they differ only in the time of evaluation
and in the effect of a REJECT or DEFER result.
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|RReessttrriiccttiioonn lliisstt nnaammee |SSttaattuuss |EEffffeecctt ooff RREEJJEECCTT oorr DDEEFFEERR rreessuulltt|
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
|smtpd_client_restrictions |Optional|Reject all client commands |
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
|smtpd_helo_restrictions |Optional|Reject HELO/EHLO information |
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
|smtpd_sender_restrictions |Optional|Reject MAIL FROM information |
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
|smtpd_recipient_restrictions |Required|Reject RCPT TO information |
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
|smtpd_data_restrictions |Optional|Reject DATA command |
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
|smtpd_end_of_data_restrictions|Optional|Reject END-OF-DATA command |
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
|smtpd_etrn_restrictions |Optional|Reject ETRN command |
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
| | | |EEffffeecctt ooff |
|RReessttrriiccttiioonn lliisstt nnaammee |VVeerrssiioonn|SSttaattuuss |RREEJJEECCTT oorr |
| | | |DDEEFFEERR |
| | | |rreessuulltt |
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ |
| | | |Reject all |
|smtpd_client_restrictions |All |Optional |client |
| | | |commands |
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ |
| | | |Reject |
|smtpd_helo_restrictions |All |Optional |HELO/EHLO |
| | | |information|
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ |
| | | |Reject MAIL|
|smtpd_sender_restrictions |All |Optional |FROM |
| | | |information|
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ |
| | |Required if | |
| |>= 2.10|smtpd_recipient_restrictions| |
| | |does not enforce relay |Reject RCPT|
|smtpd_relay_restrictions | |policy |TO |
| |_ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |information|
| | | | |
| |< 2.10 |Not available | |
| | | | |
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ |
| | |Required if | |
| |>= 2.10|smtpd_relay_restrictions | |
| | |does not enforce relay |Reject RCPT|
|smtpd_recipient_restrictions | |policy |TO |
| |_ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |information|
| | | | |
| |< 2.10 |Required | |
| | | | |
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ |
|smtpd_data_restrictions |>= 2.0 |Optional |Reject DATA|
| | | |command |
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ |
| | | |Reject END-|
|smtpd_end_of_data_restrictions|>= 2.2 |Optional |OF-DATA |
| | | |command |
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ |
|smtpd_etrn_restrictions |All |Optional |Reject ETRN|
| | | |command |
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ |
DDeellaayyeedd eevvaalluuaattiioonn ooff SSMMTTPP aacccceessss rreessttrriiccttiioonn lliissttss
@ -174,9 +226,9 @@ Current Postfix versions postpone the evaluation of client, helo and sender
restriction lists until the RCPT TO or ETRN command. This behavior is
controlled by the smtpd_delay_reject parameter. Restriction lists are still
evaluated in the proper order of (client, helo, etrn) or (client, helo, sender,
recipient, data, or end-of-data) restrictions. When a restriction list
(example: client) evaluates to REJECT or DEFER the other restriction lists
(example: helo, sender, etc.) are skipped.
relay, recipient, data, or end-of-data) restrictions. When a restriction list
(example: client) evaluates to REJECT or DEFER the restriction lists that
follow (example: helo, sender, etc.) are skipped.
Around the time that smtpd_delay_reject was introduced, Postfix was also
changed to support mixed restriction lists that combine information about the
@ -215,6 +267,12 @@ REJECT or DEFER, the recipient address is rejected; no surprises here. If the
result is PERMIT, then the recipient address is accepted. And this is where
surprises can happen.
The problem is that Postfix versions before 2.10 did not have
smtpd_relay_restrictions. They combined the mail relay and spam blocking
policies, under smtpd_recipient_restrictions. The result is that a permissive
spam blocking policy could unexpectedly result in a permissive mail relay
policy.
Here is an example that shows when a PERMIT result can result in too much
access permission:
@ -223,7 +281,7 @@ access permission:
3 permit_mynetworks
4 check_helo_access hash:/etc/postfix/helo_access
5 reject_unknown_helo_hostname
6 reject_unauth_destination
6 rreejjeecctt__uunnaauutthh__ddeessttiinnaattiioonn
7
8 /etc/postfix/helo_access:
9 localhost.localdomain PERMIT
@ -237,12 +295,26 @@ The problem with this configuration is that smtpd_recipient_restrictions
evaluates to PERMIT for EVERY host that announces itself as
"localhost.localdomain", making Postfix an open relay for all such hosts.
In order to avoid surprises like these with smtpd_recipient_restrictions, you
should place non-recipient restrictions AFTER the reject_unauth_destination
restriction, not before. In the above example, the HELO based restrictions
should be placed AFTER reject_unauth_destination, or better, the HELO based
restrictions should be placed under smtpd_helo_restrictions where they can do
no harm.
With Postfix before version 2.10 you should place non-recipient restrictions
AFTER the reject_unauth_destination restriction, not before. In the above
example, the HELO based restrictions should be placed AFTER
reject_unauth_destination, or better, the HELO based restrictions should be
placed under smtpd_helo_restrictions where they can do no harm.
1 /etc/postfix/main.cf:
2 smtpd_recipient_restrictions =
3 permit_mynetworks
4 rreejjeecctt__uunnaauutthh__ddeessttiinnaattiioonn
5 check_helo_access hash:/etc/postfix/helo_access
6 reject_unknown_helo_hostname
7
8 /etc/postfix/helo_access:
9 localhost.localdomain PERMIT
The above mistake will not happen with Postfix 2.10 and later, when the relay
policy is specified under smtpd_relay_restrictions, and the spam blocking
policy under smtpd_recipient_restrictions. Then, a permissive spam blocking
policy will not result in a permissive mail relay policy.
SSMMTTPP aacccceessss rruullee tteessttiinngg
@ -256,14 +328,18 @@ soft_bounce
changing all 5xx SMTP reply codes into 4xx.
warn_if_reject
This is a different safety net that changes SMTP server REJECT actions into
warnings. Instead of rejecting a command, Postfix logs what it would
reject. Specify "warn_if_reject" in an SMTP access restriction list, before
the restriction that you want to test without actually rejecting mail.
When placed before a reject-type restriction, access table query, or
check_policy_service query, this logs a "reject_warning" message instead of
rejecting a request (when a reject-type restriction fails due to a
temporary error, this logs a "reject_warning" message for any implicit
"defer_if_permit" actions that would normally prevent mail from being
accepted by some later access restriction). This feature has no effect on
defer_if_reject restrictions.
XCLIENT
With this Postfix 2.1 feature, authorized SMTP clients can impersonate
other systems, so that you can do realistic SMTP access rule tests.
Examples of how to impersonate other systems for access rule testing are
given at the end of the XCLIENT_README document.
With this feature, an authorized SMTP client can impersonate other systems
and perform realistic SMTP access rule tests. Examples of how to
impersonate other systems for access rule testing are given at the end of
the XCLIENT_README document.
This feature is available in Postfix 2.1.

View File

@ -206,6 +206,10 @@ NOTES:
"connection refused" and other problems when you increase the smtpd process
limit.
* Line 8: reject_unauth_destination is not needed here if the mail relay
policy is specified with smtpd_relay_restrictions (available with Postfix
2.10 and later).
* Lines 8, 9: always specify "check_policy_service" AFTER
"reject_unauth_destination" or else your system could become an open relay.
@ -221,7 +225,8 @@ NOTES:
(in the above example, "policy") and a built-in suffix (in the above
example: "_time_limit").
* Solaris UNIX-domain sockets do not work reliably. Use TCP sockets instead:
* With Solaris < 9, or Postfix < 2.10 on any Solaris version, use TCP sockets
instead of UNIX-domain sockets:
1 /etc/postfix/master.cf:
2 127.0.0.1:9998 inet n n n - 0 spawn
@ -323,14 +328,19 @@ Notes:
it. See the spawn(8) manpage for more information about the
transport_time_limit parameter.
* Line 9: reject_unauth_destination is not needed here if the mail relay
policy is specified with smtpd_relay_restrictions (available with Postfix
2.10 and later).
Note: the "greylist_time_limit" parameter will not show up in
"postconf" command output before Postfix version 2.9. This limitation
applies to many parameters whose name is a combination of a master.cf
service name (in the above example, "greylist") and a built-in suffix
(in the above example: "_time_limit").
On Solaris you must use inet: style sockets instead of unix: style, as detailed
in the "Policy client/server configuration" section above.
With Solaris < 9, or Postfix < 2.10 on any Solaris version, use inet: style
sockets instead of unix: style, as detailed in the "Policy client/server
configuration" section above.
1 /etc/postfix/master.cf:
2 127.0.0.1:9998 inet n n n - 0 spawn
@ -369,8 +379,13 @@ filtering/sender-domain-validate.in.
NOTES:
* Line 9: On Solaris you must use inet: style sockets instead of unix: style,
as detailed in the "Example: greylist policy server" section above.
* Line 9: On Solaris < 9, or Postfix < 2.10 on any Solaris version, use inet:
style sockets instead of unix: style, as detailed in the "Example: greylist
policy server" section above.
* Line 5: reject_unauth_destination is not needed here if the mail relay
policy is specified with smtpd_relay_restrictions (available with Postfix
2.10 and later).
* Line 6: Be sure to specify "check_sender_access" AFTER
"reject_unauth_destination" or else your system could become an open mail
@ -407,8 +422,13 @@ avoids most of the delays and most of the database pollution problem.
NOTES:
* Line 7: On Solaris you must use inet: style sockets instead of unix: style,
as detailed in the "Example: greylist policy server" section above.
* Line 7: On Solaris < 9, or Postfix < 2.10 on any Solaris version, use inet:
style sockets instead of unix: style, as detailed in the "Example: greylist
policy server" section above.
* Line 5: reject_unauth_destination is not needed here if the mail relay
policy is specified with smtpd_relay_restrictions (available with Postfix
2.10 and later).
* Lines 6-7: Be sure to specify check_sender_access and check_policy_service
AFTER reject_unauth_destination or else your system could become an open

View File

@ -125,8 +125,8 @@ This is configured by editing the master.cf file:
smtp inet n - n - 20 smtpd
-o smtpd_proxy_filter=127.0.0.1:10025
-o smtpd_client_connection_count_limit=10
# Postfix 2.7 and later performance feature.
# -o smtpd_proxy_options=speed_adjust
# Postfix 2.7 and later performance feature.
# -o smtpd_proxy_options=speed_adjust
#
# After-filter SMTP server. Receive mail from the content filter
# on localhost port 10026.
@ -136,6 +136,8 @@ This is configured by editing the master.cf file:
-o smtpd_client_restrictions=
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
# Postfix 2.10 and later: specify empty smtpd_relay_restrictions.
-o smtpd_relay_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o smtpd_data_restrictions=
-o mynetworks=127.0.0.0/8

View File

@ -63,32 +63,38 @@ the network, and it does not deliver any mail locally. A null client typically
uses POP, IMAP or NFS for mailbox access.
In this example we assume that the Internet domain name is "example.com" and
that the machine is named "nullclient.example.com". As usual, the examples show
that the machine is named "hostname.example.com". As usual, the examples show
only parameters that are not left at their default settings.
1 /etc/postfix/main.cf:
2 myorigin = $mydomain
3 relayhost = $mydomain
4 inet_interfaces = loopback-only
5 local_transport = error:local delivery is disabled
6
7 /etc/postfix/master.cf:
8 Comment out the local delivery agent entry
2 myhostname = hostname.example.com
3 myorigin = $mydomain
4 relayhost = $mydomain
5 inet_interfaces = loopback-only
6 mydestination =
Translation:
* Line 2: Send mail as "user@example.com" (instead of
"user@nullclient.example.com"), so that nothing ever has a reason to send
mail to "user@nullclient.example.com".
* Line 2: Set myhostname to hostname.example.com, in case the machine name
isn't set to a fully-qualified domain name (use the command "postconf -
d myhostname" to find out what the machine name is).
* Line 3: Forward all mail to the mail server that is responsible for the
* Line 2: The myhostname value also provides the default value for the
mydomain parameter (here, "mydomain = example.com").
* Line 3: Send mail as "user@example.com" (instead of
"user@hostname.example.com"), so that nothing ever has a reason to send
mail to "user@hostname.example.com".
* Line 4: Forward all mail to the mail server that is responsible for the
"example.com" domain. This prevents mail from getting stuck on the null
client if it is turned off while some remote destination is unreachable.
Specify a real hostname here if your "example.com" domain has no MX record.
* Line 4: Do not accept mail from the network.
* Line 5: Do not accept mail from the network.
* Lines 5-8: Disable local mail delivery. All mail goes to the mail server as
specified in line 3.
* Line 6: Disable local mail delivery. All mail goes to the mail server as
specified in line 4.
PPoossttffiixx oonn aa llooccaall nneettwwoorrkk
@ -242,34 +248,44 @@ purpose of the firewall email function.
3 relay_domains = example.com
4 parent_domain_matches_subdomains =
5 debug_peer_list smtpd_access_maps
6 smtpd_recipient_restrictions =
7 permit_mynetworks reject_unauth_destination
8
9 relay_recipient_maps = hash:/etc/postfix/relay_recipients
10 transport_maps = hash:/etc/postfix/transport
11
12 /etc/postfix/relay_recipients:
13 user1@example.com x
14 user2@example.com x
15 . . .
16
17 /etc/postfix/transport:
18 example.com smtp:[inside-gateway.example.com]
6a # Postfix 2.10 and later support separate relay control and
7a # spam control.
8a smtpd_relay_restrictions =
9a permit_mynetworks reject_unauth_destination
10a smtpd_recipient_restrictions = ...spam blocking rules....
6b # Older configurations combine relay control and spam control. To
7b # use this with Postfix >= 2.10 specify "smtpd_relay_restrictions=".
8b smtpd_recipient_restrictions =
9b permit_mynetworks reject_unauth_destination
10b ...spam blocking rules....
11 relay_recipient_maps = hash:/etc/postfix/relay_recipients
12 transport_maps = hash:/etc/postfix/transport
13
14 /etc/postfix/relay_recipients:
15 user1@example.com x
16 user2@example.com x
17 . . .
18
19 /etc/postfix/transport:
20 example.com smtp:[inside-gateway.example.com]
Translation:
* Lines 1-7: Accept mail from local systems in $mynetworks, and accept mail
* Lines 1-10: Accept mail from local systems in $mynetworks, and accept mail
from outside for "user@example.com" but not for
"user@anything.example.com". The magic is in lines 4-5.
* Lines 9, 12-14: Define the list of valid addresses in the "example.com"
* Lines 11, 13-16: Define the list of valid addresses in the "example.com"
domain that can receive mail from the Internet. This prevents the mail
queue from filling up with undeliverable MAILER-DAEMON messages. If you
can't maintain a list of valid recipients then you must specify
"relay_recipient_maps =" (that is, an empty value), or you must specify an
"@example.com x" wild-card in the relay_recipients table.
* Lines 10, 17-18: Route mail for "example.com" to the inside gateway
* Lines 12, 19-20: Route mail for "example.com" to the inside gateway
machine. The [] forces Postfix to do no MX lookup.
Specify ddbbmm instead of hhaasshh if your system uses ddbbmm files instead of ddbb files.
@ -379,26 +395,36 @@ When your system is SECONDARY MX host for a remote site this is all you need:
3
4 /etc/postfix/main.cf:
5 relay_domains = . . . the.backed-up.domain.tld
6 smtpd_recipient_restrictions =
7 permit_mynetworks reject_unauth_destination
8
9 # You must specify your NAT/proxy external address.
10 #proxy_interfaces = 1.2.3.4
11
12 relay_recipient_maps = hash:/etc/postfix/relay_recipients
6a # Postfix 2.10 and later support separate relay control and
7a # spam control.
8a smtpd_relay_restrictions =
9a permit_mynetworks reject_unauth_destination
10a smtpd_recipient_restrictions = ...spam blocking rules....
6b # Older configurations combine relay control and spam control. To
7b # use this with Postfix >= 2.10 specify "smtpd_relay_restrictions=".
8b smtpd_recipient_restrictions =
9b permit_mynetworks reject_unauth_destination
10b ...spam blocking rules....
11 # You must specify your NAT/proxy external address.
12 #proxy_interfaces = 1.2.3.4
13
14 /etc/postfix/relay_recipients:
15 user1@the.backed-up.domain.tld x
16 user2@the.backed-up.domain.tld x
17 . . .
14 relay_recipient_maps = hash:/etc/postfix/relay_recipients
15
16 /etc/postfix/relay_recipients:
17 user1@the.backed-up.domain.tld x
18 user2@the.backed-up.domain.tld x
19 . . .
When your system is PRIMARY MX host for a remote site you need the above, plus:
18 /etc/postfix/main.cf:
19 transport_maps = hash:/etc/postfix/transport
20
21 /etc/postfix/transport:
22 the.backed-up.domain.tld relay:[their.mail.host.tld]
20 /etc/postfix/main.cf:
21 transport_maps = hash:/etc/postfix/transport
22
23 /etc/postfix/transport:
24 the.backed-up.domain.tld relay:[their.mail.host.tld]
Important notes:
@ -408,20 +434,20 @@ Important notes:
* Do not list the.backed-up.domain.tld in virtual_mailbox_domains.
* Lines 1-7: Forward mail from the Internet for "the.backed-up.domain.tld" to
* Lines 1-9: Forward mail from the Internet for "the.backed-up.domain.tld" to
the primary MX host for that domain.
* Line 10: This is a must if Postfix receives mail via a NAT relay or proxy
* Line 12: This is a must if Postfix receives mail via a NAT relay or proxy
that presents a different IP address to the world than the local machine.
* Lines 12-16: Define the list of valid addresses in the "the.backed-
* Lines 14-18: Define the list of valid addresses in the "the.backed-
up.domain.tld" domain. This prevents your mail queue from filling up with
undeliverable MAILER-DAEMON messages. If you can't maintain a list of valid
recipients then you must specify "relay_recipient_maps =" (that is, an
empty value), or you must specify an "@the.backed-up.domain.tld x" wild-
card in the relay_recipients table.
* Line 22: The [] forces Postfix to do no MX lookup.
* Line 24: The [] forces Postfix to do no MX lookup.
Specify ddbbmm instead of hhaasshh if your system uses ddbbmm files instead of ddbb files.
To find out what lookup tables Postfix supports, use the command "ppoossttccoonnff --mm".

View File

@ -383,15 +383,12 @@ accept remote connections.
OOtthheerr mmeeaassuurreess ttoo ooffff--llooaadd zzoommbbiieess
OpenBSD spamd implements a daemon that handles all connections from "new"
clients. Only well-behaved mail clients are allowed to talk to the mail server.
Other clients are tarpitted, and will never get a chance to affect mail server
performance.
At some point in the future, Postfix may come with a simple front-end daemon
that does basic greylisting and pipelining detection to keep zombies and other
ratware away from Postfix itself. This would use the "pass" service type which
has been available in stable Postfix releases since Postfix 2.5.
The postscreen(8) daemon, introduced with Postfix 2.8, provides additional
protection against mail server overload. One postscreen(8) process handles
multiple inbound SMTP connections, and decides which clients may to talk to a
Postfix SMTP server process. By keeping spambots away, postscreen(8) leaves
more SMTP server processes available for legitimate clients, and delays the
onset of server overload conditions.
CCrreeddiittss

View File

@ -77,8 +77,8 @@ When Postfix responds slowly to SMTP clients:
* If the number of smtpd(8) processes has reached the process limit as
specified in master.cf, new SMTP clients must wait until a process becomes
available. Increase the number of processes if memory permits. See the
instructions given under "Tuning the number of Postfix processes".
available. See the STRESS_README and POSTSCREEN_README documents for
measures that help to prevent SMTP server overload.
DDooiinngg mmoorree wwoorrkk wwiitthh yyoouurr SSMMTTPP sseerrvveerr pprroocceesssseess
@ -268,12 +268,12 @@ should never be the default. They should be used only for transports that
deliver mail to a small number of high volume domains.
A common situation where high concurrency is called for is on gateways relaying
a high volume of mail from between the Internet and an intranet mail
environment. Approximately half the mail (assuming equal volumes inbound and
outbound) will be destined for the internal mail hubs. Since the internal mail
hubs will be receiving all external mail exclusively from the gateway, it is
reasonable to configure the gateway to make greater demands on the capacity of
the internal SMTP servers.
a high volume of mail between the Internet and an intranet mail environment.
Approximately half the mail (assuming equal volumes inbound and outbound) will
be destined for the internal mail hubs. Since the internal mail hubs will be
receiving all external mail exclusively from the gateway, it is reasonable to
configure the gateway to make greater demands on the capacity of the internal
SMTP servers.
The tuning of the inbound concurrency limits need not be trial and error. A
high volume capable mailhub should be able to easily handle 50 or 100 (rather
@ -312,8 +312,8 @@ Postfix queue manager breaks up the list of recipients into smaller lists.
Postfix will attempt to send multiple copies of the message in parallel.
IMPORTANT: Be careful when increasing the recipient limit per message delivery;
some smtpd(8) servers abort the connection when they run out of memory or when
a hard recipient limit is reached, so that the message will never be delivered.
some SMTP servers abort the connection when they run out of memory or when a
hard recipient limit is reached, so that the message will never be delivered.
The smtpd_recipient_limit parameter (default: 1000) controls how many
recipients the Postfix smtpd(8) server will take per delivery. The default
@ -400,14 +400,14 @@ client processes, 10 SMTP server processes, and so on:
/etc/postfix/main.cf:
default_process_limit = 10
You need to execute "postfix reload" to make the change effective. The limits
are enforced by the Postfix master(8) daemon which does not automatically read
You need to execute "postfix reload" to make the change effective. This limit
is enforced by the Postfix master(8) daemon which does not automatically read
main.cf when it changes.
You can override the process limit for specific Postfix daemons by editing the
master.cf file. For example, if you do not wish to receive 100 SMTP messages at
the same time, but do not want to change the process limits for local mail
deliveries, you could specify:
the same time, but do not want to change the process limits for other Postfix
daemons, you could specify:
/etc/postfix/master.cf:
# ====================================================================

View File

@ -138,7 +138,7 @@ The first form uses the default main.cf VERP delimiters, the second form
overrides them explicitly. The values shown are the recommended ones.
You can use the smtpd_command_filter feature to append XVERP to SMTP commands
from legacy sofware. This requires Postfix 2.7 or later.
from legacy software. This requires Postfix 2.7 or later.
/etc/postfix/main.cf:
smtpd_command_filter = pcre:/etc/postfix/append_verp.pcre

View File

@ -259,7 +259,10 @@ More details about the virtual mailbox delivery agent are given in the virtual
NNoonn--PPoossttffiixx mmaaiillbbooxx ssttoorree:: sseeppaarraattee ddoommaaiinnss,, nnoonn--UUNNIIXX aaccccoouunnttss
This is a variation on the Postfix virtual mailbox example. Again, every hosted
address can have its own mailbox.
address can have its own mailbox. However, most parameters that control the
virtual(8) delivery agent are no longer applicable: only
virtual_mailbox_domains and virtual_mailbox_maps stay in effect. These
parameters are needed to reject mail for unknown recipients.
While non-Postfix software is being used for final delivery, some Postfix
concepts are still needed in order to glue everything together. For additional

View File

@ -1,33 +1,251 @@
The stable Postfix release is called postfix-2.9.x where 2=major
release number, 9=minor release number, x=patchlevel. The stable
The stable Postfix release is called postfix-2.10.x where 2=major
release number, 10=minor release number, x=patchlevel. The stable
release never changes except for patches that address bugs or
emergencies. Patches change the patchlevel and the release date.
New features are developed in snapshot releases. These are called
postfix-2.10-yyyymmdd where yyyymmdd is the release date (yyyy=year,
postfix-2.11-yyyymmdd where yyyymmdd is the release date (yyyy=year,
mm=month, dd=day). Patches are never issued for snapshot releases;
instead, a new snapshot is released.
The mail_release_date configuration parameter (format: yyyymmdd)
specifies the release date of a stable release or snapshot release.
If you upgrade from Postfix 2.7 or earlier, read RELEASE_NOTES-2.8
If you upgrade from Postfix 2.8 or earlier, read RELEASE_NOTES-2.9
before proceeding.
Major changes with Postfix 2.9.6
--------------------------------
Debian Exim before 4.80-3 interoperability workaround
-----------------------------------------------------
Thanks to OpenSSL documentation, the Postfix 2.9.0..2.9.5 SMTP
client and server computed incorrect TLS certificate PUBLIC-KEY
fingerprints. Support for certificate PUBLIC-KEY finger prints
was introduced with Postfix 2.9; there is no known problem with the
certificate fingerprint algorithms available since Postfix 2.2.
Debian Exim versions before 4.80-3 may fail to communicate with
Postfix and possibly other MTAs, with the following Exim SMTP client
error message:
TLS error on connection to server-name [server-address]
(gnutls_handshake): The Diffie-Hellman prime sent by the server
is not acceptable (not long enough)
This problem may affect Debian Exim versions before 4.80-3 that use
TLS with EDH (Ephemeral Diffie-Hellman) key exchanges. For details
see http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=676563
To restore Postfix SMTP server interoperability with affected Exim
SMTP clients, configure the Postfix SMTP server to use a 2048-bit
prime number instead of 1024:
# cd /etc/postfix
# openssl dhparam -out dh2048.pem 2048
# postconf -e 'smtpd_tls_dh1024_param_file = ${config_directory}/dh2048.pem'
This change increases the CPU cost of EDH key exchanges (rarely a
problem for SMTP servers) and is unlikely to cause problems with
other SMTP client implementations.
This problem should not affect EECDH (Ephemeral Elliptic Curve
Diffie-Hellman) key exchanges.
Major changes - laptop-friendliness
-----------------------------------
[Incompat 20120924] Postfix no longer uses FIFOs to emulate UNIX-domain
sockets on Solaris 9 (Vintage 2002!) and later. If you install
Postfix for the first time on an older Solaris system, edit the
master.cf file and replace "unix" with "fifo" for the pickup and
qmgr services.
[Feature 20120924] the default master.cf file now uses "unix" instead
of "fifo" for the pickup and qmgr services. This avoids periodic
disk drive spin-up.
Major changes - permit logging
------------------------------
[Feature 20120303] [Feature 20120303] New control for "permit"
logging in smtpd_mumble_restrictions (by default, the SMTP server
logs "reject" actions but not "permit" actions). Specify
"smtpd_log_access_permit_actions = static:all" to log all "permit"-style
actions, or specify a list of explicit action names. More details
are in the postconf(5) manpage.
Major changes - postconf
------------------------
[Incompat 20121224] The postconf command produces more warnings:
- An attempt to modify a read-only parameter (process_name, process_id)
in main.cf or master.cf.
- An undefined $name in a parameter value in main.cf or master.cf
(except for backwards-compatibility parameters such as $virtual_maps).
[Feature 20121224] The postconf command has been updated to make
trouble-shooting (and support) easier. In summary, use "postconf
-Mxf" and "postconf -nxf" to review master.cf and main.cf parameter
settings with expanded parameter values.
- "postconf -x" now expands $name in main.cf and master.cf parameter
values.
- postconf warns about attempts to modify a read-only parameter
(process_name, process_id) in main.cf or master.cf.
- postconf warns about an undefined $name in a parameter value in
main.cf or master.cf (except for backwards-compatibility parameters
such as $virtual_maps).
[Feature 20121227]
- "postconf -o name=value" overrides main.cf parameter settings.
This can be used, for example, to examine stress-dependent settings
with "postconf -x -o stress=yes".
Major changes - postscreen
--------------------------
[Incompat 20121123] The postscreen deep protocol tests now log the
last command before a protocol error ("UNIMPLEMENTED" when the last
command is not implemented, "CONNECT" when there was no prior
command). The changed logfile messages are:
NON-SMTP COMMAND from [address]:port after command: text
BARE NEWLINE from [address]:port after command
COMMAND TIME LIMIT from [address]:port after command
COMMAND COUNT LIMIT from [address]:port after command
COMMAND LENGTH LIMIT from [address]:port after command
Major changes - load-balancer support
-------------------------------------
[Incompat 20120625] The postscreen(8)-to-smtpd(8) protocol has
changed. To avoid "cannot receive connection attributes" warnings
and dropped connections, execute the command "postfix reload". No
mail will be lost as long as the remote SMTP client tries again
later.
[Feature 20120625] Support for upstream proxy agent in the postscreen(8)
and smtpd(8) daemons. To enable the haproxy protocol, specify one
of the following:
postscreen_upstream_proxy_protocol = haproxy
smtpd_upstream_proxy_protocol = haproxy
Note 1: smtpd_upstream_proxy_protocol can't be used in smtpd processes
that are behind postscreen. Configure postscreen_upstream_proxy_protocol
instead.
Note 2: To use the nginx proxy with smtpd(8), enable the XCLIENT
protocol with smtpd_authorized_xclient_hosts. This supports SASL
authentication in the proxy agent (Postfix 2.9 and later).
Major changes - relay safety
----------------------------
[Incompat 20130613] New smtpd_relay_restrictions parameter built-in
default settings:
smtpd_relay_restrictions =
permit_mynetworks
permit_sasl_authenticated
defer_unauth_destination
This safety net prevents open relay problems due to mistakes
with spam filter rules in smtpd_recipient_restrictions.
If your site has a complex mail relay policy configured under
smtpd_recipient_restrictions, this safety net may defer mail that
Postfix should accept.
To fix this safety net, take one of the following actions:
- Set smtpd_relay_restrictions empty, and keep using the existing
mail relay authorization policy in smtpd_recipient_restrictions.
- Copy the existing mail relay authorization policy from
smtpd_recipient_restrictions to smtpd_relay_restrictions.
There is no need to change the value of smtpd_recipient_restrictions.
[Feature 20130613] This version introduces the smtpd_relay_restrictions
feature for mail relay control. The new built-in default settings
are:
smtpd_relay_restrictions =
permit_mynetworks
permit_sasl_authenticated
defer_unauth_destination
smtpd_recipient_restrictions =
( optional spam blocking rules would go here )
For comparison, this is the Postfix before 2.10 default:
smtpd_recipient_restrictions =
permit_mynetworks
reject_unauth_destination
( optional spam blocking rules would go here )
With Postfix versions before 2.10, the mail relay policy and spam
blocking policy were combined under smtpd_recipient_restrictions,
resulting in error-prone configuration.
As of Postfix 2.10, the mail relay policy is preferably implemented
with smtpd_relay_restrictions, so that a permissive spam blocking
policy under smtpd_recipient_restrictions will not unexpectedly
result in a permissive mail relay policy.
As of Postfix 2.10.0 the smtpd_relay_restrictions parameter built-in
default settings are:
smtpd_relay_restrictions =
permit_mynetworks
permit_sasl_authenticated
defer_unauth_destination
If your site has a complex mail relay policy configured under
smtpd_recipient_restrictions, this safety net may defer mail that
Postfix should accept.
To migrate from an earlier Postfix release with the least amount
of pain:
- Set smtpd_relay_restrictions empty, and keep using the existing
mail relay authorization policy in smtpd_recipient_restrictions.
- There is no need to change the value of smtpd_recipient_restrictions.
To take advantage of the new smtpd_relay_restrictions feature:
- Copy the existing mail relay authorization policy from
smtpd_recipient_restrictions to smtpd_relay_restrictions.
- There is no need to change the value of smtpd_recipient_restrictions.
Major changes - start-up
------------------------
[Feature 20120306] New master "-w" option, to wait for master daemon
process initialization to complete. This feature returns an error
exit status if master daemon initialization fails, or if it does
not complete in a reasonable amount of time. The exit status is
used by "postfix start" to provide more accurate information to
system start-up scripts.
Major changes - tls
-------------------
[Incompat 20130203] Thanks to OpenSSL documentation, the Postfix
2.9.0..2.9.5 SMTP client and server server used an incorrect procedure
to compute TLS certificate PUBLIC-KEY fingerprints (these may be
used in the check_ccert_access and in smtp_tls_policy_maps features).
Support for certificate PUBLIC-KEY finger prints was introduced
with Postfix 2.9; there is no known problem with the certificate
fingerprint algorithms available since Postfix 2.2.
Certificate PUBLIC-KEY finger prints may be used in the Postfix
SMTP server (with "check_ccert_access") and in the Postfix SMTP
client (with the "fingerprint" security level).
Specify "tls_legacy_public_key_fingerprints = yes" temporarily,
Specify "tls_legacy_public_key_fingerprints = yes" temporarily,
pending a migration from configuration files with incorrect Postfix
2.9.0..2.9.5 certificate PUBLIC-KEY finger prints, to the correct
fingerprints used by Postfix 2.9.6 and later.
@ -44,12 +262,10 @@ $ openssl x509 -in cert.pem -noout -pubkey | \
openssl rsa -pubin -outform DER | \
openssl dgst -md5 -c
Major changes with Postfix 2.9.2
--------------------------------
This release adds support to turn off the TLSv1.1 and TLSv1.2
protocols. Introduced with OpenSSL version 1.0.1, these are known
to cause inter-operability problems with for example hotmail.
[Feature 20120422] This release adds support to turn off the TLSv1.1
and TLSv1.2 protocols. Introduced with OpenSSL version 1.0.1, these
are known to cause inter-operability problems with for example
hotmail.
The radical workaround is to temporarily turn off problematic
protocols globally:
@ -80,340 +296,3 @@ Important:
override the next-hop destination with transport_maps, relayhost,
sender_dependent_relayhost_maps, or otherwise, you need to specify
the same destination for the smtp_tls_policy_maps lookup key.
Major changes - critical
------------------------
[Incompat 20110321] You need to "postfix reload" after upgrade from
snapshot 20110320 or earlier. The hash_queue_names algorithm was
changed to provide better performance with long queue IDs.
[Incompat 20110313] Use "postfix reload" after "make upgrade" on a
running Postfix system. This is needed because the protocol between
postscreen(8) and dnsblog(8) has changed.
Major changes - library API
---------------------------
[Incompat 20110130] The VSTREAM error flags are now split into
separate read and write error flags. As a result of this change,
all programs that use Postfix VSTREAMs MUST be recompiled.
Major changes - compatibility
-----------------------------
[Incompat 20111012] For consistency with the SMTP standard, the
(client-side) smtp_line_length_limit default value was increased
from 990 characters to 999 (i.e. 1000 characters including <CR><LF>).
Specify "smtp_line_length_limit = 990" to restore historical Postfix
behavior.
[Incompat 20111012] To simplify integration with third-party
applications, the Postfix sendmail command now always transforms
all input lines ending in <CR><LF> into UNIX format (lines ending
in <LF>). Specify "sendmail_fix_line_endings = strict" to restore
historical Postfix behavior (i.e. convert all input lines ending
in <CR><LF> only if the first line ends in <CR><LF>).
[Incompat 20111106] To work around broken remote SMTP servers, the
Postfix SMTP client by default no longer appends the "AUTH=<>"
option to the MAIL FROM command. Specify "smtp_send_dummy_mail_auth
= yes" to restore the old behavior.
Major changes - gradual degradation
-----------------------------------
[Incompat 20120114] Logfile-based alerting systems may need to be
updated to look for "error" messages in addition to "fatal" messages.
Specify "daemon_table_open_error_is_fatal = yes" to get the historical
behavior (immediate termination with "fatal" message).
[Feature 20120114] Instead of terminating immediately with a "fatal"
message when a database file can't be opened, a Postfix daemon
program now logs an "error" message, and continues execution with
reduced functionality. For the sake of sanity, the number of
"errors" over the life of a process is limited to 13.
Features that don't depend on the unavailable table will continue
to work; attempts to use features that depend on the table will
fail, and will be logged with a "warning" message.
[Feature 20120108] Instead of terminating with a fatal error, the
LDAP, *SQL and memcache clients now handle table lookup errors in
the "domain" feature, instead of terminating with a fatal error.
[Feature 20120102] Degrade gradually when some or all network
protocols specified with inet_protocols are unavailable, instead
of terminating with a fatal error. This eliminates build errors on
non-standard systems where opening an IPv4 socket results in an
error, and on non-standard systems where opening an IPv6 socket
results in an error. In the worst case, the master daemon will log
a message that it disables all type "inet" services. This will still
allow local submission and local delivery.
[Feature 20111222] Instead of terminating with a fatal error, the
Postfix SMTP server now handles errors with database lookups in
mynetworks, TLS client certificate tables, debug_peer_list,
smtpd_client_event_limit_exceptions, permit_mx_backup_networks and
local_header_rewrite_clients, and reports "server local data error"
or "temporary lookup error".
[Feature 20111229] Instead of terminating with a fatal error, the
trivial-rewrite server now handles errors with database lookups in
virtual_alias_domains, relay_domains, virtual_mailbox_domains. This
means fewer occasions where trivial-rewrite clients (such as the
SMTP server) will appear to hang.
Major changes - long queue IDs
------------------------------
Postfix 2.9 introduces support for non-repeating queue IDs (also
used as queue file names). These names are encoded in a mix of upper
case, lower case and decimal digit characters. Long queue IDs are
disabled by default to avoid breaking tools that parse logfiles and
that expect queue IDs with the smaller [A-F0-9] character set.
[Incompat 20110320] If you enable support for long queue file names,
you need to be aware that these file names are not compatible with
Postfix <= 2.8. If you must migrate back to Postfix <= 2.8, you
must first convert all long queue file names into short names,
otherwise the old Postfix version will complain.
The conversion procedure before migration to Postfix <= 2.8 is:
# postfix stop
# postconf enable_long_queue_ids=no
# postsuper
Run the postsuper command repeatedly until it no longer reports
queue file name changes.
[Feature 20110320] Support for long, non-repeating, queue IDs (queue
file names). The benefit of non-repeating names is simpler logfile
analysis, and easier queue migration (if you don't merge different
queues, there is no need to run "postsuper" to change queue file
names that don't match their message file inode number).
Specify "enable_long_queue_ids = yes" to enable the feature. This
does not change the names of existing queue files. See postconf(5)
or postconf.5.html#enable_long_queue_ids for a detailed description
of the differences with the old short queue IDs.
This changes new Postfix queue IDs from the short form 0FCEE9247A9
into the longer form 3Ps0FS1Zhtz1PFjb, and changes new Message-ID
header values from YYMMDDHHMMSS.queueid@myhostname into the shorter
form queueid@myhostname.
Major changes - memcache
------------------------
[Feature 20111209] memcache lookup and update support. This provides
a way to share postscreen(8) or verify(8) caches between Postfix
instances. See MEMCACHE_README and memcache_table(5) for details
and limitations.
[Feature 20111213] Support for a persistent backup database in the
memcache client. The memcache client updates the memcache whenever
it looks up or modifies information in the persistent database.
Major changes - postconf
------------------------
The postconf command was restructured - it now warns about unused
parameter name=value settings in main.cf or master.cf (likely to
be mistakes), it now understands "dynamic" parameter names such as
parameters whose name depends on the name of a master.cf entry, and
it can display main.cf and master.cf in a more user-friendly format.
[Feature 20120117] support for legacy database parameter names
(main.cf parameter names that are generated by prepending a suffix
to the database name).
[Feature 20111118] The "postconf -M" (display master.cf) command
now supports filtering. For example, specify "postconf -M inet"
to display only services that listen on the network.
[Feature 20111113] postconf support to warn about unused "name=value"
entries in main.cf, and about unused "-o name=value" entries in
master.cf. This should help to eliminate common errors with mis-typed
names.
[Feature 20111108] postconf support for parameter names that are
generated automatically from master.cf entries (delivery agents,
spawn services), and for parameter names that are defined with
main.cf smtpd_restriction_classes.
[Feature 20111106] "postconf -M" support to print master.cf entries,
and "postconf -f" support to fold long main.cf or master.cf lines
for human readability.
Major changes - trickle defense
-------------------------------
[Feature 20110212] Support for per-record deadlines. These change
the behavior of Postfix timeout parameters, from a time limit per
read or write system call, to a time limit to send or receive a
complete record (an SMTP command line, SMTP response line, SMTP
message content line, or TLS protocol message). This limits the
impact from hostile peers that trickle data one byte at a time.
The new configuration parameters and their default settings are:
smtpd_per_record_deadline (normal: no, overload: yes),
smtp_per_record_deadline (no), and lmtp_per_record_deadline (no).
Note: when per-record deadlines are enabled, a short time limit may
cause problems with TLS over very slow network connections. The
reason is that a TLS protocol message can be up to 16 kbytes long
(with TLSv1), and that an entire TLS protocol message must be sent
or received within the per-record deadline.
Per-record deadlines were introduced with postscreen(8) in Postfix
2.8. This program does not receive mail, and therefore it has no
problems with TLS over slow connections.
Major changes - postscreen
--------------------------
[Feature 20111211] The proxymap(8) server can now be used to share
postscreen(8) or verify(8) caches between Postfix instances. Support
for proxymap-over-TCP, to share a Postfix database between hosts,
is expected to be completed in the Postfix 2.10 development cycle.
[Feature 20111209] memcache lookup and update support. This provides
a way to share postscreen(8) or verify(8) caches between Postfix
instances.
[Feature 20110228] postscreen(8) support to force remote SMTP clients
to implement proper MX lookup policy. By listening on both primary
and backup MX addresses, postscreen(8) can deny the temporary
whitelist status to clients that connect only to backup MX hosts,
and prevent them from talking to a Postfix SMTP server process.
Example: when 1.2.3.4 is a local backup IP address, specify
"postscreen_whitelist_interfaces = !1.2.3.4 static:all".
Major changes - tls
-------------------
[Incompat 20111205] Postfix now logs the result of successful TLS
negotiation with TLS logging levels of 0. See the smtp_tls_loglevel
and smtpd_tls_loglevel descriptions in the postconf(5) manpage for
other minor differences.
[Feature 20111205] Support for TLS public key fingerprint matching
in the Postfix SMTP client (in smtp_tls_policy_maps) and server (in
check_ccert access maps). Public key fingerprints are inherently
more specific than fingerprints over the entire certificate.
[Feature 20111205] Revision of Postfix TLS logging. The main
difference is that Postfix now logs the result of successful TLS
negotiation with TLS logging levels of 0. See the smtp_tls_loglevel
and smtpd_tls_loglevel descriptions in the postconf(5) manpage for
other minor differences.
Major changes - sasl authentication
-----------------------------------
[Incompat 20111218] To support external SASL authentication, e.g.,
in an NGINX proxy daemon, the Postfix SMTP server now always checks
the smtpd_sender_login_maps table, even without having
"smtpd_sasl_auth_enable = yes" in main.cf.
[Feature 20111218] Support for external SASL authentication via the
XCLIENT command. This is used to accept SASL authentication from
an SMTP proxy such as NGINX. This support works even without having
to specify "smtpd_sasl_auth_enable = yes" in main.cf.
[Incompat 20111106] To work around broken remote SMTP servers, the
Postfix SMTP client by default no longer appends the "AUTH=<>"
option to the MAIL FROM command. Specify "smtp_send_dummy_mail_auth
= yes" to restore the old behavior.
Major changes - large file support
----------------------------------
[Feature 20110219] Postfix now uses long integers for message_size_limit,
mailbox_size_limit and virtual_mailbox_limit. On LP64 systems (64-bit
long and pointer, but 32-bit integer), these limits can now exceed
2GB.
Major changes - ipv6
--------------------
[Incompat 20110918] The following changes were made in default
settings, in preparation for general availability of IPv6:
- The default inet_protocols value is now "all" instead of "ipv4",
meaning use both IPv4 and IPv6.
To avoid an unexpected loss of performance for sites without
global IPv6 connectivity, the commands "make upgrade" and "postfix
upgrade-configuration" now append "inet_protocols = ipv4" to
main.cf when no explicit inet_protocols setting is already present.
This workaround will be removed in a future release.
- The default smtp_address_preference value is now "any" instead
of "ipv6", meaning choose randomly between IPv6 and IPv4. With
this the Postfix SMTP client will have more success delivering
mail to sites that have problematic IPv6 configurations.
Major changes - address verification
------------------------------------
[Feature 20111211] The proxymap(8) server can now be used to share
postscreen(8) or verify(8) caches between Postfix instances. Support
for proxymap-over-TCP, to share a Postfix database between hosts,
is expected to be completed in the Postfix 2.10 development cycle.
[Feature 20111209] memcache lookup and update support. This provides
a way to share postscreen(8) or verify(8) caches between Postfix
instances.
[Feature 20111203] Support for time-dependent sender addresses
of address verification probes. The default address, double-bounce,
may end up on spammer blacklists. Although Postfix discards mail
for this address, such mail still uses up network bandwidth and
server resources. Specify an address_verify_sender_ttl value of
several hours or more to frustrate address harvesting.
Major changes - session transcript notification
-----------------------------------------------
[Incompat 20120114] By default the Postfix SMTP server no longer
reports transcripts of sessions where a client command is rejected
because a lookup table is unavailable. Postfix now implements gradual
degradation, for example, the SMTP server keeps running instead of
terminating with a fatal error. This change in error handling would
result in a very large number of "transcript of session" email
notifications when an LDAP or *SQL server goes down).
To receive such reports, add the new "data" class to the notify_classes
parameter value. The reports will be sent to the error_notice_recipient
address as before. This class is also used by the Postfix SMTP
client to report about sessions that fail because a table is
unavailable.
Major changes - logging
----------------------------------------
[Incompat 20120114] Logfile-based alerting systems may need to be
updated to look for "error" messages in addition to "fatal" messages.
Specify "daemon_table_open_error_is_fatal = yes" to get the historical
behavior (immediate termination with "fatal" message).
[Incompat 20111214] Logfile-based analysis tools may need to be
updated. The submission and smtps examples in the sample master.cf
file were updated to make their logging easier to distinguish.
See the source file pflogsumm_quickfix.txt for a "quick fix".
[Incompat 20111205] Postfix now logs the result of successful TLS
negotiation with TLS logging levels of 0. See the smtp_tls_loglevel
and smtpd_tls_loglevel descriptions in the postconf(5) manpage for
other minor differences.
[Incompat 20110219] The Postfix SMTP and QMQP servers now log
"hostname X does not resolve to address Y", when a "reverse hostname"
lookup result does not resolve to the client IP address. Until now
these servers logged "Y: hostname X verification failed" or "Y:
address not listed for hostname X" which people found confusing.

View File

@ -0,0 +1,352 @@
The stable Postfix release is called postfix-2.9.x where 2=major
release number, 9=minor release number, x=patchlevel. The stable
release never changes except for patches that address bugs or
emergencies. Patches change the patchlevel and the release date.
New features are developed in snapshot releases. These are called
postfix-2.10-yyyymmdd where yyyymmdd is the release date (yyyy=year,
mm=month, dd=day). Patches are never issued for snapshot releases;
instead, a new snapshot is released.
The mail_release_date configuration parameter (format: yyyymmdd)
specifies the release date of a stable release or snapshot release.
If you upgrade from Postfix 2.7 or earlier, read RELEASE_NOTES-2.8
before proceeding.
Major changes - critical
------------------------
[Incompat 20110321] You need to "postfix reload" after upgrade from
snapshot 20110320 or earlier. The hash_queue_names algorithm was
changed to provide better performance with long queue IDs.
[Incompat 20110313] Use "postfix reload" after "make upgrade" on a
running Postfix system. This is needed because the protocol between
postscreen(8) and dnsblog(8) has changed.
Major changes - library API
---------------------------
[Incompat 20110130] The VSTREAM error flags are now split into
separate read and write error flags. As a result of this change,
all programs that use Postfix VSTREAMs MUST be recompiled.
Major changes - compatibility
-----------------------------
[Incompat 20111012] For consistency with the SMTP standard, the
(client-side) smtp_line_length_limit default value was increased
from 990 characters to 999 (i.e. 1000 characters including <CR><LF>).
Specify "smtp_line_length_limit = 990" to restore historical Postfix
behavior.
[Incompat 20111012] To simplify integration with third-party
applications, the Postfix sendmail command now always transforms
all input lines ending in <CR><LF> into UNIX format (lines ending
in <LF>). Specify "sendmail_fix_line_endings = strict" to restore
historical Postfix behavior (i.e. convert all input lines ending
in <CR><LF> only if the first line ends in <CR><LF>).
[Incompat 20111106] To work around broken remote SMTP servers, the
Postfix SMTP client by default no longer appends the "AUTH=<>"
option to the MAIL FROM command. Specify "smtp_send_dummy_mail_auth
= yes" to restore the old behavior.
Major changes - gradual degradation
-----------------------------------
[Incompat 20120114] Logfile-based alerting systems may need to be
updated to look for "error" messages in addition to "fatal" messages.
Specify "daemon_table_open_error_is_fatal = yes" to get the historical
behavior (immediate termination with "fatal" message).
[Feature 20120114] Instead of terminating immediately with a "fatal"
message when a database file can't be opened, a Postfix daemon
program now logs an "error" message, and continues execution with
reduced functionality. For the sake of sanity, the number of
"errors" over the life of a process is limited to 13.
Features that don't depend on the unavailable table will continue
to work; attempts to use features that depend on the table will
fail, and will be logged with a "warning" message.
[Feature 20120108] Instead of terminating with a fatal error, the
LDAP, *SQL and memcache clients now handle table lookup errors in
the "domain" feature, instead of terminating with a fatal error.
[Feature 20120102] Degrade gradually when some or all network
protocols specified with inet_protocols are unavailable, instead
of terminating with a fatal error. This eliminates build errors on
non-standard systems where opening an IPv4 socket results in an
error, and on non-standard systems where opening an IPv6 socket
results in an error. In the worst case, the master daemon will log
a message that it disables all type "inet" services. This will still
allow local submission and local delivery.
[Feature 20111222] Instead of terminating with a fatal error, the
Postfix SMTP server now handles errors with database lookups in
mynetworks, TLS client certificate tables, debug_peer_list,
smtpd_client_event_limit_exceptions, permit_mx_backup_networks and
local_header_rewrite_clients, and reports "server local data error"
or "temporary lookup error".
[Feature 20111229] Instead of terminating with a fatal error, the
trivial-rewrite server now handles errors with database lookups in
virtual_alias_domains, relay_domains, virtual_mailbox_domains. This
means fewer occasions where trivial-rewrite clients (such as the
SMTP server) will appear to hang.
Major changes - long queue IDs
------------------------------
Postfix 2.9 introduces support for non-repeating queue IDs (also
used as queue file names). These names are encoded in a mix of upper
case, lower case and decimal digit characters. Long queue IDs are
disabled by default to avoid breaking tools that parse logfiles and
that expect queue IDs with the smaller [A-F0-9] character set.
[Incompat 20110320] If you enable support for long queue file names,
you need to be aware that these file names are not compatible with
Postfix <= 2.8. If you must migrate back to Postfix <= 2.8, you
must first convert all long queue file names into short names,
otherwise the old Postfix version will complain.
The conversion procedure before migration to Postfix <= 2.8 is:
# postfix stop
# postconf enable_long_queue_ids=no
# postsuper
Run the postsuper command repeatedly until it no longer reports
queue file name changes.
[Feature 20110320] Support for long, non-repeating, queue IDs (queue
file names). The benefit of non-repeating names is simpler logfile
analysis, and easier queue migration (if you don't merge different
queues, there is no need to run "postsuper" to change queue file
names that don't match their message file inode number).
Specify "enable_long_queue_ids = yes" to enable the feature. This
does not change the names of existing queue files. See postconf(5)
or postconf.5.html#enable_long_queue_ids for a detailed description
of the differences with the old short queue IDs.
This changes new Postfix queue IDs from the short form 0FCEE9247A9
into the longer form 3Ps0FS1Zhtz1PFjb, and changes new Message-ID
header values from YYMMDDHHMMSS.queueid@myhostname into the shorter
form queueid@myhostname.
Major changes - memcache
------------------------
[Feature 20111209] memcache lookup and update support. This provides
a way to share postscreen(8) or verify(8) caches between Postfix
instances. See MEMCACHE_README and memcache_table(5) for details
and limitations.
[Feature 20111213] Support for a persistent backup database in the
memcache client. The memcache client updates the memcache whenever
it looks up or modifies information in the persistent database.
Major changes - postconf
------------------------
The postconf command was restructured - it now warns about unused
parameter name=value settings in main.cf or master.cf (likely to
be mistakes), it now understands "dynamic" parameter names such as
parameters whose name depends on the name of a master.cf entry, and
it can display main.cf and master.cf in a more user-friendly format.
[Feature 20120117] support for legacy database parameter names
(main.cf parameter names that are generated by prepending a suffix
to the database name).
[Feature 20111118] The "postconf -M" (display master.cf) command
now supports filtering. For example, specify "postconf -M inet"
to display only services that listen on the network.
[Feature 20111113] postconf support to warn about unused "name=value"
entries in main.cf, and about unused "-o name=value" entries in
master.cf. This should help to eliminate common errors with mis-typed
names.
[Feature 20111108] postconf support for parameter names that are
generated automatically from master.cf entries (delivery agents,
spawn services), and for parameter names that are defined with
main.cf smtpd_restriction_classes.
[Feature 20111106] "postconf -M" support to print master.cf entries,
and "postconf -f" support to fold long main.cf or master.cf lines
for human readability.
Major changes - trickle defense
-------------------------------
[Feature 20110212] Support for per-record deadlines. These change
the behavior of Postfix timeout parameters, from a time limit per
read or write system call, to a time limit to send or receive a
complete record (an SMTP command line, SMTP response line, SMTP
message content line, or TLS protocol message). This limits the
impact from hostile peers that trickle data one byte at a time.
The new configuration parameters and their default settings are:
smtpd_per_record_deadline (normal: no, overload: yes),
smtp_per_record_deadline (no), and lmtp_per_record_deadline (no).
Note: when per-record deadlines are enabled, a short time limit may
cause problems with TLS over very slow network connections. The
reason is that a TLS protocol message can be up to 16 kbytes long
(with TLSv1), and that an entire TLS protocol message must be sent
or received within the per-record deadline.
Per-record deadlines were introduced with postscreen(8) in Postfix
2.8. This program does not receive mail, and therefore it has no
problems with TLS over slow connections.
Major changes - postscreen
--------------------------
[Feature 20111211] The proxymap(8) server can now be used to share
postscreen(8) or verify(8) caches between Postfix instances. Support
for proxymap-over-TCP, to share a Postfix database between hosts,
is expected to be completed in the Postfix 2.10 development cycle.
[Feature 20111209] memcache lookup and update support. This provides
a way to share postscreen(8) or verify(8) caches between Postfix
instances.
[Feature 20110228] postscreen(8) support to force remote SMTP clients
to implement proper MX lookup policy. By listening on both primary
and backup MX addresses, postscreen(8) can deny the temporary
whitelist status to clients that connect only to backup MX hosts,
and prevent them from talking to a Postfix SMTP server process.
Example: when 1.2.3.4 is a local backup IP address, specify
"postscreen_whitelist_interfaces = !1.2.3.4 static:all".
Major changes - tls
-------------------
[Incompat 20111205] Postfix now logs the result of successful TLS
negotiation with TLS logging levels of 0. See the smtp_tls_loglevel
and smtpd_tls_loglevel descriptions in the postconf(5) manpage for
other minor differences.
[Feature 20111205] Support for TLS public key fingerprint matching
in the Postfix SMTP client (in smtp_tls_policy_maps) and server (in
check_ccert access maps). Public key fingerprints are inherently
more specific than fingerprints over the entire certificate.
[Feature 20111205] Revision of Postfix TLS logging. The main
difference is that Postfix now logs the result of successful TLS
negotiation with TLS logging levels of 0. See the smtp_tls_loglevel
and smtpd_tls_loglevel descriptions in the postconf(5) manpage for
other minor differences.
Major changes - sasl authentication
-----------------------------------
[Incompat 20111218] To support external SASL authentication, e.g.,
in an NGINX proxy daemon, the Postfix SMTP server now always checks
the smtpd_sender_login_maps table, even without having
"smtpd_sasl_auth_enable = yes" in main.cf.
[Feature 20111218] Support for external SASL authentication via the
XCLIENT command. This is used to accept SASL authentication from
an SMTP proxy such as NGINX. This support works even without having
to specify "smtpd_sasl_auth_enable = yes" in main.cf.
[Incompat 20111106] To work around broken remote SMTP servers, the
Postfix SMTP client by default no longer appends the "AUTH=<>"
option to the MAIL FROM command. Specify "smtp_send_dummy_mail_auth
= yes" to restore the old behavior.
Major changes - large file support
----------------------------------
[Feature 20110219] Postfix now uses long integers for message_size_limit,
mailbox_size_limit and virtual_mailbox_limit. On LP64 systems (64-bit
long and pointer, but 32-bit integer), these limits can now exceed
2GB.
Major changes - ipv6
--------------------
[Incompat 20110918] The following changes were made in default
settings, in preparation for general availability of IPv6:
- The default inet_protocols value is now "all" instead of "ipv4",
meaning use both IPv4 and IPv6.
To avoid an unexpected loss of performance for sites without
global IPv6 connectivity, the commands "make upgrade" and "postfix
upgrade-configuration" now append "inet_protocols = ipv4" to
main.cf when no explicit inet_protocols setting is already present.
This workaround will be removed in a future release.
- The default smtp_address_preference value is now "any" instead
of "ipv6", meaning choose randomly between IPv6 and IPv4. With
this the Postfix SMTP client will have more success delivering
mail to sites that have problematic IPv6 configurations.
Major changes - address verification
------------------------------------
[Feature 20111211] The proxymap(8) server can now be used to share
postscreen(8) or verify(8) caches between Postfix instances. Support
for proxymap-over-TCP, to share a Postfix database between hosts,
is expected to be completed in the Postfix 2.10 development cycle.
[Feature 20111209] memcache lookup and update support. This provides
a way to share postscreen(8) or verify(8) caches between Postfix
instances.
[Feature 20111203] Support for time-dependent sender addresses
of address verification probes. The default address, double-bounce,
may end up on spammer blacklists. Although Postfix discards mail
for this address, such mail still uses up network bandwidth and
server resources. Specify an address_verify_sender_ttl value of
several hours or more to frustrate address harvesting.
Major changes - session transcript notification
-----------------------------------------------
[Incompat 20120114] By default the Postfix SMTP server no longer
reports transcripts of sessions where a client command is rejected
because a lookup table is unavailable. Postfix now implements gradual
degradation, for example, the SMTP server keeps running instead of
terminating with a fatal error. This change in error handling would
result in a very large number of "transcript of session" email
notifications when an LDAP or *SQL server goes down).
To receive such reports, add the new "data" class to the notify_classes
parameter value. The reports will be sent to the error_notice_recipient
address as before. This class is also used by the Postfix SMTP
client to report about sessions that fail because a table is
unavailable.
Major changes - logging
----------------------------------------
[Incompat 20120114] Logfile-based alerting systems may need to be
updated to look for "error" messages in addition to "fatal" messages.
Specify "daemon_table_open_error_is_fatal = yes" to get the historical
behavior (immediate termination with "fatal" message).
[Incompat 20111214] Logfile-based analysis tools may need to be
updated. The submission and smtps examples in the sample master.cf
file were updated to make their logging easier to distinguish.
See the source file pflogsumm_quickfix.txt for a "quick fix".
[Incompat 20111205] Postfix now logs the result of successful TLS
negotiation with TLS logging levels of 0. See the smtp_tls_loglevel
and smtpd_tls_loglevel descriptions in the postconf(5) manpage for
other minor differences.
[Incompat 20110219] The Postfix SMTP and QMQP servers now log
"hostname X does not resolve to address Y", when a "reverse hostname"
lookup result does not resolve to the client IP address. Until now
these servers logged "Y: hostname X verification failed" or "Y:
address not listed for hostname X" which people found confusing.

View File

@ -56,9 +56,15 @@ decode: root
# newaliases in order to rebuild the indexed file after
# changing the Postfix alias database.
#
# The input and output file formats are expected to be com-
# patible with Sendmail version 8, and are expected to be
# suitable for the use as NIS maps.
# When the table is provided via other means such as NIS,
# LDAP or SQL, the same lookups are done as for ordinary
# indexed files.
#
# Alternatively, the table can be provided as a regular-
# expression map where patterns are given as regular expres-
# sions. In this case, the lookups are done in a slightly
# different way as described below under "REGULAR EXPRESSION
# TABLES".
#
# Users can control delivery of their own mail by setting up
# .forward files in their home directory. Lines in per-user
@ -143,6 +149,25 @@ decode: root
# The local(8) delivery agent always folds the search string
# to lowercase before database lookup.
#
# REGULAR EXPRESSION TABLES
# This section describes how the table lookups change when
# the table is given in the form of regular expressions. For
# a description of regular expression lookup table syntax,
# see regexp_table(5) or pcre_table(5). NOTE: these formats
# do not use ":" at the end of a pattern.
#
# Each regular expression is applied to the entire search
# string. Thus, a search string user+foo is not broken up
# into user and foo.
#
# Regular expressions are applied in the order as specified
# in the table, until a regular expression is found that
# matches the search string.
#
# Lookup results are the same as with indexed file lookups.
# For security reasons there is no support for $1, $2 etc.
# substring interpolation.
#
# SECURITY
# The local(8) delivery agent disallows regular expression
# substitution of $1 etc. in alias_maps, because that would

View File

@ -108,11 +108,11 @@
# This document assumes that header and body_checks rules
# are specified in the form of Postfix regular expression
# lookup tables. Usually the best performance is obtained
# with pcre (Perl Compatible Regular Expression) tables, but
# the slower regexp (POSIX regular expressions) support is
# more widely available. Use the command "postconf -m" to
# find out what lookup table types your Postfix system sup-
# ports.
# with pcre (Perl Compatible Regular Expression) tables. The
# regexp (POSIX regular expressions) tables are usually
# slower, but more widely available. Use the command "post-
# conf -m" to find out what lookup table types your Postfix
# system supports.
#
# The general format of Postfix regular expression tables is
# given below. For a discussion of specific pattern or

View File

@ -1,5 +1,5 @@
#!/bin/sh
# $NetBSD: post-install,v 1.1.1.3 2013/01/02 18:58:35 tron Exp $
# $NetBSD: post-install,v 1.1.1.4 2013/09/25 19:06:20 tron Exp $
#
# To view the formatted manual page of this file, type:
@ -801,12 +801,36 @@ EOF
# when IPv6 support is not compiled in. See util/sys_defs.h.
test "`$POSTCONF -dh inet_protocols`" = "ipv4" ||
test -n "`$POSTCONF -c $config_directory -nh inet_protocols`" || {
echo COMPATIBILITY: editing main.cf, setting inet_protocols=ipv4.
echo Specify inet_protocols explicitly if you want to enable IPv6.
echo In a future release IPv6 will be enabled by default.
test -n "`$POSTCONF -c $config_directory -n inet_protocols`" || {
cat <<EOF | ${FMT}
COMPATIBILITY: editing $config_directory/main.cf, setting
inet_protocols=ipv4. Specify inet_protocols explicitly if you
want to enable IPv6.
In a future release IPv6 will be enabled by default.
EOF
$POSTCONF -c $config_directory inet_protocols=ipv4 || exit 1
}
# Disabled because unhelpful down-stream maintainers disable the safety net.
# # Postfix 2.10.
# # Safety net for incompatible changes due to the introduction
# # of the smtpd_relay_restrictions feature to separate the
# # mail relay policy from the spam blocking policy.
# # PLEASE DO NOT REMOVE THIS CODE. ITS PURPOSE IS TO PREVENT
# # INBOUND MAIL FROM UNEXPECTEDLY BOUNCING AFTER UPGRADING FROM
# # POSTFIX BEFORE 2.10.
# test -n "`$POSTCONF -c $config_directory -n smtpd_relay_restrictions`" || {
# cat <<EOF | ${FMT}
# COMPATIBILITY: editing $config_directory/main.cf, overriding
# smtpd_relay_restrictions to prevent inbound mail from
# unexpectedly bouncing.
# Specify an empty smtpd_relay_restrictions value to keep using
# smtpd_recipient_restrictions as before.
#EOF
# $POSTCONF -c $config_directory "smtpd_relay_restrictions = \
# permit_mynetworks permit_sasl_authenticated \
# defer_unauth_destination" || exit 1
# }
}
# A reminder if this is the first time Postfix is being installed.

View File

@ -1,5 +1,5 @@
#!/bin/sh
# $NetBSD: postfix-script,v 1.1.1.2 2010/06/17 18:06:08 tron Exp $
# $NetBSD: postfix-script,v 1.1.1.3 2013/09/25 19:06:20 tron Exp $
#
#++
@ -126,7 +126,11 @@ start)
$daemon_directory/postfix-script check-warn
fi
$INFO starting the Postfix mail system
$daemon_directory/master &
# NOTE: wait in foreground process to get the initialization status.
$daemon_directory/master -w || {
$FATAL "mail system startup failed"
exit 1
}
;;
drain)

View File

@ -370,6 +370,15 @@ created with the <a href="postmap.1.html">postmap(1)</a> or <a href="postalias.1
table name as used in "sdbm:table" is the database file name without
the ".dir" or ".pag" suffix. </dd>
<dt> <b>socketmap</b> (read-only) </dt>
<dd> Query a Sendmail-style socketmap server. The name of the table
specifies <b>inet</b>:<i>host</i>:<i>port</i>:<i>socketmap-name</i>
for a TCP-based server, or
<b>unix</b>:<i>pathname</i>:<i>socketmap-name</i> for a UNIX-domain
server. In both cases <i>socketmap-name</i> is the name of the
socketmap. </dd>
<dt> <b>sqlite</b> (read-only) </dt>
<dd> Perform SQLite database lookups. Configuration details are given

View File

@ -218,24 +218,24 @@ document for an introduction to the Postfix architecture. </p>
<td colspan="2"> </td>
<td bgcolor="#f0f0ff" align="center" valign="middle">
<a href="QSHAPE_README.html#maildrop_queue"> maildrop <br>
queue </a> </td>
<td bgcolor="#f0f0ff" align="center" valign="middle">
<a href="QSHAPE_README.html#maildrop_queue"> maildrop <br>
queue </a> </td>
<td align="center" valign="middle"> <tt> &lt;- </tt> </td>
<td bgcolor="#f0f0ff" align="center" valign="middle">Postfix<br>
<a href="postdrop.1.html">postdrop(1)</a> </td>
<td bgcolor="#f0f0ff" align="center" valign="middle">Postfix<br>
<a href="postdrop.1.html">postdrop(1)</a> </td>
<td align="center" valign="middle"> <tt> &lt;- </tt> </td>
<td bgcolor="#f0f0ff" align="center" valign="middle">Postfix<br>
<a href="sendmail.1.html">sendmail(1)</a> </td>
<td bgcolor="#f0f0ff" align="center" valign="middle">Postfix<br>
<a href="sendmail.1.html">sendmail(1)</a> </td>
<td align="center" valign="middle"> <tt> &lt;- </tt> </td>
<td bgcolor="#f0f0ff" align="center" valign="middle">Content
<br> filter </td>
<td bgcolor="#f0f0ff" align="center" valign="middle">Content
<br> filter </td>
<td colspan="2"> </td>
@ -750,6 +750,8 @@ that injects mail back into Postfix. </p>
-o <a href="postconf.5.html#smtpd_helo_restrictions">smtpd_helo_restrictions</a>=
-o <a href="postconf.5.html#smtpd_client_restrictions">smtpd_client_restrictions</a>=
-o <a href="postconf.5.html#smtpd_sender_restrictions">smtpd_sender_restrictions</a>=
# Postfix 2.10 and later: specify empty <a href="postconf.5.html#smtpd_relay_restrictions">smtpd_relay_restrictions</a>.
-o <a href="postconf.5.html#smtpd_relay_restrictions">smtpd_relay_restrictions</a>=
-o <a href="postconf.5.html#smtpd_recipient_restrictions">smtpd_recipient_restrictions</a>=<a href="postconf.5.html#permit_mynetworks">permit_mynetworks</a>,reject
-o <a href="postconf.5.html#mynetworks">mynetworks</a>=127.0.0.0/8
-o <a href="postconf.5.html#smtpd_authorized_xforward_hosts">smtpd_authorized_xforward_hosts</a>=127.0.0.0/8

View File

@ -204,12 +204,13 @@ confused with a "<i><a href="DATABASE_README.html">type:table</a></i>" pattern.
<ul>
<li> <p> The order of IPv6/IPv4 outgoing connection attempts is
not yet configurable. Currently, IPv6 is tried before IPv4. </p>
<li> <p> Postfix SMTP clients before version 2.8 try to connect
over IPv6 before trying IPv4. With more recent Postfix versions,
the order of IPv6 versus IPv4 outgoing connection attempts is
configurable with the <a href="postconf.5.html#smtp_address_preference">smtp_address_preference</a> parameter. </p>
<li> <p> Postfix currently does not support DNSBL (real-time
blackhole list) lookups for IPv6 client IP addresses; currently
there are no blacklists that cover the IPv6 address space. </p>
<li> <p> Postfix versions before 2.6 do not support DNSBL (real-time
blackhole list) lookups for IPv6 client IP addresses. </p>
<li> <p> IPv6 does not have class A, B, C, etc. networks. With IPv6
networks, the setting "<a href="postconf.5.html#mynetworks_style">mynetworks_style</a> = class" has the

View File

@ -17,6 +17,34 @@
<hr>
<h2> Host lookup issues </h2>
<p> By default Linux /etc/hosts lookups do not support multiple IP
address per hostname. This causes warnings from the Postfix SMTP
server that "hostname XXX does not resolve to address YYY", and is
especially a problem with hosts that have both IPv4 and IPv6
addresses. To fix, turn on support for multiple IP addresses: </p>
<blockquote>
<pre>
/etc/host.conf:
...
# We have machines with multiple IP addresses.
multi on
...
</pre>
</blockquote>
<p> Alternatively, specify the RESOLV_MULTI environment variable
in <a href="postconf.5.html">main.cf</a>: </p>
<blockquote>
<pre>
/etc/postfix/<a href="postconf.5.html">main.cf</a>:
<a href="postconf.5.html#import_environment">import_environment</a> = MAIL_CONFIG MAIL_DEBUG MAIL_LOGTAG TZ XAUTHORITY DISPLAY LANG=C RESOLV_MULTI=on
</pre>
</blockquote>
<h2>Berkeley DB issues</h2>
<p> If you can't compile Postfix because the file "db.h"

View File

@ -374,6 +374,8 @@ post-filter re-injection SMTP service. Typical additions include: </p>
# With multiple instances, rarely need "-o param=value" overrides
# in <a href="master.5.html">master.cf</a>, each instance gets its own <a href="postconf.5.html">main.cf</a> file.
#
# Postfix 2.10 and later: specify empty <a href="postconf.5.html#smtpd_relay_restrictions">smtpd_relay_restrictions</a>.
<a href="postconf.5.html#smtpd_relay_restrictions">smtpd_relay_restrictions</a> =
<a href="postconf.5.html#smtpd_recipient_restrictions">smtpd_recipient_restrictions</a> = <a href="postconf.5.html#permit_mynetworks">permit_mynetworks</a>, reject
# Tolerate occasional high latency in the content filter.

View File

@ -17,25 +17,30 @@
<h2> <a name="intro">Introduction</a> </h2>
<p> The Postfix <a href="postscreen.8.html">postscreen(8)</a> server performs triage on multiple
inbound SMTP connections at the same time. While a single <a href="postscreen.8.html">postscreen(8)</a>
process keeps zombies away from Postfix SMTP server processes, more
Postfix SMTP server processes remain available for legitimate
clients. </p>
<p> This document describes features that are available in Postfix
2.8 and later. </p>
<p> The Postfix <a href="postscreen.8.html">postscreen(8)</a> daemon provides additional protection
against mail server overload. One <a href="postscreen.8.html">postscreen(8)</a> process handles
multiple inbound SMTP connections, and decides which clients may
talk to a Postfix SMTP server process. By keeping spambots away,
<a href="postscreen.8.html">postscreen(8)</a> leaves more SMTP server processes available for
legitimate clients, and delays the onset of <a
href="STRESS_README.html">server overload</a> conditions. </p>
<p> <a href="postscreen.8.html">postscreen(8)</a> should not be used on SMTP ports that receive
mail from end-user clients (MUAs). In a typical deployment,
<a href="postscreen.8.html">postscreen(8)</a> handles the MX service on TCP port 25, while MUA
clients submit mail via the submission service on TCP port 587 which
requires client authentication. Alternatively, a site could set up
a dedicated, non-postscreen, "port 25" server that provides submission
service and client authentication, but no MX service. </p>
<p> <a href="postscreen.8.html">postscreen(8)</a> maintains a temporary whitelist for clients that
pass its tests; by allowing whitelisted clients to skip tests,
<a href="postscreen.8.html">postscreen(8)</a> minimizes its impact on legitimate email traffic.
</p>
<p> <a href="postscreen.8.html">postscreen(8)</a> should not be used on SMTP ports that receive
mail from end-user clients (MUAs). In a typical deployment,
<a href="postscreen.8.html">postscreen(8)</a> is used on the "port 25" service, while MUA clients
submit mail via the submission service (port 587) which normally
requires client authentication, or via a "port 25" server that
provides no MX service (i.e. a dedicated server that provides
submission service on port 25). </p>
<p> <a href="postscreen.8.html">postscreen(8)</a> is part of a multi-layer defense. <p>
<ul>
@ -43,11 +48,12 @@ submission service on port 25). </p>
<li> <p> As the first layer, <a href="postscreen.8.html">postscreen(8)</a> blocks connections from
zombies and other spambots that are responsible for about 90% of
all spam. It is implemented as a single process to make this defense
as cheap as possible. </p>
as inexpensive as possible. </p>
<li> <p> The second layer implements more complex SMTP-level access
checks with Postfix SMTP servers, policy daemons, and Milter
applications. </p>
checks with <a href="SMTPD_ACCESS_README.html">Postfix SMTP servers</a>,
<a href="SMTPD_POLICY_README.html">policy daemons</a>, and
<a href="MILTER_README.html">Milter applications</a>. </p>
<li> <p> The third layer performs light-weight content inspection
with the Postfix built-in <a href="postconf.5.html#header_checks">header_checks</a> and <a href="postconf.5.html#body_checks">body_checks</a>. This can
@ -55,8 +61,10 @@ block unacceptable attachments such as executable programs, and
worms or viruses with easy-to-recognize signatures. </p>
<li> <p> The fourth layer provides heavy-weight content inspection
with external content filters. Typical examples are Amavisd-new,
SpamAssassin, and Milter applications. </p>
with external content filters. Typical examples are <a
href="http://www.ijs.si/software/amavisd/">Amavisd-new</a>, <a
href="http://spamassassin.apache.org/">SpamAssassin</a>, and <a
href="MILTER_README.html">Milter applications</a>. </p>
</ul>
@ -127,7 +135,8 @@ and that is the problem that <a href="postscreen.8.html">postscreen(8)</a> is fo
<h2> <a name="general"> General operation </a> </h2>
<p> The <a href="postscreen.8.html">postscreen(8)</a> triage process involves a number of tests,
<p> For each connection from an SMTP client, <a href="postscreen.8.html">postscreen(8)</a> performs
a number of tests
in the order as described below. Some tests introduce a delay of
a few seconds. <a href="postscreen.8.html">postscreen(8)</a> maintains a temporary whitelist for
clients that pass its tests; by allowing whitelisted clients to
@ -218,15 +227,24 @@ specifies the location of the temporary whitelist. The
temporary whitelist is not used for SMTP client addresses
that appear on the <i>permanent</i> access list. </p>
<blockquote> <p> NOTE: To share a <a href="postscreen.8.html">postscreen(8)</a> cache between
multiple <a href="postscreen.8.html">postscreen(8)</a> instances, use "<tt><a href="postconf.5.html#postscreen_cache_map">postscreen_cache_map</a> =
<a href="proxymap.8.html">proxy</a>:btree:$<a href="postconf.5.html#data_directory">data_directory</a>/postscreen_cache</tt>", and disable
cache cleanup (<a href="postconf.5.html#postscreen_cache_cleanup_interval">postscreen_cache_cleanup_interval</a> = 0) in all
<a href="postscreen.8.html">postscreen(8)</a> instances except one that is responsible for cache
cleanup. </p> <p> <a href="postscreen.8.html">postscreen(8)</a> cache sharing requires Postfix 2.9
or later; earlier <a href="proxymap.8.html">proxymap(8)</a> implementations don't support cache
cleanup. </p> <p> For an alternative <a href="postscreen.8.html">postscreen(8)</a> cache sharing
approach see the <a href="memcache_table.5.html">memcache_table(5)</a> manpage. </p> </blockquote>
<blockquote>
<p> NOTE: To share a <a href="postscreen.8.html">postscreen(8)</a> cache between multiple
<a href="postscreen.8.html">postscreen(8)</a> instances under the same <a href="master.8.html">master(8)</a> daemon, use
"<tt><a href="postconf.5.html#postscreen_cache_map">postscreen_cache_map</a> =
<a href="proxymap.8.html">proxy</a>:btree:$<a href="postconf.5.html#data_directory">data_directory</a>/postscreen_cache</tt>", and disable
cache cleanup (<a href="postconf.5.html#postscreen_cache_cleanup_interval">postscreen_cache_cleanup_interval</a> = 0) in all
<a href="postscreen.8.html">postscreen(8)</a> instances except one that is responsible for cache
cleanup. </p>
<p> <a href="postscreen.8.html">postscreen(8)</a> cache sharing requires Postfix 2.9 or later;
earlier <a href="proxymap.8.html">proxymap(8)</a> implementations don't support cache cleanup.
</p>
<p> For an alternative <a href="postscreen.8.html">postscreen(8)</a> cache sharing approach,
see the <a href="memcache_table.5.html">memcache_table(5)</a> manpage. </p>
</blockquote>
<p> When the SMTP client address appears on the temporary
whitelist, <a href="postscreen.8.html">postscreen(8)</a> logs this with the client address and port
@ -249,12 +267,17 @@ or temporary whitelist, <a href="postscreen.8.html">postscreen(8)</a> can implem
whitelist tests, before it grants the client a temporary whitelist
status that allows it to talk to a Postfix SMTP server process. </p>
<p> By listening on both primary and backup MX addresses, <a href="postscreen.8.html">postscreen(8)</a>
can deny the temporary whitelist status to clients that connect
only to backup MX hosts (an old spammer trick to take advantage of
backup MX hosts with weaker anti-spam policies than primary MX
<p> When <a href="postscreen.8.html">postscreen(8)</a> is configured to monitor all primary and
backup MX addresses, it can refuse to whitelist clients that connect
to a backup MX address only (an old spammer trick to take advantage
of backup MX hosts with weaker anti-spam policies than primary MX
hosts). </p>
<blockquote> <p> NOTE: The following solution is for small sites.
Larger sites would have to share the <a href="postscreen.8.html">postscreen(8)</a> cache between
primary and backup MTAs, which would introduce a common point of
failure. </p> </blockquote>
<ul>
<li> <p> First, configure the host to listen on both primary and
@ -262,6 +285,10 @@ backup MX addresses. Use the appropriate <tt>ifconfig</tt> command
for the local operating system, or update the appropriate configuration
files and "refresh" the network protocol stack. </p>
<p> <p> Second, configure Postfix to listen on the new IP address
(this step is needed when you have specified <a href="postconf.5.html#inet_interfaces">inet_interfaces</a> in
<a href="postconf.5.html">main.cf</a>). </p>
<li> <p> Then, configure <a href="postscreen.8.html">postscreen(8)</a> to deny the temporary whitelist
status on the backup MX address(es). An example for Wietse's
server is: </p>
@ -538,12 +565,15 @@ logging more informative. </p>
as: </p>
<pre>
<b>NON-SMTP COMMAND from</b> <i>[address]:port command</i>
<b>NON-SMTP COMMAND from</b> <i>[address]:port</i> <b>after</b> <i>command: text</i>
</pre>
<p> Translation: the SMTP client at <i>[address]:port</i> sent a
<i>command</i> that matches the <a href="postconf.5.html#postscreen_forbidden_commands">postscreen_forbidden_commands</a>
parameter, or that has the syntax of a message header label. </p>
command that matches the <a href="postconf.5.html#postscreen_forbidden_commands">postscreen_forbidden_commands</a>
parameter, or that has the syntax of a message header label (text
followed by optional space and ":").
The "<tt><b>after</b> <i>command</i></tt>" portion is logged with
Postfix 2.10 and later. </p>
<p> The <a href="postconf.5.html#postscreen_non_smtp_command_action">postscreen_non_smtp_command_action</a> parameter specifies
the action that is taken next. See "<a href="#fail_after_220">When
@ -570,12 +600,14 @@ this as:
</p>
<pre>
<b>BARE NEWLINE from</b> <i>[address]:port</i>
<b>BARE NEWLINE from</b> <i>[address]:port</i> <b>after</b> <i>command</i>
</pre>
<p> Translation: the SMTP client at <i>[address]:port</i> sent a bare
newline character, that is newline not preceded by carriage
return. </p>
return.
The "<tt><b>after</b> <i>command</i></tt>" portion is logged with
Postfix 2.10 and later. </p>
<p> The <a href="postconf.5.html#postscreen_bare_newline_action">postscreen_bare_newline_action</a> parameter specifies the
action that is taken next. See "<a href="#fail_after_220">When
@ -652,29 +684,35 @@ This engine never accepts mail, therefore it has per-session limits
on the number of commands and on the session length. </p>
<pre>
<b>COMMAND TIME LIMIT</b> <b>from</b> <i>[address]:port</i>
<b>COMMAND TIME LIMIT</b> <b>from</b> <i>[address]:port</i> <b>after</b> <i>command</i>
</pre>
<p> Translation: the SMTP client at <i>[address]:port</i> reached the
per-command time limit as specified with the <a href="postconf.5.html#postscreen_command_time_limit">postscreen_command_time_limit</a>
parameter. The session is terminated immediately. </p>
parameter. The session is terminated immediately.
The "<tt><b>after</b> <i>command</i></tt>" portion is logged with
Postfix 2.10 and later. </p>
<pre>
<b>COMMAND COUNT LIMIT from</b> <i>[address]:port</i>
<b>COMMAND COUNT LIMIT from</b> <i>[address]:port</i> <b>after</b> <i>command</i>
</pre>
<p> Translation: the SMTP client at <i>[address]:port</i> reached the
per-session command count limit as specified with the
<a href="postconf.5.html#postscreen_command_count_limit">postscreen_command_count_limit</a> parameter. The session is terminated
immediately. </p>
immediately.
The "<tt><b>after</b> <i>command</i></tt>" portion is logged with
Postfix 2.10 and later. </p>
<pre>
<b>COMMAND LENGTH LIMIT from</b> <i>[address]:port</i>
<b>COMMAND LENGTH LIMIT from</b> <i>[address]:port</i> <b>after</b> <i>command</i>
</pre>
<p> Translation: the SMTP client at <i>[address]:port</i> reached the
per-command length limit, as specified with the <a href="postconf.5.html#line_length_limit">line_length_limit</a>
parameter. The session is terminated immediately. </p>
parameter. The session is terminated immediately.
The "<tt><b>after</b> <i>command</i></tt>" portion is logged with
Postfix 2.10 and later. </p>
<p> When an SMTP client makes too many connections at the same time,
or when all <a href="postscreen.8.html">postscreen(8)</a> ports are busy, <a href="postscreen.8.html">postscreen(8)</a> rejects the
@ -1044,6 +1082,15 @@ collect real-world statistics. This version still used the embarrassing
implementation introduces the <a href="tlsproxy.8.html">tlsproxy(8)</a> event-driven TLS proxy
that decrypts/encrypts the sessions for multiple SMTP clients. </p>
<p> The <a href="tlsproxy.8.html">tlsproxy(8)</a> implementation led to the discovery of a "new"
class of vulnerability (<a
href="http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2011-0411"
>CVE-2011-0411</a>) that affected multiple implementations of SMTP,
POP, IMAP, NNTP, and FTP over TLS. </p>
<p> <a href="postscreen.8.html">postscreen(8)</a> was officially released as part of the Postfix
2.8 stable release in January 2011.</p>
</body>
</html>

View File

@ -48,13 +48,17 @@ care about these low-level details. </p>
permissive = permit
<a href="postconf.5.html#smtpd_recipient_restrictions">smtpd_recipient_restrictions</a> =
<a href="postconf.5.html#permit_mynetworks">permit_mynetworks</a>
<a href="postconf.5.html#reject_unauth_destination">reject_unauth_destination</a>
<a href="postconf.5.html#check_recipient_access">check_recipient_access</a> hash:/etc/postfix/recipient_access
<a href="postconf.5.html#permit_mynetworks">permit_mynetworks</a>
# <a href="postconf.5.html#reject_unauth_destination">reject_unauth_destination</a> is not needed here if the mail
# relay policy is specified with <a href="postconf.5.html#smtpd_relay_restrictions">smtpd_relay_restrictions</a>
# (available with Postfix 2.10 and later).
<a href="postconf.5.html#reject_unauth_destination">reject_unauth_destination</a>
<a href="postconf.5.html#check_recipient_access">check_recipient_access</a> hash:/etc/postfix/recipient_access
...
/etc/postfix/recipient_access:
joe@my.domain permissive
jane@my.domain restrictive
joe@my.domain permissive
jane@my.domain restrictive
</pre>
</blockquote>
@ -102,6 +106,7 @@ to IP spoofing. </p>
<pre>
/etc/postfix/<a href="postconf.5.html">main.cf</a>:
<a href="postconf.5.html#smtpd_recipient_restrictions">smtpd_recipient_restrictions</a> =
...
<a href="postconf.5.html#check_recipient_access">check_recipient_access</a> hash:/etc/postfix/access
<i>...the usual stuff...</i>
@ -133,6 +138,7 @@ therefore is subject to SMTP sender spoofing. </p>
<pre>
/etc/postfix/<a href="postconf.5.html">main.cf</a>:
<a href="postconf.5.html#smtpd_recipient_restrictions">smtpd_recipient_restrictions</a> =
...
<a href="postconf.5.html#check_recipient_access">check_recipient_access</a> hash:/etc/postfix/protected_destinations
<i>...the usual stuff...</i>
@ -193,6 +199,7 @@ with LDAP or SQL. </p>
<pre>
/etc/postfix/<a href="postconf.5.html">main.cf</a>:
<a href="postconf.5.html#smtpd_recipient_restrictions">smtpd_recipient_restrictions</a> =
...
<a href="postconf.5.html#check_sender_access">check_sender_access</a> hash:/etc/postfix/restricted_senders
<i>...other stuff...</i>

View File

@ -87,7 +87,7 @@ what envelope sender addresses the client may use. </p> </li>
<p> Successful authentication in the Postfix SMTP server requires
a functional SASL framework. Configuring SASL should therefore
always be the first step. </p>
always be the first step, before configuring Postfix. </p>
<p> You can read more about the following topics: </p>
@ -1367,20 +1367,33 @@ for. Examples of possible SMTP clients authorizations are: </p>
<h4><a name="server_sasl_authz_relay">Mail relay authorization</a></h4>
<p> The <code><a href="postconf.5.html#permit_sasl_authenticated">permit_sasl_authenticated</a></code> restriction allows
<p> With <code><a href="postconf.5.html#permit_sasl_authenticated">permit_sasl_authenticated</a></code> the Postfix SMTP
server can allow
SASL-authenticated SMTP clients to send mail to remote destinations.
Add it to the list of <code><a href="postconf.5.html#smtpd_recipient_restrictions">smtpd_recipient_restrictions</a></code> as
follows: </p>
Examples:
</p>
<blockquote>
<pre>
# With Postfix 2.10 and later, the mail relay policy is
# preferably specified under <a href="postconf.5.html#smtpd_relay_restrictions">smtpd_relay_restrictions</a>.
/etc/postfix/<a href="postconf.5.html">main.cf</a>:
<a href="postconf.5.html#smtpd_relay_restrictions">smtpd_relay_restrictions</a> =
<a href="postconf.5.html#permit_mynetworks">permit_mynetworks</a>
<strong><a href="postconf.5.html#permit_sasl_authenticated">permit_sasl_authenticated</a></strong>
<a href="postconf.5.html#reject_unauth_destination">reject_unauth_destination</a>
</pre>
<pre>
# Older configurations combine relay control and spam control under
# <a href="postconf.5.html#smtpd_recipient_restrictions">smtpd_recipient_restrictions</a>. To use this example with Postfix &ge;
# 2.10 specify "<a href="postconf.5.html#smtpd_relay_restrictions">smtpd_relay_restrictions</a>=".
/etc/postfix/<a href="postconf.5.html">main.cf</a>:
<a href="postconf.5.html#smtpd_recipient_restrictions">smtpd_recipient_restrictions</a> =
...
<a href="postconf.5.html#permit_mynetworks">permit_mynetworks</a>
<strong><a href="postconf.5.html#permit_sasl_authenticated">permit_sasl_authenticated</a></strong>
<a href="postconf.5.html#reject_unauth_destination">reject_unauth_destination</a>
...
<a href="postconf.5.html#permit_mynetworks">permit_mynetworks</a>
<strong><a href="postconf.5.html#permit_sasl_authenticated">permit_sasl_authenticated</a></strong>
<a href="postconf.5.html#reject_unauth_destination">reject_unauth_destination</a>
...other rules...
</pre>
</blockquote>
@ -1406,9 +1419,7 @@ use a particular envelope sender address: </p>
<a href="postconf.5.html#smtpd_recipient_restrictions">smtpd_recipient_restrictions</a> =
...
<strong><a href="postconf.5.html#reject_sender_login_mismatch">reject_sender_login_mismatch</a></strong>
<a href="postconf.5.html#permit_sasl_authenticated">permit_sasl_authenticated</a>
<a href="postconf.5.html#permit_mynetworks">permit_mynetworks</a>
<a href="postconf.5.html#reject_unauth_destination">reject_unauth_destination</a>
<a href="postconf.5.html#permit_sasl_authenticated">permit_sasl_authenticated</a>
...
</pre>
</blockquote>
@ -1926,7 +1937,7 @@ font. </p>
</blockquote>
<p> Instead of port 25 (smtp), specify port 587 (submission) where
appriopriate. </p>
appropriate. </p>
<h4>Encrypted SMTP session (TLS)</h4>

View File

@ -60,10 +60,19 @@ anti-spammer blacklists. See, for example, the information on
<p> By default, Postfix has a moderately restrictive approach to
mail relaying. Postfix forwards mail only from clients in trusted
networks, or to domains that are configured as authorized relay
destinations. For a description of the default policy, see the
<a href="postconf.5.html#smtpd_recipient_restrictions">smtpd_recipient_restrictions</a> parameter in the <a href="postconf.5.html">postconf(5)</a> manual
page, and the information that is referenced from there. </p>
networks, from clients that have authenticated with SASL, or to
domains that are configured as authorized relay
destinations. For a description of the default mail relay policy,
see the <a href="postconf.5.html#smtpd_relay_restrictions">smtpd_relay_restrictions</a> parameter in the <a href="postconf.5.html">postconf(5)</a> manual
page, and the information that is referenced from there. </p>
<blockquote> <p> NOTE: Postfix versions before 2.10 did not have
<a href="postconf.5.html#smtpd_relay_restrictions">smtpd_relay_restrictions</a>. They combined the mail relay and spam
blocking policies, under <a href="postconf.5.html#smtpd_recipient_restrictions">smtpd_recipient_restrictions</a>. This could
lead to unexpected results. For example, a permissive spam blocking
policy could unexpectedly result in a permissive mail relay policy.
An example of this is documented under "<a href="#danger">Dangerous
use of smtpd_recipient_restrictions</a>". </p> </blockquote>
<p> Most of the Postfix SMTP server access controls are targeted
at stopping junk email. </p>
@ -178,8 +187,23 @@ described in the <a href="postconf.5.html">postconf(5)</a> manual page. </p>
# Don't accept mail from domains that don't exist.
<a href="postconf.5.html#smtpd_sender_restrictions">smtpd_sender_restrictions</a> = <a href="postconf.5.html#reject_unknown_sender_domain">reject_unknown_sender_domain</a>
# Whitelisting: local clients may specify any destination domain.
<a href="postconf.5.html#smtpd_recipient_restrictions">smtpd_recipient_restrictions</a> = <a href="postconf.5.html#permit_mynetworks">permit_mynetworks</a>, <a href="postconf.5.html#reject_unauth_destination">reject_unauth_destination</a>
# Relay control (Postfix 2.10 and later): local clients and
# authenticated clients may specify any destination domain.
<a href="postconf.5.html#smtpd_relay_restrictions">smtpd_relay_restrictions</a> = <a href="postconf.5.html#permit_mynetworks">permit_mynetworks</a>,
<a href="postconf.5.html#permit_sasl_authenticated">permit_sasl_authenticated</a>,
<a href="postconf.5.html#reject_unauth_destination">reject_unauth_destination</a>
# Spam control: exclude local clients and authenticated clients
# from DNSBL lookups.
<a href="postconf.5.html#smtpd_recipient_restrictions">smtpd_recipient_restrictions</a> = <a href="postconf.5.html#permit_mynetworks">permit_mynetworks</a>,
<a href="postconf.5.html#permit_sasl_authenticated">permit_sasl_authenticated</a>,
# <a href="postconf.5.html#reject_unauth_destination">reject_unauth_destination</a> is not needed here if the mail
# relay policy is specified under <a href="postconf.5.html#smtpd_relay_restrictions">smtpd_relay_restrictions</a>
# (available with Postfix 2.10 and later).
<a href="postconf.5.html#reject_unauth_destination">reject_unauth_destination</a>
<a href="postconf.5.html#reject_rbl_client">reject_rbl_client</a> zen.spamhaus.org,
<a href="postconf.5.html#reject_rhsbl_helo">reject_rhsbl_helo</a> dbl.spamhaus.org,
<a href="postconf.5.html#reject_rhsbl_sender">reject_rhsbl_sender</a> dbl.spamhaus.org
# Block clients that speak too early.
<a href="postconf.5.html#smtpd_data_restrictions">smtpd_data_restrictions</a> = <a href="postconf.5.html#reject_unauth_pipelining">reject_unauth_pipelining</a>
@ -205,28 +229,47 @@ DEFER result. </p>
<table border="1">
<tr> <th> Restriction list name </th> <th> Status </th> <th> Effect
<tr> <th> Restriction list name </th> <th> Version </th> <th> Status
</th> <th> Effect
of REJECT or DEFER result </th> </tr>
<tr> <td> <a href="postconf.5.html#smtpd_client_restrictions">smtpd_client_restrictions</a> </td> <td> Optional </td> <td>
<tr> <td> <a href="postconf.5.html#smtpd_client_restrictions">smtpd_client_restrictions</a> </td> <td> All </td> <td>
Optional </td> <td>
Reject all client commands </td> </tr>
<tr> <td> <a href="postconf.5.html#smtpd_helo_restrictions">smtpd_helo_restrictions</a> </td> <td> Optional </td> <td>
<tr> <td> <a href="postconf.5.html#smtpd_helo_restrictions">smtpd_helo_restrictions</a> </td> <td> All </td> <td> Optional
</td> <td>
Reject HELO/EHLO information </td> </tr>
<tr> <td> <a href="postconf.5.html#smtpd_sender_restrictions">smtpd_sender_restrictions</a> </td> <td> Optional </td> <td>
<tr> <td> <a href="postconf.5.html#smtpd_sender_restrictions">smtpd_sender_restrictions</a> </td> <td> All </td> <td>
Optional </td> <td>
Reject MAIL FROM information </td> </tr>
<tr> <td> <a href="postconf.5.html#smtpd_recipient_restrictions">smtpd_recipient_restrictions</a> </td> <td> Required </td>
<td> Reject RCPT TO information </td> </tr>
<tr> <td rowspan="2"> <a href="postconf.5.html#smtpd_relay_restrictions">smtpd_relay_restrictions</a> </td> <td> &ge; 2.10
</td> <td> Required if <a href="postconf.5.html#smtpd_recipient_restrictions">smtpd_recipient_restrictions</a> does not enforce
relay policy</td>
<td rowspan="2"> Reject RCPT TO information </td> </tr>
<tr> <td> <a href="postconf.5.html#smtpd_data_restrictions">smtpd_data_restrictions</a> </td> <td> Optional </td> <td>
<tr> <td> &lt 2.10</td> <td> Not available </td>
</tr>
<tr> <td rowspan="2"> <a href="postconf.5.html#smtpd_recipient_restrictions">smtpd_recipient_restrictions</a> </td> <td> &ge;
2.10 </td> <td> Required if <a href="postconf.5.html#smtpd_relay_restrictions">smtpd_relay_restrictions</a> does not enforce
relay policy</td>
<td rowspan="2"> Reject RCPT TO information </td> </tr>
<tr> <td> &lt 2.10</td> <td> Required </td> </tr>
<tr> <td> <a href="postconf.5.html#smtpd_data_restrictions">smtpd_data_restrictions</a> </td> <td> &ge; 2.0 </td> <td>
Optional </td> <td>
Reject DATA command </td> </tr>
<tr> <td> <a href="postconf.5.html#smtpd_end_of_data_restrictions">smtpd_end_of_data_restrictions</a> </td> <td> Optional </td> <td>
<tr> <td> <a href="postconf.5.html#smtpd_end_of_data_restrictions">smtpd_end_of_data_restrictions</a> </td> <td> &ge; 2.2 </td>
<td> Optional </td> <td>
Reject END-OF-DATA command </td> </tr>
<tr> <td> <a href="postconf.5.html#smtpd_etrn_restrictions">smtpd_etrn_restrictions</a> </td> <td> Optional </td> <td>
<tr> <td> <a href="postconf.5.html#smtpd_etrn_restrictions">smtpd_etrn_restrictions</a> </td> <td> All </td> <td> Optional
</td> <td>
Reject ETRN command </td> </tr>
</table>
@ -248,10 +291,10 @@ and so on. This approach turned out to be difficult to use. </p>
helo and sender restriction lists until the RCPT TO or ETRN command.
This behavior is controlled by the <a href="postconf.5.html#smtpd_delay_reject">smtpd_delay_reject</a> parameter.
Restriction lists are still evaluated in the proper order of (client,
helo, etrn) or (client, helo, sender, recipient, data, or end-of-data)
restrictions.
helo, etrn) or (client, helo, sender, relay, recipient, data, or
end-of-data) restrictions.
When a restriction list (example: client) evaluates to REJECT or
DEFER the other restriction lists (example: helo, sender, etc.)
DEFER the restriction lists that follow (example: helo, sender, etc.)
are skipped. </p>
<p> Around the time that <a href="postconf.5.html#smtpd_delay_reject">smtpd_delay_reject</a> was introduced, Postfix
@ -300,6 +343,12 @@ list evaluates to REJECT or DEFER, the recipient address is rejected;
no surprises here. If the result is PERMIT, then the recipient
address is accepted. And this is where surprises can happen. </p>
<p> The problem is that Postfix versions before 2.10 did not have
<a href="postconf.5.html#smtpd_relay_restrictions">smtpd_relay_restrictions</a>. They combined the mail relay and spam
blocking policies, under <a href="postconf.5.html#smtpd_recipient_restrictions">smtpd_recipient_restrictions</a>. The result
is that a permissive spam blocking policy could unexpectedly result
in a permissive mail relay policy. </p>
<p> Here is an example that shows when a PERMIT result can result
in too much access permission: </p>
@ -309,7 +358,7 @@ in too much access permission: </p>
3 <a href="postconf.5.html#permit_mynetworks">permit_mynetworks</a>
4 <a href="postconf.5.html#check_helo_access">check_helo_access</a> hash:/etc/postfix/helo_access
5 <a href="postconf.5.html#reject_unknown_helo_hostname">reject_unknown_helo_hostname</a>
6 <a href="postconf.5.html#reject_unauth_destination">reject_unauth_destination</a>
6 <b><a href="postconf.5.html#reject_unauth_destination">reject_unauth_destination</a></b>
7
8 /etc/postfix/helo_access:
9 localhost.localdomain PERMIT
@ -326,14 +375,31 @@ localhost.localdomain". </p>
that announces itself as "localhost.localdomain", making Postfix
an open relay for all such hosts. </p>
<p> In order to avoid surprises like these with
<a href="postconf.5.html#smtpd_recipient_restrictions">smtpd_recipient_restrictions</a>, you should place non-recipient
<p> With Postfix before version 2.10 you should place non-recipient
restrictions AFTER the <a href="postconf.5.html#reject_unauth_destination">reject_unauth_destination</a> restriction, not
before. In the above example, the HELO based restrictions should
be placed AFTER <a href="postconf.5.html#reject_unauth_destination">reject_unauth_destination</a>, or better, the HELO
based restrictions should be placed under <a href="postconf.5.html#smtpd_helo_restrictions">smtpd_helo_restrictions</a>
where they can do no harm. </p>
<pre>
1 /etc/postfix/<a href="postconf.5.html">main.cf</a>:
2 <a href="postconf.5.html#smtpd_recipient_restrictions">smtpd_recipient_restrictions</a> =
3 <a href="postconf.5.html#permit_mynetworks">permit_mynetworks</a>
4 <b><a href="postconf.5.html#reject_unauth_destination">reject_unauth_destination</a></b>
5 <a href="postconf.5.html#check_helo_access">check_helo_access</a> hash:/etc/postfix/helo_access
6 <a href="postconf.5.html#reject_unknown_helo_hostname">reject_unknown_helo_hostname</a>
7
8 /etc/postfix/helo_access:
9 localhost.localdomain PERMIT
</pre>
<p> The above mistake will not happen with Postfix 2.10 and later,
when the relay policy is specified under <a href="postconf.5.html#smtpd_relay_restrictions">smtpd_relay_restrictions</a>,
and the spam blocking policy under <a href="postconf.5.html#smtpd_recipient_restrictions">smtpd_recipient_restrictions</a>.
Then, a permissive spam blocking policy will not result in a
permissive mail relay policy. </p>
<h2> <a name="testing"> SMTP access rule testing </a> </h2>
<p> Postfix has several features that aid in SMTP access rule
@ -348,18 +414,21 @@ sender. Specify "<a href="postconf.5.html#soft_bounce">soft_bounce</a> = yes" in
the Postfix SMTP server from rejecting mail permanently, by changing
all 5xx SMTP reply codes into 4xx. </p> </dd>
<dt> <a href="postconf.5.html#warn_if_reject">warn_if_reject</a> </dt> <dd> <p> This is a different safety net
that changes SMTP server REJECT actions into warnings. Instead of
rejecting a command, Postfix logs what it would reject. Specify
"<a href="postconf.5.html#warn_if_reject">warn_if_reject</a>" in an SMTP access restriction list, before the
restriction that you want to test without actually rejecting mail.
</p> </dd>
<dt> <a href="postconf.5.html#warn_if_reject">warn_if_reject</a> </dt> <dd> <p> When placed before a reject-type
restriction, access table query, or <a href="postconf.5.html#check_policy_service">check_policy_service</a> query,
this logs a "reject_warning" message instead of rejecting a request
(when a reject-type restriction fails due to a temporary error,
this logs a "reject_warning" message for any implicit "<a href="postconf.5.html#defer_if_permit">defer_if_permit</a>"
actions that would normally prevent mail from being accepted by
some later access restriction). This feature has no effect on
<a href="postconf.5.html#defer_if_reject">defer_if_reject</a> restrictions. </p> </dd>
<dt> XCLIENT </dt> <dd> <p> With this Postfix 2.1 feature, authorized
SMTP clients can impersonate other systems, so that you can do
realistic SMTP access rule tests. Examples of how to impersonate
other systems for access rule testing are given at the end of the
<a href="XCLIENT_README.html">XCLIENT_README</a> document. </p> </dd>
<dt> XCLIENT </dt> <dd> <p> With this feature, an authorized SMTP
client can impersonate other systems and perform realistic SMTP
access rule tests. Examples of how to impersonate other systems
for access rule testing are given at the end of the <a href="XCLIENT_README.html">XCLIENT_README</a>
document. <br> This feature is available in Postfix 2.1. </p>
</dd>
</dl>

View File

@ -281,6 +281,10 @@ specified with the <b>user</b> attribute. </p>
"-", to avoid "connection refused" and other problems when you
increase the smtpd process limit. </p>
<li> <p> Line 8: <a href="postconf.5.html#reject_unauth_destination">reject_unauth_destination</a> is not needed here if
the mail relay policy is specified with <a href="postconf.5.html#smtpd_relay_restrictions">smtpd_relay_restrictions</a>
(available with Postfix 2.10 and later). </p>
<li> <p> Lines 8, 9: always specify "<a href="postconf.5.html#check_policy_service">check_policy_service</a>" AFTER
"<a href="postconf.5.html#reject_unauth_destination">reject_unauth_destination</a>" or else your system could become an
open relay. </p>
@ -299,8 +303,8 @@ of a <a href="master.5.html">master.cf</a> service name (in the above example, "
built-in suffix (in the above example: "_time_limit"). </p>
</blockquote>
<li> <p> Solaris UNIX-domain sockets do not work reliably. Use
TCP sockets instead: </p>
<li> <p> With Solaris &lt; 9, or Postfix &lt; 2.10 on any Solaris
version, use TCP sockets instead of UNIX-domain sockets: </p>
</ul>
@ -436,6 +440,10 @@ SMTP server process that talks to it.
See the <a href="spawn.8.html">spawn(8)</a> manpage for more information about the
<a href="postconf.5.html#transport_time_limit"><i>transport</i>_time_limit</a> parameter. </p>
<li> <p> Line 9: <a href="postconf.5.html#reject_unauth_destination">reject_unauth_destination</a> is not needed here if
the mail relay policy is specified with <a href="postconf.5.html#smtpd_relay_restrictions">smtpd_relay_restrictions</a>
(available with Postfix 2.10 and later). </p>
<blockquote> <p> Note: the "<a href="postconf.5.html#transport_time_limit">greylist_time_limit</a>" parameter will not
show up in "postconf" command output before Postfix version 2.9.
This limitation applies to many parameters whose name is a combination
@ -445,7 +453,8 @@ a built-in suffix (in the above example: "_time_limit"). </p>
</ul>
<p> On Solaris you must use inet: style sockets instead of unix:
<p> With Solaris &lt; 9, or Postfix &lt; 2.10 on any Solaris
version, use inet: style sockets instead of unix:
style, as detailed in the "<a href="#client_config">Policy
client/server configuration</a>" section above. </p>
@ -497,10 +506,15 @@ forged MAIL FROM domains could be found at
<ul>
<li> <p> Line 9: On Solaris you must use inet: style sockets
<li> <p> Line 9: On Solaris &lt; 9, or Postfix &lt; 2.10 on any
Solaris version, use inet: style sockets
instead of unix: style, as detailed in the "<a href="#greylist">Example:
greylist policy server</a>" section above. </p>
<li> <p> Line 5: <a href="postconf.5.html#reject_unauth_destination">reject_unauth_destination</a> is not needed here if
the mail relay policy is specified with <a href="postconf.5.html#smtpd_relay_restrictions">smtpd_relay_restrictions</a>
(available with Postfix 2.10 and later). </p>
<li> <p> Line 6: Be sure to specify "<a href="postconf.5.html#check_sender_access">check_sender_access</a>" AFTER
"<a href="postconf.5.html#reject_unauth_destination">reject_unauth_destination</a>" or else your system could become an
open mail relay. </p>
@ -547,10 +561,15 @@ most of the delays and most of the database pollution problem. </p>
<ul>
<li> <p> Line 7: On Solaris you must use inet: style sockets
<li> <p> Line 7: On Solaris &lt; 9, or Postfix &lt; 2.10 on any
Solaris version, use inet: style sockets
instead of unix: style, as detailed in the "<a href="#greylist">Example:
greylist policy server</a>" section above. </p>
<li> <p> Line 5: <a href="postconf.5.html#reject_unauth_destination">reject_unauth_destination</a> is not needed here if
the mail relay policy is specified with <a href="postconf.5.html#smtpd_relay_restrictions">smtpd_relay_restrictions</a>
(available with Postfix 2.10 and later). </p>
<li> <p> Lines 6-7: Be sure to specify <a href="postconf.5.html#check_sender_access">check_sender_access</a> and
<a href="postconf.5.html#check_policy_service">check_policy_service</a> AFTER <a href="postconf.5.html#reject_unauth_destination">reject_unauth_destination</a> or else your
system could become an open mail relay. </p>

View File

@ -40,43 +40,43 @@ except that the latter uses a dedicated protocol instead of SMTP.
<tr>
<td bgcolor="#f0f0ff" align="center" valign="middle"
width="10%"> Internet </td>
<td bgcolor="#f0f0ff" align="center" valign="middle"
width="10%"> Internet </td>
<td align="center" valign="middle" width="5%"> <tt> -&gt; </tt> </td>
<td bgcolor="#f0f0ff" align="center" valign="middle"
width="10%"> <a href="smtpd.8.html">Postfix SMTP server</a>
</td>
<td bgcolor="#f0f0ff" align="center" valign="middle"
width="10%"> <a href="smtpd.8.html">Postfix SMTP server</a>
</td>
<td align="center" valign="middle" width="5%"> <tt> -&gt; </tt> </td>
<td bgcolor="#f0f0ff" align="center" valign="middle"
width="10%"> <b>Before</b> <b>queue</b> <b>filter</b> </td>
<td bgcolor="#f0f0ff" align="center" valign="middle"
width="10%"> <b>Before</b> <b>queue</b> <b>filter</b> </td>
<td align="center" valign="middle" width="5%"> <tt> -&gt; </tt> </td>
<td bgcolor="#f0f0ff" align="center" valign="middle"
width="10%"> <a href="smtpd.8.html">Postfix SMTP server</a>
</td>
<td bgcolor="#f0f0ff" align="center" valign="middle"
width="10%"> <a href="smtpd.8.html">Postfix SMTP server</a>
</td>
<td align="center" valign="middle" width="5%"> <tt> -&gt; </tt> </td>
<td bgcolor="#f0f0ff" align="center" valign="middle"
width="10%"> <a href="cleanup.8.html">Postfix cleanup
server</a> </td>
<td bgcolor="#f0f0ff" align="center" valign="middle"
width="10%"> <a href="cleanup.8.html">Postfix cleanup
server</a> </td>
<td align="center" valign="middle" width="5%"> <tt> -&gt; </tt> </td>
<td bgcolor="#f0f0ff" align="center" valign="middle"
width="10%"> Postfix queue </td>
<td bgcolor="#f0f0ff" align="center" valign="middle"
width="10%"> Postfix queue </td>
<td align="center" valign="middle" width="5%"> <tt> -&lt; </tt> </td>
<td bgcolor="#f0f0ff" align="center" valign="middle"
width="10%"> <a href="smtp.8.html">smtp</a><br> <a
href="local.8.html">local</a><br> <a
href="virtual.8.html">virtual</a> </td>
<td bgcolor="#f0f0ff" align="center" valign="middle"
width="10%"> <a href="smtp.8.html">smtp</a><br> <a
href="local.8.html">local</a><br> <a
href="virtual.8.html">virtual</a> </td>
</tr>
@ -213,26 +213,26 @@ PERL/SMTP content filtering framework. See:
<td align="center" valign="middle" width="5%"> <tt> -&gt; </tt> </td>
<td bgcolor="#f0f0ff" align="center" valign="middle"
width="10%"> <a href="smtpd.8.html">Postfix SMTP server on
port 25</a> </td>
<td bgcolor="#f0f0ff" align="center" valign="middle"
width="10%"> <a href="smtpd.8.html">Postfix SMTP server on
port 25</a> </td>
<td align="center" valign="middle" width="5%"> <tt> -&gt; </tt> </td>
<td bgcolor="#f0f0ff" align="center" valign="middle"
width="10%"> filter on localhost port 10025 </td>
<td bgcolor="#f0f0ff" align="center" valign="middle"
width="10%"> filter on localhost port 10025 </td>
<td align="center" valign="middle" width="5%"> <tt> -&gt; </tt> </td>
<td bgcolor="#f0f0ff" align="center" valign="middle"
width="10%"> <a href="smtpd.8.html">Postfix SMTP server on
localhost port 10026</a> </td>
<td bgcolor="#f0f0ff" align="center" valign="middle"
width="10%"> <a href="smtpd.8.html">Postfix SMTP server on
localhost port 10026</a> </td>
<td align="center" valign="middle" width="5%"> <tt> -&gt; </tt> </td>
<td bgcolor="#f0f0ff" align="center" valign="middle"
width="10%"> <a href="cleanup.8.html">Postfix cleanup
server</a> </td>
<td bgcolor="#f0f0ff" align="center" valign="middle"
width="10%"> <a href="cleanup.8.html">Postfix cleanup
server</a> </td>
<td align="center" valign="middle" width="5%"> <tt> -&gt; </tt> </td>
@ -261,8 +261,8 @@ PERL/SMTP content filtering framework. See:
smtp inet n - n - 20 smtpd
-o <a href="postconf.5.html#smtpd_proxy_filter">smtpd_proxy_filter</a>=127.0.0.1:10025
-o <a href="postconf.5.html#smtpd_client_connection_count_limit">smtpd_client_connection_count_limit</a>=10
# Postfix 2.7 and later performance feature.
# -o <a href="postconf.5.html#smtpd_proxy_options">smtpd_proxy_options</a>=speed_adjust
# Postfix 2.7 and later performance feature.
# -o <a href="postconf.5.html#smtpd_proxy_options">smtpd_proxy_options</a>=speed_adjust
#
# After-filter SMTP server. Receive mail from the content filter
# on localhost port 10026.
@ -272,6 +272,8 @@ PERL/SMTP content filtering framework. See:
-o <a href="postconf.5.html#smtpd_client_restrictions">smtpd_client_restrictions</a>=
-o <a href="postconf.5.html#smtpd_helo_restrictions">smtpd_helo_restrictions</a>=
-o <a href="postconf.5.html#smtpd_sender_restrictions">smtpd_sender_restrictions</a>=
# Postfix 2.10 and later: specify empty <a href="postconf.5.html#smtpd_relay_restrictions">smtpd_relay_restrictions</a>.
-o <a href="postconf.5.html#smtpd_relay_restrictions">smtpd_relay_restrictions</a>=
-o <a href="postconf.5.html#smtpd_recipient_restrictions">smtpd_recipient_restrictions</a>=<a href="postconf.5.html#permit_mynetworks">permit_mynetworks</a>,reject
-o <a href="postconf.5.html#smtpd_data_restrictions">smtpd_data_restrictions</a>=
-o <a href="postconf.5.html#mynetworks">mynetworks</a>=127.0.0.0/8

View File

@ -102,20 +102,18 @@ mail from the network, and it does not deliver any mail locally. A
null client typically uses POP, IMAP or NFS for mailbox access. </p>
<p> In this example we assume that the Internet domain name is
"example.com" and that the machine is named "nullclient.example.com".
"example.com" and that the machine is named "hostname.example.com".
As usual, the examples show only parameters that are not left at
their default settings. </p>
<blockquote>
<pre>
1 /etc/postfix/<a href="postconf.5.html">main.cf</a>:
2 <a href="postconf.5.html#myorigin">myorigin</a> = $<a href="postconf.5.html#mydomain">mydomain</a>
3 <a href="postconf.5.html#relayhost">relayhost</a> = $<a href="postconf.5.html#mydomain">mydomain</a>
4 <a href="postconf.5.html#inet_interfaces">inet_interfaces</a> = loopback-only
5 <a href="postconf.5.html#local_transport">local_transport</a> = <a href="error.8.html">error</a>:local delivery is disabled
6
7 /etc/postfix/<a href="master.5.html">master.cf</a>:
8 Comment out the local delivery agent entry
2 <a href="postconf.5.html#myhostname">myhostname</a> = hostname.example.com
3 <a href="postconf.5.html#myorigin">myorigin</a> = $<a href="postconf.5.html#mydomain">mydomain</a>
4 <a href="postconf.5.html#relayhost">relayhost</a> = $<a href="postconf.5.html#mydomain">mydomain</a>
5 <a href="postconf.5.html#inet_interfaces">inet_interfaces</a> = loopback-only
6 <a href="postconf.5.html#mydestination">mydestination</a> =
</pre>
</blockquote>
@ -123,19 +121,29 @@ their default settings. </p>
<ul>
<li> <p> Line 2: Send mail as "user@example.com" (instead of
"user@nullclient.example.com"), so that nothing ever has a reason
to send mail to "user@nullclient.example.com". </p>
<li> <p> Line 2: Set <a href="postconf.5.html#myhostname">myhostname</a> to hostname.example.com, in case
the machine name isn't set to a fully-qualified domain name (use
the command "postconf -d <a href="postconf.5.html#myhostname">myhostname</a>" to find out what the machine
name is). </p>
<li> <p> Line 3: Forward all mail to the mail server that is
<li> <p> Line 2: The <a href="postconf.5.html#myhostname">myhostname</a> value also provides the default
value for the <a href="postconf.5.html#mydomain">mydomain</a> parameter (here, "<a href="postconf.5.html#mydomain">mydomain</a> = example.com").
</p>
<li> <p> Line 3: Send mail as "user@example.com" (instead of
"user@hostname.example.com"), so that nothing ever has a reason
to send mail to "user@hostname.example.com". </p>
<li> <p> Line 4: Forward all mail to the mail server that is
responsible for the "example.com" domain. This prevents mail from
getting stuck on the null client if it is turned off while some
remote destination is unreachable. </p>
remote destination is unreachable. Specify a real hostname
here if your "example.com" domain has no MX record. </p>
<li> <p> Line 4: Do not accept mail from the network. </p>
<li> <p> Line 5: Do not accept mail from the network. </p>
<li> <p> Lines 5-8: Disable local mail delivery. All mail goes to
the mail server as specified in line 3. </p>
<li> <p> Line 6: Disable local mail delivery. All mail goes to
the mail server as specified in line 4. </p>
</ul>
@ -347,31 +355,41 @@ is the real purpose of the firewall email function. </p>
3 <a href="postconf.5.html#relay_domains">relay_domains</a> = example.com
4 <a href="postconf.5.html#parent_domain_matches_subdomains">parent_domain_matches_subdomains</a> =
5 <a href="postconf.5.html#debug_peer_list">debug_peer_list</a> smtpd_access_maps
6 <a href="postconf.5.html#smtpd_recipient_restrictions">smtpd_recipient_restrictions</a> =
7 <a href="postconf.5.html#permit_mynetworks">permit_mynetworks</a> <a href="postconf.5.html#reject_unauth_destination">reject_unauth_destination</a>
8
9 <a href="postconf.5.html#relay_recipient_maps">relay_recipient_maps</a> = hash:/etc/postfix/relay_recipients
10 <a href="postconf.5.html#transport_maps">transport_maps</a> = hash:/etc/postfix/transport
11
12 /etc/postfix/relay_recipients:
13 user1@example.com x
14 user2@example.com x
15 . . .
16
17 /etc/postfix/transport:
18 example.com <a href="smtp.8.html">smtp</a>:[inside-gateway.example.com]
<br>
6a # Postfix 2.10 and later support separate relay control and
7a # spam control.
8a <a href="postconf.5.html#smtpd_relay_restrictions">smtpd_relay_restrictions</a> =
9a <a href="postconf.5.html#permit_mynetworks">permit_mynetworks</a> <a href="postconf.5.html#reject_unauth_destination">reject_unauth_destination</a>
10a <a href="postconf.5.html#smtpd_recipient_restrictions">smtpd_recipient_restrictions</a> = ...spam blocking rules....
<br>
6b # Older configurations combine relay control and spam control. To
7b # use this with Postfix &ge; 2.10 specify "<a href="postconf.5.html#smtpd_relay_restrictions">smtpd_relay_restrictions</a>=".
8b <a href="postconf.5.html#smtpd_recipient_restrictions">smtpd_recipient_restrictions</a> =
9b <a href="postconf.5.html#permit_mynetworks">permit_mynetworks</a> <a href="postconf.5.html#reject_unauth_destination">reject_unauth_destination</a>
10b ...spam blocking rules....
<br>
11 <a href="postconf.5.html#relay_recipient_maps">relay_recipient_maps</a> = hash:/etc/postfix/relay_recipients
12 <a href="postconf.5.html#transport_maps">transport_maps</a> = hash:/etc/postfix/transport
13
14 /etc/postfix/relay_recipients:
15 user1@example.com x
16 user2@example.com x
17 . . .
18
19 /etc/postfix/transport:
20 example.com <a href="smtp.8.html">smtp</a>:[inside-gateway.example.com]
</pre>
</blockquote>
<p> Translation: </p>
<ul>
<li><p> Lines 1-7: Accept mail from local systems in $<a href="postconf.5.html#mynetworks">mynetworks</a>,
<li><p> Lines 1-10: Accept mail from local systems in $<a href="postconf.5.html#mynetworks">mynetworks</a>,
and accept mail from outside for "user@example.com" but not for
"user@anything.example.com". The magic is in lines 4-5. </p>
<li> <p> Lines 9, 12-14: Define the list of valid addresses in the
<li> <p> Lines 11, 13-16: Define the list of valid addresses in the
"example.com" domain that can receive mail from the Internet. This
prevents the mail queue from filling up with undeliverable
MAILER-DAEMON messages. If you can't maintain a list of valid
@ -379,7 +397,7 @@ recipients then you must specify "<a href="postconf.5.html#relay_recipient_maps"
is, an empty value), or you must specify an "@example.com x"
wild-card in the relay_recipients table. </p>
<li> <p> Lines 10, 17-18: Route mail for "example.com" to the inside
<li> <p> Lines 12, 19-20: Route mail for "example.com" to the inside
gateway machine. The <tt>[]</tt> forces Postfix to do no MX lookup.
</p>
@ -521,18 +539,28 @@ is all you need: </p>
3
4 /etc/postfix/<a href="postconf.5.html">main.cf</a>:
5 <a href="postconf.5.html#relay_domains">relay_domains</a> = . . . the.backed-up.domain.tld
6 <a href="postconf.5.html#smtpd_recipient_restrictions">smtpd_recipient_restrictions</a> =
7 <a href="postconf.5.html#permit_mynetworks">permit_mynetworks</a> <a href="postconf.5.html#reject_unauth_destination">reject_unauth_destination</a>
8
9 # You must specify your NAT/proxy external address.
10 #<a href="postconf.5.html#proxy_interfaces">proxy_interfaces</a> = 1.2.3.4
11
12 <a href="postconf.5.html#relay_recipient_maps">relay_recipient_maps</a> = hash:/etc/postfix/relay_recipients
<br>
6a # Postfix 2.10 and later support separate relay control and
7a # spam control.
8a <a href="postconf.5.html#smtpd_relay_restrictions">smtpd_relay_restrictions</a> =
9a <a href="postconf.5.html#permit_mynetworks">permit_mynetworks</a> <a href="postconf.5.html#reject_unauth_destination">reject_unauth_destination</a>
10a <a href="postconf.5.html#smtpd_recipient_restrictions">smtpd_recipient_restrictions</a> = ...spam blocking rules....
<br>
6b # Older configurations combine relay control and spam control. To
7b # use this with Postfix &ge; 2.10 specify "<a href="postconf.5.html#smtpd_relay_restrictions">smtpd_relay_restrictions</a>=".
8b <a href="postconf.5.html#smtpd_recipient_restrictions">smtpd_recipient_restrictions</a> =
9b <a href="postconf.5.html#permit_mynetworks">permit_mynetworks</a> <a href="postconf.5.html#reject_unauth_destination">reject_unauth_destination</a>
10b ...spam blocking rules....
<br>
11 # You must specify your NAT/proxy external address.
12 #<a href="postconf.5.html#proxy_interfaces">proxy_interfaces</a> = 1.2.3.4
13
14 /etc/postfix/relay_recipients:
15 user1@the.backed-up.domain.tld x
16 user2@the.backed-up.domain.tld x
17 . . .
14 <a href="postconf.5.html#relay_recipient_maps">relay_recipient_maps</a> = hash:/etc/postfix/relay_recipients
15
16 /etc/postfix/relay_recipients:
17 user1@the.backed-up.domain.tld x
18 user2@the.backed-up.domain.tld x
19 . . .
</pre>
</blockquote>
@ -541,11 +569,11 @@ need the above, plus: </p>
<blockquote>
<pre>
18 /etc/postfix/<a href="postconf.5.html">main.cf</a>:
19 <a href="postconf.5.html#transport_maps">transport_maps</a> = hash:/etc/postfix/transport
20
21 /etc/postfix/transport:
22 the.backed-up.domain.tld relay:[their.mail.host.tld]
20 /etc/postfix/<a href="postconf.5.html">main.cf</a>:
21 <a href="postconf.5.html#transport_maps">transport_maps</a> = hash:/etc/postfix/transport
22
23 /etc/postfix/transport:
24 the.backed-up.domain.tld relay:[their.mail.host.tld]
</pre>
</blockquote>
@ -559,15 +587,15 @@ need the above, plus: </p>
<li><p>Do not list the.backed-up.domain.tld in <a href="postconf.5.html#virtual_mailbox_domains">virtual_mailbox_domains</a>.</p>
<li> <p> Lines 1-7: Forward mail from the Internet for
<li> <p> Lines 1-9: Forward mail from the Internet for
"the.backed-up.domain.tld" to the primary MX host for that domain.
</p>
<li> <p> Line 10: This is a must if Postfix receives mail via a
<li> <p> Line 12: This is a must if Postfix receives mail via a
NAT relay or proxy that presents a different IP address to the
world than the local machine. </p>
<li> <p> Lines 12-16: Define the list of valid addresses in the
<li> <p> Lines 14-18: Define the list of valid addresses in the
"the.backed-up.domain.tld" domain. This prevents your mail queue
from filling up with undeliverable MAILER-DAEMON messages. If you
can't maintain a list of valid recipients then you must specify
@ -575,7 +603,7 @@ can't maintain a list of valid recipients then you must specify
specify an "@the.backed-up.domain.tld x" wild-card in the
relay_recipients table. </p>
<li> <p> Line 22: The <tt>[]</tt> forces Postfix to do no MX lookup. </p>
<li> <p> Line 24: The <tt>[]</tt> forces Postfix to do no MX lookup. </p>
</ul>

View File

@ -514,17 +514,13 @@ services that accept remote connections. </p>
<h2><a name="other"> Other measures to off-load zombies </a> </h2>
<p> OpenBSD <a href="http://www.openbsd.org/spamd/">spamd</a>
implements a daemon that handles all connections from "new" clients.
Only well-behaved mail clients are allowed to talk to the mail
server. Other clients are tarpitted, and will never get a chance
to affect mail server performance. </p>
<p> At some point in the future, Postfix may come with a simple
front-end daemon that does basic greylisting and pipelining detection
to keep zombies and other ratware away from Postfix itself. This
would use the "pass" service type which has been available in
stable Postfix releases since Postfix 2.5. </p>
<p> The <a href="postscreen.8.html">postscreen(8)</a> daemon, introduced with Postfix 2.8, provides
additional protection against mail server overload. One <a href="postscreen.8.html">postscreen(8)</a>
process handles multiple inbound SMTP connections, and decides which
clients may to talk to a Postfix SMTP server process. By keeping
spambots away, <a href="postscreen.8.html">postscreen(8)</a> leaves more SMTP server processes
available for legitimate clients, and delays the onset of server
overload conditions. </p>
<h2><a name="credits"> Credits </a></h2>

View File

@ -137,10 +137,8 @@ the DNS requests or replies. </p>
<li> <p> If the number of <a href="smtpd.8.html">smtpd(8)</a> processes has reached the process
limit as specified in <a href="master.5.html">master.cf</a>, new SMTP clients must wait until
a process becomes available. Increase the number of processes if
memory permits. See the instructions given under "<a
href="#proc_limit">Tuning the number of Postfix processes</a>".
</p>
a process becomes available. See the <a href="STRESS_README.html">STRESS_README</a> and <a href="POSTSCREEN_README.html">POSTSCREEN_README</a>
documents for measures that help to prevent SMTP server overload. </p>
</ul>
@ -391,7 +389,7 @@ default. They should be used only for transports that deliver mail
to a small number of high volume domains. </p>
<p> A common situation where high concurrency is called for is on
gateways relaying a high volume of mail from between the Internet
gateways relaying a high volume of mail between the Internet
and an intranet mail environment. Approximately half the mail
(assuming equal volumes inbound and outbound) will be destined
for the internal mail hubs. Since the internal mail hubs will be
@ -441,7 +439,7 @@ recipients into smaller lists. Postfix will attempt to send multiple
copies of the message in parallel. </p>
<p> IMPORTANT: Be careful when increasing the recipient limit per
message delivery; some <a href="smtpd.8.html">smtpd(8)</a> servers abort the connection when they
message delivery; some SMTP servers abort the connection when they
run out of memory or when a hard recipient limit is reached, so
that the message will never be delivered. </p>
@ -568,13 +566,13 @@ and so on: </p>
</blockquote>
<p> You need to execute "postfix reload" to make the change effective.
The limits are enforced by the Postfix <a href="master.8.html">master(8)</a> daemon which does
This limit is enforced by the Postfix <a href="master.8.html">master(8)</a> daemon which does
not automatically read <a href="postconf.5.html">main.cf</a> when it changes. </p>
<p> You can override the process limit for specific Postfix daemons
by editing the <a href="master.5.html">master.cf</a> file. For example, if you do not wish to
receive 100 SMTP messages at the same time, but do not want to
change the process limits for local mail deliveries, you could
change the process limits for other Postfix daemons, you could
specify: </p>
<blockquote>

View File

@ -218,7 +218,7 @@ second form overrides them explicitly. The values shown are the
recommended ones. </p>
<p> You can use the <a href="postconf.5.html#smtpd_command_filter">smtpd_command_filter</a> feature to append XVERP
to SMTP commands from legacy sofware. This requires Postfix 2.7
to SMTP commands from legacy software. This requires Postfix 2.7
or later. </p>
<blockquote>

View File

@ -260,8 +260,8 @@ section at the top of this document.</p>
3 <a href="postconf.5.html#virtual_mailbox_base">virtual_mailbox_base</a> = /var/mail/vhosts
4 <a href="postconf.5.html#virtual_mailbox_maps">virtual_mailbox_maps</a> = hash:/etc/postfix/vmailbox
5 <a href="postconf.5.html#virtual_minimum_uid">virtual_minimum_uid</a> = 100
6 <a href="postconf.5.html#virtual_uid_maps">virtual_uid_maps</a> = static:5000
7 <a href="postconf.5.html#virtual_gid_maps">virtual_gid_maps</a> = static:5000
6 <a href="postconf.5.html#virtual_uid_maps">virtual_uid_maps</a> = <a href="DATABASE_README.html#types">static</a>:5000
7 <a href="postconf.5.html#virtual_gid_maps">virtual_gid_maps</a> = <a href="DATABASE_README.html#types">static</a>:5000
8 <a href="postconf.5.html#virtual_alias_maps">virtual_alias_maps</a> = hash:/etc/postfix/virtual
9
10 /etc/postfix/vmailbox:
@ -357,7 +357,11 @@ in the <a href="virtual.8.html">virtual(8)</a> manual page. </p>
domains, non-UNIX accounts</a></h2>
<p> This is a variation on the Postfix <a href="VIRTUAL_README.html#virtual_mailbox">virtual mailbox example</a>.
Again, every hosted address can have its own mailbox. </p>
Again, every hosted address can have its own mailbox. However, most
parameters that control the <a href="virtual.8.html">virtual(8)</a> delivery agent are no longer
applicable: only <a href="postconf.5.html#virtual_mailbox_domains">virtual_mailbox_domains</a> and <a href="postconf.5.html#virtual_mailbox_maps">virtual_mailbox_maps</a>
stay in effect. These parameters are needed to reject mail for
unknown recipients. </p>
<p> While non-Postfix software is being used for final delivery,
some Postfix concepts are still needed in order to glue everything

View File

@ -24,9 +24,15 @@ ALIASES(5) ALIASES(5)
<b>newaliases</b> in order to rebuild the indexed file after
changing the Postfix alias database.
The input and output file formats are expected to be com-
patible with Sendmail version 8, and are expected to be
suitable for the use as NIS maps.
When the table is provided via other means such as NIS,
LDAP or SQL, the same lookups are done as for ordinary
indexed files.
Alternatively, the table can be provided as a regular-
expression map where patterns are given as regular expres-
sions. In this case, the lookups are done in a slightly
different way as described below under "REGULAR EXPRESSION
TABLES".
Users can control delivery of their own mail by setting up
<b>.forward</b> files in their home directory. Lines in per-user
@ -111,6 +117,25 @@ ALIASES(5) ALIASES(5)
The <a href="local.8.html">local(8)</a> delivery agent always folds the search string
to lowercase before database lookup.
<b>REGULAR EXPRESSION TABLES</b>
This section describes how the table lookups change when
the table is given in the form of regular expressions. For
a description of regular expression lookup table syntax,
see <a href="regexp_table.5.html"><b>regexp_table</b>(5)</a> or <a href="pcre_table.5.html"><b>pcre_table</b>(5)</a>. NOTE: these formats
do not use ":" at the end of a pattern.
Each regular expression is applied to the entire search
string. Thus, a search string <i>user+foo</i> is not broken up
into <i>user</i> and <i>foo</i>.
Regular expressions are applied in the order as specified
in the table, until a regular expression is found that
matches the search string.
Lookup results are the same as with indexed file lookups.
For security reasons there is no support for <b>$1</b>, <b>$2</b> etc.
substring interpolation.
<b>SECURITY</b>
The <a href="local.8.html"><b>local</b>(8)</a> delivery agent disallows regular expression
substitution of $1 etc. in <b><a href="postconf.5.html#alias_maps">alias_maps</a></b>, because that would

View File

@ -438,8 +438,8 @@ CLEANUP(8) CLEANUP(8)
point when logging sub-second delay values.
<b><a href="postconf.5.html#delay_warning_time">delay_warning_time</a> (0h)</b>
The time after which the sender receives the mes-
sage headers of mail that is still queued.
The time after which the sender receives a copy of
the message headers of mail that is still queued.
<b><a href="postconf.5.html#ipc_timeout">ipc_timeout</a> (3600s)</b>
The time limit for sending or receiving information

View File

@ -114,11 +114,11 @@ HEADER_CHECKS(5) HEADER_CHECKS(5)
This document assumes that header and <a href="postconf.5.html#body_checks">body_checks</a> rules
are specified in the form of Postfix regular expression
lookup tables. Usually the best performance is obtained
with <b>pcre</b> (Perl Compatible Regular Expression) tables, but
the slower <b>regexp</b> (POSIX regular expressions) support is
more widely available. Use the command "<b>postconf -m</b>" to
find out what lookup table types your Postfix system sup-
ports.
with <b>pcre</b> (Perl Compatible Regular Expression) tables. The
<b>regexp</b> (POSIX regular expressions) tables are usually
slower, but more widely available. Use the command "<b>post-</b>
<b>conf -m</b>" to find out what lookup table types your Postfix
system supports.
The general format of Postfix regular expression tables is
given below. For a discussion of specific pattern or

View File

@ -115,6 +115,7 @@ SMTP(8) SMTP(8)
<a href="http://tools.ietf.org/html/rfc3461">RFC 3461</a> (SMTP DSN Extension)
<a href="http://tools.ietf.org/html/rfc3463">RFC 3463</a> (Enhanced Status Codes)
<a href="http://tools.ietf.org/html/rfc4954">RFC 4954</a> (AUTH command)
<a href="http://tools.ietf.org/html/rfc5321">RFC 5321</a> (SMTP protocol)
<b>DIAGNOSTICS</b>
Problems and transactions are logged to <b>syslogd</b>(8). Cor-
@ -194,7 +195,7 @@ SMTP(8) SMTP(8)
<b><a href="postconf.5.html#smtp_quote_rfc821_envelope">smtp_quote_rfc821_envelope</a> (yes)</b>
Quote addresses in Postfix SMTP client MAIL FROM
and RCPT TO commands as required by <a href="http://tools.ietf.org/html/rfc2821">RFC 2821</a>.
and RCPT TO commands as required by <a href="http://tools.ietf.org/html/rfc5321">RFC 5321</a>.
<b><a href="postconf.5.html#smtp_reply_filter">smtp_reply_filter</a> (empty)</b>
A mechanism to transform replies from remote SMTP

View File

@ -93,85 +93,90 @@ SENDMAIL(1) SENDMAIL(1)
<b>-bi</b> Initialize alias database. See the <b>newaliases</b> com-
mand above.
<b>-bm</b> Read mail from standard input and arrange for
<b>-bl</b> Go into daemon mode. To accept only local connec-
tions as with Sendmail's <b>-bl</b> option, specify
"<b><a href="postconf.5.html#inet_interfaces">inet_interfaces</a> = loopback</b>" in the Postfix <a href="postconf.5.html"><b>main.cf</b></a>
configuration file.
<b>-bm</b> Read mail from standard input and arrange for
delivery. This is the default mode of operation.
<b>-bp</b> List the mail queue. See the <b>mailq</b> command above.
<b>-bs</b> Stand-alone SMTP server mode. Read SMTP commands
from standard input, and write responses to stan-
<b>-bs</b> Stand-alone SMTP server mode. Read SMTP commands
from standard input, and write responses to stan-
dard output. In stand-alone SMTP server mode, mail
relaying and other access controls are disabled by
default. To enable them, run the process as the
relaying and other access controls are disabled by
default. To enable them, run the process as the
<b><a href="postconf.5.html#mail_owner">mail_owner</a></b> user.
This mode of operation is implemented by running
This mode of operation is implemented by running
the <a href="smtpd.8.html"><b>smtpd</b>(8)</a> daemon.
<b>-bv</b> Do not collect or deliver a message. Instead, send
an email report after verifying each recipient
address. This is useful for testing address
<b>-bv</b> Do not collect or deliver a message. Instead, send
an email report after verifying each recipient
address. This is useful for testing address
rewriting and routing configurations.
This feature is available in Postfix version 2.1
This feature is available in Postfix version 2.1
and later.
<b>-C</b> <i>config</i><b>_</b><i>file</i>
<b>-C</b> <i>config</i><b>_</b><i>dir</i>
The path name of the Postfix <a href="postconf.5.html"><b>main.cf</b></a> file, or of
its parent directory. This information is ignored
The path name of the Postfix <a href="postconf.5.html"><b>main.cf</b></a> file, or of
its parent directory. This information is ignored
with Postfix versions before 2.3.
With all Postfix versions, you can specify a direc-
tory pathname with the MAIL_CONFIG environment
variable to override the location of configuration
variable to override the location of configuration
files.
<b>-F</b> <i>full</i><b>_</b><i>name</i>
Set the sender full name. This overrides the NAME
environment variable, and is used only with mes-
Set the sender full name. This overrides the NAME
environment variable, and is used only with mes-
sages that have no <b>From:</b> message header.
<b>-f</b> <i>sender</i>
Set the envelope sender address. This is the
address where delivery problems are sent to. With
address where delivery problems are sent to. With
Postfix versions before 2.1, the <b>Errors-To:</b> message
header overrides the error return address.
<b>-G</b> Gateway (relay) submission, as opposed to initial
user submission. Either do not rewrite addresses
at all, or update incomplete addresses with the
<b>-G</b> Gateway (relay) submission, as opposed to initial
user submission. Either do not rewrite addresses
at all, or update incomplete addresses with the
domain information specified with <b>remote_header_re-</b>
<b>write_domain</b>.
This option is ignored before Postfix version 2.3.
This option is ignored before Postfix version 2.3.
<b>-h</b> <i>hop</i><b>_</b><i>count</i> (ignored)
Hop count limit. Use the <b><a href="postconf.5.html#hopcount_limit">hopcount_limit</a></b> configura-
Hop count limit. Use the <b><a href="postconf.5.html#hopcount_limit">hopcount_limit</a></b> configura-
tion parameter instead.
<b>-I</b> Initialize alias database. See the <b>newaliases</b> com-
<b>-I</b> Initialize alias database. See the <b>newaliases</b> com-
mand above.
<b>-i</b> When reading a message from standard input, don't
treat a line with only a <b>.</b> character as the end of
<b>-i</b> When reading a message from standard input, don't
treat a line with only a <b>.</b> character as the end of
input.
<b>-L</b> <i>label</i> (ignored)
The logging label. Use the <b><a href="postconf.5.html#syslog_name">syslog_name</a></b> configura-
The logging label. Use the <b><a href="postconf.5.html#syslog_name">syslog_name</a></b> configura-
tion parameter instead.
<b>-m</b> (ignored)
Backwards compatibility.
<b>-N</b> <i>dsn</i> (default: 'delay, failure')
Delivery status notification control. Specify
either a comma-separated list with one or more of
<b>failure</b> (send notification when delivery fails),
Delivery status notification control. Specify
either a comma-separated list with one or more of
<b>failure</b> (send notification when delivery fails),
<b>delay</b> (send notification when delivery is delayed),
or <b>success</b> (send notification when the message is
delivered); or specify <b>never</b> (don't send any noti-
or <b>success</b> (send notification when the message is
delivered); or specify <b>never</b> (don't send any noti-
fications at all).
This feature is available in Postfix 2.3 and later.
@ -180,11 +185,12 @@ SENDMAIL(1) SENDMAIL(1)
Backwards compatibility.
<b>-oA</b><i>alias</i><b>_</b><i>database</i>
Non-default alias database. Specify <i>pathname</i> or
Non-default alias database. Specify <i>pathname</i> or
<i>type</i>:<i>pathname</i>. See <a href="postalias.1.html"><b>postalias</b>(1)</a> for details.
<b>-O</b> <i>option=value</i> (ignored)
Backwards compatibility.
Set the named <i>option</i> to <i>value</i>. Use the equivalent
configuration parameter in <a href="postconf.5.html"><b>main.cf</b></a> instead.
<b>-o7</b> (ignored)
@ -211,9 +217,17 @@ SENDMAIL(1) SENDMAIL(1)
Postfix versions before 2.1, the <b>Errors-To:</b> message
header overrides the error return address.
<b>-R</b> <i>return</i><b>_</b><i>limit</i> (ignored)
Limit the size of bounced mail. Use the
<b><a href="postconf.5.html#bounce_size_limit">bounce_size_limit</a></b> configuration parameter instead.
<b>-R</b> <i>return</i>
Delivery status notification control. Specify
"hdrs" to return only the header when a message
bounces, "full" to return a full copy (the default
behavior).
The <b>-R</b> option specifies an upper bound; Postfix
will return only the header, when a full copy would
exceed the <a href="postconf.5.html#bounce_size_limit">bounce_size_limit</a> setting.
This option is ignored before Postfix version 2.10.
<b>-q</b> Attempt to deliver all queued mail. This is imple-
mented by executing the <a href="postqueue.1.html"><b>postqueue</b>(1)</a> command.
@ -429,8 +443,8 @@ SENDMAIL(1) SENDMAIL(1)
<a href="postalias.1.html"><b>postalias</b>(1)</a> and <a href="postmap.1.html"><b>postmap</b>(1)</a> commands.
<b><a href="postconf.5.html#delay_warning_time">delay_warning_time</a> (0h)</b>
The time after which the sender receives the mes-
sage headers of mail that is still queued.
The time after which the sender receives a copy of
the message headers of mail that is still queued.
<b><a href="postconf.5.html#enable_errors_to">enable_errors_to</a> (no)</b>
Report mail delivery errors to the address speci-

View File

@ -34,6 +34,14 @@ MASTER(5) MASTER(5)
<b>SYNTAX</b>
The general format of the <a href="master.5.html">master.cf</a> file is as follows:
<b>o</b> Empty lines and whitespace-only lines are ignored,
as are lines whose first non-whitespace character
is a `#'.
<b>o</b> A logical line starts with non-whitespace text. A
line that starts with whitespace continues a logi-
cal line.
<b>o</b> Each logical line defines a single Postfix service.
Each service is identified by its name and type as
described below. When multiple lines specify the
@ -41,14 +49,6 @@ MASTER(5) MASTER(5)
remembered. Otherwise, the order of <a href="master.5.html">master.cf</a> ser-
vice definitions does not matter.
<b>o</b> Empty lines and whitespace-only lines are ignored,
as are lines whose first non-whitespace character
is a `#'.
<b>o</b> A logical line starts with non-whitespace text. A
line that starts with whitespace continues a logi-
cal line.
Each logical line consists of eight fields separated by
whitespace. These are described below in the order as
they appear in the <a href="master.5.html">master.cf</a> file.
@ -208,21 +208,27 @@ MASTER(5) MASTER(5)
<a href="postconf.5.html">main.cf</a>. See <a href="postconf.5.html"><b>postconf</b>(5)</a> for syntax.
NOTE 1: do not specify whitespace around the
"=". In parameter values, either avoid
whitespace altogether, use commas instead of
spaces, or consider overrides like "-o
name=$override_parameter" with $over-
ride_parameter set in <a href="postconf.5.html">main.cf</a>.
"=" or in parameter values. To specify a
parameter value that contains whitespace,
use commas instead of spaces, or specify the
value in <a href="postconf.5.html">main.cf</a>. Example:
NOTE 2: Over-zealous use of parameter over-
rides makes the Postfix configuration hard
to understand and maintain. At a certain
point, it might be easier to configure mul-
tiple instances of Postfix, instead of con-
/etc/postfix/<a href="master.5.html">master.cf</a>:
submission inet .... smtpd
-o smtpd_mumble=$submission_mumble
/etc/postfix/<a href="postconf.5.html">main.cf</a>
submission_mumble = text with whitespace...
NOTE 2: Over-zealous use of parameter over-
rides makes the Postfix configuration hard
to understand and maintain. At a certain
point, it might be easier to configure mul-
tiple instances of Postfix, instead of con-
figuring multiple personalities via mas-
ter.cf.
<b>-v</b> Increase the verbose logging level. Specify
<b>-v</b> Increase the verbose logging level. Specify
multiple <b>-v</b> options to make a Postfix daemon
process increasingly verbose.
@ -235,7 +241,7 @@ MASTER(5) MASTER(5)
<a href="DEBUG_README.html">DEBUG_README</a>, Postfix debugging
<b>LICENSE</b>
The Secure Mailer license must be distributed with this
The Secure Mailer license must be distributed with this
software.
<b>AUTHOR(S)</b>

View File

@ -10,7 +10,7 @@ MASTER(8) MASTER(8)
master - Postfix master process
<b>SYNOPSIS</b>
<b>master</b> [<b>-Ddtv</b>] [<b>-c</b> <i>config</i><b>_</b><i>dir</i>] [<b>-e</b> <i>exit</i><b>_</b><i>time</i>]
<b>master</b> [<b>-Ddtvw</b>] [<b>-c</b> <i>config</i><b>_</b><i>dir</i>] [<b>-e</b> <i>exit</i><b>_</b><i>time</i>]
<b>DESCRIPTION</b>
The <a href="master.8.html"><b>master</b>(8)</a> daemon is the resident process that runs
@ -61,6 +61,16 @@ MASTER(8) MASTER(8)
option is passed on to child processes. Multiple <b>-v</b>
options make the software increasingly verbose.
<b>-w</b> Wait in a dummy foreground process, while the real
master daemon initializes in a background process.
The dummy foreground process returns a zero exit
status only if the master daemon initialization is
successful, and if it completes in a reasonable
amount of time.
This feature is available in Postfix 2.10 and
later.
Signals:
<b>SIGHUP</b> Upon receipt of a <b>HUP</b> signal (e.g., after "<b>postfix</b>
@ -81,12 +91,14 @@ MASTER(8) MASTER(8)
running processes to finish what they are doing.
<b>DIAGNOSTICS</b>
Problems are reported to <b>syslogd</b>(8).
Problems are reported to <b>syslogd</b>(8). The exit status is
non-zero in case of problems, including problems while
initializing as a master daemon process in the background.
<b>ENVIRONMENT</b>
<b>MAIL_DEBUG</b>
After initialization, start a debugger as specified
with the <b><a href="postconf.5.html#debugger_command">debugger_command</a></b> configuration parameter
with the <b><a href="postconf.5.html#debugger_command">debugger_command</a></b> configuration parameter
in the <a href="postconf.5.html"><b>main.cf</b></a> configuration file.
<b>MAIL_CONFIG</b>
@ -95,22 +107,22 @@ MASTER(8) MASTER(8)
<b>CONFIGURATION PARAMETERS</b>
Unlike most Postfix daemon processes, the <a href="master.8.html"><b>master</b>(8)</a> server
does not automatically pick up changes to <a href="postconf.5.html"><b>main.cf</b></a>. Changes
to <a href="master.5.html"><b>master.cf</b></a> are never picked up automatically. Use the
to <a href="master.5.html"><b>master.cf</b></a> are never picked up automatically. Use the
"<b>postfix reload</b>" command after a configuration change.
<b>RESOURCE AND RATE CONTROLS</b>
<b><a href="postconf.5.html#default_process_limit">default_process_limit</a> (100)</b>
The default maximal number of Postfix child pro-
The default maximal number of Postfix child pro-
cesses that provide a given service.
<b><a href="postconf.5.html#max_idle">max_idle</a> (100s)</b>
The maximum amount of time that an idle Postfix
daemon process waits for an incoming connection
The maximum amount of time that an idle Postfix
daemon process waits for an incoming connection
before terminating voluntarily.
<b><a href="postconf.5.html#max_use">max_use</a> (100)</b>
The maximal number of incoming connections that a
Postfix daemon process will service before termi-
The maximal number of incoming connections that a
Postfix daemon process will service before termi-
nating voluntarily.
<b><a href="postconf.5.html#service_throttle_time">service_throttle_time</a> (60s)</b>
@ -120,16 +132,16 @@ MASTER(8) MASTER(8)
Available in Postfix version 2.6 and later:
<b><a href="postconf.5.html#master_service_disable">master_service_disable</a> (empty)</b>
Selectively disable <a href="master.8.html"><b>master</b>(8)</a> listener ports by
Selectively disable <a href="master.8.html"><b>master</b>(8)</a> listener ports by
service type or by service name and type.
<b>MISCELLANEOUS CONTROLS</b>
<b><a href="postconf.5.html#config_directory">config_directory</a> (see 'postconf -d' output)</b>
The default location of the Postfix <a href="postconf.5.html">main.cf</a> and
The default location of the Postfix <a href="postconf.5.html">main.cf</a> and
<a href="master.5.html">master.cf</a> configuration files.
<b><a href="postconf.5.html#daemon_directory">daemon_directory</a> (see 'postconf -d' output)</b>
The directory with Postfix support programs and
The directory with Postfix support programs and
daemon programs.
<b><a href="postconf.5.html#debugger_command">debugger_command</a> (empty)</b>
@ -141,11 +153,11 @@ MASTER(8) MASTER(8)
tem receives mail on.
<b><a href="postconf.5.html#inet_protocols">inet_protocols</a> (all)</b>
The Internet protocols Postfix will attempt to use
The Internet protocols Postfix will attempt to use
when making or accepting connections.
<b><a href="postconf.5.html#import_environment">import_environment</a> (see 'postconf -d' output)</b>
The list of environment parameters that a Postfix
The list of environment parameters that a Postfix
process will import from a non-Postfix parent
process.
@ -154,23 +166,23 @@ MASTER(8) MASTER(8)
and most Postfix daemon processes.
<b><a href="postconf.5.html#process_id">process_id</a> (read-only)</b>
The process ID of a Postfix command or daemon
The process ID of a Postfix command or daemon
process.
<b><a href="postconf.5.html#process_name">process_name</a> (read-only)</b>
The process name of a Postfix command or daemon
The process name of a Postfix command or daemon
process.
<b><a href="postconf.5.html#queue_directory">queue_directory</a> (see 'postconf -d' output)</b>
The location of the Postfix top-level queue direc-
The location of the Postfix top-level queue direc-
tory.
<b><a href="postconf.5.html#syslog_facility">syslog_facility</a> (mail)</b>
The syslog facility of Postfix logging.
<b><a href="postconf.5.html#syslog_name">syslog_name</a> (see 'postconf -d' output)</b>
The mail system name that is prepended to the
process name in syslog records, so that "smtpd"
The mail system name that is prepended to the
process name in syslog records, so that "smtpd"
becomes, for example, "postfix/smtpd".
<b>FILES</b>
@ -190,7 +202,7 @@ MASTER(8) MASTER(8)
syslogd(8), system logging
<b>LICENSE</b>
The Secure Mailer license must be distributed with this
The Secure Mailer license must be distributed with this
software.
<b>AUTHOR(S)</b>

View File

@ -69,22 +69,30 @@ MEMCACHE_TABLE(5) MEMCACHE_TABLE(5)
Access to remote proxymap servers is under develop-
ment.
NOTE 1: When using memcache with persistent backup
as <a href="postscreen.8.html"><b>postscreen</b>(8)</a> or <a href="verify.8.html"><b>verify</b>(8)</a> cache, disable auto-
matic cache cleanup (*_cache_cleanup_interval = 0)
in all Postfix instances except for one instance
that will be responsible for cache cleanup.
NOTE 1: When sharing a persistent <a href="postscreen.8.html"><b>postscreen</b>(8)</a> or
<a href="verify.8.html"><b>verify</b>(8)</a> cache, disable automatic cache cleanup
(set *_cache_cleanup_interval = 0) except with one
Postfix instance that will be responsible for cache
cleanup.
NOTE 2: In the case of a proxied backup database,
the full backup database name (including the
"<a href="proxymap.8.html">proxy</a>:" prefix) must be specified in the proxymap
server's <a href="postconf.5.html#proxy_read_maps">proxy_read_maps</a> or <a href="postconf.5.html#proxy_write_maps">proxy_write_maps</a> set-
ting (depending on whether the access is read-only
or read-write).
NOTE 2: When different tables share the same mem-
cache database, each table should use the <b>key_for-</b>
<b>mat</b> feature (see below) to prepend its own unique
string to the lookup key. Otherwise, automatic
<a href="postscreen.8.html"><b>postscreen</b>(8)</a> or <a href="verify.8.html"><b>verify</b>(8)</a> cache cleanup may not
work.
NOTE 3: When the backup database is accessed with
"<a href="proxymap.8.html">proxy</a>:" lookups, the full backup database name
(including the "<a href="proxymap.8.html">proxy</a>:" prefix) must be specified
in the proxymap server's <a href="postconf.5.html#proxy_read_maps">proxy_read_maps</a> or
<a href="postconf.5.html#proxy_write_maps">proxy_write_maps</a> setting (depending on whether the
access is read-only or read-write).
<b>flags (default: 0)</b>
Optional flags that should be stored along with a
memcache update.
Optional flags that should be stored along with a
memcache update. The flags are ignored when looking
up information.
<b>ttl (default: 3600)</b>
The expiration time in seconds of memcache updates.
@ -109,64 +117,68 @@ MEMCACHE_TABLE(5) MEMCACHE_TABLE(5)
lookup and update keys that are given to the Post-
fix memcache client.
NOTE: The <b>key_format</b> feature is not used for <b>backup</b>
database requests.
NOTE 1: The <b>key_format</b> feature is not used for
<b>backup</b> database requests.
When the same memcache database is used to cache
information from multiple tables, you can use the
<b>key_format</b> feature to avoid name collisions by
prepending a fixed string. Examples:
NOTE 2: When different tables share the same mem-
cache database, each table should prepend its own
unique string to the lookup key. Otherwise, auto-
matic <a href="postscreen.8.html"><b>postscreen</b>(8)</a> or <a href="verify.8.html"><b>verify</b>(8)</a> cache cleanup may
not work.
Examples:
key_format = aliases:%s
key_format = access:%s
key_format = verify:%s
key_format = postscreen:%s
The <b>key_format</b> parameter supports the following '%'
expansions:
<b>%%</b> This is replaced by a literal '%' character.
<b>%s</b> This is replaced by the memcache client
<b>%s</b> This is replaced by the memcache client
input key.
<b>%u</b> When the input key is an address of the form
user@domain, <b>%u</b> is replaced by the SQL
quoted local part of the address. Other-
wise, <b>%u</b> is replaced by the entire search
quoted local part of the address. Other-
wise, <b>%u</b> is replaced by the entire search
string. If the localpart is empty, a lookup
is silently suppressed and returns no
results (an update is skipped with a warn-
is silently suppressed and returns no
results (an update is skipped with a warn-
ing).
<b>%d</b> When the input key is an address of the form
user@domain, <b>%d</b> is replaced by the domain
user@domain, <b>%d</b> is replaced by the domain
part of the address. Otherwise, a lookup is
silently suppressed and returns no results
silently suppressed and returns no results
(an update is skipped with a warning).
<b>%[SUD]</b> The upper-case equivalents of the above
expansions behave in the <b>key_format</b> parame-
expansions behave in the <b>key_format</b> parame-
ter identically to their lower-case counter-
parts.
<b>%[1-9]</b> The patterns %1, %2, ... %9 are replaced by
<b>%[1-9]</b> The patterns %1, %2, ... %9 are replaced by
the corresponding most significant component
of the input key's domain. If the input key
of the input key's domain. If the input key
is <i>user@mail.example.com</i>, then %1 is <b>com</b>, %2
is <b>example</b> and %3 is <b>mail</b>. If the input key
is <b>example</b> and %3 is <b>mail</b>. If the input key
is unqualified or does not have enough
domain components to satisfy all the speci-
fied patterns, a lookup is silently sup-
domain components to satisfy all the speci-
fied patterns, a lookup is silently sup-
pressed and returns no results (an update is
skipped with a warning).
<b>domain (default: no domain list)</b>
This feature can significantly reduce database
server load. Specify a list of domain names, paths
to files, or "<a href="DATABASE_README.html">type:table</a>" databases. When speci-
to files, or "<a href="DATABASE_README.html">type:table</a>" databases. When speci-
fied, only fully qualified search keys with a *non-
empty* localpart and a matching domain are eligible
for lookup or update: bare 'user' lookups, bare
domain lookups and "@domain" lookups are silently
for lookup or update: bare 'user' lookups, bare
domain lookups and "@domain" lookups are silently
skipped (updates are skipped with a warning).
Example:
@ -180,33 +192,33 @@ MEMCACHE_TABLE(5) MEMCACHE_TABLE(5)
The maximal memcache reply line length in bytes.
<b>max_try (default: 2)</b>
The number of times to try a memcache command
before giving up. The memcache client does not
The number of times to try a memcache command
before giving up. The memcache client does not
retry a command when the memcache server accepts no
connection.
<b>retry_pause (default: 1)</b>
The time in seconds before retrying a failed mem-
The time in seconds before retrying a failed mem-
cache command.
<b>timeout (default: 2)</b>
The time limit for sending a memcache command and
The time limit for sending a memcache command and
for receiving a memcache reply.
<b>BUGS</b>
The Postfix memcache client cannot be used for security-
sensitive tables such as <b><a href="postconf.5.html#alias_maps">alias_maps</a></b> (these may contain
"<i>|command</i> and "<i>/file/name</i>" destinations), or <b><a href="postconf.5.html#virtual_uid_maps">vir</a>-</b>
<b><a href="postconf.5.html#virtual_uid_maps">tual_uid_maps</a></b>, <b><a href="postconf.5.html#virtual_gid_maps">virtual_gid_maps</a></b> and <b><a href="postconf.5.html#virtual_mailbox_maps">virtual_mailbox_maps</a></b>
(these specify UNIX process privileges or "<i>/file/name</i>"
destinations). In a typical deployment a memcache data-
base is writable by any process that can talk to the mem-
cache server; in contrast, security-sensitive tables must
The Postfix memcache client cannot be used for security-
sensitive tables such as <b><a href="postconf.5.html#alias_maps">alias_maps</a></b> (these may contain
"<i>|command</i> and "<i>/file/name</i>" destinations), or <b><a href="postconf.5.html#virtual_uid_maps">vir</a>-</b>
<b><a href="postconf.5.html#virtual_uid_maps">tual_uid_maps</a></b>, <b><a href="postconf.5.html#virtual_gid_maps">virtual_gid_maps</a></b> and <b><a href="postconf.5.html#virtual_mailbox_maps">virtual_mailbox_maps</a></b>
(these specify UNIX process privileges or "<i>/file/name</i>"
destinations). In a typical deployment a memcache data-
base is writable by any process that can talk to the mem-
cache server; in contrast, security-sensitive tables must
never be writable by the unprivileged Postfix user.
The Postfix memcache client requires additional configura-
tion when used as <a href="postscreen.8.html"><b>postscreen</b>(8)</a> or <a href="verify.8.html"><b>verify</b>(8)</a> cache. For
details see the <b>backup</b> and <b>ttl</b> parameter discussions in
tion when used as <a href="postscreen.8.html"><b>postscreen</b>(8)</a> or <a href="verify.8.html"><b>verify</b>(8)</a> cache. For
details see the <b>backup</b> and <b>ttl</b> parameter discussions in
the MEMCACHE MAIN PARAMETERS section above.
<b>SEE ALSO</b>
@ -218,11 +230,11 @@ MEMCACHE_TABLE(5) MEMCACHE_TABLE(5)
<a href="MEMCACHE_README.html">MEMCACHE_README</a>, Postfix memcache client guide
<b>LICENSE</b>
The Secure Mailer license must be distributed with this
The Secure Mailer license must be distributed with this
software.
<b>HISTORY</b>
Memcache support was introduced with Postfix version 2.9.
Memcache support was introduced with Postfix version 2.9.
<b>AUTHOR(S)</b>
Wietse Venema

View File

@ -93,85 +93,90 @@ SENDMAIL(1) SENDMAIL(1)
<b>-bi</b> Initialize alias database. See the <b>newaliases</b> com-
mand above.
<b>-bm</b> Read mail from standard input and arrange for
<b>-bl</b> Go into daemon mode. To accept only local connec-
tions as with Sendmail's <b>-bl</b> option, specify
"<b><a href="postconf.5.html#inet_interfaces">inet_interfaces</a> = loopback</b>" in the Postfix <a href="postconf.5.html"><b>main.cf</b></a>
configuration file.
<b>-bm</b> Read mail from standard input and arrange for
delivery. This is the default mode of operation.
<b>-bp</b> List the mail queue. See the <b>mailq</b> command above.
<b>-bs</b> Stand-alone SMTP server mode. Read SMTP commands
from standard input, and write responses to stan-
<b>-bs</b> Stand-alone SMTP server mode. Read SMTP commands
from standard input, and write responses to stan-
dard output. In stand-alone SMTP server mode, mail
relaying and other access controls are disabled by
default. To enable them, run the process as the
relaying and other access controls are disabled by
default. To enable them, run the process as the
<b><a href="postconf.5.html#mail_owner">mail_owner</a></b> user.
This mode of operation is implemented by running
This mode of operation is implemented by running
the <a href="smtpd.8.html"><b>smtpd</b>(8)</a> daemon.
<b>-bv</b> Do not collect or deliver a message. Instead, send
an email report after verifying each recipient
address. This is useful for testing address
<b>-bv</b> Do not collect or deliver a message. Instead, send
an email report after verifying each recipient
address. This is useful for testing address
rewriting and routing configurations.
This feature is available in Postfix version 2.1
This feature is available in Postfix version 2.1
and later.
<b>-C</b> <i>config</i><b>_</b><i>file</i>
<b>-C</b> <i>config</i><b>_</b><i>dir</i>
The path name of the Postfix <a href="postconf.5.html"><b>main.cf</b></a> file, or of
its parent directory. This information is ignored
The path name of the Postfix <a href="postconf.5.html"><b>main.cf</b></a> file, or of
its parent directory. This information is ignored
with Postfix versions before 2.3.
With all Postfix versions, you can specify a direc-
tory pathname with the MAIL_CONFIG environment
variable to override the location of configuration
variable to override the location of configuration
files.
<b>-F</b> <i>full</i><b>_</b><i>name</i>
Set the sender full name. This overrides the NAME
environment variable, and is used only with mes-
Set the sender full name. This overrides the NAME
environment variable, and is used only with mes-
sages that have no <b>From:</b> message header.
<b>-f</b> <i>sender</i>
Set the envelope sender address. This is the
address where delivery problems are sent to. With
address where delivery problems are sent to. With
Postfix versions before 2.1, the <b>Errors-To:</b> message
header overrides the error return address.
<b>-G</b> Gateway (relay) submission, as opposed to initial
user submission. Either do not rewrite addresses
at all, or update incomplete addresses with the
<b>-G</b> Gateway (relay) submission, as opposed to initial
user submission. Either do not rewrite addresses
at all, or update incomplete addresses with the
domain information specified with <b>remote_header_re-</b>
<b>write_domain</b>.
This option is ignored before Postfix version 2.3.
This option is ignored before Postfix version 2.3.
<b>-h</b> <i>hop</i><b>_</b><i>count</i> (ignored)
Hop count limit. Use the <b><a href="postconf.5.html#hopcount_limit">hopcount_limit</a></b> configura-
Hop count limit. Use the <b><a href="postconf.5.html#hopcount_limit">hopcount_limit</a></b> configura-
tion parameter instead.
<b>-I</b> Initialize alias database. See the <b>newaliases</b> com-
<b>-I</b> Initialize alias database. See the <b>newaliases</b> com-
mand above.
<b>-i</b> When reading a message from standard input, don't
treat a line with only a <b>.</b> character as the end of
<b>-i</b> When reading a message from standard input, don't
treat a line with only a <b>.</b> character as the end of
input.
<b>-L</b> <i>label</i> (ignored)
The logging label. Use the <b><a href="postconf.5.html#syslog_name">syslog_name</a></b> configura-
The logging label. Use the <b><a href="postconf.5.html#syslog_name">syslog_name</a></b> configura-
tion parameter instead.
<b>-m</b> (ignored)
Backwards compatibility.
<b>-N</b> <i>dsn</i> (default: 'delay, failure')
Delivery status notification control. Specify
either a comma-separated list with one or more of
<b>failure</b> (send notification when delivery fails),
Delivery status notification control. Specify
either a comma-separated list with one or more of
<b>failure</b> (send notification when delivery fails),
<b>delay</b> (send notification when delivery is delayed),
or <b>success</b> (send notification when the message is
delivered); or specify <b>never</b> (don't send any noti-
or <b>success</b> (send notification when the message is
delivered); or specify <b>never</b> (don't send any noti-
fications at all).
This feature is available in Postfix 2.3 and later.
@ -180,11 +185,12 @@ SENDMAIL(1) SENDMAIL(1)
Backwards compatibility.
<b>-oA</b><i>alias</i><b>_</b><i>database</i>
Non-default alias database. Specify <i>pathname</i> or
Non-default alias database. Specify <i>pathname</i> or
<i>type</i>:<i>pathname</i>. See <a href="postalias.1.html"><b>postalias</b>(1)</a> for details.
<b>-O</b> <i>option=value</i> (ignored)
Backwards compatibility.
Set the named <i>option</i> to <i>value</i>. Use the equivalent
configuration parameter in <a href="postconf.5.html"><b>main.cf</b></a> instead.
<b>-o7</b> (ignored)
@ -211,9 +217,17 @@ SENDMAIL(1) SENDMAIL(1)
Postfix versions before 2.1, the <b>Errors-To:</b> message
header overrides the error return address.
<b>-R</b> <i>return</i><b>_</b><i>limit</i> (ignored)
Limit the size of bounced mail. Use the
<b><a href="postconf.5.html#bounce_size_limit">bounce_size_limit</a></b> configuration parameter instead.
<b>-R</b> <i>return</i>
Delivery status notification control. Specify
"hdrs" to return only the header when a message
bounces, "full" to return a full copy (the default
behavior).
The <b>-R</b> option specifies an upper bound; Postfix
will return only the header, when a full copy would
exceed the <a href="postconf.5.html#bounce_size_limit">bounce_size_limit</a> setting.
This option is ignored before Postfix version 2.10.
<b>-q</b> Attempt to deliver all queued mail. This is imple-
mented by executing the <a href="postqueue.1.html"><b>postqueue</b>(1)</a> command.
@ -429,8 +443,8 @@ SENDMAIL(1) SENDMAIL(1)
<a href="postalias.1.html"><b>postalias</b>(1)</a> and <a href="postmap.1.html"><b>postmap</b>(1)</a> commands.
<b><a href="postconf.5.html#delay_warning_time">delay_warning_time</a> (0h)</b>
The time after which the sender receives the mes-
sage headers of mail that is still queued.
The time after which the sender receives a copy of
the message headers of mail that is still queued.
<b><a href="postconf.5.html#enable_errors_to">enable_errors_to</a> (no)</b>
Report mail delivery errors to the address speci-

View File

@ -213,8 +213,8 @@ OQMGR(8) OQMGR(8)
<b><a href="postconf.5.html#qmgr_message_recipient_limit">qmgr_message_recipient_limit</a> (20000)</b>
The maximal number of recipients held in memory by
the Postfix queue manager, and the maximal size of
the size of the short-term, in-memory "dead" desti-
nation status cache.
the short-term, in-memory "dead" destination status
cache.
<b>DELIVERY CONCURRENCY CONTROLS</b>
<b><a href="postconf.5.html#qmgr_fudge_factor">qmgr_fudge_factor</a> (100)</b>
@ -316,9 +316,9 @@ OQMGR(8) OQMGR(8)
<b><a href="postconf.5.html#default_destination_rate_delay">default_destination_rate_delay</a> (0s)</b>
The default amount of delay that is inserted
between individual deliveries to the same destina-
tion; with per-destination recipient limit &gt; 1, a
destination is a domain, otherwise it is a recipi-
ent.
tion; the resulting behavior depends on the value
of the corresponding per-destination recipient
limit.
<b><a href="postconf.5.html#transport_destination_rate_delay"><i>transport</i>_destination_rate_delay</a> $<a href="postconf.5.html#default_destination_rate_delay">default_destina</a>-</b>
<b><a href="postconf.5.html#default_destination_rate_delay">tion_rate_delay</a></b>

View File

@ -12,16 +12,16 @@ POSTCONF(1) POSTCONF(1)
<b>SYNOPSIS</b>
<b>Managing <a href="postconf.5.html">main.cf</a>:</b>
<b>postconf</b> [<b>-dfhnv</b>] [<b>-c</b> <i>config</i><b>_</b><i>dir</i>] [<b>-C</b> <i>class,...</i>] [<i>parame-</i>
<i>ter ...</i>]
<b>postconf</b> [<b>-dfhnovx</b>] [<b>-c</b> <i>config</i><b>_</b><i>dir</i>] [<b>-C</b> <i>class,...</i>] [<i>param-</i>
<i>eter ...</i>]
<b>postconf</b> [<b>-ev</b>] [<b>-c</b> <i>config</i><b>_</b><i>dir</i>] [<i>parameter=value ...</i>]
<b>postconf</b> [<b>-#v</b>] [<b>-c</b> <i>config</i><b>_</b><i>dir</i>] [<i>parameter ...</i>]
<b>postconf</b> [<b>-#vX</b>] [<b>-c</b> <i>config</i><b>_</b><i>dir</i>] [<i>parameter ...</i>]
<b>Managing <a href="master.5.html">master.cf</a>:</b>
<b>postconf</b> [<b>-fMv</b>] [<b>-c</b> <i>config</i><b>_</b><i>dir</i>] [<i>service ...</i>]
<b>postconf</b> [<b>-fMovx</b>] [<b>-c</b> <i>config</i><b>_</b><i>dir</i>] [<i>service ...</i>]
<b>Managing bounce message templates:</b>
@ -115,7 +115,7 @@ POSTCONF(1) POSTCONF(1)
for human readability (Postfix 2.9 and later).
<b>-e</b> Edit the <a href="postconf.5.html"><b>main.cf</b></a> configuration file, and update
parameter settings with the "<i>name</i>=<i>value</i>" pairs on
parameter settings with the "<i>name=value</i>" pairs on
the <a href="postconf.1.html"><b>postconf</b>(1)</a> command line. The file is copied to
a temporary file then renamed into place. Specify
quotes to protect special characters and whitespace
@ -150,7 +150,8 @@ POSTCONF(1) POSTCONF(1)
creating a file named <i>filename</i><b>.lock</b>. The
application is expected to remove its own
lock file, as well as stale lock files that
were left behind after abnormal termination.
were left behind after abnormal program ter-
mination.
<b>-m</b> List the names of all supported lookup table types.
In Postfix configuration files, lookup tables are
@ -228,6 +229,15 @@ POSTCONF(1) POSTCONF(1)
is available on systems with support for
SDBM databases.
<b>socketmap</b> (read-only)
Query a Sendmail-style socketmap server. The
name of the table specifies
<b>inet</b>:<i>host</i>:<i>port</i>:<i>socketmap-name</i> for a TCP-
based server, or <b>unix</b>:<i>pathname</i>:<i>socketmap-</i>
<i>name</i> for a UNIX-domain server. In both
cases, <i>socketmap-name</i> is the name of the
socketmap.
<b>sqlite</b> (read-only)
Perform lookups from SQLite database files.
This is described in <a href="sqlite_table.5.html"><b>sqlite_table</b>(5)</a>.
@ -286,42 +296,64 @@ POSTCONF(1) POSTCONF(1)
This feature is available with Postfix 2.9 and
later.
<b>-n</b> Print <a href="postconf.5.html"><b>main.cf</b></a> parameter settings that are explic-
itly specified in <a href="postconf.5.html"><b>main.cf</b></a>. Specify <b>-nf</b> to fold
long lines for human readability (Postfix 2.9 and
later).
<b>-n</b> Show only configuration parameters that have
explicit <i>name=value</i> settings in <a href="postconf.5.html"><b>main.cf</b></a>. Specify
<b>-nf</b> to fold long lines for human readability (Post-
fix 2.9 and later).
<b>-o</b> <i>name=value</i>
Override <a href="postconf.5.html"><b>main.cf</b></a> parameter settings.
This feature is available with Postfix 2.10 and
later.
<b>-t</b> [<i>template</i><b>_</b><i>file</i>]
Display the templates for text that appears at the
beginning of delivery status notification (DSN)
Display the templates for text that appears at the
beginning of delivery status notification (DSN)
messages, without expanding $<b>name</b> expressions.
To override the built-in templates, specify a tem-
plate file name at the end of the <a href="postconf.1.html"><b>postconf</b>(1)</a> com-
mand line, or specify a file name in <a href="postconf.5.html"><b>main.cf</b></a> with
To override the built-in templates, specify a tem-
plate file name at the end of the <a href="postconf.1.html"><b>postconf</b>(1)</a> com-
mand line, or specify a file name in <a href="postconf.5.html"><b>main.cf</b></a> with
the <b><a href="postconf.5.html#bounce_template_file">bounce_template_file</a></b> parameter.
To force selection of the built-in templates, spec-
ify an empty template file name on the <a href="postconf.1.html"><b>postconf</b>(1)</a>
ify an empty template file name on the <a href="postconf.1.html"><b>postconf</b>(1)</a>
command line (in shell language: "").
This feature is available with Postfix 2.3 and
This feature is available with Postfix 2.3 and
later.
<b>-v</b> Enable verbose logging for debugging purposes. Mul-
tiple <b>-v</b> options make the software increasingly
tiple <b>-v</b> options make the software increasingly
verbose.
<b>-#</b> Edit the <a href="postconf.5.html"><b>main.cf</b></a> configuration file, and comment
out the parameters given on the <a href="postconf.1.html"><b>postconf</b>(1)</a> command
line, so that those parameters revert to their
default values. The file is copied to a temporary
file then renamed into place. Specify a list of
parameter names, not <i>name</i>=<i>value</i> pairs. There is no
<a href="postconf.1.html"><b>postconf</b>(1)</a> command to perform the reverse opera-
tion.
<b>-x</b> Expand <i>$name</i> in <a href="postconf.5.html"><b>main.cf</b></a> or <a href="master.5.html"><b>master.cf</b></a> parameter val-
ues. The expansion is recursive.
This feature is available with Postfix 2.6 and
This feature is available with Postfix 2.10 and
later.
<b>-X</b> Edit the <a href="postconf.5.html"><b>main.cf</b></a> configuration file, and remove the
parameters named on the <a href="postconf.1.html"><b>postconf</b>(1)</a> command line.
The file is copied to a temporary file then renamed
into place. Specify a list of parameter names, not
"<i>name=value</i>" pairs. There is no <a href="postconf.1.html"><b>postconf</b>(1)</a> com-
mand to perform the reverse operation.
This feature is available with Postfix 2.10 and
later.
<b>-#</b> Edit the <a href="postconf.5.html"><b>main.cf</b></a> configuration file, and comment
out the parameters named on the <a href="postconf.1.html"><b>postconf</b>(1)</a> command
line, so that those parameters revert to their
default values. The file is copied to a temporary
file then renamed into place. Specify a list of
parameter names, not "<i>name=value</i>" pairs. There is
no <a href="postconf.1.html"><b>postconf</b>(1)</a> command to perform the reverse oper-
ation.
This feature is available with Postfix 2.6 and
later.
<b>DIAGNOSTICS</b>
@ -332,18 +364,18 @@ POSTCONF(1) POSTCONF(1)
Directory with Postfix configuration files.
<b>CONFIGURATION PARAMETERS</b>
The following <a href="postconf.5.html"><b>main.cf</b></a> parameters are especially relevant
The following <a href="postconf.5.html"><b>main.cf</b></a> parameters are especially relevant
to this program.
The text below provides only a parameter summary. See
The text below provides only a parameter summary. See
<a href="postconf.5.html"><b>postconf</b>(5)</a> for more details including examples.
<b><a href="postconf.5.html#config_directory">config_directory</a> (see 'postconf -d' output)</b>
The default location of the Postfix <a href="postconf.5.html">main.cf</a> and
The default location of the Postfix <a href="postconf.5.html">main.cf</a> and
<a href="master.5.html">master.cf</a> configuration files.
<b><a href="postconf.5.html#bounce_template_file">bounce_template_file</a> (empty)</b>
Pathname of a configuration file with bounce mes-
Pathname of a configuration file with bounce mes-
sage templates.
<b>FILES</b>
@ -359,7 +391,7 @@ POSTCONF(1) POSTCONF(1)
<a href="DATABASE_README.html">DATABASE_README</a>, Postfix lookup table overview
<b>LICENSE</b>
The Secure Mailer license must be distributed with this
The Secure Mailer license must be distributed with this
software.
<b>AUTHOR(S)</b>

View File

@ -73,7 +73,7 @@ POSTQUEUE(1) POSTQUEUE(1)
<b>-s</b> <i>site</i>
Schedule immediate delivery of all mail that is
queued for the named <i>site</i>. A numerical site must be
specified as a valid <a href="http://tools.ietf.org/html/rfc2821">RFC 2821</a> address literal
specified as a valid <a href="http://tools.ietf.org/html/rfc5321">RFC 5321</a> address literal
enclosed in [], just like in email addresses. The
site must be eligible for the "fast flush" service.
See <a href="flush.8.html"><b>flush</b>(8)</a> for more information about the "fast

View File

@ -13,19 +13,23 @@ POSTSCREEN(8) POSTSCREEN(8)
<b>postscreen</b> [generic Postfix daemon options]
<b>DESCRIPTION</b>
The Postfix <a href="postscreen.8.html"><b>postscreen</b>(8)</a> server performs triage on multi-
ple inbound SMTP connections at the same time. While a
single <a href="postscreen.8.html"><b>postscreen</b>(8)</a> process keeps spambots away from
Postfix SMTP server processes, more Postfix SMTP server
processes remain available for legitimate clients.
The Postfix <a href="postscreen.8.html"><b>postscreen</b>(8)</a> server provides additional pro-
tection against mail server overload. One <a href="postscreen.8.html"><b>postscreen</b>(8)</a>
process handles multiple inbound SMTP connections, and
decides which clients may talk to a Postfix SMTP server
process. By keeping spambots away, <a href="postscreen.8.html"><b>postscreen</b>(8)</a> leaves
more SMTP server processes available for legitimate
clients, and delays the onset of server overload condi-
tions.
This program should not be used on SMTP ports that receive
mail from end-user clients (MUAs). In a typical deploy-
ment, <a href="postscreen.8.html"><b>postscreen</b>(8)</a> is used on the "port 25" service,
while MUA clients submit mail via the <b>submission</b> service,
or via a "port 25" server that provides no MX service
(i.e. a dedicated server that provides <b>submission</b> service
on port 25).
mail from end-user clients (MUAs). In a typical deploy-
ment, <a href="postscreen.8.html"><b>postscreen</b>(8)</a> handles the MX service on TCP port 25,
while MUA clients submit mail via the <b>submission</b> service
on TCP port 587 which requires client authentication.
Alternatively, a site could set up a dedicated, non-
postscreen, "port 25" server that provides <b>submission</b> ser-
vice and client authentication, but no MX service.
<a href="postscreen.8.html"><b>postscreen</b>(8)</a> maintains a temporary whitelist for clients
that have passed a number of tests. When an SMTP client
@ -76,24 +80,24 @@ POSTSCREEN(8) POSTSCREEN(8)
<b>BUGS</b>
The <a href="postscreen.8.html"><b>postscreen</b>(8)</a> built-in SMTP protocol engine currently
does not announce support for AUTH, XCLIENT or XFORWARD.
Support for AUTH may be added in the future. In the mean
time, if you need to make these services available on port
25, then do not enable the optional "after 220 server
greeting" tests, and do not use DNSBLs that reject traffic
from dial-up and residential networks.
If you need to make these services available on port 25,
then do not enable the optional "after 220 server greet-
ing" tests, and do not use DNSBLs that reject traffic from
dial-up and residential networks.
The optional "after 220 server greeting" tests involve
<a href="postscreen.8.html"><b>postscreen</b>(8)</a>'s built-in SMTP protocol engine. When these
The optional "after 220 server greeting" tests involve
<a href="postscreen.8.html"><b>postscreen</b>(8)</a>'s built-in SMTP protocol engine. When these
tests succeed, <a href="postscreen.8.html"><b>postscreen</b>(8)</a> adds the client to the tempo-
rary whitelist but it cannot not hand off the "live" con-
nection to a Postfix SMTP server process in the middle of
a session. Instead, <a href="postscreen.8.html"><b>postscreen</b>(8)</a> defers attempts to
deliver mail with a 4XX status, and waits for the client
to disconnect. The next time a good client connects, it
will be allowed to talk to a Postfix SMTP server process
to deliver mail. <a href="postscreen.8.html"><b>postscreen</b>(8)</a> mitigates the impact of
this limitation by giving such tests a long expiration
time.
rary whitelist, but it cannot not hand off the "live" con-
nection to a Postfix SMTP server process in the middle of
a session. Instead, <a href="postscreen.8.html"><b>postscreen</b>(8)</a> defers attempts to
deliver mail with a 4XX status, and waits for the client
to disconnect. When the client connects again,
<a href="postscreen.8.html"><b>postscreen</b>(8)</a> will allow the client to talk to a Postfix
SMTP server process (provided that the whitelist status
has not expired). <a href="postscreen.8.html"><b>postscreen</b>(8)</a> mitigates the impact of
this limitation by giving the "after 220 server greeting"
tests a long expiration time.
<b>CONFIGURATION PARAMETERS</b>
Changes to <a href="postconf.5.html">main.cf</a> are not picked up automatically, as
@ -144,10 +148,22 @@ POSTSCREEN(8) POSTSCREEN(8)
Safety net to keep mail queued that would otherwise
be returned to the sender.
<b>BEFORE-POSTSCREEN PROXY AGENT</b>
Available in Postfix version 2.10 and later:
<b><a href="postconf.5.html#postscreen_upstream_proxy_protocol">postscreen_upstream_proxy_protocol</a> (empty)</b>
The name of the proxy protocol used by an optional
before-postscreen proxy agent.
<b><a href="postconf.5.html#postscreen_upstream_proxy_timeout">postscreen_upstream_proxy_timeout</a> (5s)</b>
The time limit for the proxy protocol specified
with the <a href="postconf.5.html#postscreen_upstream_proxy_protocol">postscreen_upstream_proxy_protocol</a> parame-
ter.
<b>PERMANENT WHITE/BLACKLIST TEST</b>
This test is executed immediately after a remote SMTP
client connects. If a client is permanently whitelisted,
the client will be handed off immediately to a Postfix
This test is executed immediately after a remote SMTP
client connects. If a client is permanently whitelisted,
the client will be handed off immediately to a Postfix
SMTP server process.
<b><a href="postconf.5.html#postscreen_access_list">postscreen_access_list</a> (<a href="postconf.5.html#permit_mynetworks">permit_mynetworks</a>)</b>
@ -155,19 +171,18 @@ POSTSCREEN(8) POSTSCREEN(8)
addresses.
<b><a href="postconf.5.html#postscreen_blacklist_action">postscreen_blacklist_action</a> (ignore)</b>
The action that <a href="postscreen.8.html"><b>postscreen</b>(8)</a> takes when a remote
SMTP client is permanently blacklisted with the
The action that <a href="postscreen.8.html"><b>postscreen</b>(8)</a> takes when a remote
SMTP client is permanently blacklisted with the
<a href="postconf.5.html#postscreen_access_list">postscreen_access_list</a> parameter.
<b>MAIL EXCHANGER POLICY TESTS</b>
When a remote SMTP client is not on the permanent access
list, <a href="postscreen.8.html"><b>postscreen</b>(8)</a> can implement a number of whitelist
tests before it grants the client a temporary whitelist
status to talk to a Postfix SMTP server process.
By listening on both primary and backup MX addresses,
<a href="postscreen.8.html"><b>postscreen</b>(8)</a> can deny the temporary whitelist status to
clients that connect only to backup MX hosts.
When <a href="postscreen.8.html"><b>postscreen</b>(8)</a> is configured to monitor all primary
and backup MX addresses, it can refuse to whitelist
clients that connect to a backup MX address only. For
small sites, this requires configuring primary and backup
MX addresses on the same MTA. Larger sites would have to
share the <a href="postscreen.8.html"><b>postscreen</b>(8)</a> cache between primary and backup
MTAs, which would introduce a common point of failure.
<b><a href="postconf.5.html#postscreen_whitelist_interfaces">postscreen_whitelist_interfaces</a> (<a href="DATABASE_README.html#types">static</a>:all)</b>
A list of local <a href="postscreen.8.html"><b>postscreen</b>(8)</a> server IP addresses

View File

@ -115,7 +115,7 @@ PROXYMAP(8) PROXYMAP(8)
The <a href="proxymap.8.html"><b>proxymap</b>(8)</a> server is not a trusted daemon process,
and must not be used to look up sensitive information such
as user or group IDs, mailbox file/directory names or
as UNIX user or group IDs, mailbox file/directory names or
external commands.
In Postfix version 2.2 and later, the proxymap client rec-

View File

@ -219,8 +219,8 @@ QMGR(8) QMGR(8)
<b><a href="postconf.5.html#qmgr_message_recipient_limit">qmgr_message_recipient_limit</a> (20000)</b>
The maximal number of recipients held in memory by
the Postfix queue manager, and the maximal size of
the size of the short-term, in-memory "dead" desti-
nation status cache.
the short-term, in-memory "dead" destination status
cache.
<b><a href="postconf.5.html#qmgr_message_recipient_minimum">qmgr_message_recipient_minimum</a> (10)</b>
The minimal number of in-memory recipients for any
@ -388,9 +388,9 @@ QMGR(8) QMGR(8)
<b><a href="postconf.5.html#default_destination_rate_delay">default_destination_rate_delay</a> (0s)</b>
The default amount of delay that is inserted
between individual deliveries to the same destina-
tion; with per-destination recipient limit &gt; 1, a
destination is a domain, otherwise it is a recipi-
ent.
tion; the resulting behavior depends on the value
of the corresponding per-destination recipient
limit.
<b><a href="postconf.5.html#transport_destination_rate_delay"><i>transport</i>_destination_rate_delay</a> $<a href="postconf.5.html#default_destination_rate_delay">default_destina</a>-</b>
<b><a href="postconf.5.html#default_destination_rate_delay">tion_rate_delay</a></b>

View File

@ -93,85 +93,90 @@ SENDMAIL(1) SENDMAIL(1)
<b>-bi</b> Initialize alias database. See the <b>newaliases</b> com-
mand above.
<b>-bm</b> Read mail from standard input and arrange for
<b>-bl</b> Go into daemon mode. To accept only local connec-
tions as with Sendmail's <b>-bl</b> option, specify
"<b><a href="postconf.5.html#inet_interfaces">inet_interfaces</a> = loopback</b>" in the Postfix <a href="postconf.5.html"><b>main.cf</b></a>
configuration file.
<b>-bm</b> Read mail from standard input and arrange for
delivery. This is the default mode of operation.
<b>-bp</b> List the mail queue. See the <b>mailq</b> command above.
<b>-bs</b> Stand-alone SMTP server mode. Read SMTP commands
from standard input, and write responses to stan-
<b>-bs</b> Stand-alone SMTP server mode. Read SMTP commands
from standard input, and write responses to stan-
dard output. In stand-alone SMTP server mode, mail
relaying and other access controls are disabled by
default. To enable them, run the process as the
relaying and other access controls are disabled by
default. To enable them, run the process as the
<b><a href="postconf.5.html#mail_owner">mail_owner</a></b> user.
This mode of operation is implemented by running
This mode of operation is implemented by running
the <a href="smtpd.8.html"><b>smtpd</b>(8)</a> daemon.
<b>-bv</b> Do not collect or deliver a message. Instead, send
an email report after verifying each recipient
address. This is useful for testing address
<b>-bv</b> Do not collect or deliver a message. Instead, send
an email report after verifying each recipient
address. This is useful for testing address
rewriting and routing configurations.
This feature is available in Postfix version 2.1
This feature is available in Postfix version 2.1
and later.
<b>-C</b> <i>config</i><b>_</b><i>file</i>
<b>-C</b> <i>config</i><b>_</b><i>dir</i>
The path name of the Postfix <a href="postconf.5.html"><b>main.cf</b></a> file, or of
its parent directory. This information is ignored
The path name of the Postfix <a href="postconf.5.html"><b>main.cf</b></a> file, or of
its parent directory. This information is ignored
with Postfix versions before 2.3.
With all Postfix versions, you can specify a direc-
tory pathname with the MAIL_CONFIG environment
variable to override the location of configuration
variable to override the location of configuration
files.
<b>-F</b> <i>full</i><b>_</b><i>name</i>
Set the sender full name. This overrides the NAME
environment variable, and is used only with mes-
Set the sender full name. This overrides the NAME
environment variable, and is used only with mes-
sages that have no <b>From:</b> message header.
<b>-f</b> <i>sender</i>
Set the envelope sender address. This is the
address where delivery problems are sent to. With
address where delivery problems are sent to. With
Postfix versions before 2.1, the <b>Errors-To:</b> message
header overrides the error return address.
<b>-G</b> Gateway (relay) submission, as opposed to initial
user submission. Either do not rewrite addresses
at all, or update incomplete addresses with the
<b>-G</b> Gateway (relay) submission, as opposed to initial
user submission. Either do not rewrite addresses
at all, or update incomplete addresses with the
domain information specified with <b>remote_header_re-</b>
<b>write_domain</b>.
This option is ignored before Postfix version 2.3.
This option is ignored before Postfix version 2.3.
<b>-h</b> <i>hop</i><b>_</b><i>count</i> (ignored)
Hop count limit. Use the <b><a href="postconf.5.html#hopcount_limit">hopcount_limit</a></b> configura-
Hop count limit. Use the <b><a href="postconf.5.html#hopcount_limit">hopcount_limit</a></b> configura-
tion parameter instead.
<b>-I</b> Initialize alias database. See the <b>newaliases</b> com-
<b>-I</b> Initialize alias database. See the <b>newaliases</b> com-
mand above.
<b>-i</b> When reading a message from standard input, don't
treat a line with only a <b>.</b> character as the end of
<b>-i</b> When reading a message from standard input, don't
treat a line with only a <b>.</b> character as the end of
input.
<b>-L</b> <i>label</i> (ignored)
The logging label. Use the <b><a href="postconf.5.html#syslog_name">syslog_name</a></b> configura-
The logging label. Use the <b><a href="postconf.5.html#syslog_name">syslog_name</a></b> configura-
tion parameter instead.
<b>-m</b> (ignored)
Backwards compatibility.
<b>-N</b> <i>dsn</i> (default: 'delay, failure')
Delivery status notification control. Specify
either a comma-separated list with one or more of
<b>failure</b> (send notification when delivery fails),
Delivery status notification control. Specify
either a comma-separated list with one or more of
<b>failure</b> (send notification when delivery fails),
<b>delay</b> (send notification when delivery is delayed),
or <b>success</b> (send notification when the message is
delivered); or specify <b>never</b> (don't send any noti-
or <b>success</b> (send notification when the message is
delivered); or specify <b>never</b> (don't send any noti-
fications at all).
This feature is available in Postfix 2.3 and later.
@ -180,11 +185,12 @@ SENDMAIL(1) SENDMAIL(1)
Backwards compatibility.
<b>-oA</b><i>alias</i><b>_</b><i>database</i>
Non-default alias database. Specify <i>pathname</i> or
Non-default alias database. Specify <i>pathname</i> or
<i>type</i>:<i>pathname</i>. See <a href="postalias.1.html"><b>postalias</b>(1)</a> for details.
<b>-O</b> <i>option=value</i> (ignored)
Backwards compatibility.
Set the named <i>option</i> to <i>value</i>. Use the equivalent
configuration parameter in <a href="postconf.5.html"><b>main.cf</b></a> instead.
<b>-o7</b> (ignored)
@ -211,9 +217,17 @@ SENDMAIL(1) SENDMAIL(1)
Postfix versions before 2.1, the <b>Errors-To:</b> message
header overrides the error return address.
<b>-R</b> <i>return</i><b>_</b><i>limit</i> (ignored)
Limit the size of bounced mail. Use the
<b><a href="postconf.5.html#bounce_size_limit">bounce_size_limit</a></b> configuration parameter instead.
<b>-R</b> <i>return</i>
Delivery status notification control. Specify
"hdrs" to return only the header when a message
bounces, "full" to return a full copy (the default
behavior).
The <b>-R</b> option specifies an upper bound; Postfix
will return only the header, when a full copy would
exceed the <a href="postconf.5.html#bounce_size_limit">bounce_size_limit</a> setting.
This option is ignored before Postfix version 2.10.
<b>-q</b> Attempt to deliver all queued mail. This is imple-
mented by executing the <a href="postqueue.1.html"><b>postqueue</b>(1)</a> command.
@ -429,8 +443,8 @@ SENDMAIL(1) SENDMAIL(1)
<a href="postalias.1.html"><b>postalias</b>(1)</a> and <a href="postmap.1.html"><b>postmap</b>(1)</a> commands.
<b><a href="postconf.5.html#delay_warning_time">delay_warning_time</a> (0h)</b>
The time after which the sender receives the mes-
sage headers of mail that is still queued.
The time after which the sender receives a copy of
the message headers of mail that is still queued.
<b><a href="postconf.5.html#enable_errors_to">enable_errors_to</a> (no)</b>
Report mail delivery errors to the address speci-

View File

@ -115,6 +115,7 @@ SMTP(8) SMTP(8)
<a href="http://tools.ietf.org/html/rfc3461">RFC 3461</a> (SMTP DSN Extension)
<a href="http://tools.ietf.org/html/rfc3463">RFC 3463</a> (Enhanced Status Codes)
<a href="http://tools.ietf.org/html/rfc4954">RFC 4954</a> (AUTH command)
<a href="http://tools.ietf.org/html/rfc5321">RFC 5321</a> (SMTP protocol)
<b>DIAGNOSTICS</b>
Problems and transactions are logged to <b>syslogd</b>(8). Cor-
@ -194,7 +195,7 @@ SMTP(8) SMTP(8)
<b><a href="postconf.5.html#smtp_quote_rfc821_envelope">smtp_quote_rfc821_envelope</a> (yes)</b>
Quote addresses in Postfix SMTP client MAIL FROM
and RCPT TO commands as required by <a href="http://tools.ietf.org/html/rfc2821">RFC 2821</a>.
and RCPT TO commands as required by <a href="http://tools.ietf.org/html/rfc5321">RFC 5321</a>.
<b><a href="postconf.5.html#smtp_reply_filter">smtp_reply_filter</a> (empty)</b>
A mechanism to transform replies from remote SMTP

View File

@ -59,6 +59,7 @@ SMTPD(8) SMTPD(8)
<a href="http://tools.ietf.org/html/rfc3848">RFC 3848</a> (ESMTP transmission types)
<a href="http://tools.ietf.org/html/rfc4409">RFC 4409</a> (Message submission)
<a href="http://tools.ietf.org/html/rfc4954">RFC 4954</a> (AUTH command)
<a href="http://tools.ietf.org/html/rfc5321">RFC 5321</a> (SMTP protocol)
<b>DIAGNOSTICS</b>
Problems and transactions are logged to <b>syslogd</b>(8).
@ -183,6 +184,17 @@ SMTPD(8) SMTPD(8)
addresses with the domain specified in the
<a href="postconf.5.html#remote_header_rewrite_domain">remote_header_rewrite_domain</a> parameter.
<b>BEFORE-SMTPD PROXY AGENT</b>
Available in Postfix version 2.10 and later:
<b><a href="postconf.5.html#smtpd_upstream_proxy_protocol">smtpd_upstream_proxy_protocol</a> (empty)</b>
The name of the proxy protocol used by an optional
before-smtpd proxy agent.
<b><a href="postconf.5.html#smtpd_upstream_proxy_timeout">smtpd_upstream_proxy_timeout</a> (5s)</b>
The time limit for the proxy protocol specified
with the <a href="postconf.5.html#smtpd_upstream_proxy_protocol">smtpd_upstream_proxy_protocol</a> parameter.
<b>AFTER QUEUE EXTERNAL CONTENT INSPECTION CONTROLS</b>
As of version 1.0, Postfix can be configured to send new
mail to an external content filter AFTER the mail is
@ -673,19 +685,25 @@ SMTPD(8) SMTPD(8)
What remote SMTP clients are allowed to use the
XCLIENT feature.
Available in Postfix version 2.10 and later:
<b><a href="postconf.5.html#smtpd_log_access_permit_actions">smtpd_log_access_permit_actions</a> (empty)</b>
Enable logging of the named "permit" actions in
SMTP server access lists.
<b>KNOWN VERSUS UNKNOWN RECIPIENT CONTROLS</b>
As of Postfix version 2.0, the SMTP server rejects mail
for unknown recipients. This prevents the mail queue from
clogging up with undeliverable MAILER-DAEMON messages.
Additional information on this topic is in the
As of Postfix version 2.0, the SMTP server rejects mail
for unknown recipients. This prevents the mail queue from
clogging up with undeliverable MAILER-DAEMON messages.
Additional information on this topic is in the
<a href="LOCAL_RECIPIENT_README.html">LOCAL_RECIPIENT_README</a> and <a href="ADDRESS_CLASS_README.html">ADDRESS_CLASS_README</a> documents.
<b><a href="postconf.5.html#show_user_unknown_table_name">show_user_unknown_table_name</a> (yes)</b>
Display the name of the recipient table in the
Display the name of the recipient table in the
"User unknown" responses.
<b><a href="postconf.5.html#canonical_maps">canonical_maps</a> (empty)</b>
Optional address mapping lookup tables for message
Optional address mapping lookup tables for message
headers and envelopes.
<b><a href="postconf.5.html#recipient_canonical_maps">recipient_canonical_maps</a> (empty)</b>
@ -696,7 +714,7 @@ SMTPD(8) SMTPD(8)
<b><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>, local-</b>
<b>host)</b>
The list of domains that are delivered via the
The list of domains that are delivered via the
$<a href="postconf.5.html#local_transport">local_transport</a> mail delivery transport.
<b><a href="postconf.5.html#inet_interfaces">inet_interfaces</a> (all)</b>
@ -705,73 +723,73 @@ SMTPD(8) SMTPD(8)
<b><a href="postconf.5.html#proxy_interfaces">proxy_interfaces</a> (empty)</b>
The network interface addresses that this mail sys-
tem receives mail on by way of a proxy or network
tem receives mail on by way of a proxy or network
address translation unit.
<b><a href="postconf.5.html#inet_protocols">inet_protocols</a> (all)</b>
The Internet protocols Postfix will attempt to use
The Internet protocols Postfix will attempt to use
when making or accepting connections.
<b><a href="postconf.5.html#local_recipient_maps">local_recipient_maps</a> (<a href="proxymap.8.html">proxy</a>:unix:passwd.byname</b>
<b>$<a href="postconf.5.html#alias_maps">alias_maps</a>)</b>
Lookup tables with all names or addresses of local
recipients: a recipient address is local when its
domain matches $<a href="postconf.5.html#mydestination">mydestination</a>, $<a href="postconf.5.html#inet_interfaces">inet_interfaces</a> or
Lookup tables with all names or addresses of local
recipients: a recipient address is local when its
domain matches $<a href="postconf.5.html#mydestination">mydestination</a>, $<a href="postconf.5.html#inet_interfaces">inet_interfaces</a> or
$<a href="postconf.5.html#proxy_interfaces">proxy_interfaces</a>.
<b><a href="postconf.5.html#unknown_local_recipient_reject_code">unknown_local_recipient_reject_code</a> (550)</b>
The numerical Postfix SMTP server response code
when a recipient address is local, and
$<a href="postconf.5.html#local_recipient_maps">local_recipient_maps</a> specifies a list of lookup
The numerical Postfix SMTP server response code
when a recipient address is local, and
$<a href="postconf.5.html#local_recipient_maps">local_recipient_maps</a> specifies a list of lookup
tables that does not match the recipient.
Parameters concerning known/unknown recipients of relay
Parameters concerning known/unknown recipients of relay
destinations:
<b><a href="postconf.5.html#relay_domains">relay_domains</a> ($<a href="postconf.5.html#mydestination">mydestination</a>)</b>
What destination domains (and subdomains thereof)
What destination domains (and subdomains thereof)
this system will relay mail to.
<b><a href="postconf.5.html#relay_recipient_maps">relay_recipient_maps</a> (empty)</b>
Optional lookup tables with all valid addresses in
Optional lookup tables with all valid addresses in
the domains that match $<a href="postconf.5.html#relay_domains">relay_domains</a>.
<b><a href="postconf.5.html#unknown_relay_recipient_reject_code">unknown_relay_recipient_reject_code</a> (550)</b>
The numerical Postfix SMTP server reply code when a
recipient address matches $<a href="postconf.5.html#relay_domains">relay_domains</a>, and
<a href="postconf.5.html#relay_recipient_maps">relay_recipient_maps</a> specifies a list of lookup
recipient address matches $<a href="postconf.5.html#relay_domains">relay_domains</a>, and
<a href="postconf.5.html#relay_recipient_maps">relay_recipient_maps</a> specifies a list of lookup
tables that does not match the recipient address.
Parameters concerning known/unknown recipients in virtual
Parameters concerning known/unknown recipients in virtual
alias domains:
<b><a href="postconf.5.html#virtual_alias_domains">virtual_alias_domains</a> ($<a href="postconf.5.html#virtual_alias_maps">virtual_alias_maps</a>)</b>
Postfix is final destination for the specified list
of virtual alias domains, that is, domains for
which all addresses are aliased to addresses in
of virtual alias domains, that is, domains for
which all addresses are aliased to addresses in
other local or remote domains.
<b><a href="postconf.5.html#virtual_alias_maps">virtual_alias_maps</a> ($<a href="postconf.5.html#virtual_maps">virtual_maps</a>)</b>
Optional lookup tables that alias specific mail
addresses or domains to other local or remote
Optional lookup tables that alias specific mail
addresses or domains to other local or remote
address.
<b><a href="postconf.5.html#unknown_virtual_alias_reject_code">unknown_virtual_alias_reject_code</a> (550)</b>
The Postfix SMTP server reply code when a recipient
address matches $<a href="postconf.5.html#virtual_alias_domains">virtual_alias_domains</a>, and $<a href="postconf.5.html#virtual_alias_maps">vir</a>-
<a href="postconf.5.html#virtual_alias_maps">tual_alias_maps</a> specifies a list of lookup tables
address matches $<a href="postconf.5.html#virtual_alias_domains">virtual_alias_domains</a>, and $<a href="postconf.5.html#virtual_alias_maps">vir</a>-
<a href="postconf.5.html#virtual_alias_maps">tual_alias_maps</a> specifies a list of lookup tables
that does not match the recipient address.
Parameters concerning known/unknown recipients in virtual
Parameters concerning known/unknown recipients in virtual
mailbox domains:
<b><a href="postconf.5.html#virtual_mailbox_domains">virtual_mailbox_domains</a> ($<a href="postconf.5.html#virtual_mailbox_maps">virtual_mailbox_maps</a>)</b>
Postfix is final destination for the specified list
of domains; mail is delivered via the $<a href="postconf.5.html#virtual_transport">vir</a>-
of domains; mail is delivered via the $<a href="postconf.5.html#virtual_transport">vir</a>-
<a href="postconf.5.html#virtual_transport">tual_transport</a> mail delivery transport.
<b><a href="postconf.5.html#virtual_mailbox_maps">virtual_mailbox_maps</a> (empty)</b>
Optional lookup tables with all valid addresses in
Optional lookup tables with all valid addresses in
the domains that match $<a href="postconf.5.html#virtual_mailbox_domains">virtual_mailbox_domains</a>.
<b><a href="postconf.5.html#unknown_virtual_mailbox_reject_code">unknown_virtual_mailbox_reject_code</a> (550)</b>
@ -781,70 +799,70 @@ SMTPD(8) SMTPD(8)
that does not match the recipient address.
<b>RESOURCE AND RATE CONTROLS</b>
The following parameters limit resource usage by the SMTP
The following parameters limit resource usage by the SMTP
server and/or control client request rates.
<b><a href="postconf.5.html#line_length_limit">line_length_limit</a> (2048)</b>
Upon input, long lines are chopped up into pieces
of at most this length; upon delivery, long lines
Upon input, long lines are chopped up into pieces
of at most this length; upon delivery, long lines
are reconstructed.
<b><a href="postconf.5.html#queue_minfree">queue_minfree</a> (0)</b>
The minimal amount of free space in bytes in the
The minimal amount of free space in bytes in the
queue file system that is needed to receive mail.
<b><a href="postconf.5.html#message_size_limit">message_size_limit</a> (10240000)</b>
The maximal size in bytes of a message, including
The maximal size in bytes of a message, including
envelope information.
<b><a href="postconf.5.html#smtpd_recipient_limit">smtpd_recipient_limit</a> (1000)</b>
The maximal number of recipients that the Postfix
The maximal number of recipients that the Postfix
SMTP server accepts per message delivery request.
<b><a href="postconf.5.html#smtpd_timeout">smtpd_timeout</a> (normal: 300s, overload: 10s)</b>
The time limit for sending a Postfix SMTP server
response and for receiving a remote SMTP client
The time limit for sending a Postfix SMTP server
response and for receiving a remote SMTP client
request.
<b><a href="postconf.5.html#smtpd_history_flush_threshold">smtpd_history_flush_threshold</a> (100)</b>
The maximal number of lines in the Postfix SMTP
server command history before it is flushed upon
The maximal number of lines in the Postfix SMTP
server command history before it is flushed upon
receipt of EHLO, RSET, or end of DATA.
Available in Postfix version 2.3 and later:
<b><a href="postconf.5.html#smtpd_peername_lookup">smtpd_peername_lookup</a> (yes)</b>
Attempt to look up the remote SMTP client hostname,
and verify that the name matches the client IP
and verify that the name matches the client IP
address.
The per SMTP client connection count and request rate lim-
its are implemented in co-operation with the <a href="anvil.8.html"><b>anvil</b>(8)</a> ser-
vice, and are available in Postfix version 2.2 and later.
vice, and are available in Postfix version 2.2 and later.
<b><a href="postconf.5.html#smtpd_client_connection_count_limit">smtpd_client_connection_count_limit</a> (50)</b>
How many simultaneous connections any client is
How many simultaneous connections any client is
allowed to make to this service.
<b><a href="postconf.5.html#smtpd_client_connection_rate_limit">smtpd_client_connection_rate_limit</a> (0)</b>
The maximal number of connection attempts any
client is allowed to make to this service per time
client is allowed to make to this service per time
unit.
<b><a href="postconf.5.html#smtpd_client_message_rate_limit">smtpd_client_message_rate_limit</a> (0)</b>
The maximal number of message delivery requests
that any client is allowed to make to this service
The maximal number of message delivery requests
that any client is allowed to make to this service
per time unit, regardless of whether or not Postfix
actually accepts those messages.
<b><a href="postconf.5.html#smtpd_client_recipient_rate_limit">smtpd_client_recipient_rate_limit</a> (0)</b>
The maximal number of recipient addresses that any
client is allowed to send to this service per time
The maximal number of recipient addresses that any
client is allowed to send to this service per time
unit, regardless of whether or not Postfix actually
accepts those recipients.
<b><a href="postconf.5.html#smtpd_client_event_limit_exceptions">smtpd_client_event_limit_exceptions</a> ($<a href="postconf.5.html#mynetworks">mynetworks</a>)</b>
Clients that are excluded from
Clients that are excluded from
smtpd_client_*_count/rate_limit restrictions.
Available in Postfix version 2.3 and later:
@ -858,59 +876,59 @@ SMTPD(8) SMTPD(8)
<b><a href="postconf.5.html#smtpd_per_record_deadline">smtpd_per_record_deadline</a> (normal: no, overload: yes)</b>
Change the behavior of the <a href="postconf.5.html#smtpd_timeout">smtpd_timeout</a> time
limit, from a time limit per read or write system
limit, from a time limit per read or write system
call, to a time limit to send or receive a complete
record (an SMTP command line, SMTP response line,
SMTP message content line, or TLS protocol mes-
record (an SMTP command line, SMTP response line,
SMTP message content line, or TLS protocol mes-
sage).
<b>TARPIT CONTROLS</b>
When a remote SMTP client makes errors, the Postfix SMTP
server can insert delays before responding. This can help
to slow down run-away software. The behavior is con-
trolled by an error counter that counts the number of
errors within an SMTP session that a client makes without
When a remote SMTP client makes errors, the Postfix SMTP
server can insert delays before responding. This can help
to slow down run-away software. The behavior is con-
trolled by an error counter that counts the number of
errors within an SMTP session that a client makes without
delivering mail.
<b><a href="postconf.5.html#smtpd_error_sleep_time">smtpd_error_sleep_time</a> (1s)</b>
With Postfix version 2.1 and later: the SMTP server
response delay after a client has made more than
$<a href="postconf.5.html#smtpd_soft_error_limit">smtpd_soft_error_limit</a> errors, and fewer than
$<a href="postconf.5.html#smtpd_hard_error_limit">smtpd_hard_error_limit</a> errors, without delivering
response delay after a client has made more than
$<a href="postconf.5.html#smtpd_soft_error_limit">smtpd_soft_error_limit</a> errors, and fewer than
$<a href="postconf.5.html#smtpd_hard_error_limit">smtpd_hard_error_limit</a> errors, without delivering
mail.
<b><a href="postconf.5.html#smtpd_soft_error_limit">smtpd_soft_error_limit</a> (10)</b>
The number of errors a remote SMTP client is
allowed to make without delivering mail before the
The number of errors a remote SMTP client is
allowed to make without delivering mail before the
Postfix SMTP server slows down all its responses.
<b><a href="postconf.5.html#smtpd_hard_error_limit">smtpd_hard_error_limit</a> (normal: 20, overload: 1)</b>
The maximal number of errors a remote SMTP client
The maximal number of errors a remote SMTP client
is allowed to make without delivering mail.
<b><a href="postconf.5.html#smtpd_junk_command_limit">smtpd_junk_command_limit</a> (normal: 100, overload: 1)</b>
The number of junk commands (NOOP, VRFY, ETRN or
The number of junk commands (NOOP, VRFY, ETRN or
RSET) that a remote SMTP client can send before the
Postfix SMTP server starts to increment the error
Postfix SMTP server starts to increment the error
counter with each junk command.
Available in Postfix version 2.1 and later:
<b><a href="postconf.5.html#smtpd_recipient_overshoot_limit">smtpd_recipient_overshoot_limit</a> (1000)</b>
The number of recipients that a remote SMTP client
can send in excess of the limit specified with
The number of recipients that a remote SMTP client
can send in excess of the limit specified with
$<a href="postconf.5.html#smtpd_recipient_limit">smtpd_recipient_limit</a>, before the Postfix SMTP
server increments the per-session error count for
server increments the per-session error count for
each excess recipient.
<b>ACCESS POLICY DELEGATION CONTROLS</b>
As of version 2.1, Postfix can be configured to delegate
access policy decisions to an external server that runs
outside Postfix. See the file <a href="SMTPD_POLICY_README.html">SMTPD_POLICY_README</a> for
As of version 2.1, Postfix can be configured to delegate
access policy decisions to an external server that runs
outside Postfix. See the file <a href="SMTPD_POLICY_README.html">SMTPD_POLICY_README</a> for
more information.
<b><a href="postconf.5.html#smtpd_policy_service_max_idle">smtpd_policy_service_max_idle</a> (300s)</b>
The time after which an idle SMTPD policy service
The time after which an idle SMTPD policy service
connection is closed.
<b><a href="postconf.5.html#smtpd_policy_service_max_ttl">smtpd_policy_service_max_ttl</a> (1000s)</b>
@ -918,55 +936,55 @@ SMTPD(8) SMTPD(8)
connection is closed.
<b><a href="postconf.5.html#smtpd_policy_service_timeout">smtpd_policy_service_timeout</a> (100s)</b>
The time limit for connecting to, writing to or
The time limit for connecting to, writing to or
receiving from a delegated SMTPD policy server.
<b>ACCESS CONTROLS</b>
The <a href="SMTPD_ACCESS_README.html">SMTPD_ACCESS_README</a> document gives an introduction to
The <a href="SMTPD_ACCESS_README.html">SMTPD_ACCESS_README</a> document gives an introduction to
all the SMTP server access control features.
<b><a href="postconf.5.html#smtpd_delay_reject">smtpd_delay_reject</a> (yes)</b>
Wait until the RCPT TO command before evaluating
Wait until the RCPT TO command before evaluating
$<a href="postconf.5.html#smtpd_client_restrictions">smtpd_client_restrictions</a>, $smtpd_helo_restric-
tions and $<a href="postconf.5.html#smtpd_sender_restrictions">smtpd_sender_restrictions</a>, or wait until
the ETRN command before evaluating
the ETRN command before evaluating
$<a href="postconf.5.html#smtpd_client_restrictions">smtpd_client_restrictions</a> and $smtpd_helo_restric-
tions.
<b><a href="postconf.5.html#parent_domain_matches_subdomains">parent_domain_matches_subdomains</a> (see 'postconf -d' out-</b>
<b><a href="postconf.5.html#parent_domain_matches_subdomains">parent_domain_matches_subdomains</a> (see 'postconf -d' out-</b>
<b>put)</b>
What Postfix features match subdomains of
"domain.tld" automatically, instead of requiring an
explicit ".domain.tld" pattern.
<b><a href="postconf.5.html#smtpd_client_restrictions">smtpd_client_restrictions</a> (empty)</b>
Optional Postfix SMTP server access restrictions in
the context of a remote SMTP client connection
Optional restrictions that the Postfix SMTP server
applies in the context of a client connection
request.
<b><a href="postconf.5.html#smtpd_helo_required">smtpd_helo_required</a> (no)</b>
Require that a remote SMTP client introduces itself
with the HELO or EHLO command before sending the
MAIL command or other commands that require EHLO
with the HELO or EHLO command before sending the
MAIL command or other commands that require EHLO
negotiation.
<b><a href="postconf.5.html#smtpd_helo_restrictions">smtpd_helo_restrictions</a> (empty)</b>
Optional restrictions that the Postfix SMTP server
applies in the context of the SMTP HELO command.
Optional restrictions that the Postfix SMTP server
applies in the context of a client HELO command.
<b><a href="postconf.5.html#smtpd_sender_restrictions">smtpd_sender_restrictions</a> (empty)</b>
Optional restrictions that the Postfix SMTP server
applies in the context of the MAIL FROM command.
<b><a href="postconf.5.html#smtpd_recipient_restrictions">smtpd_recipient_restrictions</a> (<a href="postconf.5.html#permit_mynetworks">permit_mynetworks</a>,</b>
<b><a href="postconf.5.html#reject_unauth_destination">reject_unauth_destination</a>)</b>
The access restrictions that the Postfix SMTP
server applies in the context of the RCPT TO com-
Optional restrictions that the Postfix SMTP server
applies in the context of a client MAIL FROM com-
mand.
<b><a href="postconf.5.html#smtpd_recipient_restrictions">smtpd_recipient_restrictions</a> (see 'postconf -d' output)</b>
Optional restrictions that the Postfix SMTP server
applies in the context of a client RCPT TO command,
after <a href="postconf.5.html#smtpd_relay_restrictions">smtpd_relay_restrictions</a>.
<b><a href="postconf.5.html#smtpd_etrn_restrictions">smtpd_etrn_restrictions</a> (empty)</b>
Optional SMTP server access restrictions in the
context of a client ETRN request.
Optional restrictions that the Postfix SMTP server
applies in the context of a client ETRN command.
<b><a href="postconf.5.html#allow_untrusted_routing">allow_untrusted_routing</a> (no)</b>
Forward mail with sender-specified routing
@ -1018,52 +1036,61 @@ SMTPD(8) SMTPD(8)
server applies in the context of the SMTP END-OF-
DATA command.
Available in Postfix version 2.10 and later:
<b><a href="postconf.5.html#smtpd_relay_restrictions">smtpd_relay_restrictions</a> (<a href="postconf.5.html#permit_mynetworks">permit_mynetworks</a>,</b>
<b><a href="postconf.5.html#reject_unauth_destination">reject_unauth_destination</a>)</b>
Access restrictions for mail relay control that the
Postfix SMTP server applies in the context of the
RCPT TO command, before <a href="postconf.5.html#smtpd_recipient_restrictions">smtpd_recipient_restric</a>-
<a href="postconf.5.html#smtpd_recipient_restrictions">tions</a>.
<b>SENDER AND RECIPIENT ADDRESS VERIFICATION CONTROLS</b>
Postfix version 2.1 introduces sender and recipient
address verification. This feature is implemented by
sending probe email messages that are not actually deliv-
ered. This feature is requested via the reject_unveri-
fied_sender and <a href="postconf.5.html#reject_unverified_recipient">reject_unverified_recipient</a> access
restrictions. The status of verification probes is main-
Postfix version 2.1 introduces sender and recipient
address verification. This feature is implemented by
sending probe email messages that are not actually deliv-
ered. This feature is requested via the reject_unveri-
fied_sender and <a href="postconf.5.html#reject_unverified_recipient">reject_unverified_recipient</a> access
restrictions. The status of verification probes is main-
tained by the <a href="verify.8.html"><b>verify</b>(8)</a> server. See the file <a href="ADDRESS_VERIFICATION_README.html">ADDRESS_VER</a>-
<a href="ADDRESS_VERIFICATION_README.html">IFICATION_README</a> for information about how to configure
<a href="ADDRESS_VERIFICATION_README.html">IFICATION_README</a> for information about how to configure
and operate the Postfix sender/recipient address verifica-
tion service.
<b><a href="postconf.5.html#address_verify_poll_count">address_verify_poll_count</a> (normal: 3, overload: 1)</b>
How many times to query the <a href="verify.8.html"><b>verify</b>(8)</a> service for
the completion of an address verification request
How many times to query the <a href="verify.8.html"><b>verify</b>(8)</a> service for
the completion of an address verification request
in progress.
<b><a href="postconf.5.html#address_verify_poll_delay">address_verify_poll_delay</a> (3s)</b>
The delay between queries for the completion of an
The delay between queries for the completion of an
address verification request in progress.
<b><a href="postconf.5.html#address_verify_sender">address_verify_sender</a> ($<a href="postconf.5.html#double_bounce_sender">double_bounce_sender</a>)</b>
The sender address to use in address verification
The sender address to use in address verification
probes; prior to Postfix 2.5 the default was "post-
master".
<b><a href="postconf.5.html#unverified_sender_reject_code">unverified_sender_reject_code</a> (450)</b>
The numerical Postfix SMTP server response code
when a recipient address is rejected by the
The numerical Postfix SMTP server response code
when a recipient address is rejected by the
<a href="postconf.5.html#reject_unverified_sender">reject_unverified_sender</a> restriction.
<b><a href="postconf.5.html#unverified_recipient_reject_code">unverified_recipient_reject_code</a> (450)</b>
The numerical Postfix SMTP server response when a
The numerical Postfix SMTP server response when a
recipient address is rejected by the reject_unveri-
fied_recipient restriction.
Available in Postfix version 2.6 and later:
<b><a href="postconf.5.html#unverified_sender_defer_code">unverified_sender_defer_code</a> (450)</b>
The numerical Postfix SMTP server response code
when a sender address probe fails due to a tempo-
The numerical Postfix SMTP server response code
when a sender address probe fails due to a tempo-
rary error condition.
<b><a href="postconf.5.html#unverified_recipient_defer_code">unverified_recipient_defer_code</a> (450)</b>
The numerical Postfix SMTP server response when a
recipient address probe fails due to a temporary
The numerical Postfix SMTP server response when a
recipient address probe fails due to a temporary
error condition.
<b><a href="postconf.5.html#unverified_sender_reject_reason">unverified_sender_reject_reason</a> (empty)</b>
@ -1077,7 +1104,7 @@ SMTPD(8) SMTPD(8)
<b><a href="postconf.5.html#unverified_sender_tempfail_action">unverified_sender_tempfail_action</a> ($<a href="postconf.5.html#reject_tempfail_action">reject_temp</a>-</b>
<b><a href="postconf.5.html#reject_tempfail_action">fail_action</a>)</b>
The Postfix SMTP server's action when <a href="postconf.5.html#reject_unverified_sender">reject_unver</a>-
<a href="postconf.5.html#reject_unverified_sender">ified_sender</a> fails due to a temporary error condi-
<a href="postconf.5.html#reject_unverified_sender">ified_sender</a> fails due to a temporary error condi-
tion.
<b><a href="postconf.5.html#unverified_recipient_tempfail_action">unverified_recipient_tempfail_action</a> ($<a href="postconf.5.html#reject_tempfail_action">reject_temp</a>-</b>
@ -1094,7 +1121,7 @@ SMTPD(8) SMTPD(8)
addresses.
<b>ACCESS CONTROL RESPONSES</b>
The following parameters control numerical SMTP reply
The following parameters control numerical SMTP reply
codes and/or text responses.
<b><a href="postconf.5.html#access_map_reject_code">access_map_reject_code</a> (554)</b>
@ -1102,18 +1129,18 @@ SMTPD(8) SMTPD(8)
an <a href="access.5.html"><b>access</b>(5)</a> map "reject" action.
<b><a href="postconf.5.html#defer_code">defer_code</a> (450)</b>
The numerical Postfix SMTP server response code
when a remote SMTP client request is rejected by
The numerical Postfix SMTP server response code
when a remote SMTP client request is rejected by
the "defer" restriction.
<b><a href="postconf.5.html#invalid_hostname_reject_code">invalid_hostname_reject_code</a> (501)</b>
The numerical Postfix SMTP server response code
when the client HELO or EHLO command parameter is
rejected by the <a href="postconf.5.html#reject_invalid_helo_hostname">reject_invalid_helo_hostname</a>
The numerical Postfix SMTP server response code
when the client HELO or EHLO command parameter is
rejected by the <a href="postconf.5.html#reject_invalid_helo_hostname">reject_invalid_helo_hostname</a>
restriction.
<b><a href="postconf.5.html#maps_rbl_reject_code">maps_rbl_reject_code</a> (554)</b>
The numerical Postfix SMTP server response code
The numerical Postfix SMTP server response code
when a remote SMTP client request is blocked by the
<a href="postconf.5.html#reject_rbl_client">reject_rbl_client</a>, <a href="postconf.5.html#reject_rhsbl_client">reject_rhsbl_client</a>,
<a href="postconf.5.html#reject_rhsbl_reverse_client">reject_rhsbl_reverse_client</a>, <a href="postconf.5.html#reject_rhsbl_sender">reject_rhsbl_sender</a> or
@ -1121,53 +1148,53 @@ SMTPD(8) SMTPD(8)
<b><a href="postconf.5.html#non_fqdn_reject_code">non_fqdn_reject_code</a> (504)</b>
The numerical Postfix SMTP server reply code when a
client request is rejected by the
client request is rejected by the
<a href="postconf.5.html#reject_non_fqdn_helo_hostname">reject_non_fqdn_helo_hostname</a>,
<a href="postconf.5.html#reject_non_fqdn_sender">reject_non_fqdn_sender</a> or <a href="postconf.5.html#reject_non_fqdn_recipient">reject_non_fqdn_recipient</a>
restriction.
<b><a href="postconf.5.html#plaintext_reject_code">plaintext_reject_code</a> (450)</b>
The numerical Postfix SMTP server response code
when a request is rejected by the <b>reject_plain-</b>
The numerical Postfix SMTP server response code
when a request is rejected by the <b>reject_plain-</b>
<b>text_session</b> restriction.
<b><a href="postconf.5.html#reject_code">reject_code</a> (554)</b>
The numerical Postfix SMTP server response code
when a remote SMTP client request is rejected by
The numerical Postfix SMTP server response code
when a remote SMTP client request is rejected by
the "reject" restriction.
<b><a href="postconf.5.html#relay_domains_reject_code">relay_domains_reject_code</a> (554)</b>
The numerical Postfix SMTP server response code
when a client request is rejected by the
The numerical Postfix SMTP server response code
when a client request is rejected by the
<a href="postconf.5.html#reject_unauth_destination">reject_unauth_destination</a> recipient restriction.
<b><a href="postconf.5.html#unknown_address_reject_code">unknown_address_reject_code</a> (450)</b>
The numerical Postfix SMTP server response code
when a sender or recipient address is rejected by
The numerical Postfix SMTP server response code
when a sender or recipient address is rejected by
the <a href="postconf.5.html#reject_unknown_sender_domain">reject_unknown_sender_domain</a> or
<a href="postconf.5.html#reject_unknown_recipient_domain">reject_unknown_recipient_domain</a> restriction.
<b><a href="postconf.5.html#unknown_client_reject_code">unknown_client_reject_code</a> (450)</b>
The numerical Postfix SMTP server response code
when a client without valid address &lt;=&gt; name map-
The numerical Postfix SMTP server response code
when a client without valid address &lt;=&gt; name map-
ping is rejected by the reject_unknown_client_host-
name restriction.
<b><a href="postconf.5.html#unknown_hostname_reject_code">unknown_hostname_reject_code</a> (450)</b>
The numerical Postfix SMTP server response code
when the hostname specified with the HELO or EHLO
command is rejected by the
The numerical Postfix SMTP server response code
when the hostname specified with the HELO or EHLO
command is rejected by the
<a href="postconf.5.html#reject_unknown_helo_hostname">reject_unknown_helo_hostname</a> restriction.
Available in Postfix version 2.0 and later:
<b><a href="postconf.5.html#default_rbl_reply">default_rbl_reply</a> (see 'postconf -d' output)</b>
The default Postfix SMTP server response template
for a request that is rejected by an RBL-based
The default Postfix SMTP server response template
for a request that is rejected by an RBL-based
restriction.
<b><a href="postconf.5.html#multi_recipient_bounce_reject_code">multi_recipient_bounce_reject_code</a> (550)</b>
The numerical Postfix SMTP server response code
The numerical Postfix SMTP server response code
when a remote SMTP client request is blocked by the
<a href="postconf.5.html#reject_multi_recipient_bounce">reject_multi_recipient_bounce</a> restriction.
@ -1178,38 +1205,38 @@ SMTPD(8) SMTPD(8)
<b><a href="postconf.5.html#access_map_defer_code">access_map_defer_code</a> (450)</b>
The numerical Postfix SMTP server response code for
an <a href="access.5.html"><b>access</b>(5)</a> map "defer" action, including
an <a href="access.5.html"><b>access</b>(5)</a> map "defer" action, including
"<a href="postconf.5.html#defer_if_permit">defer_if_permit</a>" or "<a href="postconf.5.html#defer_if_reject">defer_if_reject</a>".
<b><a href="postconf.5.html#reject_tempfail_action">reject_tempfail_action</a> (<a href="postconf.5.html#defer_if_permit">defer_if_permit</a>)</b>
The Postfix SMTP server's action when a reject-type
restriction fails due to a temporary error condi-
restriction fails due to a temporary error condi-
tion.
<b><a href="postconf.5.html#unknown_helo_hostname_tempfail_action">unknown_helo_hostname_tempfail_action</a> ($<a href="postconf.5.html#reject_tempfail_action">reject_temp</a>-</b>
<b><a href="postconf.5.html#reject_tempfail_action">fail_action</a>)</b>
The Postfix SMTP server's action when
The Postfix SMTP server's action when
<a href="postconf.5.html#reject_unknown_helo_hostname">reject_unknown_helo_hostname</a> fails due to an tempo-
rary error condition.
<b><a href="postconf.5.html#unknown_address_tempfail_action">unknown_address_tempfail_action</a> ($<a href="postconf.5.html#reject_tempfail_action">reject_tempfail_action</a>)</b>
The Postfix SMTP server's action when
The Postfix SMTP server's action when
<a href="postconf.5.html#reject_unknown_sender_domain">reject_unknown_sender_domain</a> or
<a href="postconf.5.html#reject_unknown_recipient_domain">reject_unknown_recipient_domain</a> fail due to a tem-
<a href="postconf.5.html#reject_unknown_recipient_domain">reject_unknown_recipient_domain</a> fail due to a tem-
porary error condition.
<b>MISCELLANEOUS CONTROLS</b>
<b><a href="postconf.5.html#config_directory">config_directory</a> (see 'postconf -d' output)</b>
The default location of the Postfix <a href="postconf.5.html">main.cf</a> and
The default location of the Postfix <a href="postconf.5.html">main.cf</a> and
<a href="master.5.html">master.cf</a> configuration files.
<b><a href="postconf.5.html#daemon_timeout">daemon_timeout</a> (18000s)</b>
How much time a Postfix daemon process may take to
handle a request before it is terminated by a
How much time a Postfix daemon process may take to
handle a request before it is terminated by a
built-in watchdog timer.
<b><a href="postconf.5.html#command_directory">command_directory</a> (see 'postconf -d' output)</b>
The location of all postfix administrative com-
The location of all postfix administrative com-
mands.
<b><a href="postconf.5.html#double_bounce_sender">double_bounce_sender</a> (double-bounce)</b>
@ -1230,13 +1257,13 @@ SMTPD(8) SMTPD(8)
and most Postfix daemon processes.
<b><a href="postconf.5.html#max_idle">max_idle</a> (100s)</b>
The maximum amount of time that an idle Postfix
daemon process waits for an incoming connection
The maximum amount of time that an idle Postfix
daemon process waits for an incoming connection
before terminating voluntarily.
<b><a href="postconf.5.html#max_use">max_use</a> (100)</b>
The maximal number of incoming connections that a
Postfix daemon process will service before termi-
The maximal number of incoming connections that a
Postfix daemon process will service before termi-
nating voluntarily.
<b><a href="postconf.5.html#myhostname">myhostname</a> (see 'postconf -d' output)</b>
@ -1248,19 +1275,19 @@ SMTPD(8) SMTPD(8)
<b><a href="postconf.5.html#myorigin">myorigin</a> ($<a href="postconf.5.html#myhostname">myhostname</a>)</b>
The domain name that locally-posted mail appears to
come from, and that locally posted mail is deliv-
come from, and that locally posted mail is deliv-
ered to.
<b><a href="postconf.5.html#process_id">process_id</a> (read-only)</b>
The process ID of a Postfix command or daemon
The process ID of a Postfix command or daemon
process.
<b><a href="postconf.5.html#process_name">process_name</a> (read-only)</b>
The process name of a Postfix command or daemon
The process name of a Postfix command or daemon
process.
<b><a href="postconf.5.html#queue_directory">queue_directory</a> (see 'postconf -d' output)</b>
The location of the Postfix top-level queue direc-
The location of the Postfix top-level queue direc-
tory.
<b><a href="postconf.5.html#recipient_delimiter">recipient_delimiter</a> (empty)</b>
@ -1268,28 +1295,28 @@ SMTPD(8) SMTPD(8)
sions (user+foo).
<b><a href="postconf.5.html#smtpd_banner">smtpd_banner</a> ($<a href="postconf.5.html#myhostname">myhostname</a> ESMTP $<a href="postconf.5.html#mail_name">mail_name</a>)</b>
The text that follows the 220 status code in the
The text that follows the 220 status code in the
SMTP greeting banner.
<b><a href="postconf.5.html#syslog_facility">syslog_facility</a> (mail)</b>
The syslog facility of Postfix logging.
<b><a href="postconf.5.html#syslog_name">syslog_name</a> (see 'postconf -d' output)</b>
The mail system name that is prepended to the
process name in syslog records, so that "smtpd"
The mail system name that is prepended to the
process name in syslog records, so that "smtpd"
becomes, for example, "postfix/smtpd".
Available in Postfix version 2.2 and later:
<b><a href="postconf.5.html#smtpd_forbidden_commands">smtpd_forbidden_commands</a> (CONNECT, GET, POST)</b>
List of commands that cause the Postfix SMTP server
to immediately terminate the session with a 221
to immediately terminate the session with a 221
code.
Available in Postfix version 2.5 and later:
<b><a href="postconf.5.html#smtpd_client_port_logging">smtpd_client_port_logging</a> (no)</b>
Enable logging of the remote SMTP client port in
Enable logging of the remote SMTP client port in
addition to the hostname and IP address.
<b>SEE ALSO</b>
@ -1319,7 +1346,7 @@ SMTPD(8) SMTPD(8)
<a href="XFORWARD_README.html">XFORWARD_README</a>, Postfix XFORWARD extension
<b>LICENSE</b>
The Secure Mailer license must be distributed with this
The Secure Mailer license must be distributed with this
software.
<b>AUTHOR(S)</b>

View File

@ -15,23 +15,25 @@ TLSPROXY(8) TLSPROXY(8)
<b>DESCRIPTION</b>
The <a href="tlsproxy.8.html"><b>tlsproxy</b>(8)</a> server implements a server-side TLS proxy.
It is used by <a href="postscreen.8.html"><b>postscreen</b>(8)</a> to talk SMTP-over-TLS with
remote SMTP clients whose whitelist status has expired,
but it should also work for non-SMTP protocols.
remote SMTP clients that are not whitelisted (including
clients whose whitelist status has expired), but it should
also work for non-SMTP protocols.
Although one <a href="tlsproxy.8.html"><b>tlsproxy</b>(8)</a> process can serve multiple ses-
sions at the same time, it is a good idea to allow the
number of processes to increase with load, so that the
Although one <a href="tlsproxy.8.html"><b>tlsproxy</b>(8)</a> process can serve multiple ses-
sions at the same time, it is a good idea to allow the
number of processes to increase with load, so that the
service remains responsive.
<b>PROTOCOL EXAMPLE</b>
The example below concerns <a href="postscreen.8.html"><b>postscreen</b>(8)</a>. However, the
<a href="tlsproxy.8.html"><b>tlsproxy</b>(8)</a> server is agnostic of the application proto-
col, and the example is easily adapted to other applica-
The example below concerns <a href="postscreen.8.html"><b>postscreen</b>(8)</a>. However, the
<a href="tlsproxy.8.html"><b>tlsproxy</b>(8)</a> server is agnostic of the application proto-
col, and the example is easily adapted to other applica-
tions.
The <a href="postscreen.8.html"><b>postscreen</b>(8)</a> server sends the remote SMTP client end-
point string, the requested role (server), and the
requested timeout to <a href="tlsproxy.8.html"><b>tlsproxy</b>(8)</a>. <a href="postscreen.8.html"><b>postscreen</b>(8)</a> then
After receiving a valid remote SMTP client STARTTLS com-
mand, the <a href="postscreen.8.html"><b>postscreen</b>(8)</a> server sends the remote SMTP
client endpoint string, the requested role (server), and
the requested timeout to <a href="tlsproxy.8.html"><b>tlsproxy</b>(8)</a>. <a href="postscreen.8.html"><b>postscreen</b>(8)</a> then
receives a "TLS available" indication from <a href="tlsproxy.8.html"><b>tlsproxy</b>(8)</a>.
If the TLS service is available, <a href="postscreen.8.html"><b>postscreen</b>(8)</a> sends the
remote SMTP client file descriptor to <a href="tlsproxy.8.html"><b>tlsproxy</b>(8)</a>, and

View File

@ -1,4 +1,4 @@
.\" $NetBSD: postconf.1,v 1.1.1.5 2013/01/02 18:58:44 tron Exp $
.\" $NetBSD: postconf.1,v 1.1.1.6 2013/09/25 19:06:24 tron Exp $
.\"
.TH POSTCONF 1
.ad
@ -13,18 +13,18 @@ Postfix configuration utility
.fi
\fBManaging main.cf:\fR
\fBpostconf\fR [\fB-dfhnv\fR] [\fB-c \fIconfig_dir\fR]
\fBpostconf\fR [\fB-dfhnovx\fR] [\fB-c \fIconfig_dir\fR]
[\fB-C \fIclass,...\fR] [\fIparameter ...\fR]
\fBpostconf\fR [\fB-ev\fR] [\fB-c \fIconfig_dir\fR]
[\fIparameter=value ...\fR]
\fBpostconf\fR [\fB-#v\fR] [\fB-c \fIconfig_dir\fR]
\fBpostconf\fR [\fB-#vX\fR] [\fB-c \fIconfig_dir\fR]
[\fIparameter ...\fR]
\fBManaging master.cf:\fR
\fBpostconf\fR [\fB-fMv\fR] [\fB-c \fIconfig_dir\fR]
\fBpostconf\fR [\fB-fMovx\fR] [\fB-c \fIconfig_dir\fR]
[\fIservice ...\fR]
\fBManaging bounce message templates:\fR
@ -116,7 +116,7 @@ Specify \fB-df\fR to fold long lines for human readability
(Postfix 2.9 and later).
.IP \fB-e\fR
Edit the \fBmain.cf\fR configuration file, and update
parameter settings with the "\fIname\fR=\fIvalue\fR" pairs
parameter settings with the "\fIname=value\fR" pairs
on the \fBpostconf\fR(1) command line. The file is copied
to a temporary file then renamed into place.
Specify quotes to protect special characters and whitespace
@ -146,7 +146,8 @@ A kernel-based advisory locking method for local and remote files.
An application-level locking method. An application locks a file
named \fIfilename\fR by creating a file named \fIfilename\fB.lock\fR.
The application is expected to remove its own lock file, as well as
stale lock files that were left behind after abnormal termination.
stale lock files that were left behind after abnormal program
termination.
.RE
.IP \fB-m\fR
List the names of all supported lookup table types. In Postfix
@ -209,6 +210,14 @@ described in \fBregexp_table\fR(5).
.IP \fBsdbm\fR
An indexed file type based on hashing.
This is available on systems with support for SDBM databases.
.IP "\fBsocketmap\fR (read-only)"
Query a Sendmail-style socketmap server. The name of the
table specifies
\fBinet\fR:\fIhost\fR:\fIport\fR:\fIsocketmap-name\fR for
a TCP-based server, or
\fBunix\fR:\fIpathname\fR:\fIsocketmap-name\fR for a
UNIX-domain server. In both cases, \fIsocketmap-name\fR is
the name of the socketmap.
.IP "\fBsqlite\fR (read-only)"
Perform lookups from SQLite database files. This is described
in \fBsqlite_table\fR(5).
@ -253,10 +262,14 @@ or with a \fIservice-name.service-type\fR pair, where
This feature is available with Postfix 2.9 and later.
.IP \fB-n\fR
Print \fBmain.cf\fR parameter settings that are explicitly
specified in \fBmain.cf\fR.
Show only configuration parameters that have explicit
\fIname=value\fR settings in \fBmain.cf\fR.
Specify \fB-nf\fR to fold long lines for human readability
(Postfix 2.9 and later).
.IP "\fB-o \fIname=value\fR"
Override \fBmain.cf\fR parameter settings.
This feature is available with Postfix 2.10 and later.
.IP "\fB-t\fR [\fItemplate_file\fR]"
Display the templates for text that appears at the beginning
of delivery status notification (DSN) messages, without
@ -275,13 +288,28 @@ This feature is available with Postfix 2.3 and later.
.IP \fB-v\fR
Enable verbose logging for debugging purposes. Multiple \fB-v\fR
options make the software increasingly verbose.
.IP \fB-x\fR
Expand \fI$name\fR in \fBmain.cf\fR or \fBmaster.cf\fR
parameter values. The expansion is recursive.
This feature is available with Postfix 2.10 and later.
.IP \fB-X\fR
Edit the \fBmain.cf\fR configuration file, and remove
the parameters named on the \fBpostconf\fR(1) command line.
The file is copied to a temporary file then renamed into
place.
Specify a list of parameter names, not "\fIname=value\fR"
pairs. There is no \fBpostconf\fR(1) command to perform
the reverse operation.
This feature is available with Postfix 2.10 and later.
.IP \fB-#\fR
Edit the \fBmain.cf\fR configuration file, and comment out
the parameters given on the \fBpostconf\fR(1) command line,
the parameters named on the \fBpostconf\fR(1) command line,
so that those parameters revert to their default values.
The file is copied to a temporary file then renamed into
place.
Specify a list of parameter names, not \fIname\fR=\fIvalue\fR
Specify a list of parameter names, not "\fIname=value\fR"
pairs. There is no \fBpostconf\fR(1) command to perform
the reverse operation.

View File

@ -1,4 +1,4 @@
.\" $NetBSD: postqueue.1,v 1.1.1.2 2010/06/17 18:06:24 tron Exp $
.\" $NetBSD: postqueue.1,v 1.1.1.3 2013/09/25 19:06:24 tron Exp $
.\"
.TH POSTQUEUE 1
.ad
@ -68,7 +68,7 @@ attempt will be made until the mail is taken off hold.
.RE
.IP "\fB-s \fIsite\fR"
Schedule immediate delivery of all mail that is queued for the named
\fIsite\fR. A numerical site must be specified as a valid RFC 2821
\fIsite\fR. A numerical site must be specified as a valid RFC 5321
address literal enclosed in [], just like in email addresses.
The site must be eligible for the "fast flush" service.
See \fBflush\fR(8) for more information about the "fast flush"

View File

@ -1,4 +1,4 @@
.\" $NetBSD: sendmail.1,v 1.1.1.2 2013/01/02 18:58:44 tron Exp $
.\" $NetBSD: sendmail.1,v 1.1.1.3 2013/09/25 19:06:24 tron Exp $
.\"
.TH SENDMAIL 1
.ad
@ -84,6 +84,11 @@ Postfix has no persistent host status database.
.IP \fB-bi\fR
Initialize alias database. See the \fBnewaliases\fR
command above.
.IP \fB-bl\fR
Go into daemon mode. To accept only local connections as
with Sendmail\'s \fB-bl\fR option, specify "\fBinet_interfaces
= loopback\fR" in the Postfix \fBmain.cf\fR configuration
file.
.IP \fB-bm\fR
Read mail from standard input and arrange for delivery.
This is the default mode of operation.
@ -158,7 +163,8 @@ Non-default alias database. Specify \fIpathname\fR or
\fItype\fR:\fIpathname\fR. See \fBpostalias\fR(1) for
details.
.IP "\fB-O \fIoption=value\fR (ignored)"
Backwards compatibility.
Set the named \fIoption\fR to \fIvalue\fR. Use the equivalent
configuration parameter in \fBmain.cf\fR instead.
.IP "\fB-o7\fR (ignored)"
.IP "\fB-o8\fR (ignored)"
To send 8-bit or binary content, use an appropriate MIME encapsulation
@ -175,9 +181,16 @@ configuration parameter in \fBmain.cf\fR instead.
Set the envelope sender address. This is the address where
delivery problems are sent to. With Postfix versions before 2.1, the
\fBErrors-To:\fR message header overrides the error return address.
.IP "\fB-R \fIreturn_limit\fR (ignored)"
Limit the size of bounced mail. Use the \fBbounce_size_limit\fR
configuration parameter instead.
.IP "\fB-R \fIreturn\fR"
Delivery status notification control. Specify "hdrs" to
return only the header when a message bounces, "full" to
return a full copy (the default behavior).
The \fB-R\fR option specifies an upper bound; Postfix will
return only the header, when a full copy would exceed the
bounce_size_limit setting.
This option is ignored before Postfix version 2.10.
.IP \fB-q\fR
Attempt to deliver all queued mail. This is implemented by
executing the \fBpostqueue\fR(1) command.
@ -375,8 +388,8 @@ The directory with Postfix support programs and daemon programs.
The default database type for use in \fBnewaliases\fR(1), \fBpostalias\fR(1)
and \fBpostmap\fR(1) commands.
.IP "\fBdelay_warning_time (0h)\fR"
The time after which the sender receives the message headers of
mail that is still queued.
The time after which the sender receives a copy of the message
headers of mail that is still queued.
.IP "\fBenable_errors_to (no)\fR"
Report mail delivery errors to the address specified with the
non-standard Errors-To: message header, instead of the envelope

View File

@ -1,4 +1,4 @@
.\" $NetBSD: aliases.5,v 1.1.1.1 2009/06/23 10:08:33 tron Exp $
.\" $NetBSD: aliases.5,v 1.1.1.2 2013/09/25 19:06:24 tron Exp $
.\"
.TH ALIASES 5
.ad
@ -26,9 +26,13 @@ used for fast lookup by the mail system. Execute the command
\fBnewaliases\fR in order to rebuild the indexed file after
changing the Postfix alias database.
The input and output file formats are expected to be compatible
with Sendmail version 8, and are expected to be suitable for the
use as NIS maps.
When the table is provided via other means such as NIS, LDAP
or SQL, the same lookups are done as for ordinary indexed files.
Alternatively, the table can be provided as a regular-expression
map where patterns are given as regular expressions. In
this case, the lookups are done in a slightly different way
as described below under "REGULAR EXPRESSION TABLES".
Users can control delivery of their own mail by setting
up \fB.forward\fR files in their home directory.
@ -109,6 +113,28 @@ propagated to the result of table lookup.
.fi
The local(8) delivery agent always folds the search string
to lowercase before database lookup.
.SH "REGULAR EXPRESSION TABLES"
.na
.nf
.ad
.fi
This section describes how the table lookups change when the table
is given in the form of regular expressions. For a description of
regular expression lookup table syntax, see \fBregexp_table\fR(5)
or \fBpcre_table\fR(5). NOTE: these formats do not use ":" at the
end of a pattern.
Each regular expression is applied to the entire search
string. Thus, a search string \fIuser+foo\fR is not broken
up into \fIuser\fR and \fIfoo\fR.
Regular expressions are applied in the order as specified
in the table, until a regular expression is found that
matches the search string.
Lookup results are the same as with indexed file lookups.
For security reasons there is no support for \fB$1\fR,
\fB$2\fR etc. substring interpolation.
.SH "SECURITY"
.na
.nf

View File

@ -1,4 +1,4 @@
.\" $NetBSD: header_checks.5,v 1.1.1.3 2011/03/02 19:31:50 tron Exp $
.\" $NetBSD: header_checks.5,v 1.1.1.4 2013/09/25 19:06:24 tron Exp $
.\"
.TH HEADER_CHECKS 5
.ad
@ -119,8 +119,9 @@ insensitive.
This document assumes that header and body_checks rules are specified
in the form of Postfix regular expression lookup tables. Usually the
best performance is obtained with \fBpcre\fR (Perl Compatible Regular
Expression) tables, but the slower \fBregexp\fR (POSIX regular
expressions) support is more widely available.
Expression) tables. The \fBregexp\fR (POSIX regular
expressions) tables are usually slower, but more widely
available.
Use the command "\fBpostconf -m\fR" to find out what lookup table
types your Postfix system supports.

View File

@ -1,4 +1,4 @@
.\" $NetBSD: master.5,v 1.1.1.3 2013/01/02 18:58:44 tron Exp $
.\" $NetBSD: master.5,v 1.1.1.4 2013/09/25 19:06:25 tron Exp $
.\"
.TH MASTER 5
.ad
@ -37,17 +37,17 @@ to reload the configuration.
.fi
The general format of the master.cf file is as follows:
.IP \(bu
Each logical line defines a single Postfix service.
Each service is identified by its name and type as described
below. When multiple lines specify the same service name
and type, only the last one is remembered. Otherwise, the
order of master.cf service definitions does not matter.
.IP \(bu
Empty lines and whitespace-only lines are ignored, as are
lines whose first non-whitespace character is a `#'.
.IP \(bu
A logical line starts with non-whitespace text. A line that
starts with whitespace continues a logical line.
.IP \(bu
Each logical line defines a single Postfix service.
Each service is identified by its name and type as described
below. When multiple lines specify the same service name
and type, only the last one is remembered. Otherwise, the
order of master.cf service definitions does not matter.
.PP
Each logical line consists of eight fields separated by
whitespace. These are described below in the order as they
@ -189,11 +189,19 @@ parameter value can refer to other parameters as \fI$name\fR
etc., just like in main.cf. See \fBpostconf\fR(5) for
syntax.
.sp
NOTE 1: do not specify whitespace around the "=". In parameter
values, either avoid whitespace altogether, use commas
instead of spaces, or consider overrides like "-o
name=$override_parameter" with $override_parameter set in
main.cf.
NOTE 1: do not specify whitespace around the "=" or in
parameter values. To specify a parameter value that contains
whitespace, use commas instead of spaces, or specify the
value in main.cf. Example:
.sp
.nf
/etc/postfix/master.cf:
submission inet .... smtpd
-o smtpd_mumble=$submission_mumble
.sp
/etc/postfix/main.cf
submission_mumble = text with whitespace...
.fi
.sp
NOTE 2: Over-zealous use of parameter overrides makes the
Postfix configuration hard to understand and maintain. At

View File

@ -1,4 +1,4 @@
.\" $NetBSD: memcache_table.5,v 1.1.1.1 2013/01/02 18:58:44 tron Exp $
.\" $NetBSD: memcache_table.5,v 1.1.1.2 2013/09/25 19:06:24 tron Exp $
.\"
.TH MEMCACHE_TABLE 5
.ad
@ -76,21 +76,25 @@ information in the persistent database. Specify a Postfix
Access to remote proxymap servers is under development.
NOTE 1: When using memcache with persistent backup as
\fBpostscreen\fR(8) or \fBverify\fR(8) cache, disable
automatic cache cleanup (*_cache_cleanup_interval = 0) in
all Postfix instances except for one instance that will be
responsible for cache cleanup.
NOTE 1: When sharing a persistent \fBpostscreen\fR(8) or
\fBverify\fR(8) cache, disable automatic cache cleanup (set
*_cache_cleanup_interval = 0) except with one Postfix
instance that will be responsible for cache cleanup.
NOTE 2: In the case of a proxied backup database, the full
backup database
name (including the "proxy:" prefix) must be specified in
the proxymap server's proxy_read_maps or proxy_write_maps
setting (depending on whether the access is read-only or
read-write).
NOTE 2: When different tables share the same memcache
database, each table should use the \fBkey_format\fR feature
(see below) to prepend its own unique string to the lookup
key. Otherwise, automatic \fBpostscreen\fR(8) or \fBverify\fR(8)
cache cleanup may not work.
NOTE 3: When the backup database is accessed with "proxy:"
lookups, the full backup database name (including the
"proxy:" prefix) must be specified in the proxymap server's
proxy_read_maps or proxy_write_maps setting (depending on
whether the access is read-only or read-write).
.IP "\fBflags (default: 0)\fR"
Optional flags that should be stored along with a memcache
update.
update. The flags are ignored when looking up information.
.IP "\fBttl (default: 3600)\fR"
The expiration time in seconds of memcache updates.
@ -115,17 +119,20 @@ Format of the lookup and update keys in memcache requests.
By default, these are the same as the lookup and update
keys that are given to the Postfix memcache client.
NOTE: The \fBkey_format\fR feature is not used for \fBbackup\fR
NOTE 1: The \fBkey_format\fR feature is not used for \fBbackup\fR
database requests.
When the same memcache database is used to cache information
from multiple tables, you can use the \fBkey_format\fR
feature to avoid name collisions by prepending a fixed
string. Examples:
NOTE 2: When different tables share the same memcache
database, each table should prepend its own unique string
to the lookup key. Otherwise, automatic \fBpostscreen\fR(8)
or \fBverify\fR(8) cache cleanup may not work.
Examples:
.nf
key_format = aliases:%s
key_format = access:%s
key_format = verify:%s
key_format = postscreen:%s
.fi
The \fBkey_format\fR parameter supports the following '%'

View File

@ -1,4 +1,4 @@
.\" $NetBSD: cleanup.8,v 1.1.1.3 2013/01/02 18:58:46 tron Exp $
.\" $NetBSD: cleanup.8,v 1.1.1.4 2013/09/25 19:06:25 tron Exp $
.\"
.TH CLEANUP 8
.ad
@ -357,8 +357,8 @@ request before it is terminated by a built-in watchdog timer.
The maximal number of digits after the decimal point when logging
sub-second delay values.
.IP "\fBdelay_warning_time (0h)\fR"
The time after which the sender receives the message headers of
mail that is still queued.
The time after which the sender receives a copy of the message
headers of mail that is still queued.
.IP "\fBipc_timeout (3600s)\fR"
The time limit for sending or receiving information over an internal
communication channel.

View File

@ -1,4 +1,4 @@
.\" $NetBSD: master.8,v 1.1.1.2 2013/01/02 18:58:46 tron Exp $
.\" $NetBSD: master.8,v 1.1.1.3 2013/09/25 19:06:25 tron Exp $
.\"
.TH MASTER 8
.ad
@ -10,7 +10,7 @@ Postfix master process
.SH "SYNOPSIS"
.na
.nf
\fBmaster\fR [\fB-Ddtv\fR] [\fB-c \fIconfig_dir\fR] [\fB-e \fIexit_time\fR]
\fBmaster\fR [\fB-Ddtvw\fR] [\fB-c \fIconfig_dir\fR] [\fB-e \fIexit_time\fR]
.SH DESCRIPTION
.ad
.fi
@ -53,6 +53,14 @@ that the \fBmaster\fR(8) daemon is not running.
Enable verbose logging for debugging purposes. This option
is passed on to child processes. Multiple \fB-v\fR options
make the software increasingly verbose.
.IP \fB-w\fR
Wait in a dummy foreground process, while the real master
daemon initializes in a background process. The dummy
foreground process returns a zero exit status only if the
master daemon initialization is successful, and if it
completes in a reasonable amount of time.
.sp
This feature is available in Postfix 2.10 and later.
.PP
Signals:
.IP \fBSIGHUP\fR
@ -73,7 +81,9 @@ processes to finish what they are doing.
.SH DIAGNOSTICS
.ad
.fi
Problems are reported to \fBsyslogd\fR(8).
Problems are reported to \fBsyslogd\fR(8). The exit status
is non-zero in case of problems, including problems while
initializing as a master daemon process in the background.
.SH "ENVIRONMENT"
.na
.nf

View File

@ -1,4 +1,4 @@
.\" $NetBSD: oqmgr.8,v 1.1.1.3 2011/03/02 19:31:54 tron Exp $
.\" $NetBSD: oqmgr.8,v 1.1.1.4 2013/09/25 19:06:25 tron Exp $
.\"
.TH OQMGR 8
.ad
@ -203,7 +203,7 @@ clogging up the Postfix active queue.
The maximal number of messages in the active queue.
.IP "\fBqmgr_message_recipient_limit (20000)\fR"
The maximal number of recipients held in memory by the Postfix
queue manager, and the maximal size of the size of the short-term,
queue manager, and the maximal size of the short-term,
in-memory "dead" destination status cache.
.SH "DELIVERY CONCURRENCY CONTROLS"
.na
@ -285,8 +285,8 @@ undeliverable.
Available in Postfix version 2.5 and later:
.IP "\fBdefault_destination_rate_delay (0s)\fR"
The default amount of delay that is inserted between individual
deliveries to the same destination; with per-destination recipient
limit > 1, a destination is a domain, otherwise it is a recipient.
deliveries to the same destination; the resulting behavior depends
on the value of the corresponding per-destination recipient limit.
.IP "\fItransport\fB_destination_rate_delay $default_destination_rate_delay
Idem, for delivery via the named message \fItransport\fR.
.SH "SAFETY CONTROLS"

View File

@ -1,4 +1,4 @@
.\" $NetBSD: postscreen.8,v 1.1.1.2 2013/01/02 18:58:46 tron Exp $
.\" $NetBSD: postscreen.8,v 1.1.1.3 2013/09/25 19:06:25 tron Exp $
.\"
.TH POSTSCREEN 8
.ad
@ -14,19 +14,22 @@ Postfix zombie blocker
.SH DESCRIPTION
.ad
.fi
The Postfix \fBpostscreen\fR(8) server performs triage on
multiple inbound SMTP connections at the same time. While
a single \fBpostscreen\fR(8) process keeps spambots away
from Postfix SMTP server processes, more Postfix SMTP server
processes remain available for legitimate clients.
The Postfix \fBpostscreen\fR(8) server provides additional
protection against mail server overload. One \fBpostscreen\fR(8)
process handles multiple inbound SMTP connections, and decides
which clients may talk to a Postfix SMTP server process.
By keeping spambots away, \fBpostscreen\fR(8) leaves more
SMTP server processes available for legitimate clients, and
delays the onset of server overload conditions.
This program should not be used on SMTP ports that receive
mail from end-user clients (MUAs). In a typical deployment,
\fBpostscreen\fR(8) is used on the "port 25" service, while
MUA clients submit mail via the \fBsubmission\fR service,
or via a "port 25" server that provides no MX service (i.e.
a dedicated server that provides \fBsubmission\fR service
on port 25).
\fBpostscreen\fR(8) handles the MX service on TCP port 25,
while MUA clients submit mail via the \fBsubmission\fR
service on TCP port 587 which requires client authentication.
Alternatively, a site could set up a dedicated, non-postscreen,
"port 25" server that provides \fBsubmission\fR service and
client authentication, but no MX service.
\fBpostscreen\fR(8) maintains a temporary whitelist for
clients that have passed a number of tests. When an SMTP
@ -84,8 +87,7 @@ Problems and transactions are logged to \fBsyslogd\fR(8).
The \fBpostscreen\fR(8) built-in SMTP protocol engine
currently does not announce support for AUTH, XCLIENT or
XFORWARD.
Support for AUTH may be added in the future.
In the mean time, if you need to make these services available
If you need to make these services available
on port 25, then do not enable the optional "after 220
server greeting" tests, and do not use DNSBLs that reject
traffic from dial-up and residential networks.
@ -93,15 +95,16 @@ traffic from dial-up and residential networks.
The optional "after 220 server greeting" tests involve
\fBpostscreen\fR(8)'s built-in SMTP protocol engine. When
these tests succeed, \fBpostscreen\fR(8) adds the client
to the temporary whitelist but it cannot not hand off the
to the temporary whitelist, but it cannot not hand off the
"live" connection to a Postfix SMTP server process in the
middle of a session. Instead, \fBpostscreen\fR(8) defers
attempts to deliver mail with a 4XX status, and waits for
the client to disconnect. The next time a good client
connects, it will be allowed to talk to a Postfix SMTP
server process to deliver mail. \fBpostscreen\fR(8) mitigates
the impact of this limitation by giving such tests a long
expiration time.
the client to disconnect. When the client connects again,
\fBpostscreen\fR(8) will allow the client to talk to a
Postfix SMTP server process (provided that the whitelist
status has not expired). \fBpostscreen\fR(8) mitigates
the impact of this limitation by giving the "after 220
server greeting" tests a long expiration time.
.SH "CONFIGURATION PARAMETERS"
.na
.nf
@ -153,6 +156,18 @@ response.
.IP "\fBsoft_bounce (no)\fR"
Safety net to keep mail queued that would otherwise be returned to
the sender.
.SH "BEFORE-POSTSCREEN PROXY AGENT"
.na
.nf
.ad
.fi
Available in Postfix version 2.10 and later:
.IP "\fBpostscreen_upstream_proxy_protocol (empty)\fR"
The name of the proxy protocol used by an optional before-postscreen
proxy agent.
.IP "\fBpostscreen_upstream_proxy_timeout (5s)\fR"
The time limit for the proxy protocol specified with the
postscreen_upstream_proxy_protocol parameter.
.SH "PERMANENT WHITE/BLACKLIST TEST"
.na
.nf
@ -172,14 +187,13 @@ permanently blacklisted with the postscreen_access_list parameter.
.nf
.ad
.fi
When a remote SMTP client is not on the permanent access
list, \fBpostscreen\fR(8) can implement a number of whitelist
tests before it grants the client a temporary whitelist
status to talk to a Postfix SMTP server process.
By listening on both primary and backup MX addresses,
\fBpostscreen\fR(8) can deny the temporary whitelist status
to clients that connect only to backup MX hosts.
When \fBpostscreen\fR(8) is configured to monitor all primary
and backup MX addresses, it can refuse to whitelist clients
that connect to a backup MX address only. For small sites,
this requires configuring primary and backup MX addresses
on the same MTA. Larger sites would have to share the
\fBpostscreen\fR(8) cache between primary and backup MTAs,
which would introduce a common point of failure.
.IP "\fBpostscreen_whitelist_interfaces (static:all)\fR"
A list of local \fBpostscreen\fR(8) server IP addresses where a
non-whitelisted remote SMTP client can obtain \fBpostscreen\fR(8)'s temporary

View File

@ -1,4 +1,4 @@
.\" $NetBSD: proxymap.8,v 1.1.1.2 2013/01/02 18:58:46 tron Exp $
.\" $NetBSD: proxymap.8,v 1.1.1.3 2013/09/25 19:06:25 tron Exp $
.\"
.TH PROXYMAP 8
.ad
@ -119,7 +119,7 @@ However, running the proxymap server chrooted severely limits
usability, because it can open only chrooted tables.
The \fBproxymap\fR(8) server is not a trusted daemon process, and must
not be used to look up sensitive information such as user or
not be used to look up sensitive information such as UNIX user or
group IDs, mailbox file/directory names or external commands.
In Postfix version 2.2 and later, the proxymap client recognizes

View File

@ -1,4 +1,4 @@
.\" $NetBSD: qmgr.8,v 1.1.1.3 2011/03/02 19:31:55 tron Exp $
.\" $NetBSD: qmgr.8,v 1.1.1.4 2013/09/25 19:06:25 tron Exp $
.\"
.TH QMGR 8
.ad
@ -207,7 +207,7 @@ clogging up the Postfix active queue.
The maximal number of messages in the active queue.
.IP "\fBqmgr_message_recipient_limit (20000)\fR"
The maximal number of recipients held in memory by the Postfix
queue manager, and the maximal size of the size of the short-term,
queue manager, and the maximal size of the short-term,
in-memory "dead" destination status cache.
.IP "\fBqmgr_message_recipient_minimum (10)\fR"
The minimal number of in-memory recipients for any message.
@ -333,8 +333,8 @@ undeliverable.
Available in Postfix version 2.5 and later:
.IP "\fBdefault_destination_rate_delay (0s)\fR"
The default amount of delay that is inserted between individual
deliveries to the same destination; with per-destination recipient
limit > 1, a destination is a domain, otherwise it is a recipient.
deliveries to the same destination; the resulting behavior depends
on the value of the corresponding per-destination recipient limit.
.IP "\fItransport\fB_destination_rate_delay $default_destination_rate_delay
Idem, for delivery via the named message \fItransport\fR.
.SH "SAFETY CONTROLS"

View File

@ -1,4 +1,4 @@
.\" $NetBSD: smtp.8,v 1.1.1.5 2013/01/02 18:58:47 tron Exp $
.\" $NetBSD: smtp.8,v 1.1.1.6 2013/09/25 19:06:26 tron Exp $
.\"
.TH SMTP 8
.ad
@ -111,6 +111,7 @@ RFC 3207 (STARTTLS command)
RFC 3461 (SMTP DSN Extension)
RFC 3463 (Enhanced Status Codes)
RFC 4954 (AUTH command)
RFC 5321 (SMTP protocol)
.SH DIAGNOSTICS
.ad
.fi
@ -187,7 +188,7 @@ per-destination workarounds for CISCO PIX firewall bugs.
.IP "\fBsmtp_quote_rfc821_envelope (yes)\fR"
Quote addresses in Postfix SMTP client MAIL FROM and RCPT TO commands
as required
by RFC 2821.
by RFC 5321.
.IP "\fBsmtp_reply_filter (empty)\fR"
A mechanism to transform replies from remote SMTP servers one
line at a time.

View File

@ -1,4 +1,4 @@
.\" $NetBSD: smtpd.8,v 1.1.1.5 2013/01/02 18:58:47 tron Exp $
.\" $NetBSD: smtpd.8,v 1.1.1.6 2013/09/25 19:06:26 tron Exp $
.\"
.TH SMTPD 8
.ad
@ -64,6 +64,7 @@ RFC 3463 (Enhanced status codes)
RFC 3848 (ESMTP transmission types)
RFC 4409 (Message submission)
RFC 4954 (AUTH command)
RFC 5321 (SMTP protocol)
.SH DIAGNOSTICS
.ad
.fi
@ -174,6 +175,18 @@ $mydomain; either don't rewrite message headers from other clients
at all, or rewrite message headers and update incomplete addresses
with the domain specified in the remote_header_rewrite_domain
parameter.
.SH "BEFORE-SMTPD PROXY AGENT"
.na
.nf
.ad
.fi
Available in Postfix version 2.10 and later:
.IP "\fBsmtpd_upstream_proxy_protocol (empty)\fR"
The name of the proxy protocol used by an optional before-smtpd
proxy agent.
.IP "\fBsmtpd_upstream_proxy_timeout (5s)\fR"
The time limit for the proxy protocol specified with the
smtpd_upstream_proxy_protocol parameter.
.SH "AFTER QUEUE EXTERNAL CONTENT INSPECTION CONTROLS"
.na
.nf
@ -554,6 +567,11 @@ the sender.
Available in Postfix version 2.1 and later:
.IP "\fBsmtpd_authorized_xclient_hosts (empty)\fR"
What remote SMTP clients are allowed to use the XCLIENT feature.
.PP
Available in Postfix version 2.10 and later:
.IP "\fBsmtpd_log_access_permit_actions (empty)\fR"
Enable logging of the named "permit" actions in SMTP server
access lists.
.SH "KNOWN VERSUS UNKNOWN RECIPIENT CONTROLS"
.na
.nf
@ -762,24 +780,24 @@ evaluating $smtpd_client_restrictions and $smtpd_helo_restrictions.
What Postfix features match subdomains of "domain.tld" automatically,
instead of requiring an explicit ".domain.tld" pattern.
.IP "\fBsmtpd_client_restrictions (empty)\fR"
Optional Postfix SMTP server access restrictions in the context of
a remote SMTP client connection request.
Optional restrictions that the Postfix SMTP server applies in the
context of a client connection request.
.IP "\fBsmtpd_helo_required (no)\fR"
Require that a remote SMTP client introduces itself with the HELO
or EHLO command before sending the MAIL command or other commands
that require EHLO negotiation.
.IP "\fBsmtpd_helo_restrictions (empty)\fR"
Optional restrictions that the Postfix SMTP server applies in the
context of the SMTP HELO command.
context of a client HELO command.
.IP "\fBsmtpd_sender_restrictions (empty)\fR"
Optional restrictions that the Postfix SMTP server applies in the
context of the MAIL FROM command.
.IP "\fBsmtpd_recipient_restrictions (permit_mynetworks, reject_unauth_destination)\fR"
The access restrictions that the Postfix SMTP server applies in
the context of the RCPT TO command.
context of a client MAIL FROM command.
.IP "\fBsmtpd_recipient_restrictions (see 'postconf -d' output)\fR"
Optional restrictions that the Postfix SMTP server applies in the
context of a client RCPT TO command, after smtpd_relay_restrictions.
.IP "\fBsmtpd_etrn_restrictions (empty)\fR"
Optional SMTP server access restrictions in the context of a client
ETRN request.
Optional restrictions that the Postfix SMTP server applies in the
context of a client ETRN command.
.IP "\fBallow_untrusted_routing (no)\fR"
Forward mail with sender-specified routing (user[@%!]remote[@%!]site)
from untrusted clients to destinations matching $relay_domains.
@ -814,6 +832,12 @@ Available in Postfix version 2.2 and later:
.IP "\fBsmtpd_end_of_data_restrictions (empty)\fR"
Optional access restrictions that the Postfix SMTP server
applies in the context of the SMTP END-OF-DATA command.
.PP
Available in Postfix version 2.10 and later:
.IP "\fBsmtpd_relay_restrictions (permit_mynetworks, reject_unauth_destination)\fR"
Access restrictions for mail relay control that the Postfix
SMTP server applies in the context of the RCPT TO command, before
smtpd_recipient_restrictions.
.SH "SENDER AND RECIPIENT ADDRESS VERIFICATION CONTROLS"
.na
.nf

View File

@ -1,4 +1,4 @@
.\" $NetBSD: tlsproxy.8,v 1.1.1.2 2013/01/02 18:58:47 tron Exp $
.\" $NetBSD: tlsproxy.8,v 1.1.1.3 2013/09/25 19:06:26 tron Exp $
.\"
.TH TLSPROXY 8
.ad
@ -16,7 +16,8 @@ Postfix TLS proxy
.fi
The \fBtlsproxy\fR(8) server implements a server-side TLS
proxy. It is used by \fBpostscreen\fR(8) to talk SMTP-over-TLS
with remote SMTP clients whose whitelist status has expired,
with remote SMTP clients that are not whitelisted (including
clients whose whitelist status has expired),
but it should also work for non-SMTP protocols.
Although one \fBtlsproxy\fR(8) process can serve multiple
@ -33,7 +34,8 @@ the \fBtlsproxy\fR(8) server is agnostic of the application
protocol, and the example is easily adapted to other
applications.
The \fBpostscreen\fR(8) server sends the remote SMTP client
After receiving a valid remote SMTP client STARTTLS command,
the \fBpostscreen\fR(8) server sends the remote SMTP client
endpoint string, the requested role (server), and the
requested timeout to \fBtlsproxy\fR(8). \fBpostscreen\fR(8)
then receives a "TLS available" indication from \fBtlsproxy\fR(8).

View File

@ -60,10 +60,10 @@ while(<>) {
$block =~ s/<ul>/\n/g;
#$block =~ s/<\/dl>/\n.PP\n/g;
#$block =~ s/<\/ul>/\n.PP\n/g;
$block =~ s/<\/dl>/\n/g;
$block =~ s/<\/ul>/\n/g;
$block =~ s/<\/dl>/\n.br\n/g;
$block =~ s/<\/ul>/\n.br\n/g;
$block =~ s/<dd>\s*/\n/g;
$block =~ s/<\/dd>/\n/g;
$block =~ s/<\/dd>/\n.br\n/g;
$block =~ s/<li>\s*/\n.IP \\(bu\n/g;
$block =~ s/<dt>\s*/\n.IP "/g;
$block =~ s/\s*<\/dt>/"/g;

View File

@ -483,6 +483,7 @@ while (<>) {
s;\bsmtp_skip_5xx_greeting\b;<a href="postconf.5.html#smtp_skip_5xx_greeting">$&</a>;g;
s;\bsmtp_skip_quit_response\b;<a href="postconf.5.html#smtp_skip_quit_response">$&</a>;g;
s;\bsmtp_xforward_timeout\b;<a href="postconf.5.html#smtp_xforward_timeout">$&</a>;g;
s;\bsmtpd_log_access_permit_actions\b;<a href="postconf.5.html#smtpd_log_access_permit_actions">$&</a>;g;
s;\bsmtpd_autho[-</bB>]*\n*[ <bB>]*rized_verp_clients\b;<a href="postconf.5.html#smtpd_authorized_verp_clients">$&</a>;g;
s;\bsmtpd_autho[-</bB>]*\n*[ <bB>]*rized_xclient_hosts\b;<a href="postconf.5.html#smtpd_authorized_xclient_hosts">$&</a>;g;
s;\bsmtpd_autho[-</bB>]*\n*[ <bB>]*rized_xforward_hosts\b;<a href="postconf.5.html#smtpd_authorized_xforward_hosts">$&</a>;g;
@ -524,7 +525,8 @@ while (<>) {
s;\bsmtpd_proxy_timeout\b;<a href="postconf.5.html#smtpd_proxy_timeout">$&</a>;g;
s;\bsmtpd_proxy_options\b;<a href="postconf.5.html#smtpd_proxy_options">$&</a>;g;
s;\bsmtpd_recip[-</bB>]*\n* *[<bB>]*ient_limit\b;<a href="postconf.5.html#smtpd_recipient_limit">$&</a>;g;
s;\bsmtpd_recip[-</bB>]*\n* *[<bB>]*ient_restrictions\b;<a href="postconf.5.html#smtpd_recipient_restrictions">$&</a>;g;
s;\bsmtpd_recip[-</bB>]*\n* *[<bB>]*ient_restric[-</bB>]*\n* *[<bB>]*tions\b;<a href="postconf.5.html#smtpd_recipient_restrictions">$&</a>;g;
s;\bsmtpd_relay_restrictions\b;<a href="postconf.5.html#smtpd_relay_restrictions">$&</a>;g;
s;\bsmtpd_reject_unlisted_recip[-</bB>]*\n* *[<bB>]*ient\b;<a href="postconf.5.html#smtpd_reject_unlisted_recipient">$&</a>;g;
s;\bsmtpd_reject_unlisted_sender\b;<a href="postconf.5.html#smtpd_reject_unlisted_sender">$&</a>;g;
s;\bsmtpd_restriction_classes\b;<a href="postconf.5.html#smtpd_restriction_classes">$&</a>;g;
@ -672,6 +674,8 @@ while (<>) {
s;\bsmtpd_use_tls\b;<a href="postconf.5.html#smtpd_use_tls">$&</a>;g;
s;\bsmtpd_reject_footer\b;<a href="postconf.5.html#smtpd_reject_footer">$&</a>;g;
s;\bsmtpd_per_record_deadline\b;<a href="postconf.5.html#smtpd_per_record_deadline">$&</a>;g;
s;\bsmtpd_upstream_proxy_protocol\b;<a href="postconf.5.html#smtpd_upstream_proxy_protocol">$&</a>;g;
s;\bsmtpd_upstream_proxy_timeout\b;<a href="postconf.5.html#smtpd_upstream_proxy_timeout">$&</a>;g;
s;\btls_daemon_random_bytes\b;<a href="postconf.5.html#tls_daemon_random_bytes">$&</a>;g;
s;\btls_daemon_random_source\b;<a href="postconf.5.html#tls_daemon_random_source">$&</a>;g;
s;\btls_ran[-</Bb>]*\n* *[<Bb>]*dom_bytes\b;<a href="postconf.5.html#tls_random_bytes">$&</a>;g;
@ -837,7 +841,7 @@ while (<>) {
s;\bcheck_reverse_client_hostname_ns_access\b;<a href="postconf.5.html#check_reverse_client_hostname_ns_access">$&</a>;g;
s;\bpermit_inet_interfaces\b;<a href="postconf.5.html#permit_inet_interfaces">$&</a>;g;
s;\bpermit_mynetworks\b;<a href="postconf.5.html#permit_mynetworks">$&</a>;g;
s;\bpermit_sasl_authenticated\b;<a href="postconf.5.html#permit_sasl_authenticated">$&</a>;g;
s;\bper[-</bB>]*\n* *[<bB>]*mit_sasl_authenticated\b;<a href="postconf.5.html#permit_sasl_authenticated">$&</a>;g;
s;\bpermit_tls_clientcerts\b;<a href="postconf.5.html#permit_tls_clientcerts">$&</a>;g;
s;\bpermit_tls_all_clientcerts\b;<a href="postconf.5.html#permit_tls_all_clientcerts">$&</a>;g;
s;\breject_unknown_client_hostname\b;<a href="postconf.5.html#reject_unknown_client_hostname">$&</a>;g;
@ -887,6 +891,7 @@ while (<>) {
s;\breject_non_fqdn_recip[-</bB>]*\n* *[<bB>]*ient\b;<a href="postconf.5.html#reject_non_fqdn_recipient">$&</a>;g;
s;\breject_rhsbl_recip[-</bB>]*\n* *[<bB>]*ient\b;<a href="postconf.5.html#reject_rhsbl_recipient">$&</a>;g;
s;\breject_unauth_destination\b;<a href="postconf.5.html#reject_unauth_destination">$&</a>;g;
s;\bdefer_unauth_destination\b;<a href="postconf.5.html#defer_unauth_destination">$&</a>;g;
s;\breject_unknown_recipi[-</bB>]*\n*[ <bB>]*ent_domain\b;<a href="postconf.5.html#reject_unknown_recipient_domain">$&</a>;g;
s;\breject_unlisted_recip[-</bB>]*\n* *[<bB>]*ient\b;<a href="postconf.5.html#reject_unlisted_recipient">$&</a>;g;
s;\breject_unver[-</bB>]*\n*[ <bB>]*ified_recip[-</bB>]*\n* *[<bB>]*ient\b;<a href="postconf.5.html#reject_unverified_recipient">$&</a>;g;
@ -969,6 +974,8 @@ while (<>) {
s;\bpostscreen_reject_footer\b;<a href="postconf.5.html#postscreen_reject_footer">$&</a>;g;
s;\bpostscreen_command_filter\b;<a href="postconf.5.html#postscreen_command_filter">$&</a>;g;
s;\bpostscreen_whitelist_interfaces\b;<a href="postconf.5.html#postscreen_whitelist_interfaces">$&</a>;g;
s;\bpostscreen_upstream_proxy_protocol\b;<a href="postconf.5.html#postscreen_upstream_proxy_protocol">$&</a>;g;
s;\bpostscreen_upstream_proxy_timeout\b;<a href="postconf.5.html#postscreen_upstream_proxy_timeout">$&</a>;g;
s;\btlsproxy_watchdog_timeout\b;<a href="postconf.5.html#tlsproxy_watchdog_timeout">$&</a>;g;
s;\btlsproxy_enforce_tls\b;<a href="postconf.5.html#tlsproxy_enforce_tls">$&</a>;g;

View File

@ -370,6 +370,15 @@ created with the postmap(1) or postalias(1) command. The lookup
table name as used in "sdbm:table" is the database file name without
the ".dir" or ".pag" suffix. </dd>
<dt> <b>socketmap</b> (read-only) </dt>
<dd> Query a Sendmail-style socketmap server. The name of the table
specifies <b>inet</b>:<i>host</i>:<i>port</i>:<i>socketmap-name</i>
for a TCP-based server, or
<b>unix</b>:<i>pathname</i>:<i>socketmap-name</i> for a UNIX-domain
server. In both cases <i>socketmap-name</i> is the name of the
socketmap. </dd>
<dt> <b>sqlite</b> (read-only) </dt>
<dd> Perform SQLite database lookups. Configuration details are given

View File

@ -218,24 +218,24 @@ document for an introduction to the Postfix architecture. </p>
<td colspan="2"> </td>
<td bgcolor="#f0f0ff" align="center" valign="middle">
<a href="QSHAPE_README.html#maildrop_queue"> maildrop <br>
queue </a> </td>
<td bgcolor="#f0f0ff" align="center" valign="middle">
<a href="QSHAPE_README.html#maildrop_queue"> maildrop <br>
queue </a> </td>
<td align="center" valign="middle"> <tt> &lt;- </tt> </td>
<td bgcolor="#f0f0ff" align="center" valign="middle">Postfix<br>
postdrop(1) </td>
<td bgcolor="#f0f0ff" align="center" valign="middle">Postfix<br>
postdrop(1) </td>
<td align="center" valign="middle"> <tt> &lt;- </tt> </td>
<td bgcolor="#f0f0ff" align="center" valign="middle">Postfix<br>
sendmail(1) </td>
<td bgcolor="#f0f0ff" align="center" valign="middle">Postfix<br>
sendmail(1) </td>
<td align="center" valign="middle"> <tt> &lt;- </tt> </td>
<td bgcolor="#f0f0ff" align="center" valign="middle">Content
<br> filter </td>
<td bgcolor="#f0f0ff" align="center" valign="middle">Content
<br> filter </td>
<td colspan="2"> </td>
@ -750,6 +750,8 @@ that injects mail back into Postfix. </p>
-o smtpd_helo_restrictions=
-o smtpd_client_restrictions=
-o smtpd_sender_restrictions=
# Postfix 2.10 and later: specify empty smtpd_relay_restrictions.
-o smtpd_relay_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks=127.0.0.0/8
-o smtpd_authorized_xforward_hosts=127.0.0.0/8

View File

@ -204,12 +204,13 @@ confused with a "<i>type:table</i>" pattern. </b> </p>
<ul>
<li> <p> The order of IPv6/IPv4 outgoing connection attempts is
not yet configurable. Currently, IPv6 is tried before IPv4. </p>
<li> <p> Postfix SMTP clients before version 2.8 try to connect
over IPv6 before trying IPv4. With more recent Postfix versions,
the order of IPv6 versus IPv4 outgoing connection attempts is
configurable with the smtp_address_preference parameter. </p>
<li> <p> Postfix currently does not support DNSBL (real-time
blackhole list) lookups for IPv6 client IP addresses; currently
there are no blacklists that cover the IPv6 address space. </p>
<li> <p> Postfix versions before 2.6 do not support DNSBL (real-time
blackhole list) lookups for IPv6 client IP addresses. </p>
<li> <p> IPv6 does not have class A, B, C, etc. networks. With IPv6
networks, the setting "mynetworks_style = class" has the

View File

@ -17,6 +17,34 @@
<hr>
<h2> Host lookup issues </h2>
<p> By default Linux /etc/hosts lookups do not support multiple IP
address per hostname. This causes warnings from the Postfix SMTP
server that "hostname XXX does not resolve to address YYY", and is
especially a problem with hosts that have both IPv4 and IPv6
addresses. To fix, turn on support for multiple IP addresses: </p>
<blockquote>
<pre>
/etc/host.conf:
...
# We have machines with multiple IP addresses.
multi on
...
</pre>
</blockquote>
<p> Alternatively, specify the RESOLV_MULTI environment variable
in main.cf: </p>
<blockquote>
<pre>
/etc/postfix/main.cf:
import_environment = MAIL_CONFIG MAIL_DEBUG MAIL_LOGTAG TZ XAUTHORITY DISPLAY LANG=C RESOLV_MULTI=on
</pre>
</blockquote>
<h2>Berkeley DB issues</h2>
<p> If you can't compile Postfix because the file "db.h"

View File

@ -374,6 +374,8 @@ post-filter re-injection SMTP service. Typical additions include: </p>
# With multiple instances, rarely need "-o param=value" overrides
# in master.cf, each instance gets its own main.cf file.
#
# Postfix 2.10 and later: specify empty smtpd_relay_restrictions.
smtpd_relay_restrictions =
smtpd_recipient_restrictions = permit_mynetworks, reject
# Tolerate occasional high latency in the content filter.

View File

@ -17,25 +17,30 @@
<h2> <a name="intro">Introduction</a> </h2>
<p> The Postfix postscreen(8) server performs triage on multiple
inbound SMTP connections at the same time. While a single postscreen(8)
process keeps zombies away from Postfix SMTP server processes, more
Postfix SMTP server processes remain available for legitimate
clients. </p>
<p> This document describes features that are available in Postfix
2.8 and later. </p>
<p> The Postfix postscreen(8) daemon provides additional protection
against mail server overload. One postscreen(8) process handles
multiple inbound SMTP connections, and decides which clients may
talk to a Postfix SMTP server process. By keeping spambots away,
postscreen(8) leaves more SMTP server processes available for
legitimate clients, and delays the onset of <a
href="STRESS_README.html">server overload</a> conditions. </p>
<p> postscreen(8) should not be used on SMTP ports that receive
mail from end-user clients (MUAs). In a typical deployment,
postscreen(8) handles the MX service on TCP port 25, while MUA
clients submit mail via the submission service on TCP port 587 which
requires client authentication. Alternatively, a site could set up
a dedicated, non-postscreen, "port 25" server that provides submission
service and client authentication, but no MX service. </p>
<p> postscreen(8) maintains a temporary whitelist for clients that
pass its tests; by allowing whitelisted clients to skip tests,
postscreen(8) minimizes its impact on legitimate email traffic.
</p>
<p> postscreen(8) should not be used on SMTP ports that receive
mail from end-user clients (MUAs). In a typical deployment,
postscreen(8) is used on the "port 25" service, while MUA clients
submit mail via the submission service (port 587) which normally
requires client authentication, or via a "port 25" server that
provides no MX service (i.e. a dedicated server that provides
submission service on port 25). </p>
<p> postscreen(8) is part of a multi-layer defense. <p>
<ul>
@ -43,11 +48,12 @@ submission service on port 25). </p>
<li> <p> As the first layer, postscreen(8) blocks connections from
zombies and other spambots that are responsible for about 90% of
all spam. It is implemented as a single process to make this defense
as cheap as possible. </p>
as inexpensive as possible. </p>
<li> <p> The second layer implements more complex SMTP-level access
checks with Postfix SMTP servers, policy daemons, and Milter
applications. </p>
checks with <a href="SMTPD_ACCESS_README.html">Postfix SMTP servers</a>,
<a href="SMTPD_POLICY_README.html">policy daemons</a>, and
<a href="MILTER_README.html">Milter applications</a>. </p>
<li> <p> The third layer performs light-weight content inspection
with the Postfix built-in header_checks and body_checks. This can
@ -55,8 +61,10 @@ block unacceptable attachments such as executable programs, and
worms or viruses with easy-to-recognize signatures. </p>
<li> <p> The fourth layer provides heavy-weight content inspection
with external content filters. Typical examples are Amavisd-new,
SpamAssassin, and Milter applications. </p>
with external content filters. Typical examples are <a
href="http://www.ijs.si/software/amavisd/">Amavisd-new</a>, <a
href="http://spamassassin.apache.org/">SpamAssassin</a>, and <a
href="MILTER_README.html">Milter applications</a>. </p>
</ul>
@ -127,7 +135,8 @@ and that is the problem that postscreen(8) is focused on. </p>
<h2> <a name="general"> General operation </a> </h2>
<p> The postscreen(8) triage process involves a number of tests,
<p> For each connection from an SMTP client, postscreen(8) performs
a number of tests
in the order as described below. Some tests introduce a delay of
a few seconds. postscreen(8) maintains a temporary whitelist for
clients that pass its tests; by allowing whitelisted clients to
@ -218,15 +227,24 @@ specifies the location of the temporary whitelist. The
temporary whitelist is not used for SMTP client addresses
that appear on the <i>permanent</i> access list. </p>
<blockquote> <p> NOTE: To share a postscreen(8) cache between
multiple postscreen(8) instances, use "<tt>postscreen_cache_map =
proxy:btree:$data_directory/postscreen_cache</tt>", and disable
cache cleanup (postscreen_cache_cleanup_interval = 0) in all
postscreen(8) instances except one that is responsible for cache
cleanup. </p> <p> postscreen(8) cache sharing requires Postfix 2.9
or later; earlier proxymap(8) implementations don't support cache
cleanup. </p> <p> For an alternative postscreen(8) cache sharing
approach see the memcache_table(5) manpage. </p> </blockquote>
<blockquote>
<p> NOTE: To share a postscreen(8) cache between multiple
postscreen(8) instances under the same master(8) daemon, use
"<tt>postscreen_cache_map =
proxy:btree:$data_directory/postscreen_cache</tt>", and disable
cache cleanup (postscreen_cache_cleanup_interval = 0) in all
postscreen(8) instances except one that is responsible for cache
cleanup. </p>
<p> postscreen(8) cache sharing requires Postfix 2.9 or later;
earlier proxymap(8) implementations don't support cache cleanup.
</p>
<p> For an alternative postscreen(8) cache sharing approach,
see the memcache_table(5) manpage. </p>
</blockquote>
<p> When the SMTP client address appears on the temporary
whitelist, postscreen(8) logs this with the client address and port
@ -249,12 +267,17 @@ or temporary whitelist, postscreen(8) can implement a number of
whitelist tests, before it grants the client a temporary whitelist
status that allows it to talk to a Postfix SMTP server process. </p>
<p> By listening on both primary and backup MX addresses, postscreen(8)
can deny the temporary whitelist status to clients that connect
only to backup MX hosts (an old spammer trick to take advantage of
backup MX hosts with weaker anti-spam policies than primary MX
<p> When postscreen(8) is configured to monitor all primary and
backup MX addresses, it can refuse to whitelist clients that connect
to a backup MX address only (an old spammer trick to take advantage
of backup MX hosts with weaker anti-spam policies than primary MX
hosts). </p>
<blockquote> <p> NOTE: The following solution is for small sites.
Larger sites would have to share the postscreen(8) cache between
primary and backup MTAs, which would introduce a common point of
failure. </p> </blockquote>
<ul>
<li> <p> First, configure the host to listen on both primary and
@ -262,6 +285,10 @@ backup MX addresses. Use the appropriate <tt>ifconfig</tt> command
for the local operating system, or update the appropriate configuration
files and "refresh" the network protocol stack. </p>
<p> <p> Second, configure Postfix to listen on the new IP address
(this step is needed when you have specified inet_interfaces in
main.cf). </p>
<li> <p> Then, configure postscreen(8) to deny the temporary whitelist
status on the backup MX address(es). An example for Wietse's
server is: </p>
@ -538,12 +565,15 @@ logging more informative. </p>
as: </p>
<pre>
<b>NON-SMTP COMMAND from</b> <i>[address]:port command</i>
<b>NON-SMTP COMMAND from</b> <i>[address]:port</i> <b>after</b> <i>command: text</i>
</pre>
<p> Translation: the SMTP client at <i>[address]:port</i> sent a
<i>command</i> that matches the postscreen_forbidden_commands
parameter, or that has the syntax of a message header label. </p>
command that matches the postscreen_forbidden_commands
parameter, or that has the syntax of a message header label (text
followed by optional space and ":").
The "<tt><b>after</b> <i>command</i></tt>" portion is logged with
Postfix 2.10 and later. </p>
<p> The postscreen_non_smtp_command_action parameter specifies
the action that is taken next. See "<a href="#fail_after_220">When
@ -570,12 +600,14 @@ this as:
</p>
<pre>
<b>BARE NEWLINE from</b> <i>[address]:port</i>
<b>BARE NEWLINE from</b> <i>[address]:port</i> <b>after</b> <i>command</i>
</pre>
<p> Translation: the SMTP client at <i>[address]:port</i> sent a bare
newline character, that is newline not preceded by carriage
return. </p>
return.
The "<tt><b>after</b> <i>command</i></tt>" portion is logged with
Postfix 2.10 and later. </p>
<p> The postscreen_bare_newline_action parameter specifies the
action that is taken next. See "<a href="#fail_after_220">When
@ -652,29 +684,35 @@ This engine never accepts mail, therefore it has per-session limits
on the number of commands and on the session length. </p>
<pre>
<b>COMMAND TIME LIMIT</b> <b>from</b> <i>[address]:port</i>
<b>COMMAND TIME LIMIT</b> <b>from</b> <i>[address]:port</i> <b>after</b> <i>command</i>
</pre>
<p> Translation: the SMTP client at <i>[address]:port</i> reached the
per-command time limit as specified with the postscreen_command_time_limit
parameter. The session is terminated immediately. </p>
parameter. The session is terminated immediately.
The "<tt><b>after</b> <i>command</i></tt>" portion is logged with
Postfix 2.10 and later. </p>
<pre>
<b>COMMAND COUNT LIMIT from</b> <i>[address]:port</i>
<b>COMMAND COUNT LIMIT from</b> <i>[address]:port</i> <b>after</b> <i>command</i>
</pre>
<p> Translation: the SMTP client at <i>[address]:port</i> reached the
per-session command count limit as specified with the
postscreen_command_count_limit parameter. The session is terminated
immediately. </p>
immediately.
The "<tt><b>after</b> <i>command</i></tt>" portion is logged with
Postfix 2.10 and later. </p>
<pre>
<b>COMMAND LENGTH LIMIT from</b> <i>[address]:port</i>
<b>COMMAND LENGTH LIMIT from</b> <i>[address]:port</i> <b>after</b> <i>command</i>
</pre>
<p> Translation: the SMTP client at <i>[address]:port</i> reached the
per-command length limit, as specified with the line_length_limit
parameter. The session is terminated immediately. </p>
parameter. The session is terminated immediately.
The "<tt><b>after</b> <i>command</i></tt>" portion is logged with
Postfix 2.10 and later. </p>
<p> When an SMTP client makes too many connections at the same time,
or when all postscreen(8) ports are busy, postscreen(8) rejects the
@ -1044,6 +1082,15 @@ postscreen(8) usable for sites that require TLS support. The
implementation introduces the tlsproxy(8) event-driven TLS proxy
that decrypts/encrypts the sessions for multiple SMTP clients. </p>
<p> The tlsproxy(8) implementation led to the discovery of a "new"
class of vulnerability (<a
href="http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2011-0411"
>CVE-2011-0411</a>) that affected multiple implementations of SMTP,
POP, IMAP, NNTP, and FTP over TLS. </p>
<p> postscreen(8) was officially released as part of the Postfix
2.8 stable release in January 2011.</p>
</body>
</html>

View File

@ -48,13 +48,17 @@ care about these low-level details. </p>
permissive = permit
smtpd_recipient_restrictions =
permit_mynetworks
reject_unauth_destination
check_recipient_access hash:/etc/postfix/recipient_access
permit_mynetworks
# reject_unauth_destination is not needed here if the mail
# relay policy is specified with smtpd_relay_restrictions
# (available with Postfix 2.10 and later).
reject_unauth_destination
check_recipient_access hash:/etc/postfix/recipient_access
...
/etc/postfix/recipient_access:
joe@my.domain permissive
jane@my.domain restrictive
joe@my.domain permissive
jane@my.domain restrictive
</pre>
</blockquote>
@ -102,6 +106,7 @@ to IP spoofing. </p>
<pre>
/etc/postfix/main.cf:
smtpd_recipient_restrictions =
...
check_recipient_access hash:/etc/postfix/access
<i>...the usual stuff...</i>
@ -133,6 +138,7 @@ therefore is subject to SMTP sender spoofing. </p>
<pre>
/etc/postfix/main.cf:
smtpd_recipient_restrictions =
...
check_recipient_access hash:/etc/postfix/protected_destinations
<i>...the usual stuff...</i>
@ -193,6 +199,7 @@ with LDAP or SQL. </p>
<pre>
/etc/postfix/main.cf:
smtpd_recipient_restrictions =
...
check_sender_access hash:/etc/postfix/restricted_senders
<i>...other stuff...</i>

View File

@ -87,7 +87,7 @@ what envelope sender addresses the client may use. </p> </li>
<p> Successful authentication in the Postfix SMTP server requires
a functional SASL framework. Configuring SASL should therefore
always be the first step. </p>
always be the first step, before configuring Postfix. </p>
<p> You can read more about the following topics: </p>
@ -1367,20 +1367,33 @@ for. Examples of possible SMTP clients authorizations are: </p>
<h4><a name="server_sasl_authz_relay">Mail relay authorization</a></h4>
<p> The <code>permit_sasl_authenticated</code> restriction allows
<p> With <code>permit_sasl_authenticated</code> the Postfix SMTP
server can allow
SASL-authenticated SMTP clients to send mail to remote destinations.
Add it to the list of <code>smtpd_recipient_restrictions</code> as
follows: </p>
Examples:
</p>
<blockquote>
<pre>
# With Postfix 2.10 and later, the mail relay policy is
# preferably specified under smtpd_relay_restrictions.
/etc/postfix/main.cf:
smtpd_relay_restrictions =
permit_mynetworks
<strong>permit_sasl_authenticated</strong>
reject_unauth_destination
</pre>
<pre>
# Older configurations combine relay control and spam control under
# smtpd_recipient_restrictions. To use this example with Postfix &ge;
# 2.10 specify "smtpd_relay_restrictions=".
/etc/postfix/main.cf:
smtpd_recipient_restrictions =
...
permit_mynetworks
<strong>permit_sasl_authenticated</strong>
reject_unauth_destination
...
permit_mynetworks
<strong>permit_sasl_authenticated</strong>
reject_unauth_destination
...other rules...
</pre>
</blockquote>
@ -1406,9 +1419,7 @@ use a particular envelope sender address: </p>
smtpd_recipient_restrictions =
...
<strong>reject_sender_login_mismatch</strong>
permit_sasl_authenticated
permit_mynetworks
reject_unauth_destination
permit_sasl_authenticated
...
</pre>
</blockquote>
@ -1926,7 +1937,7 @@ font. </p>
</blockquote>
<p> Instead of port 25 (smtp), specify port 587 (submission) where
appriopriate. </p>
appropriate. </p>
<h4>Encrypted SMTP session (TLS)</h4>

View File

@ -60,10 +60,19 @@ http://www.mail-abuse.org/ and other websites. </p>
<p> By default, Postfix has a moderately restrictive approach to
mail relaying. Postfix forwards mail only from clients in trusted
networks, or to domains that are configured as authorized relay
destinations. For a description of the default policy, see the
smtpd_recipient_restrictions parameter in the postconf(5) manual
page, and the information that is referenced from there. </p>
networks, from clients that have authenticated with SASL, or to
domains that are configured as authorized relay
destinations. For a description of the default mail relay policy,
see the smtpd_relay_restrictions parameter in the postconf(5) manual
page, and the information that is referenced from there. </p>
<blockquote> <p> NOTE: Postfix versions before 2.10 did not have
smtpd_relay_restrictions. They combined the mail relay and spam
blocking policies, under smtpd_recipient_restrictions. This could
lead to unexpected results. For example, a permissive spam blocking
policy could unexpectedly result in a permissive mail relay policy.
An example of this is documented under "<a href="#danger">Dangerous
use of smtpd_recipient_restrictions</a>". </p> </blockquote>
<p> Most of the Postfix SMTP server access controls are targeted
at stopping junk email. </p>
@ -178,8 +187,23 @@ described in the postconf(5) manual page. </p>
# Don't accept mail from domains that don't exist.
smtpd_sender_restrictions = reject_unknown_sender_domain
# Whitelisting: local clients may specify any destination domain.
smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination
# Relay control (Postfix 2.10 and later): local clients and
# authenticated clients may specify any destination domain.
smtpd_relay_restrictions = permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination
# Spam control: exclude local clients and authenticated clients
# from DNSBL lookups.
smtpd_recipient_restrictions = permit_mynetworks,
permit_sasl_authenticated,
# reject_unauth_destination is not needed here if the mail
# relay policy is specified under smtpd_relay_restrictions
# (available with Postfix 2.10 and later).
reject_unauth_destination
reject_rbl_client zen.spamhaus.org,
reject_rhsbl_helo dbl.spamhaus.org,
reject_rhsbl_sender dbl.spamhaus.org
# Block clients that speak too early.
smtpd_data_restrictions = reject_unauth_pipelining
@ -205,28 +229,47 @@ DEFER result. </p>
<table border="1">
<tr> <th> Restriction list name </th> <th> Status </th> <th> Effect
<tr> <th> Restriction list name </th> <th> Version </th> <th> Status
</th> <th> Effect
of REJECT or DEFER result </th> </tr>
<tr> <td> smtpd_client_restrictions </td> <td> Optional </td> <td>
<tr> <td> smtpd_client_restrictions </td> <td> All </td> <td>
Optional </td> <td>
Reject all client commands </td> </tr>
<tr> <td> smtpd_helo_restrictions </td> <td> Optional </td> <td>
<tr> <td> smtpd_helo_restrictions </td> <td> All </td> <td> Optional
</td> <td>
Reject HELO/EHLO information </td> </tr>
<tr> <td> smtpd_sender_restrictions </td> <td> Optional </td> <td>
<tr> <td> smtpd_sender_restrictions </td> <td> All </td> <td>
Optional </td> <td>
Reject MAIL FROM information </td> </tr>
<tr> <td> smtpd_recipient_restrictions </td> <td> Required </td>
<td> Reject RCPT TO information </td> </tr>
<tr> <td rowspan="2"> smtpd_relay_restrictions </td> <td> &ge; 2.10
</td> <td> Required if smtpd_recipient_restrictions does not enforce
relay policy</td>
<td rowspan="2"> Reject RCPT TO information </td> </tr>
<tr> <td> smtpd_data_restrictions </td> <td> Optional </td> <td>
<tr> <td> &lt 2.10</td> <td> Not available </td>
</tr>
<tr> <td rowspan="2"> smtpd_recipient_restrictions </td> <td> &ge;
2.10 </td> <td> Required if smtpd_relay_restrictions does not enforce
relay policy</td>
<td rowspan="2"> Reject RCPT TO information </td> </tr>
<tr> <td> &lt 2.10</td> <td> Required </td> </tr>
<tr> <td> smtpd_data_restrictions </td> <td> &ge; 2.0 </td> <td>
Optional </td> <td>
Reject DATA command </td> </tr>
<tr> <td> smtpd_end_of_data_restrictions </td> <td> Optional </td> <td>
<tr> <td> smtpd_end_of_data_restrictions </td> <td> &ge; 2.2 </td>
<td> Optional </td> <td>
Reject END-OF-DATA command </td> </tr>
<tr> <td> smtpd_etrn_restrictions </td> <td> Optional </td> <td>
<tr> <td> smtpd_etrn_restrictions </td> <td> All </td> <td> Optional
</td> <td>
Reject ETRN command </td> </tr>
</table>
@ -248,10 +291,10 @@ and so on. This approach turned out to be difficult to use. </p>
helo and sender restriction lists until the RCPT TO or ETRN command.
This behavior is controlled by the smtpd_delay_reject parameter.
Restriction lists are still evaluated in the proper order of (client,
helo, etrn) or (client, helo, sender, recipient, data, or end-of-data)
restrictions.
helo, etrn) or (client, helo, sender, relay, recipient, data, or
end-of-data) restrictions.
When a restriction list (example: client) evaluates to REJECT or
DEFER the other restriction lists (example: helo, sender, etc.)
DEFER the restriction lists that follow (example: helo, sender, etc.)
are skipped. </p>
<p> Around the time that smtpd_delay_reject was introduced, Postfix
@ -300,6 +343,12 @@ list evaluates to REJECT or DEFER, the recipient address is rejected;
no surprises here. If the result is PERMIT, then the recipient
address is accepted. And this is where surprises can happen. </p>
<p> The problem is that Postfix versions before 2.10 did not have
smtpd_relay_restrictions. They combined the mail relay and spam
blocking policies, under smtpd_recipient_restrictions. The result
is that a permissive spam blocking policy could unexpectedly result
in a permissive mail relay policy. </p>
<p> Here is an example that shows when a PERMIT result can result
in too much access permission: </p>
@ -309,7 +358,7 @@ in too much access permission: </p>
3 permit_mynetworks
4 check_helo_access hash:/etc/postfix/helo_access
5 reject_unknown_helo_hostname
6 reject_unauth_destination
6 <b>reject_unauth_destination</b>
7
8 /etc/postfix/helo_access:
9 localhost.localdomain PERMIT
@ -326,14 +375,31 @@ smtpd_recipient_restrictions evaluates to PERMIT for EVERY host
that announces itself as "localhost.localdomain", making Postfix
an open relay for all such hosts. </p>
<p> In order to avoid surprises like these with
smtpd_recipient_restrictions, you should place non-recipient
<p> With Postfix before version 2.10 you should place non-recipient
restrictions AFTER the reject_unauth_destination restriction, not
before. In the above example, the HELO based restrictions should
be placed AFTER reject_unauth_destination, or better, the HELO
based restrictions should be placed under smtpd_helo_restrictions
where they can do no harm. </p>
<pre>
1 /etc/postfix/main.cf:
2 smtpd_recipient_restrictions =
3 permit_mynetworks
4 <b>reject_unauth_destination</b>
5 check_helo_access hash:/etc/postfix/helo_access
6 reject_unknown_helo_hostname
7
8 /etc/postfix/helo_access:
9 localhost.localdomain PERMIT
</pre>
<p> The above mistake will not happen with Postfix 2.10 and later,
when the relay policy is specified under smtpd_relay_restrictions,
and the spam blocking policy under smtpd_recipient_restrictions.
Then, a permissive spam blocking policy will not result in a
permissive mail relay policy. </p>
<h2> <a name="testing"> SMTP access rule testing </a> </h2>
<p> Postfix has several features that aid in SMTP access rule
@ -348,18 +414,21 @@ sender. Specify "soft_bounce = yes" in the main.cf file to prevent
the Postfix SMTP server from rejecting mail permanently, by changing
all 5xx SMTP reply codes into 4xx. </p> </dd>
<dt> warn_if_reject </dt> <dd> <p> This is a different safety net
that changes SMTP server REJECT actions into warnings. Instead of
rejecting a command, Postfix logs what it would reject. Specify
"warn_if_reject" in an SMTP access restriction list, before the
restriction that you want to test without actually rejecting mail.
</p> </dd>
<dt> warn_if_reject </dt> <dd> <p> When placed before a reject-type
restriction, access table query, or check_policy_service query,
this logs a "reject_warning" message instead of rejecting a request
(when a reject-type restriction fails due to a temporary error,
this logs a "reject_warning" message for any implicit "defer_if_permit"
actions that would normally prevent mail from being accepted by
some later access restriction). This feature has no effect on
defer_if_reject restrictions. </p> </dd>
<dt> XCLIENT </dt> <dd> <p> With this Postfix 2.1 feature, authorized
SMTP clients can impersonate other systems, so that you can do
realistic SMTP access rule tests. Examples of how to impersonate
other systems for access rule testing are given at the end of the
XCLIENT_README document. </p> </dd>
<dt> XCLIENT </dt> <dd> <p> With this feature, an authorized SMTP
client can impersonate other systems and perform realistic SMTP
access rule tests. Examples of how to impersonate other systems
for access rule testing are given at the end of the XCLIENT_README
document. <br> This feature is available in Postfix 2.1. </p>
</dd>
</dl>

View File

@ -281,6 +281,10 @@ specified with the <b>user</b> attribute. </p>
"-", to avoid "connection refused" and other problems when you
increase the smtpd process limit. </p>
<li> <p> Line 8: reject_unauth_destination is not needed here if
the mail relay policy is specified with smtpd_relay_restrictions
(available with Postfix 2.10 and later). </p>
<li> <p> Lines 8, 9: always specify "check_policy_service" AFTER
"reject_unauth_destination" or else your system could become an
open relay. </p>
@ -299,8 +303,8 @@ of a master.cf service name (in the above example, "policy") and a
built-in suffix (in the above example: "_time_limit"). </p>
</blockquote>
<li> <p> Solaris UNIX-domain sockets do not work reliably. Use
TCP sockets instead: </p>
<li> <p> With Solaris &lt; 9, or Postfix &lt; 2.10 on any Solaris
version, use TCP sockets instead of UNIX-domain sockets: </p>
</ul>
@ -436,6 +440,10 @@ SMTP server process that talks to it.
See the spawn(8) manpage for more information about the
<i>transport</i>_time_limit parameter. </p>
<li> <p> Line 9: reject_unauth_destination is not needed here if
the mail relay policy is specified with smtpd_relay_restrictions
(available with Postfix 2.10 and later). </p>
<blockquote> <p> Note: the "greylist_time_limit" parameter will not
show up in "postconf" command output before Postfix version 2.9.
This limitation applies to many parameters whose name is a combination
@ -445,7 +453,8 @@ a built-in suffix (in the above example: "_time_limit"). </p>
</ul>
<p> On Solaris you must use inet: style sockets instead of unix:
<p> With Solaris &lt; 9, or Postfix &lt; 2.10 on any Solaris
version, use inet: style sockets instead of unix:
style, as detailed in the "<a href="#client_config">Policy
client/server configuration</a>" section above. </p>
@ -497,10 +506,15 @@ http://www.monkeys.com/anti-spam/filtering/sender-domain-validate.in.
<ul>
<li> <p> Line 9: On Solaris you must use inet: style sockets
<li> <p> Line 9: On Solaris &lt; 9, or Postfix &lt; 2.10 on any
Solaris version, use inet: style sockets
instead of unix: style, as detailed in the "<a href="#greylist">Example:
greylist policy server</a>" section above. </p>
<li> <p> Line 5: reject_unauth_destination is not needed here if
the mail relay policy is specified with smtpd_relay_restrictions
(available with Postfix 2.10 and later). </p>
<li> <p> Line 6: Be sure to specify "check_sender_access" AFTER
"reject_unauth_destination" or else your system could become an
open mail relay. </p>
@ -547,10 +561,15 @@ most of the delays and most of the database pollution problem. </p>
<ul>
<li> <p> Line 7: On Solaris you must use inet: style sockets
<li> <p> Line 7: On Solaris &lt; 9, or Postfix &lt; 2.10 on any
Solaris version, use inet: style sockets
instead of unix: style, as detailed in the "<a href="#greylist">Example:
greylist policy server</a>" section above. </p>
<li> <p> Line 5: reject_unauth_destination is not needed here if
the mail relay policy is specified with smtpd_relay_restrictions
(available with Postfix 2.10 and later). </p>
<li> <p> Lines 6-7: Be sure to specify check_sender_access and
check_policy_service AFTER reject_unauth_destination or else your
system could become an open mail relay. </p>

View File

@ -40,43 +40,43 @@ except that the latter uses a dedicated protocol instead of SMTP.
<tr>
<td bgcolor="#f0f0ff" align="center" valign="middle"
width="10%"> Internet </td>
<td bgcolor="#f0f0ff" align="center" valign="middle"
width="10%"> Internet </td>
<td align="center" valign="middle" width="5%"> <tt> -&gt; </tt> </td>
<td bgcolor="#f0f0ff" align="center" valign="middle"
width="10%"> <a href="smtpd.8.html">Postfix SMTP server</a>
</td>
<td bgcolor="#f0f0ff" align="center" valign="middle"
width="10%"> <a href="smtpd.8.html">Postfix SMTP server</a>
</td>
<td align="center" valign="middle" width="5%"> <tt> -&gt; </tt> </td>
<td bgcolor="#f0f0ff" align="center" valign="middle"
width="10%"> <b>Before</b> <b>queue</b> <b>filter</b> </td>
<td bgcolor="#f0f0ff" align="center" valign="middle"
width="10%"> <b>Before</b> <b>queue</b> <b>filter</b> </td>
<td align="center" valign="middle" width="5%"> <tt> -&gt; </tt> </td>
<td bgcolor="#f0f0ff" align="center" valign="middle"
width="10%"> <a href="smtpd.8.html">Postfix SMTP server</a>
</td>
<td bgcolor="#f0f0ff" align="center" valign="middle"
width="10%"> <a href="smtpd.8.html">Postfix SMTP server</a>
</td>
<td align="center" valign="middle" width="5%"> <tt> -&gt; </tt> </td>
<td bgcolor="#f0f0ff" align="center" valign="middle"
width="10%"> <a href="cleanup.8.html">Postfix cleanup
server</a> </td>
<td bgcolor="#f0f0ff" align="center" valign="middle"
width="10%"> <a href="cleanup.8.html">Postfix cleanup
server</a> </td>
<td align="center" valign="middle" width="5%"> <tt> -&gt; </tt> </td>
<td bgcolor="#f0f0ff" align="center" valign="middle"
width="10%"> Postfix queue </td>
<td bgcolor="#f0f0ff" align="center" valign="middle"
width="10%"> Postfix queue </td>
<td align="center" valign="middle" width="5%"> <tt> -&lt; </tt> </td>
<td bgcolor="#f0f0ff" align="center" valign="middle"
width="10%"> <a href="smtp.8.html">smtp</a><br> <a
href="local.8.html">local</a><br> <a
href="virtual.8.html">virtual</a> </td>
<td bgcolor="#f0f0ff" align="center" valign="middle"
width="10%"> <a href="smtp.8.html">smtp</a><br> <a
href="local.8.html">local</a><br> <a
href="virtual.8.html">virtual</a> </td>
</tr>
@ -213,26 +213,26 @@ http://bent.latency.net/smtpprox/. </p>
<td align="center" valign="middle" width="5%"> <tt> -&gt; </tt> </td>
<td bgcolor="#f0f0ff" align="center" valign="middle"
width="10%"> <a href="smtpd.8.html">Postfix SMTP server on
port 25</a> </td>
<td bgcolor="#f0f0ff" align="center" valign="middle"
width="10%"> <a href="smtpd.8.html">Postfix SMTP server on
port 25</a> </td>
<td align="center" valign="middle" width="5%"> <tt> -&gt; </tt> </td>
<td bgcolor="#f0f0ff" align="center" valign="middle"
width="10%"> filter on localhost port 10025 </td>
<td bgcolor="#f0f0ff" align="center" valign="middle"
width="10%"> filter on localhost port 10025 </td>
<td align="center" valign="middle" width="5%"> <tt> -&gt; </tt> </td>
<td bgcolor="#f0f0ff" align="center" valign="middle"
width="10%"> <a href="smtpd.8.html">Postfix SMTP server on
localhost port 10026</a> </td>
<td bgcolor="#f0f0ff" align="center" valign="middle"
width="10%"> <a href="smtpd.8.html">Postfix SMTP server on
localhost port 10026</a> </td>
<td align="center" valign="middle" width="5%"> <tt> -&gt; </tt> </td>
<td bgcolor="#f0f0ff" align="center" valign="middle"
width="10%"> <a href="cleanup.8.html">Postfix cleanup
server</a> </td>
<td bgcolor="#f0f0ff" align="center" valign="middle"
width="10%"> <a href="cleanup.8.html">Postfix cleanup
server</a> </td>
<td align="center" valign="middle" width="5%"> <tt> -&gt; </tt> </td>
@ -261,8 +261,8 @@ http://bent.latency.net/smtpprox/. </p>
smtp inet n - n - 20 smtpd
-o smtpd_proxy_filter=127.0.0.1:10025
-o smtpd_client_connection_count_limit=10
# Postfix 2.7 and later performance feature.
# -o smtpd_proxy_options=speed_adjust
# Postfix 2.7 and later performance feature.
# -o smtpd_proxy_options=speed_adjust
#
# After-filter SMTP server. Receive mail from the content filter
# on localhost port 10026.
@ -272,6 +272,8 @@ http://bent.latency.net/smtpprox/. </p>
-o smtpd_client_restrictions=
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
# Postfix 2.10 and later: specify empty smtpd_relay_restrictions.
-o smtpd_relay_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o smtpd_data_restrictions=
-o mynetworks=127.0.0.0/8

View File

@ -102,20 +102,18 @@ mail from the network, and it does not deliver any mail locally. A
null client typically uses POP, IMAP or NFS for mailbox access. </p>
<p> In this example we assume that the Internet domain name is
"example.com" and that the machine is named "nullclient.example.com".
"example.com" and that the machine is named "hostname.example.com".
As usual, the examples show only parameters that are not left at
their default settings. </p>
<blockquote>
<pre>
1 /etc/postfix/main.cf:
2 myorigin = $mydomain
3 relayhost = $mydomain
4 inet_interfaces = loopback-only
5 local_transport = error:local delivery is disabled
6
7 /etc/postfix/master.cf:
8 Comment out the local delivery agent entry
2 myhostname = hostname.example.com
3 myorigin = $mydomain
4 relayhost = $mydomain
5 inet_interfaces = loopback-only
6 mydestination =
</pre>
</blockquote>
@ -123,19 +121,29 @@ their default settings. </p>
<ul>
<li> <p> Line 2: Send mail as "user@example.com" (instead of
"user@nullclient.example.com"), so that nothing ever has a reason
to send mail to "user@nullclient.example.com". </p>
<li> <p> Line 2: Set myhostname to hostname.example.com, in case
the machine name isn't set to a fully-qualified domain name (use
the command "postconf -d myhostname" to find out what the machine
name is). </p>
<li> <p> Line 3: Forward all mail to the mail server that is
<li> <p> Line 2: The myhostname value also provides the default
value for the mydomain parameter (here, "mydomain = example.com").
</p>
<li> <p> Line 3: Send mail as "user@example.com" (instead of
"user@hostname.example.com"), so that nothing ever has a reason
to send mail to "user@hostname.example.com". </p>
<li> <p> Line 4: Forward all mail to the mail server that is
responsible for the "example.com" domain. This prevents mail from
getting stuck on the null client if it is turned off while some
remote destination is unreachable. </p>
remote destination is unreachable. Specify a real hostname
here if your "example.com" domain has no MX record. </p>
<li> <p> Line 4: Do not accept mail from the network. </p>
<li> <p> Line 5: Do not accept mail from the network. </p>
<li> <p> Lines 5-8: Disable local mail delivery. All mail goes to
the mail server as specified in line 3. </p>
<li> <p> Line 6: Disable local mail delivery. All mail goes to
the mail server as specified in line 4. </p>
</ul>
@ -347,31 +355,41 @@ is the real purpose of the firewall email function. </p>
3 relay_domains = example.com
4 parent_domain_matches_subdomains =
5 debug_peer_list smtpd_access_maps
6 smtpd_recipient_restrictions =
7 permit_mynetworks reject_unauth_destination
8
9 relay_recipient_maps = hash:/etc/postfix/relay_recipients
10 transport_maps = hash:/etc/postfix/transport
11
12 /etc/postfix/relay_recipients:
13 user1@example.com x
14 user2@example.com x
15 . . .
16
17 /etc/postfix/transport:
18 example.com smtp:[inside-gateway.example.com]
<br>
6a # Postfix 2.10 and later support separate relay control and
7a # spam control.
8a smtpd_relay_restrictions =
9a permit_mynetworks reject_unauth_destination
10a smtpd_recipient_restrictions = ...spam blocking rules....
<br>
6b # Older configurations combine relay control and spam control. To
7b # use this with Postfix &ge; 2.10 specify "smtpd_relay_restrictions=".
8b smtpd_recipient_restrictions =
9b permit_mynetworks reject_unauth_destination
10b ...spam blocking rules....
<br>
11 relay_recipient_maps = hash:/etc/postfix/relay_recipients
12 transport_maps = hash:/etc/postfix/transport
13
14 /etc/postfix/relay_recipients:
15 user1@example.com x
16 user2@example.com x
17 . . .
18
19 /etc/postfix/transport:
20 example.com smtp:[inside-gateway.example.com]
</pre>
</blockquote>
<p> Translation: </p>
<ul>
<li><p> Lines 1-7: Accept mail from local systems in $mynetworks,
<li><p> Lines 1-10: Accept mail from local systems in $mynetworks,
and accept mail from outside for "user@example.com" but not for
"user@anything.example.com". The magic is in lines 4-5. </p>
<li> <p> Lines 9, 12-14: Define the list of valid addresses in the
<li> <p> Lines 11, 13-16: Define the list of valid addresses in the
"example.com" domain that can receive mail from the Internet. This
prevents the mail queue from filling up with undeliverable
MAILER-DAEMON messages. If you can't maintain a list of valid
@ -379,7 +397,7 @@ recipients then you must specify "relay_recipient_maps =" (that
is, an empty value), or you must specify an "@example.com x"
wild-card in the relay_recipients table. </p>
<li> <p> Lines 10, 17-18: Route mail for "example.com" to the inside
<li> <p> Lines 12, 19-20: Route mail for "example.com" to the inside
gateway machine. The <tt>[]</tt> forces Postfix to do no MX lookup.
</p>
@ -521,18 +539,28 @@ is all you need: </p>
3
4 /etc/postfix/main.cf:
5 relay_domains = . . . the.backed-up.domain.tld
6 smtpd_recipient_restrictions =
7 permit_mynetworks reject_unauth_destination
8
9 # You must specify your NAT/proxy external address.
10 #proxy_interfaces = 1.2.3.4
11
12 relay_recipient_maps = hash:/etc/postfix/relay_recipients
<br>
6a # Postfix 2.10 and later support separate relay control and
7a # spam control.
8a smtpd_relay_restrictions =
9a permit_mynetworks reject_unauth_destination
10a smtpd_recipient_restrictions = ...spam blocking rules....
<br>
6b # Older configurations combine relay control and spam control. To
7b # use this with Postfix &ge; 2.10 specify "smtpd_relay_restrictions=".
8b smtpd_recipient_restrictions =
9b permit_mynetworks reject_unauth_destination
10b ...spam blocking rules....
<br>
11 # You must specify your NAT/proxy external address.
12 #proxy_interfaces = 1.2.3.4
13
14 /etc/postfix/relay_recipients:
15 user1@the.backed-up.domain.tld x
16 user2@the.backed-up.domain.tld x
17 . . .
14 relay_recipient_maps = hash:/etc/postfix/relay_recipients
15
16 /etc/postfix/relay_recipients:
17 user1@the.backed-up.domain.tld x
18 user2@the.backed-up.domain.tld x
19 . . .
</pre>
</blockquote>
@ -541,11 +569,11 @@ need the above, plus: </p>
<blockquote>
<pre>
18 /etc/postfix/main.cf:
19 transport_maps = hash:/etc/postfix/transport
20
21 /etc/postfix/transport:
22 the.backed-up.domain.tld relay:[their.mail.host.tld]
20 /etc/postfix/main.cf:
21 transport_maps = hash:/etc/postfix/transport
22
23 /etc/postfix/transport:
24 the.backed-up.domain.tld relay:[their.mail.host.tld]
</pre>
</blockquote>
@ -559,15 +587,15 @@ need the above, plus: </p>
<li><p>Do not list the.backed-up.domain.tld in virtual_mailbox_domains.</p>
<li> <p> Lines 1-7: Forward mail from the Internet for
<li> <p> Lines 1-9: Forward mail from the Internet for
"the.backed-up.domain.tld" to the primary MX host for that domain.
</p>
<li> <p> Line 10: This is a must if Postfix receives mail via a
<li> <p> Line 12: This is a must if Postfix receives mail via a
NAT relay or proxy that presents a different IP address to the
world than the local machine. </p>
<li> <p> Lines 12-16: Define the list of valid addresses in the
<li> <p> Lines 14-18: Define the list of valid addresses in the
"the.backed-up.domain.tld" domain. This prevents your mail queue
from filling up with undeliverable MAILER-DAEMON messages. If you
can't maintain a list of valid recipients then you must specify
@ -575,7 +603,7 @@ can't maintain a list of valid recipients then you must specify
specify an "@the.backed-up.domain.tld x" wild-card in the
relay_recipients table. </p>
<li> <p> Line 22: The <tt>[]</tt> forces Postfix to do no MX lookup. </p>
<li> <p> Line 24: The <tt>[]</tt> forces Postfix to do no MX lookup. </p>
</ul>

View File

@ -514,17 +514,13 @@ services that accept remote connections. </p>
<h2><a name="other"> Other measures to off-load zombies </a> </h2>
<p> OpenBSD <a href="http://www.openbsd.org/spamd/">spamd</a>
implements a daemon that handles all connections from "new" clients.
Only well-behaved mail clients are allowed to talk to the mail
server. Other clients are tarpitted, and will never get a chance
to affect mail server performance. </p>
<p> At some point in the future, Postfix may come with a simple
front-end daemon that does basic greylisting and pipelining detection
to keep zombies and other ratware away from Postfix itself. This
would use the "pass" service type which has been available in
stable Postfix releases since Postfix 2.5. </p>
<p> The postscreen(8) daemon, introduced with Postfix 2.8, provides
additional protection against mail server overload. One postscreen(8)
process handles multiple inbound SMTP connections, and decides which
clients may to talk to a Postfix SMTP server process. By keeping
spambots away, postscreen(8) leaves more SMTP server processes
available for legitimate clients, and delays the onset of server
overload conditions. </p>
<h2><a name="credits"> Credits </a></h2>

View File

@ -137,10 +137,8 @@ the DNS requests or replies. </p>
<li> <p> If the number of smtpd(8) processes has reached the process
limit as specified in master.cf, new SMTP clients must wait until
a process becomes available. Increase the number of processes if
memory permits. See the instructions given under "<a
href="#proc_limit">Tuning the number of Postfix processes</a>".
</p>
a process becomes available. See the STRESS_README and POSTSCREEN_README
documents for measures that help to prevent SMTP server overload. </p>
</ul>
@ -391,7 +389,7 @@ default. They should be used only for transports that deliver mail
to a small number of high volume domains. </p>
<p> A common situation where high concurrency is called for is on
gateways relaying a high volume of mail from between the Internet
gateways relaying a high volume of mail between the Internet
and an intranet mail environment. Approximately half the mail
(assuming equal volumes inbound and outbound) will be destined
for the internal mail hubs. Since the internal mail hubs will be
@ -441,7 +439,7 @@ recipients into smaller lists. Postfix will attempt to send multiple
copies of the message in parallel. </p>
<p> IMPORTANT: Be careful when increasing the recipient limit per
message delivery; some smtpd(8) servers abort the connection when they
message delivery; some SMTP servers abort the connection when they
run out of memory or when a hard recipient limit is reached, so
that the message will never be delivered. </p>
@ -568,13 +566,13 @@ and so on: </p>
</blockquote>
<p> You need to execute "postfix reload" to make the change effective.
The limits are enforced by the Postfix master(8) daemon which does
This limit is enforced by the Postfix master(8) daemon which does
not automatically read main.cf when it changes. </p>
<p> You can override the process limit for specific Postfix daemons
by editing the master.cf file. For example, if you do not wish to
receive 100 SMTP messages at the same time, but do not want to
change the process limits for local mail deliveries, you could
change the process limits for other Postfix daemons, you could
specify: </p>
<blockquote>

View File

@ -218,7 +218,7 @@ second form overrides them explicitly. The values shown are the
recommended ones. </p>
<p> You can use the smtpd_command_filter feature to append XVERP
to SMTP commands from legacy sofware. This requires Postfix 2.7
to SMTP commands from legacy software. This requires Postfix 2.7
or later. </p>
<blockquote>

View File

@ -357,7 +357,11 @@ in the virtual(8) manual page. </p>
domains, non-UNIX accounts</a></h2>
<p> This is a variation on the Postfix virtual mailbox example.
Again, every hosted address can have its own mailbox. </p>
Again, every hosted address can have its own mailbox. However, most
parameters that control the virtual(8) delivery agent are no longer
applicable: only virtual_mailbox_domains and virtual_mailbox_maps
stay in effect. These parameters are needed to reject mail for
unknown recipients. </p>
<p> While non-Postfix software is being used for final delivery,
some Postfix concepts are still needed in order to glue everything

View File

@ -18,9 +18,13 @@
# \fBnewaliases\fR in order to rebuild the indexed file after
# changing the Postfix alias database.
#
# The input and output file formats are expected to be compatible
# with Sendmail version 8, and are expected to be suitable for the
# use as NIS maps.
# When the table is provided via other means such as NIS, LDAP
# or SQL, the same lookups are done as for ordinary indexed files.
#
# Alternatively, the table can be provided as a regular-expression
# map where patterns are given as regular expressions. In
# this case, the lookups are done in a slightly different way
# as described below under "REGULAR EXPRESSION TABLES".
#
# Users can control delivery of their own mail by setting
# up \fB.forward\fR files in their home directory.
@ -95,8 +99,28 @@
# CASE FOLDING
# .ad
# .fi
# The local(8) delivery agent always folds the search string
# to lowercase before database lookup.
# The local(8) delivery agent always folds the search string
# to lowercase before database lookup.
# REGULAR EXPRESSION TABLES
# .ad
# .fi
# This section describes how the table lookups change when the table
# is given in the form of regular expressions. For a description of
# regular expression lookup table syntax, see \fBregexp_table\fR(5)
# or \fBpcre_table\fR(5). NOTE: these formats do not use ":" at the
# end of a pattern.
#
# Each regular expression is applied to the entire search
# string. Thus, a search string \fIuser+foo\fR is not broken
# up into \fIuser\fR and \fIfoo\fR.
#
# Regular expressions are applied in the order as specified
# in the table, until a regular expression is found that
# matches the search string.
#
# Lookup results are the same as with indexed file lookups.
# For security reasons there is no support for \fB$1\fR,
# \fB$2\fR etc. substring interpolation.
# SECURITY
# .ad
# .fi

View File

@ -101,8 +101,9 @@
# This document assumes that header and body_checks rules are specified
# in the form of Postfix regular expression lookup tables. Usually the
# best performance is obtained with \fBpcre\fR (Perl Compatible Regular
# Expression) tables, but the slower \fBregexp\fR (POSIX regular
# expressions) support is more widely available.
# Expression) tables. The \fBregexp\fR (POSIX regular
# expressions) tables are usually slower, but more widely
# available.
# Use the command "\fBpostconf -m\fR" to find out what lookup table
# types your Postfix system supports.
#

View File

@ -29,17 +29,17 @@
# .fi
# The general format of the master.cf file is as follows:
# .IP \(bu
# Each logical line defines a single Postfix service.
# Each service is identified by its name and type as described
# below. When multiple lines specify the same service name
# and type, only the last one is remembered. Otherwise, the
# order of master.cf service definitions does not matter.
# .IP \(bu
# Empty lines and whitespace-only lines are ignored, as are
# lines whose first non-whitespace character is a `#'.
# .IP \(bu
# A logical line starts with non-whitespace text. A line that
# starts with whitespace continues a logical line.
# .IP \(bu
# Each logical line defines a single Postfix service.
# Each service is identified by its name and type as described
# below. When multiple lines specify the same service name
# and type, only the last one is remembered. Otherwise, the
# order of master.cf service definitions does not matter.
# .PP
# Each logical line consists of eight fields separated by
# whitespace. These are described below in the order as they
@ -181,11 +181,19 @@
# etc., just like in main.cf. See \fBpostconf\fR(5) for
# syntax.
# .sp
# NOTE 1: do not specify whitespace around the "=". In parameter
# values, either avoid whitespace altogether, use commas
# instead of spaces, or consider overrides like "-o
# name=$override_parameter" with $override_parameter set in
# main.cf.
# NOTE 1: do not specify whitespace around the "=" or in
# parameter values. To specify a parameter value that contains
# whitespace, use commas instead of spaces, or specify the
# value in main.cf. Example:
# .sp
# .nf
# /etc/postfix/master.cf:
# submission inet .... smtpd
# -o smtpd_mumble=$submission_mumble
# .sp
# /etc/postfix/main.cf
# submission_mumble = text with whitespace...
# .fi
# .sp
# NOTE 2: Over-zealous use of parameter overrides makes the
# Postfix configuration hard to understand and maintain. At

View File

@ -66,21 +66,25 @@
#
# Access to remote proxymap servers is under development.
#
# NOTE 1: When using memcache with persistent backup as
# \fBpostscreen\fR(8) or \fBverify\fR(8) cache, disable
# automatic cache cleanup (*_cache_cleanup_interval = 0) in
# all Postfix instances except for one instance that will be
# responsible for cache cleanup.
# NOTE 1: When sharing a persistent \fBpostscreen\fR(8) or
# \fBverify\fR(8) cache, disable automatic cache cleanup (set
# *_cache_cleanup_interval = 0) except with one Postfix
# instance that will be responsible for cache cleanup.
#
# NOTE 2: In the case of a proxied backup database, the full
# backup database
# name (including the "proxy:" prefix) must be specified in
# the proxymap server's proxy_read_maps or proxy_write_maps
# setting (depending on whether the access is read-only or
# read-write).
# NOTE 2: When different tables share the same memcache
# database, each table should use the \fBkey_format\fR feature
# (see below) to prepend its own unique string to the lookup
# key. Otherwise, automatic \fBpostscreen\fR(8) or \fBverify\fR(8)
# cache cleanup may not work.
#
# NOTE 3: When the backup database is accessed with "proxy:"
# lookups, the full backup database name (including the
# "proxy:" prefix) must be specified in the proxymap server's
# proxy_read_maps or proxy_write_maps setting (depending on
# whether the access is read-only or read-write).
# .IP "\fBflags (default: 0)\fR"
# Optional flags that should be stored along with a memcache
# update.
# update. The flags are ignored when looking up information.
# .IP "\fBttl (default: 3600)\fR"
# The expiration time in seconds of memcache updates.
#
@ -103,17 +107,20 @@
# By default, these are the same as the lookup and update
# keys that are given to the Postfix memcache client.
#
# NOTE: The \fBkey_format\fR feature is not used for \fBbackup\fR
# NOTE 1: The \fBkey_format\fR feature is not used for \fBbackup\fR
# database requests.
#
# When the same memcache database is used to cache information
# from multiple tables, you can use the \fBkey_format\fR
# feature to avoid name collisions by prepending a fixed
# string. Examples:
# NOTE 2: When different tables share the same memcache
# database, each table should prepend its own unique string
# to the lookup key. Otherwise, automatic \fBpostscreen\fR(8)
# or \fBverify\fR(8) cache cleanup may not work.
#
# Examples:
#
# .nf
# key_format = aliases:%s
# key_format = access:%s
# key_format = verify:%s
# key_format = postscreen:%s
# .fi
#
# The \fBkey_format\fR parameter supports the following '%'

View File

@ -25,9 +25,9 @@ $(PROG): $(OBJS) $(LIBS)
$(CC) $(CFLAGS) -o $@ $(OBJS) $(LIBS) $(SYSLIBS)
# Eliminate dependency on installed Postfix.
../../conf/bounce.cf.default: template_test.ref annotate.pl
../../conf/bounce.cf.default: template_test.ref annotate.sh
rm -f $@
perl annotate.pl <template_test.ref >$@
./annotate.sh <template_test.ref >$@
main.cf:
echo queue_directory=. >main.cf

Some files were not shown because too many files have changed in this diff Show More