2
0
mirror of https://github.com/vdukhovni/postfix synced 2025-08-29 21:27:57 +00:00

postfix-2.3-RC8

This commit is contained in:
Wietse Venema 2006-07-07 00:00:00 -05:00 committed by Viktor Dukhovni
parent 05249da535
commit cc94e64f58
25 changed files with 441 additions and 324 deletions

View File

@ -47,7 +47,6 @@ Web sites:
Mail addresses (PLEASE send questions to the mailing list) Mail addresses (PLEASE send questions to the mailing list)
postfix-users@postfix.org Postfix users mailing list postfix-users@postfix.org Postfix users mailing list
wietse@porcupine.org the original author
In order to subscribe to the mailing list, see http://www.postfix.org/. In order to subscribe to the mailing list, see http://www.postfix.org/.
@ -162,8 +161,9 @@ Miscellaneous:
auxiliary/ Auxiliary software etc. auxiliary/ Auxiliary software etc.
bin/ Postfix command executables bin/ Postfix command executables
conf/ Configuration files, run-time scripts conf/ Configuration files, run-time scripts
include/ Installed include files include/ Include files
lib/ Installed object libraries implementation-notes/ Background information
lib/ Object libraries
libexec/ Postfix daemon executables libexec/ Postfix daemon executables
mantools/ Manual page utilities mantools/ Documentation utilities
proto/ Documentation source proto/ Documentation source

View File

@ -8,12 +8,13 @@ address probing yes (optional persistent database)
aliases yes (can enable/disable mail to /file or |command) aliases yes (can enable/disable mail to /file or |command)
bare newlines yes (but will send CRLF) bare newlines yes (but will send CRLF)
blacklisting yes (client name/addr; helo hostname; mail from; rcpt to) blacklisting yes (client name/addr; helo hostname; mail from; rcpt to)
connection caching yes (SMTP shared cache; LMTP in-process cache) connection caching yes (SMTP shared cache; LMTP shared cache)
content filter yes (before and after queue, internal and external) content filter yes (before and after queue, internal and external)
db tables yes (compile time option) db tables yes (compile time option)
dbm tables yes (compile time option) dbm tables yes (compile time option)
delivered-to yes (configurable with prepend_delivered_header) delivered-to yes (configurable with prepend_delivered_header)
dsn almost (supports enhanced status codes and DSN format bounces) dsn yes
enhanced status codes yes
errors-to: no (removed with Postfix 2.2) errors-to: no (removed with Postfix 2.2)
esmtp yes esmtp yes
etrn support yes (per-destination log for authorized destinations only) etrn support yes (per-destination log for authorized destinations only)
@ -23,9 +24,9 @@ genericstable yes (Postfix 2.2 generic(5) table)
greylist yes (delegated policy script) greylist yes (delegated policy script)
home mailbox yes home mailbox yes
ident lookup no ident lookup no
ipv6 yes (compatibility for ipv4-only kernels/libraries) ipv6 yes (compatibility for ipv4-only systems)
ldap tables yes (contributed) ldap tables yes (contributed)
lmtp support yes (client) lmtp support yes (client only)
luser relay yes luser relay yes
m4 config no m4 config no
mail to command yes (configurable for .forward, aliases, :include:) mail to command yes (configurable for .forward, aliases, :include:)
@ -34,6 +35,7 @@ maildir yes (in home, system mailspool, /file/name/ alias)
mailertable yes (it's called transport) mailertable yes (it's called transport)
mailq yes mailq yes
majordomo yes (edit approve script to delete /^delivered-to:/i) majordomo yes (edit approve script to delete /^delivered-to:/i)
milter yes (except body replacement)
mime yes (including 8bit to quoted-printable conversion) mime yes (including 8bit to quoted-printable conversion)
mysql tables yes (contributed) mysql tables yes (contributed)
netinfo tables yes (contributed) netinfo tables yes (contributed)
@ -42,11 +44,11 @@ nis tables yes
nis+ tables yes (contributed) nis+ tables yes (contributed)
no <> in smtp yes (most common address forms) no <> in smtp yes (most common address forms)
pgsql tables yes (contributed) pgsql tables yes (contributed)
pipeline option yes (server and client) pipeline option yes (SMTP server and client; LMTP client)
pop/imap yes (with third-party daemons that use mailbox or maildir) pop/imap no
qmqp server yes (with verp support) qmqp server yes (with verp support)
rbl support yes rbl support yes
return-receipt: no return-receipt: no (use DSN NOTIFY=SUCCESS)
rhsbl support yes rhsbl support yes
sasl support yes (compile time option) sasl support yes (compile time option)
sendmail -bt no sendmail -bt no

View File

@ -12461,6 +12461,24 @@ Apologies for any names omitted.
Cleanup: comments, error messages, and crumbling interfaces. Cleanup: comments, error messages, and crumbling interfaces.
20060707
Workaround: apparently, Solaris gettimeofday() can return
out-of range microsecond values. File: src/global/log_adhoc.c.
Robustness: the SMTPD policy client now encodes the
ccert_subject and ccert-issuer attributes as xtext. Some
characters are replaced by +XX, where XX is the two-digit
hexadecimal code for the character value. File:
smtpd/smtpd_check.c.
Safety: the SMTP/LMTP client now defers delivery when a
SASL password exists but the server does not offer SASL
authentication. Mail could be rejected otherwise. This
may become an issue now that Postfix retries delivery in
plaintext after an opportunistic TLS handshake fails. Specify
"smtp_sasl_auth_enforce = no" to deliver mail anyway.
Wish list: Wish list:
The usage of TLScontext->cache_type is unclear. It specifies The usage of TLScontext->cache_type is unclear. It specifies
@ -12474,37 +12492,27 @@ Wish list:
around as pointers. TLScontext->cache_type is a case in around as pointers. TLScontext->cache_type is a case in
point. point.
In the SMTPD policy client (encode or strip) non-printable
non-ASCII in (TLS or all) attributes.
Are transport:nexthop null fields the same as in the case Are transport:nexthop null fields the same as in the case
of default_transport etc. parameters? of default_transport etc. parameters?
Introduce structured API for tls_server_mumble() just like Introduce structured API for tls_server_mumble() just like
with smtp(8): this eliminates ever-growing lists of arguments. with smtp(8): this eliminates ever-growing lists of arguments.
Defer delivery when a SASL password exists but the server
does not offer SASL authentication, as mail might otherwise
be bounced. This may become an issue now that Postfix will
retry in plaintext after optional TLS fails. Make this
configurable so people can get the old behavior.
Don't lose bits when converting st_dev into maildir file Don't lose bits when converting st_dev into maildir file
name. It's 64 bits on Linux. Found with the BEAM source name. It's 64 bits on Linux. Found with the BEAM source
code analyzer. code analyzer. Is this really a problem, or are they just
using 64 bits for upwards compatibility with LP64 systems?
Do or don't introduce unknown_reverse_client_reject_code. Do or don't introduce unknown_reverse_client_reject_code.
mail_addr/rcpt_addr should be externalized as they are in In Milter events, mail_addr/rcpt_addr should be externalized
Sendmail. Likewise, addresses in add/delete requests should as they are in Sendmail. Likewise, addresses in add/delete
be internalized before updating the queue file. requests should be internalized before updating the queue
file.
Check that "UINT32 == unsigned int" choice is ok (i.e. LP64 Check that "UINT32 == unsigned int" choice is ok (i.e. LP64
UNIX). UNIX).
Fix milter_argv() so it does not forget how much memory it
has.
Tempfail when a Milter application wants content access, Tempfail when a Milter application wants content access,
while it is configured in an SMTP server that runs before while it is configured in an SMTP server that runs before
the smtpd_proxy filter. the smtpd_proxy filter.
@ -12531,8 +12539,8 @@ Wish list:
Eliminate the (incoming,deferred)->active rename operation. Eliminate the (incoming,deferred)->active rename operation.
Softbounce fallback-to-ISP for SOHO users. This requires Softbounce fallback-to-ISP for SOHO users. This requires
playing with with the soft_error test in the smtp_trouble.c playing with the soft_error test in the smtp_trouble.c
module, and a way to avoid trying direct-to-backup-MX. module, and avoiding delivery to backup MX hosts.
select -> kqueue, epoll, /dev/poll, poll() ... select -> kqueue, epoll, /dev/poll, poll() ...

View File

@ -58,7 +58,7 @@ a delegated SMTPD access policy request:
sasl_sender= sasl_sender=
size=12345 size=12345
ccert_subject=solaris9.porcupine.org ccert_subject=solaris9.porcupine.org
ccert_issuer=Wietse Venema ccert_issuer=Wietse+20Venema
ccert_fingerprint=C2:9D:F4:87:71:73:73:D9:18:E7:C2:F3:C1:DA:6E:04 ccert_fingerprint=C2:9D:F4:87:71:73:73:D9:18:E7:C2:F3:C1:DA:6E:04
PPoossttffiixx vveerrssiioonn 22..33 aanndd llaatteerr:: PPoossttffiixx vveerrssiioonn 22..33 aanndd llaatteerr::
encryption_protocol=TLSv1/SSLv3 encryption_protocol=TLSv1/SSLv3
@ -114,7 +114,9 @@ Notes:
* The "ccert_*" attributes (Postfix 2.2 and later) specify information about * The "ccert_*" attributes (Postfix 2.2 and later) specify information about
how the client was authenticated via TLS. These attributes are empty in how the client was authenticated via TLS. These attributes are empty in
case of no certificate authentication. case of no certificate authentication. As of Postfix 2.2.11 these attribute
values are encoded as xtext: some characters are represented by +XX, where
XX is the two-digit hecadecimal representation of the character value.
* The "encryption_*" attributes (Postfix 2.3 and later) specify information * The "encryption_*" attributes (Postfix 2.3 and later) specify information
about how the connection is encrypted. With plaintext connections the about how the connection is encrypted. With plaintext connections the

View File

@ -11,20 +11,19 @@ instead, a new snapshot is released.
The mail_release_date configuration parameter (format: yyyymmdd) The mail_release_date configuration parameter (format: yyyymmdd)
specifies the release date of a stable release or snapshot release. specifies the release date of a stable release or snapshot release.
Major changes - critical Critical notes
------------------------ --------------
See RELEASE_NOTES_2.2 if you upgrade from Postfix 2.1 or earlier. See RELEASE_NOTES_2.2 if you upgrade from Postfix 2.1 or earlier.
Postfix internal protocols have has changed. You need to "postfix Some Postfix internal protocols have changed. You need to "postfix
reload" or restart Postfix, otherwise many servers will log warning reload" or restart Postfix, otherwise many servers will log warning
messages with "unexpected attribute" or "problem talking to service messages with "unexpected attribute" or "problem talking to service
rewrite: Unknown error: 0", and mail will not be delivered. rewrite: Unknown error: 0", and mail will not be delivered.
[Incompat 20060515] Milter support introduces a three new queue The Sendmail-compatible Milter support introduces three new queue
file record types. Queue files created with this Postfix version file record types. As long as you leave this feature turned off,
will be understood by older Postfix versions ONLY if Milter support you can still go back to Postfix version 2.2 without losing mail.
is turned off, which is the default.
Major changes - DNS lookups Major changes - DNS lookups
--------------------------- ---------------------------
@ -41,19 +40,11 @@ Major changes - DSN
This gives senders control over successful and failed delivery This gives senders control over successful and failed delivery
notifications. DSN involves extra parameters to the SMTP MAIL FROM notifications. DSN involves extra parameters to the SMTP MAIL FROM
and RCPT TO commands, as well as extra Postfix sendmail command and RCPT TO commands, as well as extra Postfix sendmail command
line options that provide a sub-set of the functions of those extra line options for mail submission.
SMTP command parameters.
See DSN_README for details. Some implementation notes are in See DSN_README for details. Some implementation notes are in
implementation-notes/DSN. implementation-notes/DSN.
[Incompat 20050828] When the cleanup server rejects the content or
size of mail that was submitted with the Postfix sendmail command,
forwarded with the local(8) delivery agent, or that was re-queued
with "postsuper -r", Postfix no longer sends DSN SUCCESS notification
of virtual alias expansions. Since all the recipients are reported
as failed, the SUCCESS notification seems redundant.
[Incompat 20050615] The new DSN support conflicts with VERP support. [Incompat 20050615] The new DSN support conflicts with VERP support.
For Sendmail compatibility, Postfix now uses the sendmail -V command For Sendmail compatibility, Postfix now uses the sendmail -V command
line option for DSN. In order to request VERP style delivery, you line option for DSN. In order to request VERP style delivery, you
@ -61,16 +52,23 @@ must now specify -XV instead of -V. The Postfix sendmail command
will recognize if you try to use -V for VERP-style delivery. It will recognize if you try to use -V for VERP-style delivery. It
will do the right thing and will remind you of the new syntax. will do the right thing and will remind you of the new syntax.
[Incompat 20050828] When the cleanup server rejects the content or
size of mail that was submitted with the Postfix sendmail command,
that was forwarded with the local(8) delivery agent, or that was
re-queued with "postsuper -r", Postfix no longer sends DSN SUCCESS
notification after virtual alias expansions. Since all the recipients
are reported as failed, the SUCCESS notification seems redundant.
Major changes - LMTP client Major changes - LMTP client
--------------------------- ---------------------------
[Feature 20051208] The SMTP client now implements the LMTP protocol. See the "SASL authentication" and "TLS" sections for changes related
Most but not all smtp_xxx parameters have an lmtp_xxx "ghost" to SASL authentication and TLS support, respectively.
parameter. This means there are lot of new LMTP features, including
support for TLS and for the shared connection cache.
[Feature 20060614] The unified SMTP/LMTP client now has complete [Feature 20051208] The SMTP client now implements the LMTP protocol.
sets of configuration parameters for each protocol. Most but not all smtp_xxx parameters now have an lmtp_xxx equivalent.
This means there are lot of new LMTP features, including support
for TLS and for the shared connection cache.
[Incompat 20051208] The LMTP client now reports the server as [Incompat 20051208] The LMTP client now reports the server as
"myhostname[/path/name]". With the real server hostname in delivery "myhostname[/path/name]". With the real server hostname in delivery
@ -81,19 +79,18 @@ Major changes - Milter support
[Feature 20060515] Milter (mail filter) application support, [Feature 20060515] Milter (mail filter) application support,
compatible with Sendmail version 8.13.6 and earlier. This allows compatible with Sendmail version 8.13.6 and earlier. This allows
you to run a large number of plug-ins to reject unwanted mail and you to run a large number of plug-ins to reject unwanted mail, and
to sign mail with, for example, domain keys. All Milter functions to sign mail with for example domain keys. All Milter functions are
are implemented except replacing the message body, which will be implemented except replacing the message body, which will be added
added later. Milters are before-queue filters, so they don't change later. Milters are before-queue filters, so they don't change the
the queue ID. queue ID.
See the MILTER_README document for a discussion of how to use Milter See the MILTER_README document for a discussion of how to use Milter
support with Postfix. support with Postfix, and limitations of the current implementation.
[Incompat 20060515] Milter support introduces a three new queue [Incompat 20060515] Milter support introduces three new queue file
file record types. Queue files created with this Postfix version record types. As long as you leave this feature turned off, you can
will be understood by older Postfix versions ONLY if Milter support still go back to Postfix version 2.2 without losing mail.
is turned off, which is the default.
[Incompat 20060515] Milter support introduces new logfile event [Incompat 20060515] Milter support introduces new logfile event
types: milter-reject, milter-discard and milter-hold, that identify types: milter-reject, milter-discard and milter-hold, that identify
@ -103,8 +100,15 @@ software.
Major changes - SASL authentication Major changes - SASL authentication
----------------------------------- -----------------------------------
[Incompat 20060707] The SMTP/LMTP client now defers delivery when
a SASL password exists but the server does not offer SASL authentication.
Otherwise, the server could reject the mail. This may become an
issue now that Postfix retries delivery in plaintext after an
opportunistic TLS handshake fails. Specify "smtp_sasl_auth_enforce
= no" to deliver mail anyway.
[Feature 20051220] Plug-in support for SASL authentication in the [Feature 20051220] Plug-in support for SASL authentication in the
SMTP server and in the SMTP+LMTP client. With this, Postfix can SMTP server and in the SMTP/LMTP client. With this, Postfix can
support multiple SASL implementations without source code patches. support multiple SASL implementations without source code patches.
Some distributors may even make SASL support a run-time linking Some distributors may even make SASL support a run-time linking
option, just like they already do with Postfix lookup tables. option, just like they already do with Postfix lookup tables.
@ -117,7 +121,7 @@ are slightly different, but these are generally improvements.
The "postconf -a" command shows what plug-in implementations are The "postconf -a" command shows what plug-in implementations are
available for the SMTP server, and "postconf -A" does the same for available for the SMTP server, and "postconf -A" does the same for
the SMTP+LMTP client. Plug-in implementations are selected with the SMTP/LMTP client. Plug-in implementations are selected with
the smtpd_sasl_type, smtp_sasl_type and lmtp_sasl_type configuration the smtpd_sasl_type, smtp_sasl_type and lmtp_sasl_type configuration
parameters. parameters.
@ -163,15 +167,13 @@ ISP accounts.
Major changes - SMTP client Major changes - SMTP client
--------------------------- ---------------------------
[Feature 20051208] The SMTP client now implements the LMTP protocol. See the "SASL authentication" and "TLS" sections for changes related
Most but not all smtp_xxx parameters have an lmtp_xxx "ghost" to SASL authentication and TLS support, respectively.
parameter. This means there are lot of new LMTP features, including
support for TLS and for the shared connection cache. There are no
lmtp_xxx "ghost" parameters for the HELO or EHLO commands, because
those commands exist only in SMTP.
[Feature 20060614] The unified SMTP/LMTP client now has complete [Feature 20051208] The SMTP client now implements the LMTP protocol.
sets of configuration parameters for each protocol. Most but not all smtp_xxx parameters now have an lmtp_xxx equivalent.
This means there are lot of new LMTP features, including support
for TLS and for the shared connection cache.
[Incompat 20060112] The Postfix SMTP/LMTP client by default no [Incompat 20060112] The Postfix SMTP/LMTP client by default no
longer allows DNS CNAME records to override the server hostname longer allows DNS CNAME records to override the server hostname
@ -180,13 +182,13 @@ and TLS server certificate verification. Specify
"smtp_cname_overrides_servername = yes" to get the old behavior. "smtp_cname_overrides_servername = yes" to get the old behavior.
[Incompat 20060103] The Postfix SMTP/LMTP client no longer defers [Incompat 20060103] The Postfix SMTP/LMTP client no longer defers
mail when it receives a malformed SMTP server reply in a session mail delivery when it receives a malformed SMTP server reply in a
with command pipelining. When helpful warnings are enabled, it session with command pipelining. When helpful warnings are enabled,
will suggest that command pipelining be disabled for the affected it will suggest that command pipelining be disabled for the affected
destination. destination.
[Incompat 20051208] The fallback_relay feature is renamed to [Incompat 20051208] The fallback_relay feature is renamed to
smtp_fallback_relay, to make clear that the combined SMTP+LMTP smtp_fallback_relay, to make clear that the combined SMTP/LMTP
client uses this setting only for SMTP deliveries. The old name client uses this setting only for SMTP deliveries. The old name
still works. still works.
@ -274,29 +276,27 @@ this limit was disabled by default. The new limit prevents Postfix
from spending lots of time trying to connect to lots of bogus MX from spending lots of time trying to connect to lots of bogus MX
servers. servers.
[Incompat 20050622] The Postfix SMTP handling of [45]XX server
greetings was cleaned up. The server reply is now properly reported.
Major changes - SMTP server Major changes - SMTP server
--------------------------- ---------------------------
[Incompat 20060207] The Postfix SMTP server no longer complains See the "SASL authentication" and "TLS" sections for changes related
when TLS support is not compiled in, but permit_tls_clientcerts, to SASL authentication and TLS support, respectively.
permit_tls_all_clientcerts, or check_ccert_access are used. These
features now are effectively ignored. However, the
reject_plaintext_session feature is not ignored and will reject
mail.
[Incompat 20051202] The Postfix SMTP daemon will not receive mail [Feature 20051222] You can now use "resolve_numeric_domain = yes"
from the network if it isn't running with postfix mail_owner to stop Postfix from rejecting user@ipaddress as an invalid
destination. It will deliver the mail to user@[ipaddress] instead.
[Incompat 20051202] The Postfix SMTP server now refuses to receive
mail from the network if it isn't running with postfix mail_owner
privileges. This prevents surprises when, for example, "sendmail privileges. This prevents surprises when, for example, "sendmail
-bs" is configured to run as root from xinetd. -bs" is configured to run as root from xinetd.
[Incompat 20051121] The permit_mx_backup feature still accepts mail [Incompat 20051121] Although the permit_mx_backup feature still
for authorized destinations (see permit_mx_backup for definition), accepts mail for authorized destinations (see permit_mx_backup for
but with other destinations it requires that the local MTA is listed definition), with all other destinations it now requires that the
as non-primary MX. This prevents mail loop problems when someone local MTA is listed as non-primary MX. This prevents mail loop
points the primary MX record at Postfix. problems when someone points the primary MX record at a Postfix
system.
[Feature 20051011] Optional protection against SMTP clients that [Feature 20051011] Optional protection against SMTP clients that
hammer the server with too many new (i.e. uncached) SMTP-over-TLS hammer the server with too many new (i.e. uncached) SMTP-over-TLS
@ -339,8 +339,8 @@ parameters. The old parameters are still supported but will be
removed in a future Postfix release. removed in a future Postfix release.
[Feature 20060614] New smtpd_tls_protocols parameter complements [Feature 20060614] New smtpd_tls_protocols parameter complements
the smtp_tls_mandatory_protocols parameter, only recommended for the smtp_tls_mandatory_protocols parameter. This recommended for
MSA configurations, not MX hosts. MSA configurations, not for MX for hosts that face the Internet.
[Feature 20060626] Both the SMTP client and server can be configured [Feature 20060626] Both the SMTP client and server can be configured
without a client or server certificate. An SMTP server without without a client or server certificate. An SMTP server without
@ -356,11 +356,15 @@ is required (notably Postfix 2.3 in "opportunistic" mode) and the
administrator has not excluded the "aNULL" OpenSSL cipher type with administrator has not excluded the "aNULL" OpenSSL cipher type with
smtp_tls_exclude_ciphers. smtp_tls_exclude_ciphers.
[Feature 20060626] You can specify cipher grades with the [Feature 20060626] You can specify cipher grades (instead of cipher
smtp_tls_mandatory_ciphers, lmtp_tls_mandatory_ciphers and names) with the smtp_tls_mandatory_ciphers, lmtp_tls_mandatory_ciphers
smtpd_tls_ciphers parameters. Specify and smtpd_tls_ciphers parameters. Specify one of "high", "medium",
one of "high", "medium", "low", "export" or "null". See TLS_README "low", "export" or "null". See TLS_README for details.
for details.
[Incompat 20060707] The SMTPD policy client now encodes the
ccert_subject and ccert_issuer attributes as xtext. Some characters
are represented by +XX, where XX is the two-digit hexadecimal
representation of the character value.
[Incompat 20060614] The smtp_sasl_tls_verified_security_options [Incompat 20060614] The smtp_sasl_tls_verified_security_options
feature is not yet complete, and will therefore not appear in the feature is not yet complete, and will therefore not appear in the
@ -378,9 +382,9 @@ now also logs TLS session cache activity. Use level 2 and higher
for debugging only, use levels 0 or 1 as production settings. for debugging only, use levels 0 or 1 as production settings.
[Incompat 20060207] The Postfix SMTP server no longer complains [Incompat 20060207] The Postfix SMTP server no longer complains
when TLS support is not compiled in, but permit_tls_clientcerts, when TLS support is not compiled in while permit_tls_clientcerts,
permit_tls_all_clientcerts, or check_ccert_access are used. These permit_tls_all_clientcerts, or check_ccert_access are specified in
features now are effectively ignored. However, the main.cf. These features now are effectively ignored. However, the
reject_plaintext_session feature is not ignored and will reject reject_plaintext_session feature is not ignored and will reject
mail. mail.
@ -388,7 +392,8 @@ mail.
smtp_tls_per_site feature, without changes to the user interface. smtp_tls_per_site feature, without changes to the user interface.
Some Postfix internals had to be re-structured in preparation for Some Postfix internals had to be re-structured in preparation for
a more general TLS policy mechanism; this required that smtp_tls_per_site a more general TLS policy mechanism; this required that smtp_tls_per_site
be re-implemented from scratch. be re-implemented from scratch. The obscure behavior was found
during compatibility testing.
[Feature 20051011] Optional protection against SMTP clients that [Feature 20051011] Optional protection against SMTP clients that
hammer the server with too many new (i.e. uncached) SMTP-over-TLS hammer the server with too many new (i.e. uncached) SMTP-over-TLS
@ -412,13 +417,14 @@ Major changes - XCLIENT and XFORWARD
[Incompat 20060611] The SMTP server XCLIENT implementation has [Incompat 20060611] The SMTP server XCLIENT implementation has
changed. The SMTP server now resets state to the initial server changed. The SMTP server now resets state to the initial server
greeting stage, so that it can accurately simulate the effect of greeting stage, immediately before the EHLO/HELO greeting. This
connection-level access restrictions. Without this change, XCLIENT was needed to correctly simulate the effect of connection-level
will not work at all with Milter applications. access restrictions. Without this change, XCLIENT would not work
with Milter applications.
[Incompat 20060611] The SMTP server XCLIENT and XFORWARD commands [Incompat 20060611] The SMTP server XCLIENT and XFORWARD commands
now expect that attributes are xtext encoded (RFC 1891). For backwards now expect that attributes are xtext encoded (RFC 1891). For backwards
compatibility they will accept unencoded attribute values. The compatibility they will also accept unencoded attribute values. The
XFORWARD client code in the SMTP client and in the SMTPD_PROXY XFORWARD client code in the SMTP client and in the SMTPD_PROXY
client will always encode attribute values. This change will have client will always encode attribute values. This change will have
effect only for malformed hostname and helo parameter values. effect only for malformed hostname and helo parameter values.
@ -426,8 +432,8 @@ effect only for malformed hostname and helo parameter values.
For more details, see the XCLIENT_README and XFORWARD_README For more details, see the XCLIENT_README and XFORWARD_README
documents. documents.
Major changes - address rewriting Major changes - address manipulation
--------------------------------- ------------------------------------
[Incompat 20060123] Postfix now preserves uppercase information [Incompat 20060123] Postfix now preserves uppercase information
while mapping addresses with canonical, virtual, relocated or generic while mapping addresses with canonical, virtual, relocated or generic
@ -435,6 +441,10 @@ maps; this happens even with $number substitutions in regular
expression maps. However, the local(8) and virtual(8) delivery expression maps. However, the local(8) and virtual(8) delivery
agents still fold addresses to lower case. agents still fold addresses to lower case.
As a side effect, Postfix now also does a better job at being case
insensitive where it should be, for example while searching per-host
TLS policies or SASL passwords.
By default, Postfix now folds the search string to lowercase only By default, Postfix now folds the search string to lowercase only
with tables that have fixed-case lookup fields such as btree:, with tables that have fixed-case lookup fields such as btree:,
hash:, dbm:, ldap:, or *sql:. The search string is no longer case hash:, dbm:, ldap:, or *sql:. The search string is no longer case
@ -444,13 +454,6 @@ case, such as regexp:, pcre:, or cidr:.
For safety reasons, Postfix no longer allows $number substitution For safety reasons, Postfix no longer allows $number substitution
in regexp: or pcre: transport tables or per-sender relayhost tables. in regexp: or pcre: transport tables or per-sender relayhost tables.
[Feature 20060123] Postfix now does a better job at preserving
upper/lower case information while transforming addresses. The
table lookup code was revised, and is now more careful about when
it folds search strings to lower case. As a side effect, Postfix
now also does a better job at being case insensitive where it should,
for example while searching per-host TLS policies or SASL passwords.
Major changes - bounce message templates Major changes - bounce message templates
---------------------------------------- ----------------------------------------
@ -481,13 +484,6 @@ this:
The $mail_name program The $mail_name program
EOF EOF
Major changes - broken SMTP clients
-----------------------------------
[Feature 20051222] You can now use "resolve_numeric_domain = yes"
to stop Postfix from rejecting user@ipaddress as an invalid
destination. It will deliver the mail to user@[ipaddress] instead.
Major changes - built-in filters Major changes - built-in filters
-------------------------------- --------------------------------
@ -503,55 +499,6 @@ command (or re-queued with "postsuper -r"), the returned message
is now limited to just the message headers, to avoid the risk of is now limited to just the message headers, to avoid the risk of
exposure to harmful content in the message body or attachments. exposure to harmful content in the message body or attachments.
Major changes - connection caching
----------------------------------
[Incompat 20051026] The smtp_connection_cache_reuse_limit parameter
(which limits the number of deliveries per SMTP connection) is
replaced by the new smtp_connection_reuse_time_limit parameter (the
time after which a connection is no longer stored into the connection
cache).
[Feature 20051026] This snapshot addresses a performance stability
problem with remote SMTP servers. The problem is not specific to
Postfix: it can happen when any MTA sends large amounts of SMTP
email to a site that has multiple MX hosts. The insight that led
to the solution, as well as an initial implementation, are due to
Victor Duchovni.
The problem starts when one of a set of MX hosts becomes slower
than the rest. Even though SMTP clients connect to fast and slow
MX hosts with equal probability, the slow MX host ends up with more
simultaneous inbound connections than the faster MX hosts, because
the slow MX host needs more time to serve each client request.
The slow MX host becomes a connection attractor. If one MX host
becomes N times slower than the rest, it dominates mail delivery
latency unless there are more than N fast MX hosts to counter the
effect. And if the number of MX hosts is smaller than N, the mail
delivery latency becomes effectively that of the slowest MX host
divided by the total number of MX hosts.
The solution uses connection caching in a way that differs from
Postfix 2.2. By limiting the amount of time during which a connection
can be used repeatedly (instead of limiting the number of deliveries
over that connection), Postfix not only restores fairness in the
distribution of simultaneous connections across a set of MX hosts,
it also favors deliveries over connections that perform well, which
is exactly what we want.
The smtp_connection_reuse_time_limit feature implements the connection
reuse time limit as discussed above. It limits the amount of time
after which an SMTP connection is no longer stored into the connection
cache. The default limit, 300s, can result in a huge number of
deliveries over a single connection.
This solution will be complete when Postfix logging is updated to
include information about the number of times that a connection was
used. This information is needed to diagnose inter-operability
problems with servers that exhibit bugs when they receive multiple
messages over the same connection.
Major changes - database support Major changes - database support
-------------------------------- --------------------------------
@ -639,18 +586,17 @@ software.
[Incompat 20051106] The relay=... logging has changed and now [Incompat 20051106] The relay=... logging has changed and now
includes the remote SMTP server port number as hostname[hostaddr]:port. includes the remote SMTP server port number as hostname[hostaddr]:port.
[Incompat 20060112] The Postfix SMTP/LMTP client by default no
longer allows DNS CNAME records to override the server hostname
that is used for logging, SASL password lookup, TLS policy selection
and TLS server certificate verification. Specify
"smtp_cname_overrides_servername = yes" to get the old behavior.
[Incompat 20051105] All delay logging now has sub-second resolution, [Incompat 20051105] All delay logging now has sub-second resolution,
including the over-all "delay=nnn" logging. A patch is available including the over-all "delay=nnn" logging. A patch is available
for pflogsumm (pflogsumm-conn-delays-dsn-patch). The qshape script for pflogsumm (pflogsumm-conn-delays-dsn-patch). The qshape script
has been updated (auxiliary/qshape/qshape.pl). has been updated (auxiliary/qshape/qshape.pl).
At this point the Postfix logging for a recipient looks like this:
Nov 3 16:04:31 myname postfix/smtp[30840]: 19B6B2900FE:
to=<wietse@test.example.com>, orig_to=<wietse@test>,
relay=mail.example.com[1.2.3.4], conn_use=2, delay=0.22,
delays=0.04/0.01/0.05/0.1, dsn=2.0.0, status=sent (250 2.0.0 Ok)
[Feature 20051103] This release makes a beginning with a series of [Feature 20051103] This release makes a beginning with a series of
new attributes in Postfix logfile records. new attributes in Postfix logfile records.
@ -664,8 +610,9 @@ new attributes in Postfix logfile records.
- Logging of the connection reuse count when SMTP connections are - Logging of the connection reuse count when SMTP connections are
used for more than one message delivery. This information is used for more than one message delivery. This information is
needed because Postfix can now reuse connections hundreds of times needed because Postfix can now reuse connections hundreds of times
or more, and can help to diagnose inter-operability problems with or more. Logging of the connection reuse count can help to diagnose
servers that suffer from memory leaks or other resource leaks. inter-operability problems with servers that suffer from memory
leaks or other resource leaks.
At this point the Postfix logging for a recipient looks like this: At this point the Postfix logging for a recipient looks like this:
@ -696,6 +643,12 @@ where y and z can be up to three digits each.
Major changes - performance Major changes - performance
--------------------------- ---------------------------
[Incompat 20050622] The Postfix SMTP client by default limits the
number of MX server addresses to smtp_mx_address_limit=5. Previously
this limit was disabled by default. The new limit prevents Postfix
from spending lots of time trying to connect to lots of bogus MX
servers.
[Feature 20051026] This snapshot addresses a performance stability [Feature 20051026] This snapshot addresses a performance stability
problem with remote SMTP servers. The problem is not specific to problem with remote SMTP servers. The problem is not specific to
Postfix: it can happen when any MTA sends large amounts of SMTP Postfix: it can happen when any MTA sends large amounts of SMTP
@ -752,42 +705,41 @@ Major changes - portability
--------------------------- ---------------------------
[Incompat 20050716] Internal interfaces have changed; this may break [Incompat 20050716] Internal interfaces have changed; this may break
third-party patches because the text of function argument and result third-party patches because the types of function arguments and of
type definitions has changed. The type of buffer lengths and offsets result values have changed. The types of buffer lengths and offsets
were changed from "(unsigned) int" (32 bit on 32-bit and LP64 were changed from "int" or "unsigned int" (32 bit on 32-bit and
systems) to "(s)size_t" (64 bit on LP64 systems, 32 bit on 32-bit LP64 systems) to "ssize_t" or "size_t" (64 bit on LP64 systems, 32
systems). bit on 32-bit systems).
Otherwise, this change makes no difference on 32-bit systems. On This change makes no difference in Postfix behavior on 32-bit
LP64 systems, however, software may mis-behave 1) when Postfix is systems. On LP64 systems, however, this change not only eliminates
some obscure portability bugs, it also eliminates unnecessary
conversions between 32/64 bit integer types, because many system
library routines take "(s)size_t" arguments or return "(s)size_t"
values.
This change may break software on LP64 systems 1) when Postfix is
linked with pre-compiled code that was compiled with old Postfix linked with pre-compiled code that was compiled with old Postfix
interface definitions and 2) when compiling Postfix source that was interface definitions and 2) when compiling Postfix source that was
modified by a third-party patch: incorrect code may be generated modified by a third-party patch: incorrect code will be generated
when the patch passes the wrong integer argument type in contexts when the patch passes the wrong integer argument type in contexts
that disable automatic argument type conversions. Examples of such that disable automatic argument type conversions. Examples of such
contexts are formatting with printf-like arguments, and invoking contexts are formatting with printf-like arguments, and invoking
functions that write Postfix request or reply attributes across functions that write Postfix request or reply attributes across
inter-process communication channels. Unfortunately, gcc does not inter-process communication channels. Unfortunately, gcc does not
report "(unsigned) int" versus "(s)size_t" format string argument report "(unsigned) int" versus "(s)size_t" format string argument
mis-matches on 32-bit systems; they can be found only on 64-bit mis-matches on 32-bit systems; it reports them only on 64-bit
systems. systems.
[Feature 20050716] Improved portability to LP64 systems, by converting
the type of buffer lengths and offsets from "(unsigned) int" to
"(s)size_t". This change has zero effect on 32-bit systems. On
LP64 platforms, however, this change not only eliminates some obscure
portability bugs, it also eliminates unnecessary conversions between
32/64 bit integer types, because many system library routines take
"(s)size_t" arguments or return "(s)size_t" values.
Major changes - safety Major changes - safety
---------------------- ----------------------
[Incompat 20051121] The permit_mx_backup feature still accepts mail [Incompat 20051121] Although the permit_mx_backup feature still
for authorized destinations (see permit_mx_backup for definition), accepts mail for authorized destinations (see permit_mx_backup for
but with other destinations it requires that the local MTA is listed definition), with all other destinations it now requires that the
as non-primary MX. This prevents mail loop problems when someone local MTA is listed as non-primary MX. This prevents mail loop
points the primary MX record at Postfix. problems when someone points the primary MX record at a Postfix
system.
[Incompat 20051011] The Postfix local(8) delivery agent no longer [Incompat 20051011] The Postfix local(8) delivery agent no longer
updates its idea of the Delivered-To: address while it expands updates its idea of the Delivered-To: address while it expands
@ -808,8 +760,17 @@ command (or re-queued with "postsuper -r"), the returned message
is now limited to just the message headers, to avoid the risk of is now limited to just the message headers, to avoid the risk of
exposure to harmful content in the message body or attachments. exposure to harmful content in the message body or attachments.
[Incompat 20051202] The Postfix SMTP daemon will not receive mail [Incompat 20051202] The Postfix SMTP server now refuses to receive
from the network if it isn't running with postfix mail_owner mail from the network if it isn't running with postfix mail_owner
privileges. This prevents surprises when, for example, "sendmail privileges. This prevents surprises when, for example, "sendmail
-bs" is configured to run as root from xinetd. -bs" is configured to run as root from xinetd.
[Incompat 20060123] For safety reasons, Postfix no longer allows
$number substitution in regexp: or pcre: transport tables or
per-sender relayhost tables.
[Incompat 20060112] The Postfix SMTP/LMTP client by default no
longer allows DNS CNAME records to override the server hostname
that is used for logging, SASL password lookup, TLS policy selection
and TLS server certificate verification. Specify
"smtp_cname_overrides_servername = yes" to get the old behavior.

View File

@ -90,7 +90,7 @@ sasl_username=you
sasl_sender= sasl_sender=
size=12345 size=12345
ccert_subject=solaris9.porcupine.org ccert_subject=solaris9.porcupine.org
ccert_issuer=Wietse Venema ccert_issuer=Wietse+20Venema
ccert_fingerprint=C2:9D:F4:87:71:73:73:D9:18:E7:C2:F3:C1:DA:6E:04 ccert_fingerprint=C2:9D:F4:87:71:73:73:D9:18:E7:C2:F3:C1:DA:6E:04
<b>Postfix version 2.3 and later:</b> <b>Postfix version 2.3 and later:</b>
encryption_protocol=TLSv1/SSLv3 encryption_protocol=TLSv1/SSLv3
@ -161,6 +161,9 @@ etrn_domain=
<li> <p> The "ccert_*" attributes (Postfix 2.2 and later) specify <li> <p> The "ccert_*" attributes (Postfix 2.2 and later) specify
information about how the client was authenticated via TLS. information about how the client was authenticated via TLS.
These attributes are empty in case of no certificate authentication. These attributes are empty in case of no certificate authentication.
As of Postfix 2.2.11 these attribute values are encoded as
xtext: some characters are represented by +XX, where XX is the
two-digit hecadecimal representation of the character value.
</p> </p>
<li> <p> The "encryption_*" attributes (Postfix 2.3 and later) <li> <p> The "encryption_*" attributes (Postfix 2.3 and later)

View File

@ -3528,6 +3528,17 @@ Enable SASL authentication in the Postfix LMTP client.
</p> </p>
</DD>
<DT><b><a name="lmtp_sasl_auth_enforce">lmtp_sasl_auth_enforce</a>
(default: yes)</b></DT><DD>
<p> The LMTP-specific version of the <a href="postconf.5.html#smtp_sasl_auth_enforce">smtp_sasl_auth_enforce</a>
configuration parameter. See there for details. </p>
<p> This feature is available in Postfix 2.3 and later. </p>
</DD> </DD>
<DT><b><a name="lmtp_sasl_mechanism_filter">lmtp_sasl_mechanism_filter</a> <DT><b><a name="lmtp_sasl_mechanism_filter">lmtp_sasl_mechanism_filter</a>
@ -7550,6 +7561,18 @@ Example:
</pre> </pre>
</DD>
<DT><b><a name="smtp_sasl_auth_enforce">smtp_sasl_auth_enforce</a>
(default: yes)</b></DT><DD>
<p> Defer mail delivery when an SMTP server does not support SASL
authentication, while <a href="postconf.5.html#smtp_sasl_password_maps">smtp_sasl_password_maps</a> contains SASL
login/password information for that server. </p>
<p> This feature is available in Postfix 2.3 and later. </p>
</DD> </DD>
<DT><b><a name="smtp_sasl_mechanism_filter">smtp_sasl_mechanism_filter</a> <DT><b><a name="smtp_sasl_mechanism_filter">smtp_sasl_mechanism_filter</a>

View File

@ -293,60 +293,66 @@ SMTP(8) SMTP(8)
Available in Postfix version 2.3 and later: Available in Postfix version 2.3 and later:
<b><a href="postconf.5.html#smtp_sasl_auth_enforce">smtp_sasl_auth_enforce</a> (yes)</b>
Defer mail delivery when an SMTP server does not
support SASL authentication, while <a href="postconf.5.html#smtp_sasl_password_maps">smtp_sasl_pass</a>-
<a href="postconf.5.html#smtp_sasl_password_maps">word_maps</a> contains SASL login/password information
for that server.
<b><a href="postconf.5.html#smtp_sender_dependent_authentication">smtp_sender_dependent_authentication</a> (no)</b> <b><a href="postconf.5.html#smtp_sender_dependent_authentication">smtp_sender_dependent_authentication</a> (no)</b>
Enable sender-dependent authentication in the SMTP Enable sender-dependent authentication in the SMTP
client; this is available only with SASL authenti- client; this is available only with SASL authenti-
cation, and disables SMTP connection caching to cation, and disables SMTP connection caching to
ensure that mail from different senders will use ensure that mail from different senders will use
the appropriate credentials. the appropriate credentials.
<b><a href="postconf.5.html#smtp_sasl_path">smtp_sasl_path</a> (empty)</b> <b><a href="postconf.5.html#smtp_sasl_path">smtp_sasl_path</a> (empty)</b>
Implementation-specific information that is passed Implementation-specific information that is passed
through to the SASL plug-in implementation that is through to the SASL plug-in implementation that is
selected with <b><a href="postconf.5.html#smtp_sasl_type">smtp_sasl_type</a></b>. selected with <b><a href="postconf.5.html#smtp_sasl_type">smtp_sasl_type</a></b>.
<b><a href="postconf.5.html#smtp_sasl_type">smtp_sasl_type</a> (cyrus)</b> <b><a href="postconf.5.html#smtp_sasl_type">smtp_sasl_type</a> (cyrus)</b>
The SASL plug-in type that the Postfix SMTP client The SASL plug-in type that the Postfix SMTP client
should use for authentication. should use for authentication.
<b>STARTTLS SUPPORT CONTROLS</b> <b>STARTTLS SUPPORT CONTROLS</b>
Detailed information about STARTTLS configuration may be Detailed information about STARTTLS configuration may be
found in the <a href="TLS_README.html">TLS_README</a> document. found in the <a href="TLS_README.html">TLS_README</a> document.
<b><a href="postconf.5.html#smtp_tls_security_level">smtp_tls_security_level</a> (empty)</b> <b><a href="postconf.5.html#smtp_tls_security_level">smtp_tls_security_level</a> (empty)</b>
The default SMTP TLS security level for all desti- The default SMTP TLS security level for all desti-
nations; when a non-empty value is specified, this nations; when a non-empty value is specified, this
overrides the obsolete parameters <a href="postconf.5.html#smtp_use_tls">smtp_use_tls</a>, overrides the obsolete parameters <a href="postconf.5.html#smtp_use_tls">smtp_use_tls</a>,
<a href="postconf.5.html#smtp_enforce_tls">smtp_enforce_tls</a>, and <a href="postconf.5.html#smtp_tls_enforce_peername">smtp_tls_enforce_peername</a>. <a href="postconf.5.html#smtp_enforce_tls">smtp_enforce_tls</a>, and <a href="postconf.5.html#smtp_tls_enforce_peername">smtp_tls_enforce_peername</a>.
<b><a href="postconf.5.html#smtp_sasl_tls_security_options">smtp_sasl_tls_security_options</a> ($<a href="postconf.5.html#smtp_sasl_security_options">smtp_sasl_secu</a>-</b> <b><a href="postconf.5.html#smtp_sasl_tls_security_options">smtp_sasl_tls_security_options</a> ($<a href="postconf.5.html#smtp_sasl_security_options">smtp_sasl_secu</a>-</b>
<b><a href="postconf.5.html#smtp_sasl_security_options">rity_options</a>)</b> <b><a href="postconf.5.html#smtp_sasl_security_options">rity_options</a>)</b>
The SASL authentication security options that the The SASL authentication security options that the
Postfix SMTP client uses for TLS encrypted SMTP Postfix SMTP client uses for TLS encrypted SMTP
sessions. sessions.
<b><a href="postconf.5.html#smtp_starttls_timeout">smtp_starttls_timeout</a> (300s)</b> <b><a href="postconf.5.html#smtp_starttls_timeout">smtp_starttls_timeout</a> (300s)</b>
Time limit for Postfix SMTP client write and read Time limit for Postfix SMTP client write and read
operations during TLS startup and shutdown hand- operations during TLS startup and shutdown hand-
shake procedures. shake procedures.
<b><a href="postconf.5.html#smtp_tls_CAfile">smtp_tls_CAfile</a> (empty)</b> <b><a href="postconf.5.html#smtp_tls_CAfile">smtp_tls_CAfile</a> (empty)</b>
The file with the certificate of the certification The file with the certificate of the certification
authority (CA) that issued the Postfix SMTP client authority (CA) that issued the Postfix SMTP client
certificate. certificate.
<b><a href="postconf.5.html#smtp_tls_CApath">smtp_tls_CApath</a> (empty)</b> <b><a href="postconf.5.html#smtp_tls_CApath">smtp_tls_CApath</a> (empty)</b>
Directory with PEM format certificate authority Directory with PEM format certificate authority
certificates that the Postfix SMTP client uses to certificates that the Postfix SMTP client uses to
verify a remote SMTP server certificate. verify a remote SMTP server certificate.
<b><a href="postconf.5.html#smtp_tls_cert_file">smtp_tls_cert_file</a> (empty)</b> <b><a href="postconf.5.html#smtp_tls_cert_file">smtp_tls_cert_file</a> (empty)</b>
File with the Postfix SMTP client RSA certificate File with the Postfix SMTP client RSA certificate
in PEM format. in PEM format.
<b><a href="postconf.5.html#smtp_tls_mandatory_ciphers">smtp_tls_mandatory_ciphers</a> (medium)</b> <b><a href="postconf.5.html#smtp_tls_mandatory_ciphers">smtp_tls_mandatory_ciphers</a> (medium)</b>
The minimum SMTP client TLS cipher grade that is The minimum SMTP client TLS cipher grade that is
strong enough to be used with the "encrypt" secu- strong enough to be used with the "encrypt" secu-
rity level and higher. rity level and higher.
<b><a href="postconf.5.html#smtp_tls_exclude_ciphers">smtp_tls_exclude_ciphers</a> (empty)</b> <b><a href="postconf.5.html#smtp_tls_exclude_ciphers">smtp_tls_exclude_ciphers</a> (empty)</b>
@ -355,43 +361,43 @@ SMTP(8) SMTP(8)
<b><a href="postconf.5.html#smtp_tls_mandatory_exclude_ciphers">smtp_tls_mandatory_exclude_ciphers</a> (empty)</b> <b><a href="postconf.5.html#smtp_tls_mandatory_exclude_ciphers">smtp_tls_mandatory_exclude_ciphers</a> (empty)</b>
List of ciphers or cipher types to exclude from the List of ciphers or cipher types to exclude from the
SMTP client cipher list at the mandatory TLS secu- SMTP client cipher list at the mandatory TLS secu-
rity levels: "encrypt", "verify" and "secure". rity levels: "encrypt", "verify" and "secure".
<b><a href="postconf.5.html#smtp_tls_dcert_file">smtp_tls_dcert_file</a> (empty)</b> <b><a href="postconf.5.html#smtp_tls_dcert_file">smtp_tls_dcert_file</a> (empty)</b>
File with the Postfix SMTP client DSA certificate File with the Postfix SMTP client DSA certificate
in PEM format. in PEM format.
<b><a href="postconf.5.html#smtp_tls_dkey_file">smtp_tls_dkey_file</a> ($<a href="postconf.5.html#smtp_tls_dcert_file">smtp_tls_dcert_file</a>)</b> <b><a href="postconf.5.html#smtp_tls_dkey_file">smtp_tls_dkey_file</a> ($<a href="postconf.5.html#smtp_tls_dcert_file">smtp_tls_dcert_file</a>)</b>
File with the Postfix SMTP client DSA private key File with the Postfix SMTP client DSA private key
in PEM format. in PEM format.
<b><a href="postconf.5.html#smtp_tls_key_file">smtp_tls_key_file</a> ($<a href="postconf.5.html#smtp_tls_cert_file">smtp_tls_cert_file</a>)</b> <b><a href="postconf.5.html#smtp_tls_key_file">smtp_tls_key_file</a> ($<a href="postconf.5.html#smtp_tls_cert_file">smtp_tls_cert_file</a>)</b>
File with the Postfix SMTP client RSA private key File with the Postfix SMTP client RSA private key
in PEM format. in PEM format.
<b><a href="postconf.5.html#smtp_tls_loglevel">smtp_tls_loglevel</a> (0)</b> <b><a href="postconf.5.html#smtp_tls_loglevel">smtp_tls_loglevel</a> (0)</b>
Enable additional Postfix SMTP client logging of Enable additional Postfix SMTP client logging of
TLS activity. TLS activity.
<b><a href="postconf.5.html#smtp_tls_note_starttls_offer">smtp_tls_note_starttls_offer</a> (no)</b> <b><a href="postconf.5.html#smtp_tls_note_starttls_offer">smtp_tls_note_starttls_offer</a> (no)</b>
Log the hostname of a remote SMTP server that Log the hostname of a remote SMTP server that
offers STARTTLS, when TLS is not already enabled offers STARTTLS, when TLS is not already enabled
for that server. for that server.
<b><a href="postconf.5.html#smtp_tls_policy_maps">smtp_tls_policy_maps</a> (empty)</b> <b><a href="postconf.5.html#smtp_tls_policy_maps">smtp_tls_policy_maps</a> (empty)</b>
Optional lookup tables with the Postfix SMTP client Optional lookup tables with the Postfix SMTP client
TLS security policy by next-hop destination; when a TLS security policy by next-hop destination; when a
non-empty value is specified, this overrides the non-empty value is specified, this overrides the
obsolete <a href="postconf.5.html#smtp_tls_per_site">smtp_tls_per_site</a> parameter. obsolete <a href="postconf.5.html#smtp_tls_per_site">smtp_tls_per_site</a> parameter.
<b><a href="postconf.5.html#smtp_tls_mandatory_protocols">smtp_tls_mandatory_protocols</a> (SSLv3, TLSv1)</b> <b><a href="postconf.5.html#smtp_tls_mandatory_protocols">smtp_tls_mandatory_protocols</a> (SSLv3, TLSv1)</b>
List of TLS protocol versions that are secure List of TLS protocol versions that are secure
enough to be used with the "encrypt" security level enough to be used with the "encrypt" security level
and higher. and higher.
<b><a href="postconf.5.html#smtp_tls_scert_verifydepth">smtp_tls_scert_verifydepth</a> (5)</b> <b><a href="postconf.5.html#smtp_tls_scert_verifydepth">smtp_tls_scert_verifydepth</a> (5)</b>
The verification depth for remote SMTP server cer- The verification depth for remote SMTP server cer-
tificates. tificates.
<b><a href="postconf.5.html#smtp_tls_secure_cert_match">smtp_tls_secure_cert_match</a> (nexthop, dot-nexthop)</b> <b><a href="postconf.5.html#smtp_tls_secure_cert_match">smtp_tls_secure_cert_match</a> (nexthop, dot-nexthop)</b>
@ -399,7 +405,7 @@ SMTP(8) SMTP(8)
for the "secure" TLS security level. for the "secure" TLS security level.
<b><a href="postconf.5.html#smtp_tls_session_cache_database">smtp_tls_session_cache_database</a> (empty)</b> <b><a href="postconf.5.html#smtp_tls_session_cache_database">smtp_tls_session_cache_database</a> (empty)</b>
Name of the file containing the optional Postfix Name of the file containing the optional Postfix
SMTP client TLS session cache. SMTP client TLS session cache.
<b><a href="postconf.5.html#smtp_tls_session_cache_timeout">smtp_tls_session_cache_timeout</a> (3600s)</b> <b><a href="postconf.5.html#smtp_tls_session_cache_timeout">smtp_tls_session_cache_timeout</a> (3600s)</b>
@ -411,9 +417,9 @@ SMTP(8) SMTP(8)
for the "verify" TLS security level. for the "verify" TLS security level.
<b><a href="postconf.5.html#tls_daemon_random_bytes">tls_daemon_random_bytes</a> (32)</b> <b><a href="postconf.5.html#tls_daemon_random_bytes">tls_daemon_random_bytes</a> (32)</b>
The number of pseudo-random bytes that an <a href="smtp.8.html"><b>smtp</b>(8)</a> The number of pseudo-random bytes that an <a href="smtp.8.html"><b>smtp</b>(8)</a>
or <a href="smtpd.8.html"><b>smtpd</b>(8)</a> process requests from the <a href="tlsmgr.8.html"><b>tlsmgr</b>(8)</a> or <a href="smtpd.8.html"><b>smtpd</b>(8)</a> process requests from the <a href="tlsmgr.8.html"><b>tlsmgr</b>(8)</a>
server in order to seed its internal pseudo random server in order to seed its internal pseudo random
number generator (PRNG). number generator (PRNG).
<b><a href="postconf.5.html#tls_high_cipherlist">tls_high_cipherlist</a></b> <b><a href="postconf.5.html#tls_high_cipherlist">tls_high_cipherlist</a></b>
@ -425,7 +431,7 @@ SMTP(8) SMTP(8)
ciphers. ciphers.
<b><a href="postconf.5.html#tls_low_cipherlist">tls_low_cipherlist</a> (!EXPORT:ALL:+RC4:@STRENGTH)</b> <b><a href="postconf.5.html#tls_low_cipherlist">tls_low_cipherlist</a> (!EXPORT:ALL:+RC4:@STRENGTH)</b>
The OpenSSL cipherlist for "LOW" or higher grade The OpenSSL cipherlist for "LOW" or higher grade
ciphers. ciphers.
<b><a href="postconf.5.html#tls_export_cipherlist">tls_export_cipherlist</a> (ALL:+RC4:@STRENGTH)</b> <b><a href="postconf.5.html#tls_export_cipherlist">tls_export_cipherlist</a> (ALL:+RC4:@STRENGTH)</b>
@ -433,66 +439,66 @@ SMTP(8) SMTP(8)
ciphers. ciphers.
<b><a href="postconf.5.html#tls_null_cipherlist">tls_null_cipherlist</a> (!aNULL:eNULL+kRSA)</b> <b><a href="postconf.5.html#tls_null_cipherlist">tls_null_cipherlist</a> (!aNULL:eNULL+kRSA)</b>
The OpenSSL cipherlist for "NULL" grade ciphers The OpenSSL cipherlist for "NULL" grade ciphers
that provide authentication without encryption. that provide authentication without encryption.
Available in Postfix version 2.4 and later: Available in Postfix version 2.4 and later:
<b><a href="postconf.5.html#smtp_sasl_tls_verified_security_options">smtp_sasl_tls_verified_security_options</a></b> <b><a href="postconf.5.html#smtp_sasl_tls_verified_security_options">smtp_sasl_tls_verified_security_options</a></b>
<b>($<a href="postconf.5.html#smtp_sasl_tls_security_options">smtp_sasl_tls_security_options</a>)</b> <b>($<a href="postconf.5.html#smtp_sasl_tls_security_options">smtp_sasl_tls_security_options</a>)</b>
The SASL authentication security options that the The SASL authentication security options that the
Postfix SMTP client uses for TLS encrypted SMTP Postfix SMTP client uses for TLS encrypted SMTP
sessions with a verified server certificate. sessions with a verified server certificate.
<b>OBSOLETE STARTTLS CONTROLS</b> <b>OBSOLETE STARTTLS CONTROLS</b>
The following configuration parameters exist for compati- The following configuration parameters exist for compati-
bility with Postfix versions before 2.3. Support for these bility with Postfix versions before 2.3. Support for these
will be removed in a future release. will be removed in a future release.
<b><a href="postconf.5.html#smtp_use_tls">smtp_use_tls</a> (no)</b> <b><a href="postconf.5.html#smtp_use_tls">smtp_use_tls</a> (no)</b>
Opportunistic mode: use TLS when a remote SMTP Opportunistic mode: use TLS when a remote SMTP
server announces STARTTLS support, otherwise send server announces STARTTLS support, otherwise send
the mail in the clear. the mail in the clear.
<b><a href="postconf.5.html#smtp_enforce_tls">smtp_enforce_tls</a> (no)</b> <b><a href="postconf.5.html#smtp_enforce_tls">smtp_enforce_tls</a> (no)</b>
Enforcement mode: require that remote SMTP servers Enforcement mode: require that remote SMTP servers
use TLS encryption, and never send mail in the use TLS encryption, and never send mail in the
clear. clear.
<b><a href="postconf.5.html#smtp_tls_enforce_peername">smtp_tls_enforce_peername</a> (yes)</b> <b><a href="postconf.5.html#smtp_tls_enforce_peername">smtp_tls_enforce_peername</a> (yes)</b>
When TLS encryption is enforced, require that the When TLS encryption is enforced, require that the
remote SMTP server hostname matches the information remote SMTP server hostname matches the information
in the remote SMTP server certificate. in the remote SMTP server certificate.
<b><a href="postconf.5.html#smtp_tls_per_site">smtp_tls_per_site</a> (empty)</b> <b><a href="postconf.5.html#smtp_tls_per_site">smtp_tls_per_site</a> (empty)</b>
Optional lookup tables with the Postfix SMTP client Optional lookup tables with the Postfix SMTP client
TLS usage policy by next-hop destination and by TLS usage policy by next-hop destination and by
remote SMTP server hostname. remote SMTP server hostname.
<b>RESOURCE AND RATE CONTROLS</b> <b>RESOURCE AND RATE CONTROLS</b>
<b><a href="postconf.5.html#smtp_destination_concurrency_limit">smtp_destination_concurrency_limit</a> ($<a href="postconf.5.html#default_destination_concurrency_limit">default_destina</a>-</b> <b><a href="postconf.5.html#smtp_destination_concurrency_limit">smtp_destination_concurrency_limit</a> ($<a href="postconf.5.html#default_destination_concurrency_limit">default_destina</a>-</b>
<b><a href="postconf.5.html#default_destination_concurrency_limit">tion_concurrency_limit</a>)</b> <b><a href="postconf.5.html#default_destination_concurrency_limit">tion_concurrency_limit</a>)</b>
The maximal number of parallel deliveries to the The maximal number of parallel deliveries to the
same destination via the smtp message delivery same destination via the smtp message delivery
transport. transport.
<b><a href="postconf.5.html#smtp_destination_recipient_limit">smtp_destination_recipient_limit</a> ($<a href="postconf.5.html#default_destination_recipient_limit">default_destina</a>-</b> <b><a href="postconf.5.html#smtp_destination_recipient_limit">smtp_destination_recipient_limit</a> ($<a href="postconf.5.html#default_destination_recipient_limit">default_destina</a>-</b>
<b><a href="postconf.5.html#default_destination_recipient_limit">tion_recipient_limit</a>)</b> <b><a href="postconf.5.html#default_destination_recipient_limit">tion_recipient_limit</a>)</b>
The maximal number of recipients per delivery via The maximal number of recipients per delivery via
the smtp message delivery transport. the smtp message delivery transport.
<b><a href="postconf.5.html#smtp_connect_timeout">smtp_connect_timeout</a> (30s)</b> <b><a href="postconf.5.html#smtp_connect_timeout">smtp_connect_timeout</a> (30s)</b>
The SMTP client time limit for completing a TCP The SMTP client time limit for completing a TCP
connection, or zero (use the operating system connection, or zero (use the operating system
built-in time limit). built-in time limit).
<b><a href="postconf.5.html#smtp_helo_timeout">smtp_helo_timeout</a> (300s)</b> <b><a href="postconf.5.html#smtp_helo_timeout">smtp_helo_timeout</a> (300s)</b>
The SMTP client time limit for sending the HELO or The SMTP client time limit for sending the HELO or
EHLO command, and for receiving the initial server EHLO command, and for receiving the initial server
response. response.
<b><a href="postconf.5.html#lmtp_lhlo_timeout">lmtp_lhlo_timeout</a> (300s)</b> <b><a href="postconf.5.html#lmtp_lhlo_timeout">lmtp_lhlo_timeout</a> (300s)</b>
The LMTP client time limit for sending the LHLO The LMTP client time limit for sending the LHLO
command, and for receiving the initial server command, and for receiving the initial server
response. response.
@ -501,30 +507,30 @@ SMTP(8) SMTP(8)
command, and for receiving the server response. command, and for receiving the server response.
<b><a href="postconf.5.html#smtp_mail_timeout">smtp_mail_timeout</a> (300s)</b> <b><a href="postconf.5.html#smtp_mail_timeout">smtp_mail_timeout</a> (300s)</b>
The SMTP client time limit for sending the MAIL The SMTP client time limit for sending the MAIL
FROM command, and for receiving the server FROM command, and for receiving the server
response. response.
<b><a href="postconf.5.html#smtp_rcpt_timeout">smtp_rcpt_timeout</a> (300s)</b> <b><a href="postconf.5.html#smtp_rcpt_timeout">smtp_rcpt_timeout</a> (300s)</b>
The SMTP client time limit for sending the SMTP The SMTP client time limit for sending the SMTP
RCPT TO command, and for receiving the server RCPT TO command, and for receiving the server
response. response.
<b><a href="postconf.5.html#smtp_data_init_timeout">smtp_data_init_timeout</a> (120s)</b> <b><a href="postconf.5.html#smtp_data_init_timeout">smtp_data_init_timeout</a> (120s)</b>
The SMTP client time limit for sending the SMTP The SMTP client time limit for sending the SMTP
DATA command, and for receiving the server DATA command, and for receiving the server
response. response.
<b><a href="postconf.5.html#smtp_data_xfer_timeout">smtp_data_xfer_timeout</a> (180s)</b> <b><a href="postconf.5.html#smtp_data_xfer_timeout">smtp_data_xfer_timeout</a> (180s)</b>
The SMTP client time limit for sending the SMTP The SMTP client time limit for sending the SMTP
message content. message content.
<b><a href="postconf.5.html#smtp_data_done_timeout">smtp_data_done_timeout</a> (600s)</b> <b><a href="postconf.5.html#smtp_data_done_timeout">smtp_data_done_timeout</a> (600s)</b>
The SMTP client time limit for sending the SMTP The SMTP client time limit for sending the SMTP
".", and for receiving the server response. ".", and for receiving the server response.
<b><a href="postconf.5.html#smtp_quit_timeout">smtp_quit_timeout</a> (300s)</b> <b><a href="postconf.5.html#smtp_quit_timeout">smtp_quit_timeout</a> (300s)</b>
The SMTP client time limit for sending the QUIT The SMTP client time limit for sending the QUIT
command, and for receiving the server response. command, and for receiving the server response.
Available in Postfix version 2.1 and later: Available in Postfix version 2.1 and later:
@ -535,12 +541,12 @@ SMTP(8) SMTP(8)
lookups, or zero (no limit). lookups, or zero (no limit).
<b><a href="postconf.5.html#smtp_mx_session_limit">smtp_mx_session_limit</a> (2)</b> <b><a href="postconf.5.html#smtp_mx_session_limit">smtp_mx_session_limit</a> (2)</b>
The maximal number of SMTP sessions per delivery The maximal number of SMTP sessions per delivery
request before giving up or delivering to a fall- request before giving up or delivering to a fall-
back <a href="postconf.5.html#relayhost">relay host</a>, or zero (no limit). back <a href="postconf.5.html#relayhost">relay host</a>, or zero (no limit).
<b><a href="postconf.5.html#smtp_rset_timeout">smtp_rset_timeout</a> (20s)</b> <b><a href="postconf.5.html#smtp_rset_timeout">smtp_rset_timeout</a> (20s)</b>
The SMTP client time limit for sending the RSET The SMTP client time limit for sending the RSET
command, and for receiving the server response. command, and for receiving the server response.
Available in Postfix version 2.2 and earlier: Available in Postfix version 2.2 and earlier:
@ -552,11 +558,11 @@ SMTP(8) SMTP(8)
Available in Postfix version 2.2 and later: Available in Postfix version 2.2 and later:
<b><a href="postconf.5.html#smtp_connection_cache_destinations">smtp_connection_cache_destinations</a> (empty)</b> <b><a href="postconf.5.html#smtp_connection_cache_destinations">smtp_connection_cache_destinations</a> (empty)</b>
Permanently enable SMTP connection caching for the Permanently enable SMTP connection caching for the
specified destinations. specified destinations.
<b><a href="postconf.5.html#smtp_connection_cache_on_demand">smtp_connection_cache_on_demand</a> (yes)</b> <b><a href="postconf.5.html#smtp_connection_cache_on_demand">smtp_connection_cache_on_demand</a> (yes)</b>
Temporarily enable SMTP connection caching while a Temporarily enable SMTP connection caching while a
destination has a high volume of mail in the active destination has a high volume of mail in the active
queue. queue.
@ -566,57 +572,57 @@ SMTP(8) SMTP(8)
<b><a href="postconf.5.html#smtp_connection_cache_time_limit">smtp_connection_cache_time_limit</a> (2s)</b> <b><a href="postconf.5.html#smtp_connection_cache_time_limit">smtp_connection_cache_time_limit</a> (2s)</b>
When SMTP connection caching is enabled, the amount When SMTP connection caching is enabled, the amount
of time that an unused SMTP client socket is kept of time that an unused SMTP client socket is kept
open before it is closed. open before it is closed.
Available in Postfix version 2.3 and later: Available in Postfix version 2.3 and later:
<b><a href="postconf.5.html#connection_cache_protocol_timeout">connection_cache_protocol_timeout</a> (5s)</b> <b><a href="postconf.5.html#connection_cache_protocol_timeout">connection_cache_protocol_timeout</a> (5s)</b>
Time limit for connection cache connect, send or Time limit for connection cache connect, send or
receive operations. receive operations.
<b>TROUBLE SHOOTING CONTROLS</b> <b>TROUBLE SHOOTING CONTROLS</b>
<b><a href="postconf.5.html#debug_peer_level">debug_peer_level</a> (2)</b> <b><a href="postconf.5.html#debug_peer_level">debug_peer_level</a> (2)</b>
The increment in verbose logging level when a The increment in verbose logging level when a
remote client or server matches a pattern in the remote client or server matches a pattern in the
<a href="postconf.5.html#debug_peer_list">debug_peer_list</a> parameter. <a href="postconf.5.html#debug_peer_list">debug_peer_list</a> parameter.
<b><a href="postconf.5.html#debug_peer_list">debug_peer_list</a> (empty)</b> <b><a href="postconf.5.html#debug_peer_list">debug_peer_list</a> (empty)</b>
Optional list of remote client or server hostname Optional list of remote client or server hostname
or network address patterns that cause the verbose or network address patterns that cause the verbose
logging level to increase by the amount specified logging level to increase by the amount specified
in $<a href="postconf.5.html#debug_peer_level">debug_peer_level</a>. in $<a href="postconf.5.html#debug_peer_level">debug_peer_level</a>.
<b><a href="postconf.5.html#error_notice_recipient">error_notice_recipient</a> (postmaster)</b> <b><a href="postconf.5.html#error_notice_recipient">error_notice_recipient</a> (postmaster)</b>
The recipient of postmaster notifications about The recipient of postmaster notifications about
mail delivery problems that are caused by policy, mail delivery problems that are caused by policy,
resource, software or protocol errors. resource, software or protocol errors.
<b><a href="postconf.5.html#notify_classes">notify_classes</a> (resource, software)</b> <b><a href="postconf.5.html#notify_classes">notify_classes</a> (resource, software)</b>
The list of error classes that are reported to the The list of error classes that are reported to the
postmaster. postmaster.
<b>MISCELLANEOUS CONTROLS</b> <b>MISCELLANEOUS CONTROLS</b>
<b><a href="postconf.5.html#best_mx_transport">best_mx_transport</a> (empty)</b> <b><a href="postconf.5.html#best_mx_transport">best_mx_transport</a> (empty)</b>
Where the Postfix SMTP client should deliver mail Where the Postfix SMTP client should deliver mail
when it detects a "mail loops back to myself" error when it detects a "mail loops back to myself" error
condition. condition.
<b><a href="postconf.5.html#config_directory">config_directory</a> (see 'postconf -d' output)</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. <a href="master.5.html">master.cf</a> configuration files.
<b><a href="postconf.5.html#daemon_timeout">daemon_timeout</a> (18000s)</b> <b><a href="postconf.5.html#daemon_timeout">daemon_timeout</a> (18000s)</b>
How much time a Postfix daemon process may take to How much time a Postfix daemon process may take to
handle a request before it is terminated by a handle a request before it is terminated by a
built-in watchdog timer. built-in watchdog timer.
<b><a href="postconf.5.html#delay_logging_resolution_limit">delay_logging_resolution_limit</a> (2)</b> <b><a href="postconf.5.html#delay_logging_resolution_limit">delay_logging_resolution_limit</a> (2)</b>
The maximal number of digits after the decimal The maximal number of digits after the decimal
point when logging sub-second delay values. point when logging sub-second delay values.
<b><a href="postconf.5.html#disable_dns_lookups">disable_dns_lookups</a> (no)</b> <b><a href="postconf.5.html#disable_dns_lookups">disable_dns_lookups</a> (no)</b>
Disable DNS lookups in the Postfix SMTP and LMTP Disable DNS lookups in the Postfix SMTP and LMTP
clients. clients.
<b><a href="postconf.5.html#inet_interfaces">inet_interfaces</a> (all)</b> <b><a href="postconf.5.html#inet_interfaces">inet_interfaces</a> (all)</b>
@ -624,7 +630,7 @@ SMTP(8) SMTP(8)
tem receives mail on. tem receives mail on.
<b><a href="postconf.5.html#inet_protocols">inet_protocols</a> (ipv4)</b> <b><a href="postconf.5.html#inet_protocols">inet_protocols</a> (ipv4)</b>
The Internet protocols Postfix will attempt to use The Internet protocols Postfix will attempt to use
when making or accepting connections. when making or accepting connections.
<b><a href="postconf.5.html#ipc_timeout">ipc_timeout</a> (3600s)</b> <b><a href="postconf.5.html#ipc_timeout">ipc_timeout</a> (3600s)</b>
@ -632,74 +638,74 @@ SMTP(8) SMTP(8)
over an internal communication channel. over an internal communication channel.
<b><a href="postconf.5.html#lmtp_tcp_port">lmtp_tcp_port</a> (24)</b> <b><a href="postconf.5.html#lmtp_tcp_port">lmtp_tcp_port</a> (24)</b>
The default TCP port that the Postfix LMTP client The default TCP port that the Postfix LMTP client
connects to. connects to.
<b><a href="postconf.5.html#max_idle">max_idle</a> (100s)</b> <b><a href="postconf.5.html#max_idle">max_idle</a> (100s)</b>
The maximum amount of time that an idle Postfix The maximum amount of time that an idle Postfix
daemon process waits for the next service request daemon process waits for the next service request
before exiting. before exiting.
<b><a href="postconf.5.html#max_use">max_use</a> (100)</b> <b><a href="postconf.5.html#max_use">max_use</a> (100)</b>
The maximal number of connection requests before a The maximal number of connection requests before a
Postfix daemon process terminates. Postfix daemon process terminates.
<b><a href="postconf.5.html#process_id">process_id</a> (read-only)</b> <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. process.
<b><a href="postconf.5.html#process_name">process_name</a> (read-only)</b> <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. process.
<b><a href="postconf.5.html#proxy_interfaces">proxy_interfaces</a> (empty)</b> <b><a href="postconf.5.html#proxy_interfaces">proxy_interfaces</a> (empty)</b>
The network interface addresses that this mail sys- 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. address translation unit.
<b><a href="postconf.5.html#smtp_bind_address">smtp_bind_address</a> (empty)</b> <b><a href="postconf.5.html#smtp_bind_address">smtp_bind_address</a> (empty)</b>
An optional numerical network address that the SMTP An optional numerical network address that the SMTP
client should bind to when making an IPv4 connec- client should bind to when making an IPv4 connec-
tion. tion.
<b><a href="postconf.5.html#smtp_bind_address6">smtp_bind_address6</a> (empty)</b> <b><a href="postconf.5.html#smtp_bind_address6">smtp_bind_address6</a> (empty)</b>
An optional numerical network address that the SMTP An optional numerical network address that the SMTP
client should bind to when making an IPv6 connec- client should bind to when making an IPv6 connec-
tion. tion.
<b><a href="postconf.5.html#smtp_helo_name">smtp_helo_name</a> ($<a href="postconf.5.html#myhostname">myhostname</a>)</b> <b><a href="postconf.5.html#smtp_helo_name">smtp_helo_name</a> ($<a href="postconf.5.html#myhostname">myhostname</a>)</b>
The hostname to send in the SMTP EHLO or HELO com- The hostname to send in the SMTP EHLO or HELO com-
mand. mand.
<b><a href="postconf.5.html#lmtp_lhloname">lmtp_lhlo_name</a> ($<a href="postconf.5.html#myhostname">myhostname</a>)</b> <b><a href="postconf.5.html#lmtp_lhloname">lmtp_lhlo_name</a> ($<a href="postconf.5.html#myhostname">myhostname</a>)</b>
The hostname to send in the LMTP LHLO command. The hostname to send in the LMTP LHLO command.
<b><a href="postconf.5.html#smtp_host_lookup">smtp_host_lookup</a> (dns)</b> <b><a href="postconf.5.html#smtp_host_lookup">smtp_host_lookup</a> (dns)</b>
What mechanisms when the SMTP client uses to look What mechanisms when the SMTP client uses to look
up a host's IP address. up a host's IP address.
<b><a href="postconf.5.html#smtp_randomize_addresses">smtp_randomize_addresses</a> (yes)</b> <b><a href="postconf.5.html#smtp_randomize_addresses">smtp_randomize_addresses</a> (yes)</b>
Randomize the order of equal-preference MX host Randomize the order of equal-preference MX host
addresses. addresses.
<b><a href="postconf.5.html#syslog_facility">syslog_facility</a> (mail)</b> <b><a href="postconf.5.html#syslog_facility">syslog_facility</a> (mail)</b>
The syslog facility of Postfix logging. The syslog facility of Postfix logging.
<b><a href="postconf.5.html#syslog_name">syslog_name</a> (postfix)</b> <b><a href="postconf.5.html#syslog_name">syslog_name</a> (postfix)</b>
The mail system name that is prepended to the The mail system name that is prepended to the
process name in syslog records, so that "smtpd" process name in syslog records, so that "smtpd"
becomes, for example, "postfix/smtpd". becomes, for example, "postfix/smtpd".
Available with Postfix 2.2 and earlier: Available with Postfix 2.2 and earlier:
<b><a href="postconf.5.html#fallback_relay">fallback_relay</a> (empty)</b> <b><a href="postconf.5.html#fallback_relay">fallback_relay</a> (empty)</b>
Optional list of relay hosts for SMTP destinations Optional list of relay hosts for SMTP destinations
that can't be found or that are unreachable. that can't be found or that are unreachable.
Available with Postfix 2.3 and later: Available with Postfix 2.3 and later:
<b><a href="postconf.5.html#smtp_fallback_relay">smtp_fallback_relay</a> ($<a href="postconf.5.html#fallback_relay">fallback_relay</a>)</b> <b><a href="postconf.5.html#smtp_fallback_relay">smtp_fallback_relay</a> ($<a href="postconf.5.html#fallback_relay">fallback_relay</a>)</b>
Optional list of relay hosts for SMTP destinations Optional list of relay hosts for SMTP destinations
that can't be found or that are unreachable. that can't be found or that are unreachable.
<b>SEE ALSO</b> <b>SEE ALSO</b>
@ -717,7 +723,7 @@ SMTP(8) SMTP(8)
<a href="TLS_README.html">TLS_README</a>, Postfix STARTTLS howto <a href="TLS_README.html">TLS_README</a>, Postfix STARTTLS howto
<b>LICENSE</b> <b>LICENSE</b>
The Secure Mailer license must be distributed with this The Secure Mailer license must be distributed with this
software. software.
<b>AUTHOR(S)</b> <b>AUTHOR(S)</b>

View File

@ -1883,6 +1883,11 @@ Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
The default time unit is s (seconds). The default time unit is s (seconds).
.SH lmtp_sasl_auth_enable (default: no) .SH lmtp_sasl_auth_enable (default: no)
Enable SASL authentication in the Postfix LMTP client. Enable SASL authentication in the Postfix LMTP client.
.SH lmtp_sasl_auth_enforce (default: yes)
The LMTP-specific version of the smtp_sasl_auth_enforce
configuration parameter. See there for details.
.PP
This feature is available in Postfix 2.3 and later.
.SH lmtp_sasl_mechanism_filter (default: empty) .SH lmtp_sasl_mechanism_filter (default: empty)
The LMTP-specific version of the smtp_sasl_mechanism_filter The LMTP-specific version of the smtp_sasl_mechanism_filter
configuration parameter. See there for details. configuration parameter. See there for details.
@ -4194,6 +4199,12 @@ smtp_sasl_auth_enable = yes
.fi .fi
.ad .ad
.ft R .ft R
.SH smtp_sasl_auth_enforce (default: yes)
Defer mail delivery when an SMTP server does not support SASL
authentication, while smtp_sasl_password_maps contains SASL
login/password information for that server.
.PP
This feature is available in Postfix 2.3 and later.
.SH smtp_sasl_mechanism_filter (default: empty) .SH smtp_sasl_mechanism_filter (default: empty)
If non-empty, a Postfix SMTP client filter for the remote SMTP If non-empty, a Postfix SMTP client filter for the remote SMTP
server's list of offered SASL mechanisms. Different client and server's list of offered SASL mechanisms. Different client and

View File

@ -262,6 +262,10 @@ If non-empty, a Postfix SMTP client filter for the remote SMTP
server's list of offered SASL mechanisms. server's list of offered SASL mechanisms.
.PP .PP
Available in Postfix version 2.3 and later: Available in Postfix version 2.3 and later:
.IP "\fBsmtp_sasl_auth_enforce (yes)\fR"
Defer mail delivery when an SMTP server does not support SASL
authentication, while smtp_sasl_password_maps contains SASL
login/password information for that server.
.IP "\fBsmtp_sender_dependent_authentication (no)\fR" .IP "\fBsmtp_sender_dependent_authentication (no)\fR"
Enable sender-dependent authentication in the SMTP client; this is Enable sender-dependent authentication in the SMTP client; this is
available only with SASL authentication, and disables SMTP connection available only with SASL authentication, and disables SMTP connection

View File

@ -252,6 +252,7 @@ while (<>) {
s;\blmtp_rcpt_timeout\b;<a href="postconf.5.html#lmtp_rcpt_timeout">$&</a>;g; s;\blmtp_rcpt_timeout\b;<a href="postconf.5.html#lmtp_rcpt_timeout">$&</a>;g;
s;\blmtp_rset_timeout\b;<a href="postconf.5.html#lmtp_rset_timeout">$&</a>;g; s;\blmtp_rset_timeout\b;<a href="postconf.5.html#lmtp_rset_timeout">$&</a>;g;
s;\blmtp_sasl_auth_enable\b;<a href="postconf.5.html#lmtp_sasl_auth_enable">$&</a>;g; s;\blmtp_sasl_auth_enable\b;<a href="postconf.5.html#lmtp_sasl_auth_enable">$&</a>;g;
s;\blmtp_sasl_auth_enforce\b;<a href="postconf.5.html#lmtp_sasl_auth_enforce">$&</a>;g;
s;\blmtp_sasl_password_maps\b;<a href="postconf.5.html#lmtp_sasl_password_maps">$&</a>;g; s;\blmtp_sasl_password_maps\b;<a href="postconf.5.html#lmtp_sasl_password_maps">$&</a>;g;
s;\blmtp_sasl_security_options\b;<a href="postconf.5.html#lmtp_sasl_security_options">$&</a>;g; s;\blmtp_sasl_security_options\b;<a href="postconf.5.html#lmtp_sasl_security_options">$&</a>;g;
s;\blmtp_sasl_type\b;<a href="postconf.5.html#lmtp_sasl_type">$&</a>;g; s;\blmtp_sasl_type\b;<a href="postconf.5.html#lmtp_sasl_type">$&</a>;g;
@ -418,7 +419,7 @@ while (<>) {
s;\bsmtp_rset_timeout\b;<a href="postconf.5.html#smtp_rset_timeout">$&</a>;g; s;\bsmtp_rset_timeout\b;<a href="postconf.5.html#smtp_rset_timeout">$&</a>;g;
s;\bsmtp_sasl_auth_enable\b;<a href="postconf.5.html#smtp_sasl_auth_enable">$&</a>;g; s;\bsmtp_sasl_auth_enable\b;<a href="postconf.5.html#smtp_sasl_auth_enable">$&</a>;g;
s;\bsmtp_sasl_mechanism_filter\b;<a href="postconf.5.html#smtp_sasl_mechanism_filter">$&</a>;g; s;\bsmtp_sasl_mechanism_filter\b;<a href="postconf.5.html#smtp_sasl_mechanism_filter">$&</a>;g;
s;\bsmtp_sasl_password_maps\b;<a href="postconf.5.html#smtp_sasl_password_maps">$&</a>;g; s;\bsmtp_sasl_pass[-</Bb>]*\n* *[<Bb>]*word_maps\b;<a href="postconf.5.html#smtp_sasl_password_maps">$&</a>;g;
s;\bsmtp_sasl_path\b;<a href="postconf.5.html#smtp_sasl_path">$&</a>;g; s;\bsmtp_sasl_path\b;<a href="postconf.5.html#smtp_sasl_path">$&</a>;g;
s;\bsmtp_sasl_secu[-</Bb>]*\n* *[<Bb>]*rity_options\b;<a href="postconf.5.html#smtp_sasl_security_options">$&</a>;g; s;\bsmtp_sasl_secu[-</Bb>]*\n* *[<Bb>]*rity_options\b;<a href="postconf.5.html#smtp_sasl_security_options">$&</a>;g;
s;\bsmtp_send_xforward_command\b;<a href="postconf.5.html#smtp_send_xforward_command">$&</a>;g; s;\bsmtp_send_xforward_command\b;<a href="postconf.5.html#smtp_send_xforward_command">$&</a>;g;
@ -524,6 +525,7 @@ while (<>) {
s;\bsmtp_[-</Bb>]*\n* *[<Bb>]*sasl_[-</Bb>]*\n* *[<Bb>]*tls_[-</Bb>]*\n* *[<Bb>]*secu[-</Bb>]*\n* *[<Bb>]*rity_options\b;<a href="postconf.5.html#smtp_sasl_tls_security_options">$&</a>;g; s;\bsmtp_[-</Bb>]*\n* *[<Bb>]*sasl_[-</Bb>]*\n* *[<Bb>]*tls_[-</Bb>]*\n* *[<Bb>]*secu[-</Bb>]*\n* *[<Bb>]*rity_options\b;<a href="postconf.5.html#smtp_sasl_tls_security_options">$&</a>;g;
s;\bsmtp_sasl_tls_verified_secu[-</Bb>]*\n* *[<Bb>]*rity_options\b;<a href="postconf.5.html#smtp_sasl_tls_verified_security_options">$&</a>;g; s;\bsmtp_sasl_tls_verified_secu[-</Bb>]*\n* *[<Bb>]*rity_options\b;<a href="postconf.5.html#smtp_sasl_tls_verified_security_options">$&</a>;g;
s;\bsmtp_sasl_type\b;<a href="postconf.5.html#smtp_sasl_type">$&</a>;g; s;\bsmtp_sasl_type\b;<a href="postconf.5.html#smtp_sasl_type">$&</a>;g;
s;\bsmtp_sasl_auth_enforce\b;<a href="postconf.5.html#smtp_sasl_auth_enforce">$&</a>;g;
s;\bsmtp_starttls_timeout\b;<a href="postconf.5.html#smtp_starttls_timeout">$&</a>;g; s;\bsmtp_starttls_timeout\b;<a href="postconf.5.html#smtp_starttls_timeout">$&</a>;g;
s;\bsmtp_tls_CAfile\b;<a href="postconf.5.html#smtp_tls_CAfile">$&</a>;g; s;\bsmtp_tls_CAfile\b;<a href="postconf.5.html#smtp_tls_CAfile">$&</a>;g;
s;\bsmtp_tls_CApath\b;<a href="postconf.5.html#smtp_tls_CApath">$&</a>;g; s;\bsmtp_tls_CApath\b;<a href="postconf.5.html#smtp_tls_CApath">$&</a>;g;

View File

@ -90,7 +90,7 @@ sasl_username=you
sasl_sender= sasl_sender=
size=12345 size=12345
ccert_subject=solaris9.porcupine.org ccert_subject=solaris9.porcupine.org
ccert_issuer=Wietse Venema ccert_issuer=Wietse+20Venema
ccert_fingerprint=C2:9D:F4:87:71:73:73:D9:18:E7:C2:F3:C1:DA:6E:04 ccert_fingerprint=C2:9D:F4:87:71:73:73:D9:18:E7:C2:F3:C1:DA:6E:04
<b>Postfix version 2.3 and later:</b> <b>Postfix version 2.3 and later:</b>
encryption_protocol=TLSv1/SSLv3 encryption_protocol=TLSv1/SSLv3
@ -161,6 +161,9 @@ etrn_domain=
<li> <p> The "ccert_*" attributes (Postfix 2.2 and later) specify <li> <p> The "ccert_*" attributes (Postfix 2.2 and later) specify
information about how the client was authenticated via TLS. information about how the client was authenticated via TLS.
These attributes are empty in case of no certificate authentication. These attributes are empty in case of no certificate authentication.
As of Postfix 2.2.11 these attribute values are encoded as
xtext: some characters are represented by +XX, where XX is the
two-digit hecadecimal representation of the character value.
</p> </p>
<li> <p> The "encryption_*" attributes (Postfix 2.3 and later) <li> <p> The "encryption_*" attributes (Postfix 2.3 and later)

View File

@ -10345,3 +10345,18 @@ configuration parameter. See there for details. </p>
configuration parameter. See there for details. </p> configuration parameter. See there for details. </p>
<p> This feature is available in Postfix 2.3 and later. </p> <p> This feature is available in Postfix 2.3 and later. </p>
%PARAM smtp_sasl_auth_enforce yes
<p> Defer mail delivery when an SMTP server does not support SASL
authentication, while smtp_sasl_password_maps contains SASL
login/password information for that server. </p>
<p> This feature is available in Postfix 2.3 and later. </p>
%PARAM lmtp_sasl_auth_enforce yes
<p> The LMTP-specific version of the smtp_sasl_auth_enforce
configuration parameter. See there for details. </p>
<p> This feature is available in Postfix 2.3 and later. </p>

View File

@ -1187,6 +1187,11 @@ static const char *cleanup_milter_eval(const char *name, void *ptr)
{ {
CLEANUP_STATE *state = (CLEANUP_STATE *) ptr; CLEANUP_STATE *state = (CLEANUP_STATE *) ptr;
/*
* Note: if we use XFORWARD attributes here, then consistency requires
* that we forward all Sendmail macros via XFORWARD.
*/
/* /*
* Canonicalize the name. * Canonicalize the name.
*/ */

View File

@ -133,15 +133,22 @@ void log_adhoc(const char *id, MSG_STATS *stats, RECIPIENT *recipient,
* *
* Don't compute the sdelay (connection setup latency) if there is no time * Don't compute the sdelay (connection setup latency) if there is no time
* stamp for connection setup completion. * stamp for connection setup completion.
*
* XXX Apparently, Solaris gettimeofday() can return out-of-range
* microsecond values.
*/ */
#define DELTA(x, y, z) \ #define DELTA(x, y, z) \
do { \ do { \
(x).dt_sec = (y).tv_sec - (z).tv_sec; \ (x).dt_sec = (y).tv_sec - (z).tv_sec; \
(x).dt_usec = (y).tv_usec - (z).tv_usec; \ (x).dt_usec = (y).tv_usec - (z).tv_usec; \
if ((x).dt_usec < 0) { \ while ((x).dt_usec < 0) { \
(x).dt_usec += 1000000; \ (x).dt_usec += 1000000; \
(x).dt_sec -= 1; \ (x).dt_sec -= 1; \
} \ } \
while ((x).dt_usec >= 1000000) { \
(x).dt_usec -= 1000000; \
(x).dt_sec += 1; \
} \
if ((x).dt_sec < 0) \ if ((x).dt_sec < 0) \
(x).dt_sec = (x).dt_usec = 0; \ (x).dt_sec = (x).dt_usec = 0; \
} while (0) } while (0)

View File

@ -1384,6 +1384,10 @@ extern bool var_smtp_sasl_enable;
#define DEF_SMTP_SASL_PASSWD "" #define DEF_SMTP_SASL_PASSWD ""
extern char *var_smtp_sasl_passwd; extern char *var_smtp_sasl_passwd;
#define VAR_SMTP_SASL_ENFORCE "smtp_sasl_auth_enforce"
#define DEF_SMTP_SASL_ENFORCE 1
extern bool var_smtp_sasl_enforce;
#define VAR_SMTP_SASL_OPTS "smtp_sasl_security_options" #define VAR_SMTP_SASL_OPTS "smtp_sasl_security_options"
#define DEF_SMTP_SASL_OPTS "noplaintext, noanonymous" #define DEF_SMTP_SASL_OPTS "noplaintext, noanonymous"
extern char *var_smtp_sasl_opts; extern char *var_smtp_sasl_opts;
@ -1479,6 +1483,9 @@ extern bool var_lmtp_sasl_enable;
#define DEF_LMTP_SASL_PASSWD "" #define DEF_LMTP_SASL_PASSWD ""
extern char *var_lmtp_sasl_passwd; extern char *var_lmtp_sasl_passwd;
#define VAR_LMTP_SASL_ENFORCE "lmtp_sasl_auth_enforce"
#define DEF_LMTP_SASL_ENFORCE 1
#define VAR_LMTP_SASL_OPTS "lmtp_sasl_security_options" #define VAR_LMTP_SASL_OPTS "lmtp_sasl_security_options"
#define DEF_LMTP_SASL_OPTS "noplaintext, noanonymous" #define DEF_LMTP_SASL_OPTS "noplaintext, noanonymous"
extern char *var_lmtp_sasl_opts; extern char *var_lmtp_sasl_opts;

View File

@ -135,7 +135,7 @@ extern char *mail_pathname(const char *, const char *);
#define MAIL_ATTR_LABEL "label" #define MAIL_ATTR_LABEL "label"
#define MAIL_ATTR_PROP "property" #define MAIL_ATTR_PROP "property"
#define MAIL_ATTR_CCERT_SUBJECT "ccert_subject" #define MAIL_ATTR_CCERT_SUBJECT "ccert_subject"
#define MAIL_ATTR_CCERT_ISSSUER "ccert_issuer" #define MAIL_ATTR_CCERT_ISSUER "ccert_issuer"
#define MAIL_ATTR_CCERT_FINGERPRINT "ccert_fingerprint" #define MAIL_ATTR_CCERT_FINGERPRINT "ccert_fingerprint"
#define MAIL_ATTR_CRYPTO_PROTOCOL "encryption_protocol" #define MAIL_ATTR_CRYPTO_PROTOCOL "encryption_protocol"
#define MAIL_ATTR_CRYPTO_CIPHER "encryption_cipher" #define MAIL_ATTR_CRYPTO_CIPHER "encryption_cipher"

View File

@ -20,8 +20,8 @@
* Patches change both the patchlevel and the release date. Snapshots have no * Patches change both the patchlevel and the release date. Snapshots have no
* patchlevel; they change the release date only. * patchlevel; they change the release date only.
*/ */
#define MAIL_RELEASE_DATE "20060706" #define MAIL_RELEASE_DATE "20060707"
#define MAIL_VERSION_NUMBER "2.3-RC7" #define MAIL_VERSION_NUMBER "2.3-RC8"
#define VAR_MAIL_VERSION "mail_version" #define VAR_MAIL_VERSION "mail_version"
#define DEF_MAIL_VERSION MAIL_VERSION_NUMBER #define DEF_MAIL_VERSION MAIL_VERSION_NUMBER

View File

@ -95,5 +95,6 @@
#endif #endif
VAR_LMTP_SENDER_AUTH, DEF_LMTP_SENDER_AUTH, &var_smtp_sender_auth, VAR_LMTP_SENDER_AUTH, DEF_LMTP_SENDER_AUTH, &var_smtp_sender_auth,
VAR_LMTP_CNAME_OVERR, DEF_LMTP_CNAME_OVERR, &var_smtp_cname_overr, VAR_LMTP_CNAME_OVERR, DEF_LMTP_CNAME_OVERR, &var_smtp_cname_overr,
VAR_LMTP_SASL_ENFORCE, DEF_LMTP_SASL_ENFORCE, &var_smtp_sasl_enforce,
0, 0,
}; };

View File

@ -234,6 +234,10 @@
/* server's list of offered SASL mechanisms. /* server's list of offered SASL mechanisms.
/* .PP /* .PP
/* Available in Postfix version 2.3 and later: /* Available in Postfix version 2.3 and later:
/* .IP "\fBsmtp_sasl_auth_enforce (yes)\fR"
/* Defer mail delivery when an SMTP server does not support SASL
/* authentication, while smtp_sasl_password_maps contains SASL
/* login/password information for that server.
/* .IP "\fBsmtp_sender_dependent_authentication (no)\fR" /* .IP "\fBsmtp_sender_dependent_authentication (no)\fR"
/* Enable sender-dependent authentication in the SMTP client; this is /* Enable sender-dependent authentication in the SMTP client; this is
/* available only with SASL authentication, and disables SMTP connection /* available only with SASL authentication, and disables SMTP connection
@ -691,6 +695,7 @@ bool var_smtp_sender_auth;
char *var_lmtp_tcp_port; char *var_lmtp_tcp_port;
int var_scache_proto_tmout; int var_scache_proto_tmout;
bool var_smtp_cname_overr; bool var_smtp_cname_overr;
bool var_smtp_sasl_enforce;
/* /*
* Global variables. * Global variables.

View File

@ -99,5 +99,6 @@
#endif #endif
VAR_SMTP_SENDER_AUTH, DEF_SMTP_SENDER_AUTH, &var_smtp_sender_auth, VAR_SMTP_SENDER_AUTH, DEF_SMTP_SENDER_AUTH, &var_smtp_sender_auth,
VAR_SMTP_CNAME_OVERR, DEF_SMTP_CNAME_OVERR, &var_smtp_cname_overr, VAR_SMTP_CNAME_OVERR, DEF_SMTP_CNAME_OVERR, &var_smtp_cname_overr,
VAR_SMTP_SASL_ENFORCE, DEF_SMTP_SASL_ENFORCE, &var_smtp_sasl_enforce,
0, 0,
}; };

View File

@ -600,6 +600,15 @@ int smtp_helo(SMTP_STATE *state)
#ifdef USE_SASL_AUTH #ifdef USE_SASL_AUTH
if (var_smtp_sasl_enable && (session->features & SMTP_FEATURE_AUTH)) if (var_smtp_sasl_enable && (session->features & SMTP_FEATURE_AUTH))
return (smtp_sasl_helo_login(state)); return (smtp_sasl_helo_login(state));
else if (var_smtp_sasl_enable
&& *var_smtp_sasl_passwd
&& var_smtp_sasl_enforce
&& smtp_sasl_passwd_lookup(session) != 0)
return (smtp_site_fail(state, DSN_BY_LOCAL_MTA,
SMTP_RESP_FAKE(&fake, "4.7.0"),
"SASL login/password exists, but host %s "
"does not announce SASL authentication support",
session->namaddr));
#endif #endif
return (0); return (0);

View File

@ -286,6 +286,7 @@ smtpd_check.o: ../../include/vbuf.h
smtpd_check.o: ../../include/verify_clnt.h smtpd_check.o: ../../include/verify_clnt.h
smtpd_check.o: ../../include/vstream.h smtpd_check.o: ../../include/vstream.h
smtpd_check.o: ../../include/vstring.h smtpd_check.o: ../../include/vstring.h
smtpd_check.o: ../../include/xtext.h
smtpd_check.o: smtpd.h smtpd_check.o: smtpd.h
smtpd_check.o: smtpd_check.c smtpd_check.o: smtpd_check.c
smtpd_check.o: smtpd_check.h smtpd_check.o: smtpd_check.h

View File

@ -236,6 +236,7 @@
#include <valid_mailhost_addr.h> #include <valid_mailhost_addr.h>
#include <dsn_util.h> #include <dsn_util.h>
#include <conv_time.h> #include <conv_time.h>
#include <xtext.h>
/* Application-specific. */ /* Application-specific. */
@ -3251,6 +3252,15 @@ static int check_policy_service(SMTPD_STATE *state, const char *server,
static VSTRING *action = 0; static VSTRING *action = 0;
ATTR_CLNT *policy_clnt; ATTR_CLNT *policy_clnt;
#ifdef USE_TLS
VSTRING *subject_buf;
VSTRING *issuer_buf;
const char *subject;
const char *issuer;
#endif
int ret;
/* /*
* Sanity check. * Sanity check.
*/ */
@ -3265,6 +3275,23 @@ static int check_policy_service(SMTPD_STATE *state, const char *server,
if (action == 0) if (action == 0)
action = vstring_alloc(10); action = vstring_alloc(10);
#ifdef USE_TLS
#define ENCODE_CN(coded_CN, coded_CN_buf, CN) do { \
if (state->tls_context == 0 \
|| state->tls_context->peer_verified == 0 || (CN) == 0) { \
coded_CN_buf = 0; \
coded_CN = ""; \
} else { \
coded_CN_buf = vstring_alloc(strlen(CN)); \
xtext_quote(coded_CN_buf, CN, ""); \
coded_CN = STR(coded_CN_buf); \
} \
} while (0);
ENCODE_CN(subject, subject_buf, state->tls_context->peer_CN);
ENCODE_CN(issuer, issuer_buf, state->tls_context->issuer_CN);
#endif
if (attr_clnt_request(policy_clnt, if (attr_clnt_request(policy_clnt,
ATTR_FLAG_NONE, /* Query attributes. */ ATTR_FLAG_NONE, /* Query attributes. */
ATTR_TYPE_STR, MAIL_ATTR_REQ, "smtpd_access_policy", ATTR_TYPE_STR, MAIL_ATTR_REQ, "smtpd_access_policy",
@ -3308,10 +3335,8 @@ static int check_policy_service(SMTPD_STATE *state, const char *server,
#define IF_VERIFIED(x) \ #define IF_VERIFIED(x) \
((state->tls_context && \ ((state->tls_context && \
state->tls_context->peer_verified && ((x) != 0)) ? (x) : "") state->tls_context->peer_verified && ((x) != 0)) ? (x) : "")
ATTR_TYPE_STR, MAIL_ATTR_CCERT_SUBJECT, ATTR_TYPE_STR, MAIL_ATTR_CCERT_SUBJECT, subject,
IF_VERIFIED(state->tls_context->peer_CN), ATTR_TYPE_STR, MAIL_ATTR_CCERT_ISSUER, issuer,
ATTR_TYPE_STR, MAIL_ATTR_CCERT_ISSSUER,
IF_VERIFIED(state->tls_context->issuer_CN),
ATTR_TYPE_STR, MAIL_ATTR_CCERT_FINGERPRINT, ATTR_TYPE_STR, MAIL_ATTR_CCERT_FINGERPRINT,
IF_VERIFIED(state->tls_context->peer_fingerprint), IF_VERIFIED(state->tls_context->peer_fingerprint),
#define IF_ENCRYPTED(x, y) ((state->tls_context && ((x) != 0)) ? (x) : (y)) #define IF_ENCRYPTED(x, y) ((state->tls_context && ((x) != 0)) ? (x) : (y))
@ -3326,19 +3351,26 @@ static int check_policy_service(SMTPD_STATE *state, const char *server,
ATTR_FLAG_MISSING, /* Reply attributes. */ ATTR_FLAG_MISSING, /* Reply attributes. */
ATTR_TYPE_STR, MAIL_ATTR_ACTION, action, ATTR_TYPE_STR, MAIL_ATTR_ACTION, action,
ATTR_TYPE_END) != 1) { ATTR_TYPE_END) != 1) {
return (smtpd_check_reject(state, MAIL_ERROR_POLICY, ret = smtpd_check_reject(state, MAIL_ERROR_POLICY,
451, "4.3.5", 451, "4.3.5",
"Server configuration problem")); "Server configuration problem");
} else { } else {
/* /*
* XXX This produces bogus error messages when the reply is * XXX This produces bogus error messages when the reply is
* malformed. * malformed.
*/ */
return (check_table_result(state, server, STR(action), ret = check_table_result(state, server, STR(action),
"policy query", reply_name, "policy query", reply_name,
reply_class, def_acl)); reply_class, def_acl);
} }
#ifdef USE_TLS
if (subject_buf)
vstring_free(subject_buf);
if (issuer_buf)
vstring_free(issuer_buf);
#endif
return (ret);
} }
/* is_map_command - restriction has form: check_xxx_access type:name */ /* is_map_command - restriction has form: check_xxx_access type:name */

View File

@ -138,6 +138,15 @@ void smtpd_peer_init(SMTPD_STATE *state)
/* /*
* Look up the peer address information. * Look up the peer address information.
*
* XXX If we make local endpoint (getsockname) information available to
* Milter applications as {if_name} and {if_addr}, then we also must be
* able to provide this via the XCLIENT command for Milter testing.
*
* XXX If support were to be added for Milter applications in down-stream
* MTAs, then consistency demands that we propagate a lot of Sendmail
* macro information via the XFORWARD command. Otherwise we could end up
* with a very confusing situation.
*/ */
if (getpeername(vstream_fileno(state->client), sa, &sa_length) >= 0) { if (getpeername(vstream_fileno(state->client), sa, &sa_length) >= 0) {
errno = 0; errno = 0;