]> git.ipfire.org Git - thirdparty/postfix.git/commitdiff
postfix-2.6.0-RC2 v2.6.0-RC2
authorWietse Venema <wietse@porcupine.org>
Sat, 18 Apr 2009 05:00:00 +0000 (00:00 -0500)
committerViktor Dukhovni <postfix-users@dukhovni.org>
Sat, 10 Feb 2018 19:15:44 +0000 (14:15 -0500)
120 files changed:
postfix/.indent.pro
postfix/HISTORY
postfix/README_FILES/TLS_LEGACY_README
postfix/README_FILES/TLS_README
postfix/RELEASE_NOTES
postfix/WISHLIST [deleted file]
postfix/html/BASIC_CONFIGURATION_README.html
postfix/html/DSN_README.html
postfix/html/IPV6_README.html
postfix/html/MAILDROP_README.html
postfix/html/SCHEDULER_README.html
postfix/html/TLS_LEGACY_README.html
postfix/html/TLS_README.html
postfix/html/UUCP_README.html
postfix/html/VERP_README.html
postfix/html/anvil.8.html
postfix/html/bounce.8.html
postfix/html/cleanup.8.html
postfix/html/defer.8.html
postfix/html/discard.8.html
postfix/html/error.8.html
postfix/html/flush.8.html
postfix/html/lmtp.8.html
postfix/html/local.8.html
postfix/html/master.8.html
postfix/html/oqmgr.8.html
postfix/html/pickup.8.html
postfix/html/pipe.8.html
postfix/html/postalias.1.html
postfix/html/postconf.5.html
postfix/html/postdrop.1.html
postfix/html/postlog.1.html
postfix/html/postmap.1.html
postfix/html/postqueue.1.html
postfix/html/postsuper.1.html
postfix/html/qmgr.8.html
postfix/html/qmqpd.8.html
postfix/html/scache.8.html
postfix/html/showq.8.html
postfix/html/smtp.8.html
postfix/html/smtpd.8.html
postfix/html/spawn.8.html
postfix/html/tlsmgr.8.html
postfix/html/trace.8.html
postfix/html/trivial-rewrite.8.html
postfix/html/virtual.8.html
postfix/man/man1/postalias.1
postfix/man/man1/postdrop.1
postfix/man/man1/postlog.1
postfix/man/man1/postmap.1
postfix/man/man1/postqueue.1
postfix/man/man1/postsuper.1
postfix/man/man5/postconf.5
postfix/man/man8/anvil.8
postfix/man/man8/bounce.8
postfix/man/man8/cleanup.8
postfix/man/man8/discard.8
postfix/man/man8/error.8
postfix/man/man8/flush.8
postfix/man/man8/local.8
postfix/man/man8/master.8
postfix/man/man8/oqmgr.8
postfix/man/man8/pickup.8
postfix/man/man8/pipe.8
postfix/man/man8/qmgr.8
postfix/man/man8/qmqpd.8
postfix/man/man8/scache.8
postfix/man/man8/showq.8
postfix/man/man8/smtp.8
postfix/man/man8/smtpd.8
postfix/man/man8/spawn.8
postfix/man/man8/tlsmgr.8
postfix/man/man8/trivial-rewrite.8
postfix/man/man8/virtual.8
postfix/mantools/check-postlink [new file with mode: 0755]
postfix/mantools/postlink
postfix/proto/TLS_LEGACY_README.html
postfix/proto/TLS_README.html
postfix/proto/postconf.proto
postfix/src/anvil/anvil.c
postfix/src/bounce/bounce.c
postfix/src/cleanup/cleanup.c
postfix/src/discard/discard.c
postfix/src/error/error.c
postfix/src/flush/flush.c
postfix/src/global/mail_params.h
postfix/src/global/mail_version.h
postfix/src/local/local.c
postfix/src/master/master.c
postfix/src/oqmgr/qmgr.c
postfix/src/pickup/pickup.c
postfix/src/pipe/pipe.c
postfix/src/postalias/postalias.c
postfix/src/postconf/Makefile.in
postfix/src/postconf/extract.awk
postfix/src/postdrop/postdrop.c
postfix/src/postlog/postlog.c
postfix/src/postmap/postmap.c
postfix/src/postqueue/postqueue.c
postfix/src/postsuper/postsuper.c
postfix/src/qmgr/qmgr.c
postfix/src/qmqpd/qmqpd.c
postfix/src/scache/scache.c
postfix/src/showq/showq.c
postfix/src/smtp/lmtp_params.c
postfix/src/smtp/smtp.c
postfix/src/smtp/smtp_params.c
postfix/src/smtp/smtp_sasl_glue.c
postfix/src/smtpd/smtpd.c
postfix/src/smtpd/smtpd_sasl_glue.c
postfix/src/spawn/spawn.c
postfix/src/tlsmgr/tlsmgr.c
postfix/src/trivial-rewrite/trivial-rewrite.c
postfix/src/virtual/virtual.c
postfix/src/xsasl/xsasl.h
postfix/src/xsasl/xsasl_client.c
postfix/src/xsasl/xsasl_cyrus_client.c
postfix/src/xsasl/xsasl_cyrus_server.c
postfix/src/xsasl/xsasl_dovecot_server.c
postfix/src/xsasl/xsasl_server.c

index 32dcd9910000ddc3dea3312464aa13866e6acd14..6fd89ea4d459a4e8b28a67fe73be2f780e4ca450 100644 (file)
 -TVBUF
 -TVSTREAM
 -TVSTREAM_POPEN_ARGS
--TVSTREAN_POPEN_ARGS
 -TVSTRING
 -TWAIT_STATUS_T
 -TWATCHDOG
 -TX509_NAME
 -TX509_STORE_CTX
 -TXSASL_CLIENT
+-TXSASL_CLIENT_CREATE_ARGS
 -TXSASL_CLIENT_IMPL
 -TXSASL_CLIENT_IMPL_INFO
 -TXSASL_CYRUS_CLIENT
 -TXSASL_DOVECOT_SERVER_IMPL
 -TXSASL_DOVECOT_SERVER_MECHS
 -TXSASL_SERVER
+-TXSASL_SERVER_CREATE_ARGS
 -TXSASL_SERVER_IMPL
 -TXSASL_SERVER_IMPL_INFO
 -Tcipher_probe_t
index 41a0c3c68d90428ef627ede4a26eaaf93cac7e63..58f8574a175656071a6566ba3b394b3dd5690855 100644 (file)
@@ -15091,3 +15091,45 @@ Apologies for any names omitted.
        global/deliver_request.c.
 
        Documentation: updated STRESS_README.
+
+20090416
+
+       Workaround: some AWK implementations have a limit of 10
+       output files and lack a working close() function. It is too
+       much trouble to find out what systems have this limitation,
+       and where, if any, such systems store their XPG4-compatible
+       AWK program.  So instead we generate a stream of here
+       documents and let the shell split the stream into files.
+       File: postconf/extract.awk.
+
+       Documentation: clarification of certificate file usage.
+       Victor Duchovni.  Files: proto/postconf.proto,
+       proto/TLS_README.html.
+
+       Feature: pass a "TLS is active" flag to the server-side
+       SASL support.  Based on code by Timo Sirainen, except that
+       the implementation uses an extensible API so that it will
+       be less painful to add more attributes in future Postfix
+       versions.  Files: xsasl/xsasl.h, xsasl/xsasl_*server.c,
+       smtpd/smtpd_sasl_glue.c.
+
+20090417
+
+       Documentation: re-generate READMEs and manpages for updated
+       hyperlinks.
+
+       Documentation: missing hyperlinks and missing parameters
+       in manpages. File: mantools/postlink, mantools/check-postlink.
+
+20090418
+
+       Cleanup: use the extensible API to pass SMTP client address
+       information to the dovecot SASL plugin, and prepare for
+       passing server address information. Files: xsasl/xsasl.h,
+       xsasl/xsasl_dovecot_server.c, smtpd/smtpd_sasl_glue.c.
+
+       Same extensible API transformation for the SASL client-side
+       code to make future extensions less painful. Files:
+       xsasl/xsasl.h, xsasl/xsasl*client.c, smtp/smtp_sasl_glue.c.
+
+       More postlink fixes. File: mantools/postlink.
index f78af3ff6a8cd514c79dc23216a5bd466cbfa4bb..1f82652a29942eda3a727acff2230de11a6e8e86 100644 (file)
@@ -375,7 +375,7 @@ is high.
 Example:
 
     /etc/postfix/main.cf:
-        smtpd_tls_session_cache_database = btree:/var/lib/postfix/smtpd_scache
+        smtpd_tls_session_cache_database = btree:/etc/postfix/smtpd_scache
 
 As of version 2.5, Postfix will no longer maintain this file in a directory
 with non-Postfix ownership. As a migration aid, attempts to open such files are
@@ -631,7 +631,7 @@ client is allowed to negotiate per unit time.
 Example:
 
     /etc/postfix/main.cf:
-        smtp_tls_session_cache_database = btree:/var/lib/postfix/smtp_scache
+        smtp_tls_session_cache_database = btree:/etc/postfix/smtp_scache
 
 As of version 2.5, Postfix will no longer maintain this file in a directory
 with non-Postfix ownership. As a migration aid, attempts to open such files are
index 47adf0b7ce052ba778eade5ae33999f5f0808ae5..a408a86c5fa1947a695910969db27e4265c120a7 100644 (file)
@@ -160,10 +160,10 @@ configure all three at the same time, in which case the cipher used determines
 which certificate is presented. For Netscape and OpenSSL clients without
 special cipher choices, the RSA certificate is preferred.
 
-In order for remote SMTP clients to check the Postfix SMTP server certificates,
-the CA certificate (in case of a certificate chain, all CA certificates) must
-be available. You should add any intermediate CA certificates to the server
-certificate: the server certificate first, then the intermediate CA(s).
+To enable a remote SMTP client to verify the Postfix SMTP server certificate,
+the issuing CA certificates must be made available to the client. You should
+include the required certificates in the server certificate file, the server
+certificate first, then the issuing CA(s) (bottom-up order).
 
 Example: the certificate for "server.example.com" was issued by "intermediate
 CA" which itself has a certificate issued by "root CA". Create the server.pem
@@ -227,14 +227,14 @@ files in the directory when the information is needed. Thus, the
 $smtpd_tls_CApath directory needs to be accessible inside the optional chroot
 jail.
 
-When you configure the Postfix SMTP server to request client certificates, any
-CA certificates in $smtpd_tls_CAfile are sent to the client, in order to allow
-it to choose an identity signed by a CA you trust. If no $smtpd_tls_CAfile is
-specified, no preferred CA list is sent, and the client is free to choose an
-identity signed by any CA. Many clients use a fixed identity regardless of the
-preferred CA list and you may be able to reduce TLS negotiation overhead by
-installing client CA certificates mostly or only in $smtpd_tls_CApath. In the
-latter case you need not specify a $smtpd_tls_CAfile.
+When you configure the Postfix SMTP server to request client certificates, the
+DNs of certificate authorities in $smtpd_tls_CAfile are sent to the client, in
+order to allow it to choose an identity signed by a CA you trust. If no
+$smtpd_tls_CAfile is specified, no preferred CA list is sent, and the client is
+free to choose an identity signed by any CA. Many clients use a fixed identity
+regardless of the preferred CA list and you may be able to reduce TLS
+negotiation overhead by installing client CA certificates mostly or only in
+$smtpd_tls_CApath. In the latter case you need not specify a $smtpd_tls_CAfile.
 
 Note, that unless client certificates are used to allow greater access to TLS
 authenticated clients, it is best to not ask for client certificates at all, as
@@ -670,14 +670,14 @@ as the Postfix SMTP server. If a certificate is to be presented, it must be in
 accessible without password. Both parts (certificate and private key) may be in
 the same file.
 
-In order for remote SMTP servers to verify the Postfix SMTP client
-certificates, the CA certificate (in case of a certificate chain, all CA
-certificates) must be available. You should add these certificates to the
-client certificate, the client certificate first, then the issuing CA(s).
+To enable remote SMTP servers to verify the Postfix SMTP client certificate,
+the issuing CA certificates must be made available to the server. You should
+include the required certificates in the client certificate file, the client
+certificate first, then the issuing CA(s) (bottom-up order).
 
 Example: the certificate for "client.example.com" was issued by "intermediate
-CA" which itself has a certificate of "root CA". Create the client.pem file
-with:
+CA" which itself has a certificate issued by "root CA". Create the client.pem
+file with:
 
     % c\bca\bat\bt c\bcl\bli\bie\ben\bnt\bt_\b_c\bce\ber\brt\bt.\b.p\bpe\bem\bm i\bin\bnt\bte\ber\brm\bme\bed\bdi\bia\bat\bte\be_\b_C\bCA\bA.\b.p\bpe\bem\bm >\b> c\bcl\bli\bie\ben\bnt\bt.\b.p\bpe\bem\bm
 
index cf51d3ffd999556c432f618a2cdf6f1197c3948a..bad09030230795a77ebe84ca5fd3016d6d3c5940 100644 (file)
@@ -20,8 +20,9 @@ only when clients match $local_header_rewrite_clients.  Specify
 Adding such headers can break DKIM signatures that cover headers
 that are not present.
 
-This changes the appearance of Postfix logging: some messages will
-no longer log a message-id=<...text...> line.
+This changes the appearance of Postfix logging: to preserve
+compatibility with existing logfile processing software, Postfix
+will log ``message-id=<>'' for messages without Message-Id header.
 
 Major changes with snapshot 20090212
 ====================================
diff --git a/postfix/WISHLIST b/postfix/WISHLIST
deleted file mode 100644 (file)
index 48652ee..0000000
+++ /dev/null
@@ -1,379 +0,0 @@
-Wish list:
-
-       "postconf -N" option to print user-defined parameter names
-       (these have no defaults, since they exist only when 
-       specified in main.cf or with "-o name=value").
-
-       Make the "unknown recipient" test configurable as
-       first|last|never, with "yes"=="last" for backwards
-       compatibility. The "first" setting is good for performance
-       (stress=yes) when all users are defined in local files.
-
-       Cleanup: make DNSBL query format configurable beyond the
-       client's reversed IP address.
-
-       With 'final delivery' in the LMTP client, need an option
-       to also add delivered-to and other pipe(8) features.  This
-       requires making mail_copy() functionality available in
-       non-mailbox context.
-
-       To work around historical AWK's limit of 10 open files,
-       pipe all output into a shell and have the shell open files.
-       It's too much pain to find out what systems use ancient AWK
-       and where, if any, they keep the XPG4 compliant version.
-
-       Cleanup: modernize the "add missing From: header" code, to
-       ``phrase <addr>'' form. Most likely, quote the entire phrase
-       if it contains any text that is special, then rfc822_externalize
-       the whole thing.
-
-       SMTP server: make the server_addr and server_port port
-       available to policy server, Dovecot, and perhaps Milters.
-
-       Maybe change maps_rbl_reject_code default to 521, and
-       update wording in STRESS_README.
-
-       reject_unlisted_recipient = (yes | late | early | no) with
-       yes===late, for backwards compatibility. Ditto for
-       reject_unlisted_sender.
-
-       Set a flag when a remote SMTP client speaks before the
-       Postfix SMTP server sends the 220 greeting.
-
-       Encapsulate time_t comparisons so that they can be made
-       system dependent (use difftime() where available).
-
-       Encapsulate time_t conversions (e.g. REC_TYPE_TIME) so that
-       they can be made system dependent.
-
-       Plan for time_t larger than long, or wait for LP64 to
-       dominate the world?
-
-       Make "AUTH=<>" appendage to MAIL FROM configurable, enabled
-       by default.
-
-       To support ternary operator without a huge parsing effort,
-       consider ${value?{xxx}:{yyy}} where ${name} is existing
-       syntax, and where ?{text} and :{text} are new syntax that
-       is unlikely to break existing configurations. Or perhaps
-       it's just too ugly.
-
-       Make adding Date/From/Message-ID headers dependent on local
-       rewrite context.
-
-       Make adding date/from/etc. conditional. Perhaps on header
-       rewrite context? Do we need a more powerful concept than
-       local_header_rewrite_clients/remote_header_rewrite_domain?
-
-       Write delivery rate delay example (which _README?) and auth
-       failure cache example (SASL_README). Then include them in
-       SOHO_README.
-
-       Look for alternatives for the use of non_smtpd_milters.
-       This involves some way to force local submissions to go
-       through a local SMTP client and server, without triggering
-       "mail loops back to myself" false alarms. The advantage is
-       that it makes smtpd_mumble_restrictions available for local
-       and remote mail; the disadvantage is that it makes local
-       submissions more dependent on networking.  One possibility
-       is to use "pickup -o content_filter=smtp:127.0.0.1:10025";
-       we could also decide to always suppress "mail loop" detection
-       for loopback connections.  Another option is to have the
-       pickup or cleanup server drive an SMTP client directly;
-       this would require extension of the mail_stream() interface,
-       plus a way to handle bounced/deferred recipients intelligently.
-
-       Consolidate duplicated code in *_server_accept_{pass,inet}().
-
-       Consolidate duplicated code in {inet,unix,upass}_trigger.c.
-
-       In the SMTP client, handle 421 replies in smtp_loop() by
-       having the input function raise a flag after detecting 421
-       (kill connection caching and be sure to do the right thing
-       with RSET probes), leave the smtp_loop() per-command reply
-       handlers unchanged, and have the smtp_loop() reader loop
-       bail out with smtp_site_fail("server disconnected after
-       %s", where), but only in the case that it isn't already in
-       the final state. But first we need to clean up the handling
-       of do/don't cache, expired, bad and dead sessions.
-
-       Combine smtpd_peer.c and qmqpd_peer.c into a single function
-       that produces a client context object, and provide attribute
-       print/scan routines that pass these client context objects
-       around. With this, we no longer have to update a multiple
-       pieces of code when a client attribute is added. Ditto for
-       SASL and TLS context.
-
-       Make TLS_BIO_BUFSIZE run-time adjustable, to future-proof
-       Postfix for remote connections with MSS > 8 kbytes.
-
-       Don't log "warning: XXXXX: undeliverable postmaster
-       notification discarded" for spam from outside.
-
-       Really need a cleanup driver that allows testing against
-       Milter applications instead of synthetic events. This would
-       have to provide stubs for clients that talk to Postfix
-       daemon processes. See if this approach can also be used for
-       other daemons.
-
-       smtpd(8) exempts $address_verify_sender from access controls,
-       but it doesn't know whether cleanup(8) or delivery agents
-       modify the sender. Would it be possible to "calibrate" this
-       exemption, perhaps by having delivery agents pass the probe
-       sender to the verify server, keeping in mind that the probe
-       sender may differ per delivery agent due to output rewriting.
-
-       Update attr_print/scan() so they can send/receive file
-       descriptors. This simplifies kludgy code in many daemons.
-
-       Would there be a problem adding $smtpd_mumble_restrictions
-       and $smtpd_sender_login_maps to the default proxy_read_maps
-       settings?
-
-       Remove defer(8) and trace(8) references and man pages. These
-       are services not program names. On the other hand we have
-       man pages for lmtp(8) and smtp(8), but not for relay(8).
-       Likewise, retry(8) does not have a man page.
-
-       Bind all deliveries to the same local delivery process,
-       making Postfix perform as poorly as monolithic mailers, but
-       giving a possibility to eliminate duplicate deliveries.
-
-       Maybe declare loop when resolve_local(mxhost) is true?
-
-       Update message content length when adding/removing headers.
-
-       Need scache size limit.
-
-       Make postcat header/body aware so people can grep headers.
-       What headers? primary, mime, nested? What body? Does it
-       include the mime and attached headers?
-
-       REDIRECT should override original recipient info, and
-       probably override DSN as well.
-
-       Find out if with Sendmail, a Milter "add recipient" request
-       results in NOTIFY=NONE as Postfix does now.
-
-       Update FILTER_README with mailing list suggestions to tag
-       with a badness indicator and then filter down-stream.
-
-       Either document or remove the internal_mail_filter_classes
-       feature (it's disabled by default).
-
-       Build a command-line test driver for the cleanup engine.
-       This allows us to test it with arbitrary record sequences
-       without having to use a live mail queue.
-
-       Make null local-part handling configurable: either expand
-       into mailer-daemon (current bahavior) or disallow (strict
-       behavior, currently implemented only in the SMTP server).
-
-       The type of var_message_limit (and other file size/offset
-       configuration parameters or internal protocol attributes)
-       should be changed from int to off_t.  This also requires
-       checking all expressions in which var_message_limit etc.
-       appears: qmqpd, netstring, deliver_request, ...
-
-       Add M flag (enable multi-recipient delivery) to pipe daemon.
-
-       The usage of TLScontext->cache_type is unclear. It specifies
-       a TLS session cache type (smtpd, smtp, or lmtp), but it is
-       sometimes used as an indicator that TLS session caching is
-       unavailable.  In reality, that decision is made by not
-       registering call-back functions for cache maintenance.
-
-       Postfix TLS library code should copy any strings that it
-       receives from the application, instead of passing them
-       around as pointers. TLScontext->cache_type is a case in
-       point.
-
-       Are transport:nexthop null fields the same as in the case
-       of default_transport etc. parameters?
-
-       Don't lose bits when converting st_dev into maildir file
-       name. It's 64 bits on Linux. Found with the BEAM source
-       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.
-
-       Check that "UINT32 == unsigned int" choice is ok (i.e. LP64
-       UNIX).
-
-       Tempfail when a Milter application wants content access,
-       while it is configured in an SMTP server that runs before
-       the smtpd_proxy filter.
-
-       Log DSN original recipient when rejecting mail.
-
-       Keep whitespace between label and ":"?
-
-       Make the map case folding/locking options configurable, if
-       not at run-time then at least at compile time so we get
-       consistent behavior across applications.
-
-       Investigate what it would take to eliminate oqmgr, and to
-       make the old behavior configurable in a unified queue
-       manager.  This would shave another 2.7 KLOC from the source
-       footprint.
-
-       Document the case folding strategy for match_list like
-       features.
-
-       Eliminate the (incoming,deferred)->active rename operation.
-
-       Softbounce fallback-to-ISP for SOHO users. This requires
-       playing with the soft_error test in the smtp_trouble.c
-       module, and avoiding delivery to backup MX hosts.
-
-       Centralize main.cf parameter input so that defaults work
-       consistently. What about parameter names that are prefixed
-       with mail delivery transport names?
-
-       Fix default time unit handling so that we can have a default
-       bounce lifetime of $maximal_queue_lifetime, without causing
-       panics when a non-default maximal_queue_lifetime setting
-       includes no time unit.
-
-       After the 20051222 ISASCII paranoia, lowercase() lowercases
-       ASCII text only.
-
-       Privacy: remove local command/pathname details from remote
-       delivery status reports, and log them via local msg_warn().
-
-       Is it safe to cache a connection after it has been used for
-       more than some number of address verification probes?
-
-       Try to recognize that Resent- headers appear in blocks,
-       newest block first. But don't break on incorrect header
-       block organization.
-
-       Hard limits on cache sizes (anvil, specifically).
-
-       Laptop friendliness: make the qmgr remember when the next
-       deferred queue scan needs to be done, and have the pickup
-       server stat() the maildrop directory before searching it.
-
-       Low: replace_sender/replace_recipient actions in access
-       maps?
-
-       Low: configurable order of local(8) delivery methods.
-
-       Med: local and remote source port and IP address for smtpd
-       policy hook.
-
-       Med: smtp_connect_timeout_budget (default: 3x smtp_connect_timeout)
-       to limit the total time spent trying to connect.
-
-       Med: transform IPv4-in-IPv6 address literals to IPv4 form
-       when comparing against local IP addresses?
-
-       Med: transform IPv4-in-IPv6 address literals to IPv4 form
-       when eliminating MX mailer loops?
-
-       Med: Postfix requires [] around IPv6 address information
-       in match lists such as mynetworks, debug_peer_list etc.,
-       but the [] must not be specified in access(5) maps. Other
-       places don't care.  For now, this gotcha is documented in
-       IPV6_README and in postconf(5) with each feature that may
-       use IPv6 address information. The general recommendation
-       is not to use [] unless absolutely necessary.
-
-       Med: the partial address matching of IPv6 addresses in
-       access(5) maps is a bit lame: it repeatedly truncates the
-       last ":octetpair" from the printable address representation
-       until a match is found or until truncation is no longer
-       possible.  Since one or more ":" are usually omitted from
-       the printable IPv6 address representation, this does not
-       really try all the possibilities that one might expect to
-       be tried. For now, this gotcha is documented in access(5).
-
-       Med: the TLS certificate verification depth parameters never
-       worked.
-
-       Low: reject HELO with any domain name or IP address that
-       this MTA is the final destination for.
-
-       Low: should the Delivered-To: test in local(8) be configurable?
-
-       Low: make mail_addr_find() lookup configurable.
-
-       Low: update events.c so that 1-second timer requests do not
-       suffer from rounding errors. This is needed for 1-second
-       SMTP session caching time limits. A 1-second interval would
-       become arbitrarily short when an event is scheduled just
-       before the current second rolls over.
-
-       Low: configurable internal/system locking method.
-
-       Low: add INSTALL section for pre-existing Postfix systems.
-
-       Low: add INSTALL section for pre-existing RPM Postfixes.
-
-       Low: disallow smtpd_recipient_limit < 100 (the RFC minimum).
-
-       Low: noise filter: allow smtp(8) to retry immediately if
-       all MXes return a quick ECONNRESET or 4xx reply during the
-       initial handshake. Retry once? How many times?
-
-       Low: make post-install a "postfix-only script" so it can
-       take data from the environment instead of main.cf.
-
-       Low: randomize deferred mail backoff.
-
-       Med: separate ulimit for delivery to command?
-
-       Med: postsuper -r should do something with recipients in
-       bounce logfiles, to make sure the sender will be notified.
-       To be perfectly safe, no process other than the queue manager
-       should move a queue file away from the active queue.
-
-       This could involve tagging a queue file, and use up another
-       permission bit (postsuper tags a "hot" file, qmgr requeues it).
-
-       Low: postsuper re-run after renaming files, but only a
-       limited number of times.
-
-       Low: smtp-source may block when sending large test messages.
-
-       Med: find a way to log the sender address when MAIL FROM
-       is rejected due to lack of disk space.
-
-       Low: revise other local delivery agent duplicate filters.
-
-       Low: all table lookups should consistently use internalized
-       (unquoted) or externalized (quoted) forms as lookup keys.
-       smtpd, qmgr, local, etc. use unquoted address forms as keys.
-       cleanup uses quoted forms.
-
-       Low: have a configurable list of errno values for mailbox
-       or maildir delivery that result in deferral rather than
-       bouncing mail. What about "killed by signal" exits?
-
-       Low: after reorganizing configuration parameters, add flags
-       to all parameters whose value can be read from file.
-
-       Medium: need in-process caching for map lookups. LDAP servers
-       seem to need this in particular. Need a way to expire cached
-       results that are too old.
-
-       Low: generic showq protocol, to allow for more intelligent
-       processing than just mailq. Maybe marry this with postsuper.
-
-       Low: default domain for appending to unqualified recipients,
-       so that unqualified names can be delivered locally.
-
-       Low: The $process_id_directory setting is not used anywhere
-       in Postfix. Problem reported by Michael Smith, texas.net.
-       This should be documented, or better, the code should warn
-       about attempts to set read-only parameters.
-
-       Low: postconf -e edits parameters that postconf won't list.
-
-       Low: while converting 8bit text to quoted-printable, perhaps
-       use =46rom to avoid having to produce >From when delivering
-       to mailbox.
-
-       virtual_mailbox_path expression like forward_path, so that
-       people can specify prefix and suffix.
index c204ba66d68d7c5e245a512bc7abe14ac7e3d7a8..ae988b6b6b27c8fab93d302210de581f1f43af66 100644 (file)
@@ -20,7 +20,7 @@
 <h2> Introduction </h2>
 
 <p> Postfix has several hundred configuration parameters that are
-controlled via the main.cf file.  Fortunately, all parameters have
+controlled via the <a href="postconf.5.html">main.cf</a> file.  Fortunately, all parameters have
 sensible default values.  In many cases, you need to configure only
 two or three parameters before you can start to play with the mail
 system. Here's a quick introduction to the syntax:  </p>
@@ -121,12 +121,12 @@ look at the other parameters listed here as well: </p>
 <h2> <a name="syntax">Postfix configuration files</a></h2>
 
 <p> By default, Postfix configuration files are in /etc/postfix.
-The two most important files are main.cf and master.cf; these files
+The two most important files are <a href="postconf.5.html">main.cf</a> and <a href="master.5.html">master.cf</a>; these files
 must be owned by root.  Giving someone else write permission to
-main.cf or master.cf (or to their parent directories) means giving
+<a href="postconf.5.html">main.cf</a> or <a href="master.5.html">master.cf</a> (or to their parent directories) means giving
 root privileges to that person. </p>
 
-<p> In /etc/postfix/main.cf you will have to set up a minimal number
+<p> In /etc/postfix/<a href="postconf.5.html">main.cf</a> you will have to set up a minimal number
 of configuration parameters.  Postfix configuration parameters
 resemble shell variables, with two important differences: the first
 one is that Postfix does not know about quotes like the UNIX shell
@@ -136,7 +136,7 @@ does.</p>
 
 <blockquote>
 <pre>
-/etc/postfix/main.cf:
+/etc/postfix/<a href="postconf.5.html">main.cf</a>:
     parameter = value
 </pre>
 </blockquote>
@@ -145,7 +145,7 @@ does.</p>
 
 <blockquote>
 <pre>
-/etc/postfix/main.cf:
+/etc/postfix/<a href="postconf.5.html">main.cf</a>:
     other_parameter = $parameter
 </pre>
 </blockquote>
@@ -162,12 +162,12 @@ Here is a common example of how Postfix invokes a database: </p>
 
 <blockquote>
 <pre>
-/etc/postfix/main.cf:
+/etc/postfix/<a href="postconf.5.html">main.cf</a>:
     <a href="postconf.5.html#virtual_alias_maps">virtual_alias_maps</a> = hash:/etc/postfix/virtual
 </pre>
 </blockquote>
 
-<p> Whenever you make a change to the main.cf or master.cf file,
+<p> Whenever you make a change to the <a href="postconf.5.html">main.cf</a> or <a href="master.5.html">master.cf</a> file,
 execute the following command as root in order to refresh a running
 mail system: </p>
 
@@ -194,7 +194,7 @@ to an unqualified recipient address. </p>
 
 <blockquote>
 <pre>
-/etc/postfix/main.cf:
+/etc/postfix/<a href="postconf.5.html">main.cf</a>:
     <a href="postconf.5.html#myorigin">myorigin</a> = $<a href="postconf.5.html#myhostname">myhostname</a> (default: send mail as "user@$<a href="postconf.5.html#myhostname">myhostname</a>")
     <a href="postconf.5.html#myorigin">myorigin</a> = $<a href="postconf.5.html#mydomain">mydomain</a>   (probably desirable: "user@$<a href="postconf.5.html#mydomain">mydomain</a>")
 </pre>
@@ -223,7 +223,7 @@ domain, you must list $<a href="postconf.5.html#mydomain">mydomain</a> as well.
 
 <blockquote>
 <pre>
-/etc/postfix/main.cf:
+/etc/postfix/<a href="postconf.5.html">main.cf</a>:
     <a href="postconf.5.html#mydestination">mydestination</a> = $<a href="postconf.5.html#myhostname">myhostname</a> localhost.$<a href="postconf.5.html#mydomain">mydomain</a> localhost
 </pre>
 </blockquote>
@@ -232,7 +232,7 @@ domain, you must list $<a href="postconf.5.html#mydomain">mydomain</a> as well.
 
 <blockquote>
 <pre>
-/etc/postfix/main.cf:
+/etc/postfix/<a href="postconf.5.html">main.cf</a>:
     <a href="postconf.5.html#mydestination">mydestination</a> = $<a href="postconf.5.html#myhostname">myhostname</a> localhost.$<a href="postconf.5.html#mydomain">mydomain</a> localhost $<a href="postconf.5.html#mydomain">mydomain</a>
 </pre>
 </blockquote>
@@ -241,7 +241,7 @@ domain, you must list $<a href="postconf.5.html#mydomain">mydomain</a> as well.
 
 <blockquote>
 <pre>
-/etc/postfix/main.cf:
+/etc/postfix/<a href="postconf.5.html">main.cf</a>:
     <a href="postconf.5.html#mydestination">mydestination</a> = $<a href="postconf.5.html#myhostname">myhostname</a> localhost.$<a href="postconf.5.html#mydomain">mydomain</a> localhost 
         www.$<a href="postconf.5.html#mydomain">mydomain</a> ftp.$<a href="postconf.5.html#mydomain">mydomain</a>
 </pre>
@@ -265,7 +265,7 @@ then your default <a href="postconf.5.html#mynetworks">mynetworks</a> setting ma
 
 <blockquote>
 <pre>
-/etc/postfix/main.cf:
+/etc/postfix/<a href="postconf.5.html">main.cf</a>:
     <a href="postconf.5.html#mynetworks_style">mynetworks_style</a> = subnet  (default: authorize subnetworks)
     <a href="postconf.5.html#mynetworks_style">mynetworks_style</a> = host    (safe: authorize local machine only)
     <a href="postconf.5.html#mynetworks">mynetworks</a> = 127.0.0.0/8   (safe: authorize local machine only)
@@ -273,7 +273,7 @@ then your default <a href="postconf.5.html#mynetworks">mynetworks</a> setting ma
 </pre>
 </blockquote>
 
-<p> You can specify the trusted networks in the main.cf file, or
+<p> You can specify the trusted networks in the <a href="postconf.5.html">main.cf</a> file, or
 you can let Postfix do the work for you. The default is to let
 Postfix do the work. The result depends on the <a href="postconf.5.html#mynetworks_style">mynetworks_style</a>
 parameter value.
@@ -304,13 +304,13 @@ blocks in CIDR (network/mask) notation, for example: </p>
 
 <blockquote>
 <pre>
-/etc/postfix/main.cf:
+/etc/postfix/<a href="postconf.5.html">main.cf</a>:
     <a href="postconf.5.html#mynetworks">mynetworks</a> = 168.100.189.0/28, 127.0.0.0/8
 </pre>
 </blockquote>
 
 <p> You can also specify the absolute pathname of a pattern file instead
-of listing the patterns in the main.cf file. </p>
+of listing the patterns in the <a href="postconf.5.html">main.cf</a> file. </p>
 
 <h2> <a name="relay_to"> What destinations to relay mail to </a> </h2>
 
@@ -325,7 +325,7 @@ of the domains listed with the <a href="postconf.5.html#mydestination">mydestina
 
 <blockquote>
 <pre>
-/etc/postfix/main.cf:
+/etc/postfix/<a href="postconf.5.html">main.cf</a>:
     <a href="postconf.5.html#relay_domains">relay_domains</a> = $<a href="postconf.5.html#mydestination">mydestination</a> (default)
     <a href="postconf.5.html#relay_domains">relay_domains</a> =           (safe: never forward mail from strangers)
     <a href="postconf.5.html#relay_domains">relay_domains</a> = $<a href="postconf.5.html#mydomain">mydomain</a> (forward mail to my domain and subdomains)
@@ -341,13 +341,13 @@ or desirable.  For example, your system may be turned off outside
 office hours, it may be behind a firewall, or it may be connected
 via a provider who does not allow direct mail to the Internet.  In
 those cases you need to configure Postfix to deliver mail indirectly
-via a relay host. </p>
+via a <a href="postconf.5.html#relayhost">relay host</a>. </p>
 
 <p> Examples (specify only one of the following): </p>
 
 <blockquote>
 <pre>
-/etc/postfix/main.cf:
+/etc/postfix/<a href="postconf.5.html">main.cf</a>:
     <a href="postconf.5.html#relayhost">relayhost</a> =                   (default: direct delivery to Internet)
     <a href="postconf.5.html#relayhost">relayhost</a> = $<a href="postconf.5.html#mydomain">mydomain</a>         (deliver via local mailhub)
     <a href="postconf.5.html#relayhost">relayhost</a> = [mail.$<a href="postconf.5.html#mydomain">mydomain</a>]  (deliver via local mailhub)
@@ -392,7 +392,7 @@ serious problems (resource, software) to postmaster:  </p>
 
 <blockquote>
 <pre>
-/etc/postfix/main.cf:
+/etc/postfix/<a href="postconf.5.html">main.cf</a>:
     <a href="postconf.5.html#notify_classes">notify_classes</a> = resource, software
 </pre>
 </blockquote>
@@ -477,7 +477,7 @@ mail delivery loops will happen when the primary MX host is down.
 
 <blockquote>
 <pre>
-/etc/postfix/main.cf:
+/etc/postfix/<a href="postconf.5.html">main.cf</a>:
     <a href="postconf.5.html#proxy_interfaces">proxy_interfaces</a> = 1.2.3.4 (the proxy/NAT external network address)
 </pre>
 </blockquote>
@@ -539,7 +539,7 @@ Postfix logging. </p>
 <h2> <a name="chroot_setup"> Running Postfix daemon processes
 chrooted </a> </h2>
 
-<p> Postfix daemon processes can be configured (via the master.cf
+<p> Postfix daemon processes can be configured (via the <a href="master.5.html">master.cf</a>
 file) to run in a chroot jail.  The processes run at a fixed low
 privilege and with file system access limited to the Postfix queue
 directories (/var/spool/postfix).  This provides a significant
@@ -556,9 +556,9 @@ processes, and perhaps also the <a href="lmtp.8.html">lmtp(8)</a> client. The au
 porcupine.org mail server runs all daemons chrooted that can be
 chrooted.  </p>
 
-<p>The default /etc/postfix/master.cf file specifies that no Postfix
+<p>The default /etc/postfix/<a href="master.5.html">master.cf</a> file specifies that no Postfix
 daemon runs chrooted. In order to enable chroot operation, edit
-the file /etc/postfix/master.cf, and follow instructions in the
+the file /etc/postfix/<a href="master.5.html">master.cf</a>, and follow instructions in the
 file.  When you're finished, execute "postfix reload" to make the
 change effective. </p>
 
@@ -592,7 +592,7 @@ or if you run Postfix on a virtual interface, you will have to
 specify the fully-qualified domain name that the mail system should
 use. </p>
 
-<p> Alternatively, if you specify <a href="postconf.5.html#mydomain">mydomain</a> in main.cf, then Postfix
+<p> Alternatively, if you specify <a href="postconf.5.html#mydomain">mydomain</a> in <a href="postconf.5.html">main.cf</a>, then Postfix
 will use its value to generate a fully-qualified default value      
 for the <a href="postconf.5.html#myhostname">myhostname</a> parameter. </p>
 
@@ -600,7 +600,7 @@ for the <a href="postconf.5.html#myhostname">myhostname</a> parameter. </p>
 
 <blockquote>
 <pre>
-/etc/postfix/main.cf:
+/etc/postfix/<a href="postconf.5.html">main.cf</a>:
     <a href="postconf.5.html#myhostname">myhostname</a> = host.local.domain (machine name is not FQDN)
     <a href="postconf.5.html#myhostname">myhostname</a> = host.virtual.domain (virtual interface)
     <a href="postconf.5.html#myhostname">myhostname</a> = virtual.domain (virtual interface)
@@ -614,7 +614,7 @@ $<a href="postconf.5.html#myhostname">myhostname</a>.  By default, it is derived
 by stripping off the first part (unless the result would be a
 top-level domain). </p>
 
-<p> Conversely, if you specify <a href="postconf.5.html#mydomain">mydomain</a> in main.cf, then Postfix
+<p> Conversely, if you specify <a href="postconf.5.html#mydomain">mydomain</a> in <a href="postconf.5.html">main.cf</a>, then Postfix
 will use its value to generate a fully-qualified default value
 for the <a href="postconf.5.html#myhostname">myhostname</a> parameter. </p>
 
@@ -622,7 +622,7 @@ for the <a href="postconf.5.html#myhostname">myhostname</a> parameter. </p>
 
 <blockquote>
 <pre>
-/etc/postfix/main.cf:
+/etc/postfix/<a href="postconf.5.html">main.cf</a>:
     <a href="postconf.5.html#mydomain">mydomain</a> = local.domain
     <a href="postconf.5.html#mydomain">mydomain</a> = virtual.domain (virtual interface)
 </pre> 
@@ -636,7 +636,7 @@ to "user@[network address]" will be delivered locally,
 as if it is addressed to a domain listed in  $<a href="postconf.5.html#mydestination">mydestination</a>.</p>
 
 <p> You can override the <a href="postconf.5.html#inet_interfaces">inet_interfaces</a> setting in the Postfix
-master.cf file by prepending an IP address to a server name. </p>
+<a href="master.5.html">master.cf</a> file by prepending an IP address to a server name. </p>
 
 <p> The default is to listen on all active interfaces.  If you run
 mailers on virtual interfaces, you will have to specify what
@@ -652,7 +652,7 @@ MTA is down.  </p>
 
 <blockquote>
 <pre>
-/etc/postfix/main.cf:
+/etc/postfix/<a href="postconf.5.html">main.cf</a>:
     <a href="postconf.5.html#inet_interfaces">inet_interfaces</a> = all
 </pre>
 </blockquote>
@@ -662,7 +662,7 @@ each Postfix instance, specify only one of the following. </p>
 
 <blockquote>
 <pre>
-/etc/postfix/main.cf:
+/etc/postfix/<a href="postconf.5.html">main.cf</a>:
     <a href="postconf.5.html#inet_interfaces">inet_interfaces</a> = virtual.host.tld         (virtual Postfix)
     <a href="postconf.5.html#inet_interfaces">inet_interfaces</a> = $<a href="postconf.5.html#myhostname">myhostname</a> localhost... (non-virtual Postfix)
 </pre>
index 6ca3d84d33f7f9cb52e704b65b164c076d93c9f8..32ef928afffcba349f9c820e249e1fdb9515e4d6 100644 (file)
@@ -21,7 +21,7 @@ DSN Support </h1>
 <h2>Introduction</h2>
 
 <p> Postfix version 2.3 introduces support for Delivery Status
-Notifications as described in <a href="http://www.faqs.org/rfcs/rfc3464.html">RFC 3464</a>. This gives senders control
+Notifications as described in <a href="http://tools.ietf.org/html/rfc3464">RFC 3464</a>. This gives senders control
 over successful and failed delivery notifications.  </p>
 
 <p> Specifically, DSN support gives an email sender the ability to
index 0193491e9e6512fc6f0b678dcc141207a5a04298..0514d22f624ff9c98f348b26cf564d5960410e16 100644 (file)
@@ -254,7 +254,7 @@ to the LMTP client. </p>
 
 <li> <p> The SMTP server now requires that IPv6 addresses in SMTP
 commands are specified as [ipv6:<i>ipv6address</i>], as
-described in <a href="http://www.faqs.org/rfcs/rfc2821.html">RFC 2821</a>. </p>
+described in <a href="http://tools.ietf.org/html/rfc2821">RFC 2821</a>. </p>
 
 <li> <p> The IPv6 network address matching code was rewritten from
 the ground up, and is expected to be closer to the specification.
index ad95a4e9351d632516c7a7ac7f6b3f8e1a7ac8e3..100cc297a6bffa996284bdfdb0bf604aba93146c 100644 (file)
@@ -85,7 +85,7 @@ becoming clogged with undeliverable messages. Specify an empty
 value ("<a href="postconf.5.html#virtual_mailbox_maps">virtual_mailbox_maps</a> =") to disable this feature. </p>
 
 <li> <p> Lines 6 and 13-15 redirect mail for postmaster to the
-local postmaster. <a href="http://www.faqs.org/rfcs/rfc821.html">RFC 821</a> requires that every domain has a postmaster
+local postmaster. <a href="http://tools.ietf.org/html/rfc821">RFC 821</a> requires that every domain has a postmaster
 address. </p>
 
 </ul>
index 5551eed92bb7a1f1e6fe36d87ffd6d229f38051f..3ab94320138bf8823c985e7ea6eec8d1e6b712fd 100644 (file)
@@ -640,7 +640,7 @@ feedback amount, per delivery that does not fail with connection
 or handshake failure </td> </tr>
 
 <tr> <td> <a href="postconf.5.html#default_destination_concurrency_negative_feedback">default_destination_concurrency_negative_feedback</a><br>
-<a href="postconf.5.html#transport_destination_concurrency_positive_feedback"><i>transport</i>_destination_concurrency_negative_feedback</a> </td>
+<a href="postconf.5.html#transport_destination_concurrency_negative_feedback"><i>transport</i>_destination_concurrency_negative_feedback</a> </td>
 <td align="center"> 2.5<br> 2.5 </td> <td> Per-destination negative
 feedback amount, per delivery that fails with connection or handshake
 failure </td> </tr>
index e5787a031e1edd78d03b4c74bbb848f0b7e122c0..cde602dc409555307402a679a92e30371b6b74e8 100644 (file)
@@ -564,7 +564,7 @@ the cost of repeatedly negotiating TLS session keys is high.</p>
 <blockquote>
 <pre>
 /etc/postfix/<a href="postconf.5.html">main.cf</a>:
-    <a href="postconf.5.html#smtpd_tls_session_cache_database">smtpd_tls_session_cache_database</a> = btree:/var/lib/postfix/smtpd_scache
+    <a href="postconf.5.html#smtpd_tls_session_cache_database">smtpd_tls_session_cache_database</a> = btree:/etc/postfix/smtpd_scache
 </pre>
 </blockquote>
 
@@ -938,7 +938,7 @@ is allowed to negotiate per unit time.</p>
 <blockquote>
 <pre>
 /etc/postfix/<a href="postconf.5.html">main.cf</a>:
-    <a href="postconf.5.html#smtp_tls_session_cache_database">smtp_tls_session_cache_database</a> = btree:/var/lib/postfix/smtp_scache
+    <a href="postconf.5.html#smtp_tls_session_cache_database">smtp_tls_session_cache_database</a> = btree:/etc/postfix/smtp_scache
 </pre>
 </blockquote>
 
index 16ebb375bd1f5bef2453937c49f11d1436ddfe68..f056f12db89711d675ac5413a1a43f7181d6dc35 100644 (file)
@@ -266,11 +266,11 @@ determines which certificate is presented. For Netscape and OpenSSL
 clients without special cipher choices, the RSA certificate is
 preferred. </p>
 
-<p> In order for remote SMTP clients to check the Postfix SMTP
-server certificates, the CA certificate (in case of a certificate
-chain, all CA certificates) must be available.  You should add any
-intermediate CA certificates to the server certificate: the server
-certificate first, then the intermediate CA(s).  </p>
+<p> To enable a remote SMTP client to verify the Postfix SMTP server
+certificate, the issuing CA certificates must be made available to the
+client. You should include the required certificates in the server
+certificate file, the server certificate first, then the issuing
+CA(s) (bottom-up order). </p>
 
 <p> Example: the certificate for "server.example.com" was issued by
 "intermediate CA" which itself has a certificate issued by "root
@@ -363,9 +363,9 @@ is needed. Thus, the $<a href="postconf.5.html#smtpd_tls_CApath">smtpd_tls_CApat
 accessible inside the optional chroot jail. </p>
 
 <p> When you configure the Postfix SMTP server to request <a
-href="#server_vrfy_client">client certificates</a>, any CA certificates
-in $<a href="postconf.5.html#smtpd_tls_CAfile">smtpd_tls_CAfile</a> are sent to the client, in order to allow it to
-choose an identity signed by a CA you trust. If no $<a href="postconf.5.html#smtpd_tls_CAfile">smtpd_tls_CAfile</a>
+href="#server_vrfy_client">client certificates</a>, the DNs of certificate
+authorities in $<a href="postconf.5.html#smtpd_tls_CAfile">smtpd_tls_CAfile</a> are sent to the client, in order to allow
+it to choose an identity signed by a CA you trust. If no $<a href="postconf.5.html#smtpd_tls_CAfile">smtpd_tls_CAfile</a>
 is specified, no preferred CA list is sent, and the client is free to
 choose an identity signed by any CA. Many clients use a fixed identity
 regardless of the preferred CA list and you may be able to reduce TLS
@@ -970,14 +970,14 @@ must not be encrypted, meaning: it must be accessible without
 password. Both parts (certificate and private key) may be in the
 same file. </p>
 
-<p> In order for remote SMTP servers to verify the Postfix SMTP
-client certificates, the CA certificate (in case of a certificate
-chain, all CA certificates) must be available.  You should add
-these certificates to the client certificate, the client certificate
-first, then the issuing CA(s). </p>
+<p> To enable remote SMTP servers to verify the Postfix SMTP client
+certificate, the issuing CA certificates must be made available to the
+server. You should include the required certificates in the client
+certificate file, the client certificate first, then the issuing
+CA(s) (bottom-up order). </p>
 
 <p> Example: the certificate for "client.example.com" was issued by
-"intermediate CA" which itself has a certificate of "root CA".
+"intermediate CA" which itself has a certificate issued by "root CA".
 Create the client.pem file with: </p>
 
 <blockquote>
index 0a8a69d987d8f51839dd30e5ce0f8f4d419faee2..e20df521ea6ded9d2dd24cd82e83e52cba5f60c0 100644 (file)
@@ -89,7 +89,7 @@ directory. </p>
 via UUCP: </p>
 
 <pre>
-/etc/postfix/master.cf:
+/etc/postfix/<a href="master.5.html">master.cf</a>:
     uucp      unix  -       n       n       -       -       pipe
       flags=F user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
 </pre>
@@ -118,7 +118,7 @@ whenever you change the <b>transport</b> file. </p>
 <li> <p> Enable <b>transport</b> table lookups: </p>
 
 <pre>
-/etc/postfix/main.cf:
+/etc/postfix/<a href="postconf.5.html">main.cf</a>:
     <a href="postconf.5.html#transport_maps">transport_maps</a> = hash:/etc/postfix/transport
 </pre>
 
@@ -130,7 +130,7 @@ types Postfix supports, use the command "<b>postconf -m</b>". </p>
 is willing to relay mail for. </p>
 
 <pre>
-/etc/postfix/main.cf:
+/etc/postfix/<a href="postconf.5.html">main.cf</a>:
     <a href="postconf.5.html#relay_domains">relay_domains</a> = example.com ...<i>other <a href="ADDRESS_CLASS_README.html#relay_domain_class">relay domains</a></i>...
 </pre>
 
@@ -162,7 +162,7 @@ directory. </p>
 mail transport to your UUCP gateway host, say, <i>uucp-gateway</i>: </p>
 
 <pre>
-/etc/postfix/main.cf:
+/etc/postfix/<a href="postconf.5.html">main.cf</a>:
     <a href="postconf.5.html#relayhost">relayhost</a> = uucp-gateway
     <a href="postconf.5.html#default_transport">default_transport</a> = uucp
 </pre>
@@ -170,7 +170,7 @@ mail transport to your UUCP gateway host, say, <i>uucp-gateway</i>: </p>
 <p> Postfix 2.0 and later also allows the following more succinct form: </p>
 
 <pre>
-/etc/postfix/main.cf:
+/etc/postfix/<a href="postconf.5.html">main.cf</a>:
     <a href="postconf.5.html#default_transport">default_transport</a> = uucp:uucp-gateway
 </pre>
 
@@ -178,7 +178,7 @@ mail transport to your UUCP gateway host, say, <i>uucp-gateway</i>: </p>
 delivery via UUCP: </p>
 
 <pre>
-/etc/postfix/master.cf:
+/etc/postfix/<a href="master.5.html">master.cf</a>:
     uucp      unix  -       n       n       -       -       pipe
       flags=F user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
 </pre>
index 8300e0a84fd0dd0097951310c5dfd2404ea8168a..5cb63e1992fb29c2d4ed9b355a3242b91425a6fd 100644 (file)
@@ -132,7 +132,7 @@ you of the new syntax): </p>
 </pre>
 </blockquote>
 
-<p> The first form uses the default main.cf VERP delimiter characters.
+<p> The first form uses the default <a href="postconf.5.html">main.cf</a> VERP delimiter characters.
 The second form allows you to explicitly specify the VERP delimiter
 characters. The example shows the recommended values. </p>
 
@@ -156,7 +156,7 @@ are to be discarded when doing alias expansions: </p>
 
 <blockquote>
 <pre>
-/etc/postfix/main.cf:
+/etc/postfix/<a href="postconf.5.html">main.cf</a>:
     <a href="postconf.5.html#recipient_delimiter">recipient_delimiter</a> = +
     <a href="postconf.5.html#forward_path">forward_path</a> = $home/.forward${<a href="postconf.5.html#recipient_delimiter">recipient_delimiter</a>}${extension},
         $home/.forward
@@ -213,7 +213,7 @@ MAIL FROM:&lt;sender@domain&gt; XVERP=+=
 </pre>
 </blockquote>
 
-<p> The first form uses the default main.cf VERP delimiters, the
+<p> The first form uses the default <a href="postconf.5.html">main.cf</a> VERP delimiters, the
 second form overrides them explicitly. The values shown are the
 recommended ones. </p>
 
@@ -243,7 +243,7 @@ you of the new syntax): </p>
 </pre>
 </blockquote>
 
-<p> The first form uses the default main.cf VERP delimiters, the
+<p> The first form uses the default <a href="postconf.5.html">main.cf</a> VERP delimiters, the
 second form overrides them explicitly. The values shown are the
 recommended ones. </p>
 
index ded336ddf10b8afa66c68f8ec7f28a4e88ff048e..b081554c992ec84f59ad4a2caaa0c688711af2e1 100644 (file)
@@ -201,7 +201,7 @@ ANVIL(8)                                                              ANVIL(8)
        <b><a href="postconf.5.html#syslog_facility">syslog_facility</a> (mail)</b>
               The syslog facility of Postfix logging.
 
-       <b><a href="postconf.5.html#syslog_name">syslog_name</a> (postfix)</b>
+       <b><a href="postconf.5.html#syslog_name">syslog_name</a> (see 'postconf -d' output)</b>
               The  mail  system  name  that  is  prepended to the
               process name in syslog  records,  so  that  "smtpd"
               becomes, for example, "postfix/smtpd".
index d62ce02c8177de59c7a9caafad6571ba33df1e8e..3a6e49ab259eb72586be3eca684ad8276fe63fdd 100644 (file)
@@ -148,7 +148,7 @@ BOUNCE(8)                                                            BOUNCE(8)
        <b><a href="postconf.5.html#syslog_facility">syslog_facility</a> (mail)</b>
               The syslog facility of Postfix logging.
 
-       <b><a href="postconf.5.html#syslog_name">syslog_name</a> (postfix)</b>
+       <b><a href="postconf.5.html#syslog_name">syslog_name</a> (see 'postconf -d' output)</b>
               The  mail  system  name  that  is  prepended to the
               process name in syslog  records,  so  that  "smtpd"
               becomes, for example, "postfix/smtpd".
index 4eabdae18029d57aee0cd8f51b2b3005e3a17747..0b0fa7aa512d8b3e985ace5b8a0f5d0b207bd6c2 100644 (file)
@@ -99,7 +99,7 @@ CLEANUP(8)                                                          CLEANUP(8)
 
        <b><a href="postconf.5.html#always_add_missing_headers">always_add_missing_headers</a> (no)</b>
               Always  add (Resent-) From:, To:, Date: or Message-
-              ID headers when not present.
+              ID: headers when not present.
 
 <b>BUILT-IN CONTENT FILTERING CONTROLS</b>
        Postfix built-in content filtering  is  meant  to  stop  a
index d62ce02c8177de59c7a9caafad6571ba33df1e8e..3a6e49ab259eb72586be3eca684ad8276fe63fdd 100644 (file)
@@ -148,7 +148,7 @@ BOUNCE(8)                                                            BOUNCE(8)
        <b><a href="postconf.5.html#syslog_facility">syslog_facility</a> (mail)</b>
               The syslog facility of Postfix logging.
 
-       <b><a href="postconf.5.html#syslog_name">syslog_name</a> (postfix)</b>
+       <b><a href="postconf.5.html#syslog_name">syslog_name</a> (see 'postconf -d' output)</b>
               The  mail  system  name  that  is  prepended to the
               process name in syslog  records,  so  that  "smtpd"
               becomes, for example, "postfix/smtpd".
index 2be0a00a1129828403a1320201618abfd59ceeac..48c249598df8b0085405c5b7b3b770ac84274fd2 100644 (file)
@@ -100,7 +100,7 @@ DISCARD(8)                                                          DISCARD(8)
        <b><a href="postconf.5.html#syslog_facility">syslog_facility</a> (mail)</b>
               The syslog facility of Postfix logging.
 
-       <b><a href="postconf.5.html#syslog_name">syslog_name</a> (postfix)</b>
+       <b><a href="postconf.5.html#syslog_name">syslog_name</a> (see 'postconf -d' output)</b>
               The  mail  system  name  that  is  prepended to the
               process name in syslog  records,  so  that  "smtpd"
               becomes, for example, "postfix/smtpd".
index d0ca5093706119b80a53d4b6831906c93169a674..63778d23a3ae16bf517347901c7ca5483b9adb64 100644 (file)
@@ -114,7 +114,7 @@ ERROR(8)                                                              ERROR(8)
        <b><a href="postconf.5.html#syslog_facility">syslog_facility</a> (mail)</b>
               The syslog facility of Postfix logging.
 
-       <b><a href="postconf.5.html#syslog_name">syslog_name</a> (postfix)</b>
+       <b><a href="postconf.5.html#syslog_name">syslog_name</a> (see 'postconf -d' output)</b>
               The mail system  name  that  is  prepended  to  the
               process  name  in  syslog  records, so that "smtpd"
               becomes, for example, "postfix/smtpd".
index c5f3bb405ce0f293c0678cbadce7318fd5999139..1c76677cb98f6e8e3a56b266d95d077f5e731984 100644 (file)
@@ -149,7 +149,7 @@ FLUSH(8)                                                              FLUSH(8)
        <b><a href="postconf.5.html#syslog_facility">syslog_facility</a> (mail)</b>
               The syslog facility of Postfix logging.
 
-       <b><a href="postconf.5.html#syslog_name">syslog_name</a> (postfix)</b>
+       <b><a href="postconf.5.html#syslog_name">syslog_name</a> (see 'postconf -d' output)</b>
               The  mail  system  name  that  is  prepended to the
               process name in syslog  records,  so  that  "smtpd"
               becomes, for example, "postfix/smtpd".
index 1588febfa98ad977e9f7aa9bba2a2e4a05976f1c..f435276cbf00ffc48022b01515967f54c587a5b5 100644 (file)
@@ -392,9 +392,9 @@ SMTP(8)                                                                SMTP(8)
               shake procedures.
 
        <b><a href="postconf.5.html#smtp_tls_CAfile">smtp_tls_CAfile</a> (empty)</b>
-              The  file with the certificate of the certification
-              authority (CA) that issued the Postfix SMTP  client
-              certificate.
+              A  file  containing  CA  certificates  of  root CAs
+              trusted to sign either remote SMTP server  certifi-
+              cates or intermediate CA certificates.
 
        <b><a href="postconf.5.html#smtp_tls_CApath">smtp_tls_CApath</a> (empty)</b>
               Directory  with  PEM  format  certificate authority
@@ -777,7 +777,7 @@ SMTP(8)                                                                SMTP(8)
               The  hostname to send in the SMTP EHLO or HELO com-
               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_lhlo_name">lmtp_lhlo_name</a> ($<a href="postconf.5.html#myhostname">myhostname</a>)</b>
               The hostname to send in the LMTP LHLO command.
 
        <b><a href="postconf.5.html#smtp_host_lookup">smtp_host_lookup</a> (dns)</b>
index e43fdb9851013df9754e1c039d10b062ed8d6a8c..363755725f7c49146d01c4b0a60be4ec5360ae55 100644 (file)
@@ -617,7 +617,7 @@ LOCAL(8)                                                              LOCAL(8)
        <b><a href="postconf.5.html#syslog_facility">syslog_facility</a> (mail)</b>
               The syslog facility of Postfix logging.
 
-       <b><a href="postconf.5.html#syslog_name">syslog_name</a> (postfix)</b>
+       <b><a href="postconf.5.html#syslog_name">syslog_name</a> (see 'postconf -d' output)</b>
               The  mail  system  name  that  is  prepended to the
               process name in syslog  records,  so  that  "smtpd"
               becomes, for example, "postfix/smtpd".
index d70d1d345e605138e0c8f88ba6c05127285e5350..1e6d6667cf055ce08b79b129e90cd6823d78e172 100644 (file)
@@ -168,7 +168,7 @@ MASTER(8)                                                            MASTER(8)
        <b><a href="postconf.5.html#syslog_facility">syslog_facility</a> (mail)</b>
               The syslog facility of Postfix logging.
 
-       <b><a href="postconf.5.html#syslog_name">syslog_name</a> (postfix)</b>
+       <b><a href="postconf.5.html#syslog_name">syslog_name</a> (see 'postconf -d' output)</b>
               The mail system  name  that  is  prepended  to  the
               process  name  in  syslog  records, so that "smtpd"
               becomes, for example, "postfix/smtpd".
index f952244e9cb6604f586724e4b527edca112b8151..589beee042aa8c6ae6488272e56fa8f77109fe42 100644 (file)
@@ -248,7 +248,7 @@ OQMGR(8)                                                              OQMGR(8)
               negative feedback, after a delivery completes  with
               a connection or handshake failure.
 
-       <b><a href="postconf.5.html#transport_destination_concurrency_positive_feedback"><i>transport</i>_destination_concurrency_negative_feedback</a></b>
+       <b><a href="postconf.5.html#transport_destination_concurrency_negative_feedback"><i>transport</i>_destination_concurrency_negative_feedback</a></b>
        <b>($<a href="postconf.5.html#default_destination_concurrency_negative_feedback">default_destination_concurrency_negative_feedback</a>)</b>
               Idem, for delivery via the named message <i>transport</i>.
 
@@ -353,7 +353,7 @@ OQMGR(8)                                                              OQMGR(8)
        <b><a href="postconf.5.html#syslog_facility">syslog_facility</a> (mail)</b>
               The syslog facility of Postfix logging.
 
-       <b><a href="postconf.5.html#syslog_name">syslog_name</a> (postfix)</b>
+       <b><a href="postconf.5.html#syslog_name">syslog_name</a> (see 'postconf -d' output)</b>
               The  mail  system  name  that  is  prepended to the
               process name in syslog  records,  so  that  "smtpd"
               becomes, for example, "postfix/smtpd".
index 07bb6686387637cfe45f4a4b022f18c82d4faf26..3532a6628b09df3c1334d3a14a4e363fcc11ffa0 100644 (file)
@@ -99,7 +99,7 @@ PICKUP(8)                                                            PICKUP(8)
        <b><a href="postconf.5.html#syslog_facility">syslog_facility</a> (mail)</b>
               The syslog facility of Postfix logging.
 
-       <b><a href="postconf.5.html#syslog_name">syslog_name</a> (postfix)</b>
+       <b><a href="postconf.5.html#syslog_name">syslog_name</a> (see 'postconf -d' output)</b>
               The  mail  system  name  that  is  prepended to the
               process name in syslog  records,  so  that  "smtpd"
               becomes, for example, "postfix/smtpd".
index 7c780fe5e0c765970774d6ea3a1053a669d3afeb..5589058d078d190fce0184f8964176314ade9d72 100644 (file)
@@ -486,7 +486,7 @@ PIPE(8)                                                                PIPE(8)
        <b><a href="postconf.5.html#syslog_facility">syslog_facility</a> (mail)</b>
               The syslog facility of Postfix logging.
 
-       <b><a href="postconf.5.html#syslog_name">syslog_name</a> (postfix)</b>
+       <b><a href="postconf.5.html#syslog_name">syslog_name</a> (see 'postconf -d' output)</b>
               The mail system  name  that  is  prepended  to  the
               process  name  in  syslog  records, so that "smtpd"
               becomes, for example, "postfix/smtpd".
index 6304118f78bd4dce0038d042b742a23d0ed3931c..e78cade273c956904cc057299a1bcd5d8aca8589 100644 (file)
@@ -209,7 +209,7 @@ POSTALIAS(1)                                                      POSTALIAS(1)
        <b><a href="postconf.5.html#syslog_facility">syslog_facility</a> (mail)</b>
               The syslog facility of Postfix logging.
 
-       <b><a href="postconf.5.html#syslog_name">syslog_name</a> (postfix)</b>
+       <b><a href="postconf.5.html#syslog_name">syslog_name</a> (see 'postconf -d' output)</b>
               The  mail  system  name  that  is  prepended to the
               process name in syslog  records,  so  that  "smtpd"
               becomes, for example, "postfix/smtpd".
index 487e5abb863f4595e506cb0550429bbea2a94f69..9ba2d0d9fe28862d46a1f2bacc913d82fbe25085 100644 (file)
@@ -1595,7 +1595,7 @@ Examples:
 
 <pre>
 <a href="postconf.5.html#debug_peer_list">debug_peer_list</a> = 127.0.0.1
-<a href="postconf.5.html#debug_peer_list">debug_peer_list</a> = some.domain
+<a href="postconf.5.html#debug_peer_list">debug_peer_list</a> = example.com
 </pre>
 
 
@@ -1844,7 +1844,7 @@ is decremented by 1 after each failed pseudo-cohort.  </dd>
 <p> A pseudo-cohort is the number of deliveries equal to a destination's
 delivery concurrency. </p>
 
-<p> Use <a href="postconf.5.html#transport_destination_concurrency_positive_feedback"><i>transport</i>_destination_concurrency_negative_feedback</a>
+<p> Use <a href="postconf.5.html#transport_destination_concurrency_negative_feedback"><i>transport</i>_destination_concurrency_negative_feedback</a>
 to specify a transport-specific override, where <i>transport</i>
 is the <a href="master.5.html">master.cf</a>
 name of the message delivery transport. </p>
@@ -3489,6 +3489,11 @@ seconds. When the LMTP client receives a request for the same
 connection the connection is reused.
 </p>
 
+<p> This parameter is available in Postfix version 2.2 and earlier.
+With Postfix version 2.3 and later, see <a href="postconf.5.html#lmtp_connection_cache_on_demand">lmtp_connection_cache_on_demand</a>,
+<a href="postconf.5.html#lmtp_connection_cache_destinations">lmtp_connection_cache_destinations</a>, or <a href="postconf.5.html#lmtp_connection_reuse_time_limit">lmtp_connection_reuse_time_limit</a>.
+</p>
+
 <p>
 The effectiveness of cached connections will be determined by the
 number of LMTP servers in use, and the concurrency limit specified
@@ -3782,7 +3787,7 @@ client, for example:
 <blockquote>
 <pre>
 /etc/postfix/<a href="master.5.html">master.cf</a>:
-    mylmtp ... lmtp -o <a href="postconf.5.html#lmtp_lhloname">lmtp_lhlo_name</a>=foo.bar.com
+    mylmtp ... lmtp -o <a href="postconf.5.html#lmtp_lhlo_name">lmtp_lhlo_name</a>=foo.bar.com
 </pre>
 </blockquote>
 
@@ -6027,7 +6032,7 @@ Example:
 </p>
 
 <pre>
-<a href="postconf.5.html#myhostname">myhostname</a> = host.domain.tld
+<a href="postconf.5.html#myhostname">myhostname</a> = host.example.com
 </pre>
 
 
@@ -7272,7 +7277,7 @@ Examples:
 
 <pre>
 <a href="postconf.5.html#relayhost">relayhost</a> = $<a href="postconf.5.html#mydomain">mydomain</a>
-<a href="postconf.5.html#relayhost">relayhost</a> = [gateway.my.domain]
+<a href="postconf.5.html#relayhost">relayhost</a> = [gateway.example.com]
 <a href="postconf.5.html#relayhost">relayhost</a> = uucphost
 <a href="postconf.5.html#relayhost">relayhost</a> = [an.ip.add.ress]
 </pre>
@@ -8870,10 +8875,15 @@ during TLS startup and shutdown handshake procedures. </p>
 <DT><b><a name="smtp_tls_CAfile">smtp_tls_CAfile</a>
 (default: empty)</b></DT><DD>
 
-<p> The file with the certificate of the certification authority
-(CA) that issued the Postfix SMTP client certificate.  This is
-needed only when the CA certificate is not already present in the
-client certificate file.  </p>
+<p> A file containing CA certificates of root CAs trusted to sign
+either remote SMTP server certificates or intermediate CA certificates.
+These are loaded into memory before the <a href="smtp.8.html">smtp(8)</a> client enters the
+chroot jail. If the number of trusted roots is large, consider using
+<a href="postconf.5.html#smtp_tls_CApath">smtp_tls_CApath</a> instead, but note that the latter directory must be
+present in the chroot jail if the <a href="smtp.8.html">smtp(8)</a> client is chrooted. This
+file may also be used to augment the client certificate trust chain,
+but it is best to include all the required certificates directly in
+$<a href="postconf.5.html#smtp_tls_cert_file">smtp_tls_cert_file</a>. </p>
 
 <p> Example: </p>
 
@@ -8936,13 +8946,14 @@ well without them. The recommended setting is to let the defaults stand: </p>
 <p> The best way to use the default settings is to comment out the above
 parameters in <a href="postconf.5.html">main.cf</a> if present. </p>
 
-<p> In order to verify certificates, the CA certificate (in case
-of a certificate chain, all CA certificates) must be available.
-You should add these certificates to the client certificate, the
-client certificate first, then the issuing CA(s). </p>
+<p> To enable remote SMTP servers to verify the Postfix SMTP client
+certificate, the issuing CA certificates must be made available to the
+server. You should include the required certificates in the client
+certificate file, the client certificate first, then the issuing
+CA(s) (bottom-up order). </p>
 
-<p> Example: the certificate for "client.dom.ain" was issued by
-"intermediate CA" which itself has a certificate of "root CA".
+<p> Example: the certificate for "client.example.com" was issued by
+"intermediate CA" which itself has a certificate issued by "root CA".
 Create the client.pem file with "cat client_cert.pem intermediate_CA.pem
 root_CA.pem &gt; client.pem". </p>
 
@@ -12148,12 +12159,25 @@ The default time unit is s (seconds).
 <DT><b><a name="smtpd_tls_CAfile">smtpd_tls_CAfile</a>
 (default: empty)</b></DT><DD>
 
-<p> The file with the certificate of the certification authority
-(CA) that issued the Postfix SMTP server certificate.  This is
-needed only when the CA certificate is not already present in the
-server certificate file.  This file may also contain the CA
-certificates of other trusted CAs.  You must use this file for the
-list of trusted CAs if you want to use chroot-mode. </p>
+<p> A file containing (PEM format) CA certificates of root CAs trusted
+to sign either remote SMTP client certificates or intermediate CA
+certificates.  These are loaded into memory before the <a href="smtpd.8.html">smtpd(8)</a> server
+enters the chroot jail. If the number of trusted roots is large, consider
+using <a href="postconf.5.html#smtpd_tls_CApath">smtpd_tls_CApath</a> instead, but note that the latter directory must
+be present in the chroot jail if the <a href="smtpd.8.html">smtpd(8)</a> server is chrooted. This
+file may also be used to augment the server certificate trust chain,
+but it is best to include all the required certificates directly in the
+server certificate file. </p>
+
+<p> By default (see <a href="postconf.5.html#smtpd_tls_ask_ccert">smtpd_tls_ask_ccert</a>), client certificates are not
+requested, and <a href="postconf.5.html#smtpd_tls_CAfile">smtpd_tls_CAfile</a> should remain empty. If you do make use
+of client certificates, the distinguished names (DNs) of the certificate
+authorities listed in <a href="postconf.5.html#smtpd_tls_CAfile">smtpd_tls_CAfile</a> are sent to the remote SMTP client
+in the client certificate request message. MUAs with multiple client
+certificates may use the list of preferred certificate authorities
+to select the correct client certificate.  You may want to put your
+"preferred" CA or CAs in this file, and install other trusted CAs in
+$<a href="postconf.5.html#smtpd_tls_CApath">smtpd_tls_CApath</a>. </p>
 
 <p> Example: </p>
 
@@ -12169,17 +12193,22 @@ list of trusted CAs if you want to use chroot-mode. </p>
 <DT><b><a name="smtpd_tls_CApath">smtpd_tls_CApath</a>
 (default: empty)</b></DT><DD>
 
-<p> Directory with PEM format certificate authority certificates
-that the Postfix SMTP server offers to remote SMTP clients for the
-purpose of client certificate verification.  Do not forget to create
-the necessary "hash" links with, for example, "$OPENSSL_HOME/bin/c_rehash
-/etc/postfix/certs".  </p>
+<p> A directory containing (PEM format) CA certificates of root CAs
+trusted to sign either remote SMTP client certificates or intermediate CA
+certificates. Do not forget to create the necessary "hash" links with,
+for example, "$OPENSSL_HOME/bin/c_rehash /etc/postfix/certs". To use
+<a href="postconf.5.html#smtpd_tls_CApath">smtpd_tls_CApath</a> in chroot mode, this directory (or a copy) must be
+inside the chroot jail. </p>
 
-<p> To use this option in chroot mode, this directory (or a copy)
-must be inside the chroot jail. Please note that in this case the
-CA certificates are not offered to the client, so that e.g.  Netscape
-clients might not offer certificates issued by them.  Use of this
-feature is therefore not recommended. </p>
+<p> By default (see <a href="postconf.5.html#smtpd_tls_ask_ccert">smtpd_tls_ask_ccert</a>), client certificates are
+not requested, and <a href="postconf.5.html#smtpd_tls_CApath">smtpd_tls_CApath</a> should remain empty. In contrast
+to <a href="postconf.5.html#smtp_tls_CAfile">smtp_tls_CAfile</a>, DNs of certificate authorities installed
+in $<a href="postconf.5.html#smtpd_tls_CApath">smtpd_tls_CApath</a> are not included in the client certificate
+request message. MUAs with multiple client certificates may use the
+list of preferred certificate authorities to select the correct
+client certificate.  You may want to put your "preferred" CA or
+CAs in $<a href="postconf.5.html#smtp_tls_CAfile">smtp_tls_CAfile</a>, and install the remaining trusted CAs in
+$<a href="postconf.5.html#smtpd_tls_CApath">smtpd_tls_CApath</a>. </p>
 
 <p> Example: </p>
 
@@ -12299,12 +12328,13 @@ are present, the cipher used determines which certificate will be
 presented to the client.  For Netscape and OpenSSL clients without
 special cipher choices the RSA certificate is preferred. </p>
 
-<p> In order to verify a certificate, the CA certificate (in case
-of a certificate chain, all CA certificates) must be available.
-You should add these certificates to the server certificate, the
-server certificate first, then the issuing CA(s).  </p>
+<p> To enable a remote SMTP client to verify the Postfix SMTP server
+certificate, the issuing CA certificates must be made available to the
+client. You should include the required certificates in the server
+certificate file, the server certificate first, then the issuing
+CA(s) (bottom-up order). </p>
 
-<p> Example: the certificate for "server.dom.ain" was issued by
+<p> Example: the certificate for "server.example.com" was issued by
 "intermediate CA" which itself has a certificate of "root CA".
 Create the server.pem file with "cat server_cert.pem intermediate_CA.pem
 root_CA.pem &gt; server.pem". </p>
index 5eec30834881a05651d9444433318b07576b5c92..2756476d01dd239cdc5d6d6b80821ce9887f79ac 100644 (file)
@@ -87,7 +87,7 @@ POSTDROP(1)                                                        POSTDROP(1)
        <b><a href="postconf.5.html#syslog_facility">syslog_facility</a> (mail)</b>
               The syslog facility of Postfix logging.
 
-       <b><a href="postconf.5.html#syslog_name">syslog_name</a> (postfix)</b>
+       <b><a href="postconf.5.html#syslog_name">syslog_name</a> (see 'postconf -d' output)</b>
               The mail system  name  that  is  prepended  to  the
               process  name  in  syslog  records, so that "smtpd"
               becomes, for example, "postfix/smtpd".
index 86a1378f8ffaefcdd40fc7df51ed8d2d54284c7d..1f428d0c1d9ff12a6eaacd6c41816184ebc3e709 100644 (file)
@@ -66,7 +66,7 @@ POSTLOG(1)                                                          POSTLOG(1)
        <b><a href="postconf.5.html#syslog_facility">syslog_facility</a> (mail)</b>
               The syslog facility of Postfix logging.
 
-       <b><a href="postconf.5.html#syslog_name">syslog_name</a> (postfix)</b>
+       <b><a href="postconf.5.html#syslog_name">syslog_name</a> (see 'postconf -d' output)</b>
               The mail system  name  that  is  prepended  to  the
               process  name  in  syslog  records, so that "smtpd"
               becomes, for example, "postfix/smtpd".
index 50a36ff78442b303bf987c23fb28f1b5fbff7b3b..123536ceaf1ebcfc3429c0f7fb1f66e7f7259256 100644 (file)
@@ -262,7 +262,7 @@ POSTMAP(1)                                                          POSTMAP(1)
        <b><a href="postconf.5.html#syslog_facility">syslog_facility</a> (mail)</b>
               The syslog facility of Postfix logging.
 
-       <b><a href="postconf.5.html#syslog_name">syslog_name</a> (postfix)</b>
+       <b><a href="postconf.5.html#syslog_name">syslog_name</a> (see 'postconf -d' output)</b>
               The  mail  system  name  that  is  prepended to the
               process name in syslog  records,  so  that  "smtpd"
               becomes, for example, "postfix/smtpd".
index b0f8677498b6764346690066cf61a818809bcb27..fe9cbd13158169930b18fa27254fae38c8025767 100644 (file)
@@ -147,7 +147,7 @@ POSTQUEUE(1)                                                      POSTQUEUE(1)
        <b><a href="postconf.5.html#syslog_facility">syslog_facility</a> (mail)</b>
               The syslog facility of Postfix logging.
 
-       <b><a href="postconf.5.html#syslog_name">syslog_name</a> (postfix)</b>
+       <b><a href="postconf.5.html#syslog_name">syslog_name</a> (see 'postconf -d' output)</b>
               The mail system  name  that  is  prepended  to  the
               process  name  in  syslog  records, so that "smtpd"
               becomes, for example, "postfix/smtpd".
index 2445c48651b8319896fab337aa7f47dbf2015deb..bb819abd0d19492ca7347fcf33a593bab43cdbe4 100644 (file)
@@ -236,7 +236,7 @@ POSTSUPER(1)                                                      POSTSUPER(1)
        <b><a href="postconf.5.html#syslog_facility">syslog_facility</a> (mail)</b>
               The syslog facility of Postfix logging.
 
-       <b><a href="postconf.5.html#syslog_name">syslog_name</a> (postfix)</b>
+       <b><a href="postconf.5.html#syslog_name">syslog_name</a> (see 'postconf -d' output)</b>
               The  mail  system  name  that  is  prepended to the
               process name in syslog  records,  so  that  "smtpd"
               becomes, for example, "postfix/smtpd".
index 891ce3be2fc29ed4e439077964840c7b4bd3ec6b..de1b0c0bfce6ae157290cdfb064af9698f615e30 100644 (file)
@@ -286,7 +286,7 @@ QMGR(8)                                                                QMGR(8)
               negative feedback, after a delivery completes  with
               a connection or handshake failure.
 
-       <b><a href="postconf.5.html#transport_destination_concurrency_positive_feedback"><i>transport</i>_destination_concurrency_negative_feedback</a></b>
+       <b><a href="postconf.5.html#transport_destination_concurrency_negative_feedback"><i>transport</i>_destination_concurrency_negative_feedback</a></b>
        <b>($<a href="postconf.5.html#default_destination_concurrency_negative_feedback">default_destination_concurrency_negative_feedback</a>)</b>
               Idem, for delivery via the named message <i>transport</i>.
 
@@ -425,7 +425,7 @@ QMGR(8)                                                                QMGR(8)
        <b><a href="postconf.5.html#syslog_facility">syslog_facility</a> (mail)</b>
               The syslog facility of Postfix logging.
 
-       <b><a href="postconf.5.html#syslog_name">syslog_name</a> (postfix)</b>
+       <b><a href="postconf.5.html#syslog_name">syslog_name</a> (see 'postconf -d' output)</b>
               The  mail  system  name  that  is  prepended to the
               process name in syslog  records,  so  that  "smtpd"
               becomes, for example, "postfix/smtpd".
index 9b877bd67dd0963b8a9c18f20429f9e63ef54e32..c62b0d1508f49573c24cf6fc5baca5e1bffba265 100644 (file)
@@ -134,27 +134,29 @@ QMQPD(8)                                                              QMQPD(8)
               What clients are allowed to  connect  to  the  QMQP
               server port.
 
-       <b>qmqpd_client_port_logging (no)</b>
-              Enable  logging  of  the remote QMQP client port in
-              addition to the hostname and IP address.
-
        <b><a href="postconf.5.html#queue_directory">queue_directory</a> (see 'postconf -d' output)</b>
-              The location of the Postfix top-level queue  direc-
+              The  location of the Postfix top-level queue direc-
               tory.
 
        <b><a href="postconf.5.html#syslog_facility">syslog_facility</a> (mail)</b>
               The syslog facility of Postfix logging.
 
-       <b><a href="postconf.5.html#syslog_name">syslog_name</a> (postfix)</b>
-              The  mail  system  name  that  is  prepended to the
-              process name in syslog  records,  so  that  "smtpd"
+       <b><a href="postconf.5.html#syslog_name">syslog_name</a> (see 'postconf -d' output)</b>
+              The mail system  name  that  is  prepended  to  the
+              process  name  in  syslog  records, so that "smtpd"
               becomes, for example, "postfix/smtpd".
 
        <b><a href="postconf.5.html#verp_delimiter_filter">verp_delimiter_filter</a> (-=+)</b>
-              The  characters  Postfix  accepts as VERP delimiter
-              characters on the Postfix <a href="sendmail.1.html"><b>sendmail</b>(1)</a> command  line
+              The characters Postfix accepts  as  VERP  delimiter
+              characters  on the Postfix <a href="sendmail.1.html"><b>sendmail</b>(1)</a> command line
               and in SMTP commands.
 
+       Available in Postfix version 2.5 and later:
+
+       <b><a href="postconf.5.html#qmqpd_client_port_logging">qmqpd_client_port_logging</a> (no)</b>
+              Enable logging of the remote QMQP  client  port  in
+              addition to the hostname and IP address.
+
 <b>SEE ALSO</b>
        <a href="http://cr.yp.to/proto/qmqp.html">http://cr.yp.to/proto/qmqp.html</a>, QMQP protocol
        <a href="cleanup.8.html">cleanup(8)</a>, message canonicalization
index 9b3aacc2d3fee7c6c3832e2d9431b6ab0ebd2400..7702135a026c0ccb8614a420cebc626c302181bd 100644 (file)
@@ -134,7 +134,7 @@ SCACHE(8)                                                            SCACHE(8)
        <b><a href="postconf.5.html#syslog_facility">syslog_facility</a> (mail)</b>
               The syslog facility of Postfix logging.
 
-       <b><a href="postconf.5.html#syslog_name">syslog_name</a> (postfix)</b>
+       <b><a href="postconf.5.html#syslog_name">syslog_name</a> (see 'postconf -d' output)</b>
               The  mail  system  name  that  is  prepended to the
               process name in syslog  records,  so  that  "smtpd"
               becomes, for example, "postfix/smtpd".
index 2cf7d33d228270a537141d6866ae3424718159fa..c399c68ec5701193e77e9016c446beecdc45cdb4 100644 (file)
@@ -90,7 +90,7 @@ SHOWQ(8)                                                              SHOWQ(8)
        <b><a href="postconf.5.html#syslog_facility">syslog_facility</a> (mail)</b>
               The syslog facility of Postfix logging.
 
-       <b><a href="postconf.5.html#syslog_name">syslog_name</a> (postfix)</b>
+       <b><a href="postconf.5.html#syslog_name">syslog_name</a> (see 'postconf -d' output)</b>
               The mail system  name  that  is  prepended  to  the
               process  name  in  syslog  records, so that "smtpd"
               becomes, for example, "postfix/smtpd".
index 1588febfa98ad977e9f7aa9bba2a2e4a05976f1c..f435276cbf00ffc48022b01515967f54c587a5b5 100644 (file)
@@ -392,9 +392,9 @@ SMTP(8)                                                                SMTP(8)
               shake procedures.
 
        <b><a href="postconf.5.html#smtp_tls_CAfile">smtp_tls_CAfile</a> (empty)</b>
-              The  file with the certificate of the certification
-              authority (CA) that issued the Postfix SMTP  client
-              certificate.
+              A  file  containing  CA  certificates  of  root CAs
+              trusted to sign either remote SMTP server  certifi-
+              cates or intermediate CA certificates.
 
        <b><a href="postconf.5.html#smtp_tls_CApath">smtp_tls_CApath</a> (empty)</b>
               Directory  with  PEM  format  certificate authority
@@ -777,7 +777,7 @@ SMTP(8)                                                                SMTP(8)
               The  hostname to send in the SMTP EHLO or HELO com-
               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_lhlo_name">lmtp_lhlo_name</a> ($<a href="postconf.5.html#myhostname">myhostname</a>)</b>
               The hostname to send in the LMTP LHLO command.
 
        <b><a href="postconf.5.html#smtp_host_lookup">smtp_host_lookup</a> (dns)</b>
index 7645c1ee52eff27ce7330548a9dc9a77f7a2a8aa..84256e0634fa0d63c367078b150b5fbe168bc8ba 100644 (file)
@@ -382,14 +382,14 @@ SMTPD(8)                                                              SMTPD(8)
               handshake procedures.
 
        <b><a href="postconf.5.html#smtpd_tls_CAfile">smtpd_tls_CAfile</a> (empty)</b>
-              The file with the certificate of the  certification
-              authority  (CA) that issued the Postfix SMTP server
-              certificate.
+              A file containing (PEM format) CA  certificates  of
+              root  CAs trusted to sign either remote SMTP client
+              certificates or intermediate CA certificates.
 
        <b><a href="postconf.5.html#smtpd_tls_CAfile">smtpd_tls_CAfile</a> (empty)</b>
-              The file with the certificate of the  certification
-              authority  (CA) that issued the Postfix SMTP server
-              certificate.
+              A file containing (PEM format) CA  certificates  of
+              root  CAs trusted to sign either remote SMTP client
+              certificates or intermediate CA certificates.
 
        <b><a href="postconf.5.html#smtpd_tls_always_issue_session_ids">smtpd_tls_always_issue_session_ids</a> (yes)</b>
               Force the Postfix SMTP server to issue a  TLS  ses-
index 75c825a902def41ece585049950a652c5422e17d..fbd6523e9a0f6e7b9842f472ca7b057a85a5b20f 100644 (file)
@@ -133,7 +133,7 @@ SPAWN(8)                                                              SPAWN(8)
        <b><a href="postconf.5.html#syslog_facility">syslog_facility</a> (mail)</b>
               The syslog facility of Postfix logging.
 
-       <b><a href="postconf.5.html#syslog_name">syslog_name</a> (postfix)</b>
+       <b><a href="postconf.5.html#syslog_name">syslog_name</a> (see 'postconf -d' output)</b>
               The mail system  name  that  is  prepended  to  the
               process  name  in  syslog  records, so that "smtpd"
               becomes, for example, "postfix/smtpd".
index 473edb021b4c94b48699249b023741d9608e464f..8866ea8eba41e778bf8e59e6bca0680ecc82913d 100644 (file)
@@ -158,7 +158,7 @@ TLSMGR(8)                                                            TLSMGR(8)
        <b><a href="postconf.5.html#syslog_facility">syslog_facility</a> (mail)</b>
               The syslog facility of Postfix logging.
 
-       <b><a href="postconf.5.html#syslog_name">syslog_name</a> (postfix)</b>
+       <b><a href="postconf.5.html#syslog_name">syslog_name</a> (see 'postconf -d' output)</b>
               The  mail  system  name  that  is  prepended to the
               process name in syslog  records,  so  that  "smtpd"
               becomes, for example, "postfix/smtpd".
index d62ce02c8177de59c7a9caafad6571ba33df1e8e..3a6e49ab259eb72586be3eca684ad8276fe63fdd 100644 (file)
@@ -148,7 +148,7 @@ BOUNCE(8)                                                            BOUNCE(8)
        <b><a href="postconf.5.html#syslog_facility">syslog_facility</a> (mail)</b>
               The syslog facility of Postfix logging.
 
-       <b><a href="postconf.5.html#syslog_name">syslog_name</a> (postfix)</b>
+       <b><a href="postconf.5.html#syslog_name">syslog_name</a> (see 'postconf -d' output)</b>
               The  mail  system  name  that  is  prepended to the
               process name in syslog  records,  so  that  "smtpd"
               becomes, for example, "postfix/smtpd".
index 67878574c1315e2737aff0eb9d428efe561d266f..2919775ddaee5e8f8bed141f8908f211a369d5e7 100644 (file)
@@ -297,7 +297,7 @@ TRIVIAL-REWRITE(8)                                          TRIVIAL-REWRITE(8)
        <b><a href="postconf.5.html#syslog_facility">syslog_facility</a> (mail)</b>
               The syslog facility of Postfix logging.
 
-       <b><a href="postconf.5.html#syslog_name">syslog_name</a> (postfix)</b>
+       <b><a href="postconf.5.html#syslog_name">syslog_name</a> (see 'postconf -d' output)</b>
               The  mail  system  name  that  is  prepended to the
               process name in syslog  records,  so  that  "smtpd"
               becomes, for example, "postfix/smtpd".
index e067406b00f594bf8d5d5b02ac8de0c23c7bb318..5064d787e57d55a39b8934bae85d001717403bb4 100644 (file)
@@ -282,7 +282,7 @@ VIRTUAL(8)                                                          VIRTUAL(8)
        <b><a href="postconf.5.html#syslog_facility">syslog_facility</a> (mail)</b>
               The syslog facility of Postfix logging.
 
-       <b><a href="postconf.5.html#syslog_name">syslog_name</a> (postfix)</b>
+       <b><a href="postconf.5.html#syslog_name">syslog_name</a> (see 'postconf -d' output)</b>
               The  mail  system  name  that  is  prepended to the
               process name in syslog  records,  so  that  "smtpd"
               becomes, for example, "postfix/smtpd".
index 390a74e2cb65e637e2a311e8ed83626d2bb02d37..8e86b8b869977c35dd911914f0c296fd704f2a7a 100644 (file)
@@ -186,7 +186,7 @@ The default database type for use in \fBnewaliases\fR(1), \fBpostalias\fR(1)
 and \fBpostmap\fR(1) commands.
 .IP "\fBsyslog_facility (mail)\fR"
 The syslog facility of Postfix logging.
-.IP "\fBsyslog_name (postfix)\fR"
+.IP "\fBsyslog_name (see 'postconf -d' output)\fR"
 The mail system name that is prepended to the process name in syslog
 records, so that "smtpd" becomes, for example, "postfix/smtpd".
 .SH "STANDARDS"
index edab93ad14923cb6ce2d196b94e38dce03b83b03..76c25751886a8632debc868ad00e6bdba797808f 100644 (file)
@@ -82,7 +82,7 @@ import from a non-Postfix parent process.
 The location of the Postfix top-level queue directory.
 .IP "\fBsyslog_facility (mail)\fR"
 The syslog facility of Postfix logging.
-.IP "\fBsyslog_name (postfix)\fR"
+.IP "\fBsyslog_name (see 'postconf -d' output)\fR"
 The mail system name that is prepended to the process name in syslog
 records, so that "smtpd" becomes, for example, "postfix/smtpd".
 .IP "\fBtrigger_timeout (10s)\fR"
index ab067d386d5ea752d821a55947c8282f5977d7dd..6a9989803dcc12dd8033044bd99085199483fe47 100644 (file)
@@ -64,7 +64,7 @@ The default location of the Postfix main.cf and master.cf
 configuration files.
 .IP "\fBsyslog_facility (mail)\fR"
 The syslog facility of Postfix logging.
-.IP "\fBsyslog_name (postfix)\fR"
+.IP "\fBsyslog_name (see 'postconf -d' output)\fR"
 The mail system name that is prepended to the process name in syslog
 records, so that "smtpd" becomes, for example, "postfix/smtpd".
 .SH "SEE ALSO"
index 9189c28a21a573ca6b8b59662071b5ae4d4a4706..d79ac3510afdfe179d41eb998dfa690e7ebf4bf4 100644 (file)
@@ -243,7 +243,7 @@ The default database type for use in \fBnewaliases\fR(1), \fBpostalias\fR(1)
 and \fBpostmap\fR(1) commands.
 .IP "\fBsyslog_facility (mail)\fR"
 The syslog facility of Postfix logging.
-.IP "\fBsyslog_name (postfix)\fR"
+.IP "\fBsyslog_name (see 'postconf -d' output)\fR"
 The mail system name that is prepended to the process name in syslog
 records, so that "smtpd" becomes, for example, "postfix/smtpd".
 .SH "SEE ALSO"
index a6f51534ca33310a431bd2fd26349ee95c115abc..83df565c5ceda9222bff3d91ddfc4894eea2d483 100644 (file)
@@ -135,7 +135,7 @@ import from a non-Postfix parent process.
 The location of the Postfix top-level queue directory.
 .IP "\fBsyslog_facility (mail)\fR"
 The syslog facility of Postfix logging.
-.IP "\fBsyslog_name (postfix)\fR"
+.IP "\fBsyslog_name (see 'postconf -d' output)\fR"
 The mail system name that is prepended to the process name in syslog
 records, so that "smtpd" becomes, for example, "postfix/smtpd".
 .IP "\fBtrigger_timeout (10s)\fR"
index c38dc8f9d8df53dff3d79dc8ab6592d388e1fc32..9b292a987f126c31f16e5397dbda7f1b038f5637 100644 (file)
@@ -222,7 +222,7 @@ subdirectory levels.
 The location of the Postfix top-level queue directory.
 .IP "\fBsyslog_facility (mail)\fR"
 The syslog facility of Postfix logging.
-.IP "\fBsyslog_name (postfix)\fR"
+.IP "\fBsyslog_name (see 'postconf -d' output)\fR"
 The mail system name that is prepended to the process name in syslog
 records, so that "smtpd" becomes, for example, "postfix/smtpd".
 .SH "SEE ALSO"
index 00d3942802c7c179115339fc7c9be1bfe34a56a2..6ad3b76fee25a1607ff13e55adf19a58c77d54a9 100644 (file)
@@ -876,7 +876,7 @@ Examples:
 .na
 .ft C
 debug_peer_list = 127.0.0.1
-debug_peer_list = some.domain
+debug_peer_list = example.com
 .fi
 .ad
 .ft R
@@ -1933,6 +1933,10 @@ Keep Postfix LMTP client connections open for up to $max_idle
 seconds. When the LMTP client receives a request for the same
 connection the connection is reused.
 .PP
+This parameter is available in Postfix version 2.2 and earlier.
+With Postfix version 2.3 and later, see lmtp_connection_cache_on_demand,
+lmtp_connection_cache_destinations, or lmtp_connection_reuse_time_limit.
+.PP
 The effectiveness of cached connections will be determined by the
 number of LMTP servers in use, and the concurrency limit specified
 for the LMTP client. Cached connections are closed under any of
@@ -3357,7 +3361,7 @@ Example:
 .nf
 .na
 .ft C
-myhostname = host.domain.tld
+myhostname = host.example.com
 .fi
 .ad
 .ft R
@@ -4079,7 +4083,7 @@ Examples:
 .na
 .ft C
 relayhost = $mydomain
-relayhost = [gateway.my.domain]
+relayhost = [gateway.example.com]
 relayhost = uucphost
 relayhost = [an.ip.add.ress]
 .fi
@@ -5026,10 +5030,15 @@ during TLS startup and shutdown handshake procedures.
 .PP
 This feature is available in Postfix 2.2 and later.
 .SH smtp_tls_CAfile (default: empty)
-The file with the certificate of the certification authority
-(CA) that issued the Postfix SMTP client certificate.  This is
-needed only when the CA certificate is not already present in the
-client certificate file.
+A file containing CA certificates of root CAs trusted to sign
+either remote SMTP server certificates or intermediate CA certificates.
+These are loaded into memory before the \fBsmtp\fR(8) client enters the
+chroot jail. If the number of trusted roots is large, consider using
+smtp_tls_CApath instead, but note that the latter directory must be
+present in the chroot jail if the \fBsmtp\fR(8) client is chrooted. This
+file may also be used to augment the client certificate trust chain,
+but it is best to include all the required certificates directly in
+$smtp_tls_cert_file.
 .PP
 Example:
 .PP
@@ -5091,13 +5100,14 @@ smtp_tls_eckey_file =
 The best way to use the default settings is to comment out the above
 parameters in main.cf if present.
 .PP
-In order to verify certificates, the CA certificate (in case
-of a certificate chain, all CA certificates) must be available.
-You should add these certificates to the client certificate, the
-client certificate first, then the issuing CA(s).
+To enable remote SMTP servers to verify the Postfix SMTP client
+certificate, the issuing CA certificates must be made available to the
+server. You should include the required certificates in the client
+certificate file, the client certificate first, then the issuing
+CA(s) (bottom-up order).
 .PP
-Example: the certificate for "client.dom.ain" was issued by
-"intermediate CA" which itself has a certificate of "root CA".
+Example: the certificate for "client.example.com" was issued by
+"intermediate CA" which itself has a certificate issued by "root CA".
 Create the client.pem file with "cat client_cert.pem intermediate_CA.pem
 root_CA.pem > client.pem".
 .PP
@@ -7474,12 +7484,25 @@ to update the global ipc_timeout parameter.
 Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
 The default time unit is s (seconds).
 .SH smtpd_tls_CAfile (default: empty)
-The file with the certificate of the certification authority
-(CA) that issued the Postfix SMTP server certificate.  This is
-needed only when the CA certificate is not already present in the
-server certificate file.  This file may also contain the CA
-certificates of other trusted CAs.  You must use this file for the
-list of trusted CAs if you want to use chroot-mode.
+A file containing (PEM format) CA certificates of root CAs trusted
+to sign either remote SMTP client certificates or intermediate CA
+certificates.  These are loaded into memory before the \fBsmtpd\fR(8) server
+enters the chroot jail. If the number of trusted roots is large, consider
+using smtpd_tls_CApath instead, but note that the latter directory must
+be present in the chroot jail if the \fBsmtpd\fR(8) server is chrooted. This
+file may also be used to augment the server certificate trust chain,
+but it is best to include all the required certificates directly in the
+server certificate file.
+.PP
+By default (see smtpd_tls_ask_ccert), client certificates are not
+requested, and smtpd_tls_CAfile should remain empty. If you do make use
+of client certificates, the distinguished names (DNs) of the certificate
+authorities listed in smtpd_tls_CAfile are sent to the remote SMTP client
+in the client certificate request message. MUAs with multiple client
+certificates may use the list of preferred certificate authorities
+to select the correct client certificate.  You may want to put your
+"preferred" CA or CAs in this file, and install other trusted CAs in
+$smtpd_tls_CApath.
 .PP
 Example:
 .PP
@@ -7493,17 +7516,22 @@ smtpd_tls_CAfile = /etc/postfix/CAcert.pem
 .PP
 This feature is available in Postfix 2.2 and later.
 .SH smtpd_tls_CApath (default: empty)
-Directory with PEM format certificate authority certificates
-that the Postfix SMTP server offers to remote SMTP clients for the
-purpose of client certificate verification.  Do not forget to create
-the necessary "hash" links with, for example, "$OPENSSL_HOME/bin/c_rehash
-/etc/postfix/certs".
-.PP
-To use this option in chroot mode, this directory (or a copy)
-must be inside the chroot jail. Please note that in this case the
-CA certificates are not offered to the client, so that e.g.  Netscape
-clients might not offer certificates issued by them.  Use of this
-feature is therefore not recommended.
+A directory containing (PEM format) CA certificates of root CAs
+trusted to sign either remote SMTP client certificates or intermediate CA
+certificates. Do not forget to create the necessary "hash" links with,
+for example, "$OPENSSL_HOME/bin/c_rehash /etc/postfix/certs". To use
+smtpd_tls_CApath in chroot mode, this directory (or a copy) must be
+inside the chroot jail.
+.PP
+By default (see smtpd_tls_ask_ccert), client certificates are
+not requested, and smtpd_tls_CApath should remain empty. In contrast
+to smtp_tls_CAfile, DNs of certificate authorities installed
+in $smtpd_tls_CApath are not included in the client certificate
+request message. MUAs with multiple client certificates may use the
+list of preferred certificate authorities to select the correct
+client certificate.  You may want to put your "preferred" CA or
+CAs in $smtp_tls_CAfile, and install the remaining trusted CAs in
+$smtpd_tls_CApath.
 .PP
 Example:
 .PP
@@ -7601,12 +7629,13 @@ are present, the cipher used determines which certificate will be
 presented to the client.  For Netscape and OpenSSL clients without
 special cipher choices the RSA certificate is preferred.
 .PP
-In order to verify a certificate, the CA certificate (in case
-of a certificate chain, all CA certificates) must be available.
-You should add these certificates to the server certificate, the
-server certificate first, then the issuing CA(s).
+To enable a remote SMTP client to verify the Postfix SMTP server
+certificate, the issuing CA certificates must be made available to the
+client. You should include the required certificates in the server
+certificate file, the server certificate first, then the issuing
+CA(s) (bottom-up order).
 .PP
-Example: the certificate for "server.dom.ain" was issued by
+Example: the certificate for "server.example.com" was issued by
 "intermediate CA" which itself has a certificate of "root CA".
 Create the server.pem file with "cat server_cert.pem intermediate_CA.pem
 root_CA.pem > server.pem".
index cf6867f47006e8f6316611983c4542241fe4548f..24224fa4be3b83eec070f222bd60f04c174ccca3 100644 (file)
@@ -231,7 +231,7 @@ The process ID of a Postfix command or daemon process.
 The process name of a Postfix command or daemon process.
 .IP "\fBsyslog_facility (mail)\fR"
 The syslog facility of Postfix logging.
-.IP "\fBsyslog_name (postfix)\fR"
+.IP "\fBsyslog_name (see 'postconf -d' output)\fR"
 The mail system name that is prepended to the process name in syslog
 records, so that "smtpd" becomes, for example, "postfix/smtpd".
 .SH "SEE ALSO"
index dfaa53a46507b902211c6481578c973ea68358f5..4c1489f55bfa95172be2b653b103448809571e19 100644 (file)
@@ -119,7 +119,7 @@ The process name of a Postfix command or daemon process.
 The location of the Postfix top-level queue directory.
 .IP "\fBsyslog_facility (mail)\fR"
 The syslog facility of Postfix logging.
-.IP "\fBsyslog_name (postfix)\fR"
+.IP "\fBsyslog_name (see 'postconf -d' output)\fR"
 The mail system name that is prepended to the process name in syslog
 records, so that "smtpd" becomes, for example, "postfix/smtpd".
 .SH "FILES"
index cb6a47b61ac7acad17807da3c6cf79dc6eb89200..6b1884268d69be374692adedf475e062eb9c6e81 100644 (file)
@@ -96,7 +96,7 @@ with older Postfix versions).
 .PP
 Available in Postfix version 2.6 and later:
 .IP "\fBalways_add_missing_headers (no)\fR"
-Always add (Resent-) From:, To:, Date: or Message-ID headers
+Always add (Resent-) From:, To:, Date: or Message-ID: headers
 when not present.
 .SH "BUILT-IN CONTENT FILTERING CONTROLS"
 .na
index 7a9cd7dae735ecf61bf4c6fdc1b55b54e20e21c5..cd603ed3d2392aa8b3bb1294f5b534af316f5dc6 100644 (file)
@@ -87,7 +87,7 @@ The process name of a Postfix command or daemon process.
 The location of the Postfix top-level queue directory.
 .IP "\fBsyslog_facility (mail)\fR"
 The syslog facility of Postfix logging.
-.IP "\fBsyslog_name (postfix)\fR"
+.IP "\fBsyslog_name (see 'postconf -d' output)\fR"
 The mail system name that is prepended to the process name in syslog
 records, so that "smtpd" becomes, for example, "postfix/smtpd".
 .SH "SEE ALSO"
index 5fa8f73b6d44c3c1f69d3a71ee4c8b31075e5103..b77ab291009e1570cf30da288b213146148ee15c 100644 (file)
@@ -97,7 +97,7 @@ The process name of a Postfix command or daemon process.
 The location of the Postfix top-level queue directory.
 .IP "\fBsyslog_facility (mail)\fR"
 The syslog facility of Postfix logging.
-.IP "\fBsyslog_name (postfix)\fR"
+.IP "\fBsyslog_name (see 'postconf -d' output)\fR"
 The mail system name that is prepended to the process name in syslog
 records, so that "smtpd" becomes, for example, "postfix/smtpd".
 .SH "SEE ALSO"
index 91313b9f9bf9997b0ecbf771a8653850f6c8a334..7dd566390ebe7abecc37a57e8208c1bb35e968b8 100644 (file)
@@ -126,7 +126,7 @@ The process name of a Postfix command or daemon process.
 The location of the Postfix top-level queue directory.
 .IP "\fBsyslog_facility (mail)\fR"
 The syslog facility of Postfix logging.
-.IP "\fBsyslog_name (postfix)\fR"
+.IP "\fBsyslog_name (see 'postconf -d' output)\fR"
 The mail system name that is prepended to the process name in syslog
 records, so that "smtpd" becomes, for example, "postfix/smtpd".
 .SH "FILES"
index d7658f33ec676496f65b6543eb051fbfe74afc5d..382637136a1f9d9d6baa820cbaf974e908413ad6 100644 (file)
@@ -581,7 +581,7 @@ Whether or not a \fBlocal\fR(8) recipient's home directory must exist
 before mail delivery is attempted.
 .IP "\fBsyslog_facility (mail)\fR"
 The syslog facility of Postfix logging.
-.IP "\fBsyslog_name (postfix)\fR"
+.IP "\fBsyslog_name (see 'postconf -d' output)\fR"
 The mail system name that is prepended to the process name in syslog
 records, so that "smtpd" becomes, for example, "postfix/smtpd".
 .SH "FILES"
index b688f93ae0c202b83e8a81447129c180943c99fc..cf158f2f391580441630280b82f8fd6d36a11526 100644 (file)
@@ -147,7 +147,7 @@ The process name of a Postfix command or daemon process.
 The location of the Postfix top-level queue directory.
 .IP "\fBsyslog_facility (mail)\fR"
 The syslog facility of Postfix logging.
-.IP "\fBsyslog_name (postfix)\fR"
+.IP "\fBsyslog_name (see 'postconf -d' output)\fR"
 The mail system name that is prepended to the process name in syslog
 records, so that "smtpd" becomes, for example, "postfix/smtpd".
 .SH "FILES"
index 5be3f42fc372f6ddba043c1cee930a8c06e67009..1c781481ac184bbe488789df9b2c13d14be04fd7 100644 (file)
@@ -307,7 +307,7 @@ The process name of a Postfix command or daemon process.
 The location of the Postfix top-level queue directory.
 .IP "\fBsyslog_facility (mail)\fR"
 The syslog facility of Postfix logging.
-.IP "\fBsyslog_name (postfix)\fR"
+.IP "\fBsyslog_name (see 'postconf -d' output)\fR"
 The mail system name that is prepended to the process name in syslog
 records, so that "smtpd" becomes, for example, "postfix/smtpd".
 .SH "FILES"
index c79250f1233208c24ed489411c1d3a8ec46c40cc..cd4efb5c89cc5bb9c02fffb58329e156d19bd4e6 100644 (file)
@@ -97,7 +97,7 @@ The process name of a Postfix command or daemon process.
 The location of the Postfix top-level queue directory.
 .IP "\fBsyslog_facility (mail)\fR"
 The syslog facility of Postfix logging.
-.IP "\fBsyslog_name (postfix)\fR"
+.IP "\fBsyslog_name (see 'postconf -d' output)\fR"
 The mail system name that is prepended to the process name in syslog
 records, so that "smtpd" becomes, for example, "postfix/smtpd".
 .SH "SEE ALSO"
index 33d385bb604cdaed023a185707d966bc47284e67..527bd404c9bccd5efea9e37d63877cfb87f7baf1 100644 (file)
@@ -415,7 +415,7 @@ The location of the Postfix top-level queue directory.
 The separator between user names and address extensions (user+foo).
 .IP "\fBsyslog_facility (mail)\fR"
 The syslog facility of Postfix logging.
-.IP "\fBsyslog_name (postfix)\fR"
+.IP "\fBsyslog_name (see 'postconf -d' output)\fR"
 The mail system name that is prepended to the process name in syslog
 records, so that "smtpd" becomes, for example, "postfix/smtpd".
 .SH "SEE ALSO"
index 0252679b3863b445cd6ed715c2c8dc27161649b2..8dd459e6844ad4f9dd68a6efb73ee6896f181f0c 100644 (file)
@@ -357,7 +357,7 @@ The process name of a Postfix command or daemon process.
 The location of the Postfix top-level queue directory.
 .IP "\fBsyslog_facility (mail)\fR"
 The syslog facility of Postfix logging.
-.IP "\fBsyslog_name (postfix)\fR"
+.IP "\fBsyslog_name (see 'postconf -d' output)\fR"
 The mail system name that is prepended to the process name in syslog
 records, so that "smtpd" becomes, for example, "postfix/smtpd".
 .SH "FILES"
index b9e0a231c48e5742b5a50267aad93667f1a36ee4..72fcd47869e98f10573a06ee91c71a92983bceed 100644 (file)
@@ -130,19 +130,21 @@ The process ID of a Postfix command or daemon process.
 The process name of a Postfix command or daemon process.
 .IP "\fBqmqpd_authorized_clients (empty)\fR"
 What clients are allowed to connect to the QMQP server port.
-.IP "\fBqmqpd_client_port_logging (no)\fR"
-Enable logging of the remote QMQP client port in addition to
-the hostname and IP address.
 .IP "\fBqueue_directory (see 'postconf -d' output)\fR"
 The location of the Postfix top-level queue directory.
 .IP "\fBsyslog_facility (mail)\fR"
 The syslog facility of Postfix logging.
-.IP "\fBsyslog_name (postfix)\fR"
+.IP "\fBsyslog_name (see 'postconf -d' output)\fR"
 The mail system name that is prepended to the process name in syslog
 records, so that "smtpd" becomes, for example, "postfix/smtpd".
 .IP "\fBverp_delimiter_filter (-=+)\fR"
 The characters Postfix accepts as VERP delimiter characters on the
 Postfix \fBsendmail\fR(1) command line and in SMTP commands.
+.PP
+Available in Postfix version 2.5 and later:
+.IP "\fBqmqpd_client_port_logging (no)\fR"
+Enable logging of the remote QMQP client port in addition to
+the hostname and IP address.
 .SH "SEE ALSO"
 .na
 .nf
index 4b200166a398a11250d0ce02c38c783b66370ede..79a635c14d938b8b34e0a190c6d754a9b3358033 100644 (file)
@@ -128,7 +128,7 @@ The process ID of a Postfix command or daemon process.
 The process name of a Postfix command or daemon process.
 .IP "\fBsyslog_facility (mail)\fR"
 The syslog facility of Postfix logging.
-.IP "\fBsyslog_name (postfix)\fR"
+.IP "\fBsyslog_name (see 'postconf -d' output)\fR"
 The mail system name that is prepended to the process name in syslog
 records, so that "smtpd" becomes, for example, "postfix/smtpd".
 .SH "SEE ALSO"
index 46bbfa6f807ff12577baf3251fc3bf2e2c2e078c..389b29e7867cbd39fd104e506ad2c9abd97fa517 100644 (file)
@@ -78,7 +78,7 @@ The process name of a Postfix command or daemon process.
 The location of the Postfix top-level queue directory.
 .IP "\fBsyslog_facility (mail)\fR"
 The syslog facility of Postfix logging.
-.IP "\fBsyslog_name (postfix)\fR"
+.IP "\fBsyslog_name (see 'postconf -d' output)\fR"
 The mail system name that is prepended to the process name in syslog
 records, so that "smtpd" becomes, for example, "postfix/smtpd".
 .SH "FILES"
index b15d3aacd9c5ad88a2da0336c59fa19b3957d898..c3baf168ba01ab8745714e9122dc859d647fb56a 100644 (file)
@@ -337,8 +337,8 @@ client uses for TLS encrypted SMTP sessions.
 Time limit for Postfix SMTP client write and read operations
 during TLS startup and shutdown handshake procedures.
 .IP "\fBsmtp_tls_CAfile (empty)\fR"
-The file with the certificate of the certification authority
-(CA) that issued the Postfix SMTP client certificate.
+A file containing CA certificates of root CAs trusted to sign
+either remote SMTP server certificates or intermediate CA certificates.
 .IP "\fBsmtp_tls_CApath (empty)\fR"
 Directory with PEM format certificate authority certificates
 that the Postfix SMTP client uses to verify a remote SMTP server
index 1951911cf0c2205e55a7f1d1b12fe81ff58ab906..9439ff6e68f716e63c13648aeef465b95d01f275 100644 (file)
@@ -337,11 +337,13 @@ server uses for TLS encrypted SMTP sessions.
 The time limit for Postfix SMTP server write and read operations
 during TLS startup and shutdown handshake procedures.
 .IP "\fBsmtpd_tls_CAfile (empty)\fR"
-The file with the certificate of the certification authority
-(CA) that issued the Postfix SMTP server certificate.
+A file containing (PEM format) CA certificates of root CAs trusted
+to sign either remote SMTP client certificates or intermediate CA
+certificates.
 .IP "\fBsmtpd_tls_CAfile (empty)\fR"
-The file with the certificate of the certification authority
-(CA) that issued the Postfix SMTP server certificate.
+A file containing (PEM format) CA certificates of root CAs trusted
+to sign either remote SMTP client certificates or intermediate CA
+certificates.
 .IP "\fBsmtpd_tls_always_issue_session_ids (yes)\fR"
 Force the Postfix SMTP server to issue a TLS session id, even
 when TLS session caching is turned off (smtpd_tls_session_cache_database
index 21418fc13ce36fa041dc8c82f32d93ef6af349cf..ba1ab560be0406512818c8de3e14300967be3949 100644 (file)
@@ -125,7 +125,7 @@ The process name of a Postfix command or daemon process.
 The location of the Postfix top-level queue directory.
 .IP "\fBsyslog_facility (mail)\fR"
 The syslog facility of Postfix logging.
-.IP "\fBsyslog_name (postfix)\fR"
+.IP "\fBsyslog_name (see 'postconf -d' output)\fR"
 The mail system name that is prepended to the process name in syslog
 records, so that "smtpd" becomes, for example, "postfix/smtpd".
 .SH "SEE ALSO"
index 665f8f99c9118df72eb967866596a65f17f43305..a6ec299e1cb729dbbc5a9dcfff467f4acdcaff68 100644 (file)
@@ -149,7 +149,7 @@ The process ID of a Postfix command or daemon process.
 The process name of a Postfix command or daemon process.
 .IP "\fBsyslog_facility (mail)\fR"
 The syslog facility of Postfix logging.
-.IP "\fBsyslog_name (postfix)\fR"
+.IP "\fBsyslog_name (see 'postconf -d' output)\fR"
 The mail system name that is prepended to the process name in syslog
 records, so that "smtpd" becomes, for example, "postfix/smtpd".
 .SH "SEE ALSO"
index 3885570ecd47a20c14f23a4cba85faae2b0c42dc..ccf1f354d12572f57655e98251bd09d0b6efe288 100644 (file)
@@ -253,7 +253,7 @@ Display the name of the recipient table in the "User unknown"
 responses.
 .IP "\fBsyslog_facility (mail)\fR"
 The syslog facility of Postfix logging.
-.IP "\fBsyslog_name (postfix)\fR"
+.IP "\fBsyslog_name (see 'postconf -d' output)\fR"
 The mail system name that is prepended to the process name in syslog
 records, so that "smtpd" becomes, for example, "postfix/smtpd".
 .PP
index 28222ac594081e179585b05a1025538b5d1271c2..b82beef4d66f0da27e73d207de3dcac1e624cb33 100644 (file)
@@ -278,7 +278,7 @@ The process name of a Postfix command or daemon process.
 The location of the Postfix top-level queue directory.
 .IP "\fBsyslog_facility (mail)\fR"
 The syslog facility of Postfix logging.
-.IP "\fBsyslog_name (postfix)\fR"
+.IP "\fBsyslog_name (see 'postconf -d' output)\fR"
 The mail system name that is prepended to the process name in syslog
 records, so that "smtpd" becomes, for example, "postfix/smtpd".
 .SH "SEE ALSO"
diff --git a/postfix/mantools/check-postlink b/postfix/mantools/check-postlink
new file mode 100755 (executable)
index 0000000..ecddefa
--- /dev/null
@@ -0,0 +1,57 @@
+#!/bin/sh
+
+# Look for missing parameter names in postlink
+
+trap 'rm -f postlink.tmp postconf.tmp check-postlink.tmp 2>/dev/null' 0 1 2 3 15
+
+# Extract parameters from postconf.5.html hyperlinks.
+
+sed -n '/[     ].*href="postconf\.5\.html#/{
+       s/^[^#]*#//
+       s/".*//
+       p
+}' mantools/postlink | sort > postlink.tmp
+#
+# Extract parameters from postlink script. This also produces names
+# of obsolete parameters, and non-parameter names such as SMTPD
+# access restrictions and mask names.
+
+postconf -d | sed 's/ =.*//' | sort >postconf.tmp
+
+# Filter the output through a whitelist.
+
+cat >check-postlink.tmp <<'EOF'
+lmtp_body_checks
+lmtp_cname_overrides_servername
+lmtp_destination_concurrency_failed_cohort_limit
+lmtp_destination_concurrency_negative_feedback
+lmtp_destination_concurrency_positive_feedback
+lmtp_destination_rate_delay
+lmtp_header_checks
+lmtp_initial_destination_concurrency
+lmtp_mime_header_checks
+lmtp_nested_header_checks
+local_destination_concurrency_failed_cohort_limit
+local_destination_concurrency_negative_feedback
+local_destination_concurrency_positive_feedback
+local_destination_rate_delay
+local_initial_destination_concurrency
+relay_destination_concurrency_failed_cohort_limit
+relay_destination_concurrency_negative_feedback
+relay_destination_concurrency_positive_feedback
+relay_destination_rate_delay
+relay_initial_destination_concurrency
+smtp_destination_concurrency_failed_cohort_limit
+smtp_destination_concurrency_negative_feedback
+smtp_destination_concurrency_positive_feedback
+smtp_destination_rate_delay
+smtp_initial_destination_concurrency
+stress
+virtual_destination_concurrency_failed_cohort_limit
+virtual_destination_concurrency_negative_feedback
+virtual_destination_concurrency_positive_feedback
+virtual_destination_rate_delay
+virtual_initial_destination_concurrency
+EOF
+
+comm -23 postconf.tmp postlink.tmp | fgrep -vx -f check-postlink.tmp
index 5fea129b39a9c2568cafc4e120c04921f4d27c42..7d4d59e5255ef268e0ede5ec1f01d9ec2ea008a5 100755 (executable)
@@ -205,6 +205,7 @@ while (<>) {
     s;\bline_length_limit\b;<a href="postconf.5.html#line_length_limit">$&</a>;g;
     s;\blmtp_bind_address\b;<a href="postconf.5.html#lmtp_bind_address">$&</a>;g;
     s;\blmtp_bind_address6\b;<a href="postconf.5.html#lmtp_bind_address6">$&</a>;g;
+    s;\blmtp_assume_final\b;<a href="postconf.5.html#lmtp_assume_final">$&</a>;g;
     s;\blmtp_cache_connection\b;<a href="postconf.5.html#lmtp_cache_connection">$&</a>;g;
     s;\blmtp_discard_lhlo_keyword_address_maps\b;<a href="postconf.5.html#lmtp_discard_lhlo_keyword_address_maps">$&</a>;g;
     s;\blmtp_discard_lhlo_keywords\b;<a href="postconf.5.html#lmtp_discard_lhlo_keywords">$&</a>;g;
@@ -260,7 +261,7 @@ while (<>) {
     s;\blmtp_tls_note_starttls_offer\b;<a href="postconf.5.html#lmtp_tls_note_starttls_offer">$&</a>;g;
     s;\blmtp_sender_dependent_authentication\b;<a href="postconf.5.html#lmtp_sender_dependent_authentication">$&</a>;g;
     s;\blmtp_sasl_path\b;<a href="postconf.5.html#lmtp_sasl_path">$&</a>;g;
-    s;\blmtp_lhlo_name\b;<a href="postconf.5.html#lmtp_lhloname">$&</a>;g;
+    s;\blmtp_lhlo_name\b;<a href="postconf.5.html#lmtp_lhlo_name">$&</a>;g;
     s;\blmtp_connect_timeout\b;<a href="postconf.5.html#lmtp_connect_timeout">$&</a>;g;
     s;\blmtp_data_done_timeout\b;<a href="postconf.5.html#lmtp_data_done_timeout">$&</a>;g;
     s;\blmtp_data_init_timeout\b;<a href="postconf.5.html#lmtp_data_init_timeout">$&</a>;g;
@@ -360,6 +361,7 @@ while (<>) {
     s;\bdestination_concurrency_feedback_debug\b;<a href="postconf.5.html#destination_concurrency_feedback_debug">$&</a>;g;
     s;\bdefault_destina[-</Bb>]*\n* *[<Bb>]*tion_rate_delay\b;<a href="postconf.5.html#default_destination_rate_delay">$&</a>;g;
 
+    s;\bqmqpd_client_port_logging\b;<a href="postconf.5.html#qmqpd_client_port_logging">$&</a>;g;
     s;\bqmqpd_error_delay\b;<a href="postconf.5.html#qmqpd_error_delay">$&</a>;g;
     s;\bqmqpd_timeout\b;<a href="postconf.5.html#qmqpd_timeout">$&</a>;g;
     s;\bqueue_directory\b;<a href="postconf.5.html#queue_directory">$&</a>;g;
@@ -403,7 +405,7 @@ while (<>) {
     s;\bservice_throttle_time\b;<a href="postconf.5.html#service_throttle_time">$&</a>;g;
     s;\bsetgid_group\b;<a href="postconf.5.html#setgid_group">$&</a>;g;
 
-    s;\bconnection_cache_service\b;<a href="postconf.5.html#connection_cache_service">$&</a>;g;
+    s;\bconnection_cache_service_name\b;<a href="postconf.5.html#connection_cache_service_name">$&</a>;g;
     s;\bconnection_cache_status_update_time\b;<a href="postconf.5.html#connection_cache_status_update_time">$&</a>;g;
     s;\bconnection_cache_protocol_timeout\b;<a href="postconf.5.html#connection_cache_protocol_timeout">$&</a>;g;
     s;\bconnection_cache_ttl_limit\b;<a href="postconf.5.html#connection_cache_ttl_limit">$&</a>;g;
@@ -669,7 +671,7 @@ while (<>) {
     # Transport-dependent magical parameters.
 
     s;(<i>transport</i>)(<b>)?(_destination_concurrency_failed_cohort_limit)\b;$2<a href="postconf.5.html#transport_destination_concurrency_failed_cohort_limit">$1$3</a>;g;
-    s;(<i>transport</i>)(<b>)?(_destination_concurrency_negative_feedback)\b;$2<a href="postconf.5.html#transport_destination_concurrency_positive_feedback">$1$3</a>;g;
+    s;(<i>transport</i>)(<b>)?(_destination_concurrency_negative_feedback)\b;$2<a href="postconf.5.html#transport_destination_concurrency_negative_feedback">$1$3</a>;g;
     s;(<i>transport</i>)(<b>)?(_destination_concurrency_positive_feedback)\b;$2<a href="postconf.5.html#transport_destination_concurrency_positive_feedback">$1$3</a>;g;
     s;(<i>transport</i>)(<b>)?(_delivery_slot_cost)\b;$2<a href="postconf.5.html#transport_delivery_slot_cost">$1$3</a>;g;
     s;(<i>transport</i>)(<b>)?(_delivery_slot_discount)\b;$2<a href="postconf.5.html#transport_delivery_slot_discount">$1$3</a>;g;
index a46f99c58d632ec52cd9dfdaf6ff42898d1ff9e8..c304f7e637156e69e957435b740e97ac71bff5ab 100644 (file)
@@ -568,6 +568,11 @@ the cost of repeatedly negotiating TLS session keys is high.</p>
 </pre>
 </blockquote>
 
+<p> As of version 2.5, Postfix will no longer maintain this file
+in a directory with non-Postfix ownership. As a migration aid,
+attempts to open such files are redirected to the Postfix-owned
+$data_directory, and a warning is logged. </p>
+
 <p> Cached Postfix SMTP server session information expires after
 a certain amount of time.  Postfix/TLS does not use the OpenSSL
 default of 300s, but a longer time of 3600sec (=1 hour). RFC 2246
@@ -937,6 +942,11 @@ is allowed to negotiate per unit time.</p>
 </pre>
 </blockquote>
 
+<p> As of version 2.5, Postfix will no longer maintain this file
+in a directory with non-Postfix ownership. As a migration aid,
+attempts to open such files are redirected to the Postfix-owned
+$data_directory, and a warning is logged. </p>
+
 <p> Cached Postfix SMTP client session information expires after
 a certain amount of time.  Postfix/TLS does not use the OpenSSL
 default of 300s, but a longer time of 3600s (=1 hour). RFC 2246
index c1e77971b93c935f7e9f1636f94164022e6b9d14..c2d999b5023ac6132c97499031df649235607359 100644 (file)
@@ -266,11 +266,11 @@ determines which certificate is presented. For Netscape and OpenSSL
 clients without special cipher choices, the RSA certificate is
 preferred. </p>
 
-<p> In order for remote SMTP clients to check the Postfix SMTP
-server certificates, the CA certificate (in case of a certificate
-chain, all CA certificates) must be available.  You should add any
-intermediate CA certificates to the server certificate: the server
-certificate first, then the intermediate CA(s).  </p>
+<p> To enable a remote SMTP client to verify the Postfix SMTP server
+certificate, the issuing CA certificates must be made available to the
+client. You should include the required certificates in the server
+certificate file, the server certificate first, then the issuing
+CA(s) (bottom-up order). </p>
 
 <p> Example: the certificate for "server.example.com" was issued by
 "intermediate CA" which itself has a certificate issued by "root
@@ -363,9 +363,9 @@ is needed. Thus, the $smtpd_tls_CApath directory needs to be
 accessible inside the optional chroot jail. </p>
 
 <p> When you configure the Postfix SMTP server to request <a
-href="#server_vrfy_client">client certificates</a>, any CA certificates
-in $smtpd_tls_CAfile are sent to the client, in order to allow it to
-choose an identity signed by a CA you trust. If no $smtpd_tls_CAfile
+href="#server_vrfy_client">client certificates</a>, the DNs of certificate
+authorities in $smtpd_tls_CAfile are sent to the client, in order to allow
+it to choose an identity signed by a CA you trust. If no $smtpd_tls_CAfile
 is specified, no preferred CA list is sent, and the client is free to
 choose an identity signed by any CA. Many clients use a fixed identity
 regardless of the preferred CA list and you may be able to reduce TLS
@@ -970,14 +970,14 @@ must not be encrypted, meaning: it must be accessible without
 password. Both parts (certificate and private key) may be in the
 same file. </p>
 
-<p> In order for remote SMTP servers to verify the Postfix SMTP
-client certificates, the CA certificate (in case of a certificate
-chain, all CA certificates) must be available.  You should add
-these certificates to the client certificate, the client certificate
-first, then the issuing CA(s). </p>
+<p> To enable remote SMTP servers to verify the Postfix SMTP client
+certificate, the issuing CA certificates must be made available to the
+server. You should include the required certificates in the client
+certificate file, the client certificate first, then the issuing
+CA(s) (bottom-up order). </p>
 
 <p> Example: the certificate for "client.example.com" was issued by
-"intermediate CA" which itself has a certificate of "root CA".
+"intermediate CA" which itself has a certificate issued by "root CA".
 Create the client.pem file with: </p>
 
 <blockquote>
index 5c55409e30cafb4c28afca86e81117497add70c8..1848dd3b330284a735b6f1ad3e54d69e8b631659 100644 (file)
@@ -890,7 +890,7 @@ Examples:
 
 <pre>
 debug_peer_list = 127.0.0.1
-debug_peer_list = some.domain
+debug_peer_list = example.com
 </pre>
 
 %PARAM default_database_type see "postconf -d" output
@@ -2876,7 +2876,7 @@ Example:
 </p>
 
 <pre>
-myhostname = host.domain.tld
+myhostname = host.example.com
 </pre>
 
 %PARAM mynetworks see "postconf -d" output
@@ -3508,7 +3508,7 @@ Examples:
 
 <pre>
 relayhost = $mydomain
-relayhost = [gateway.my.domain]
+relayhost = [gateway.example.com]
 relayhost = uucphost
 relayhost = [an.ip.add.ress]
 </pre>
@@ -7050,6 +7050,11 @@ seconds. When the LMTP client receives a request for the same
 connection the connection is reused.
 </p>
 
+<p> This parameter is available in Postfix version 2.2 and earlier.
+With Postfix version 2.3 and later, see lmtp_connection_cache_on_demand,
+lmtp_connection_cache_destinations, or lmtp_connection_reuse_time_limit.
+</p>
+
 <p>
 The effectiveness of cached connections will be determined by the
 number of LMTP servers in use, and the concurrency limit specified
@@ -8430,12 +8435,13 @@ are present, the cipher used determines which certificate will be
 presented to the client.  For Netscape and OpenSSL clients without
 special cipher choices the RSA certificate is preferred. </p>
 
-<p> In order to verify a certificate, the CA certificate (in case
-of a certificate chain, all CA certificates) must be available.
-You should add these certificates to the server certificate, the
-server certificate first, then the issuing CA(s).  </p>
+<p> To enable a remote SMTP client to verify the Postfix SMTP server
+certificate, the issuing CA certificates must be made available to the
+client. You should include the required certificates in the server
+certificate file, the server certificate first, then the issuing
+CA(s) (bottom-up order). </p>
 
-<p> Example: the certificate for "server.dom.ain" was issued by
+<p> Example: the certificate for "server.example.com" was issued by
 "intermediate CA" which itself has a certificate of "root CA".
 Create the server.pem file with "cat server_cert.pem intermediate_CA.pem
 root_CA.pem &gt; server.pem". </p>
@@ -8498,12 +8504,25 @@ to anyone else. </p>
 
 %PARAM smtpd_tls_CAfile
 
-<p> The file with the certificate of the certification authority
-(CA) that issued the Postfix SMTP server certificate.  This is
-needed only when the CA certificate is not already present in the
-server certificate file.  This file may also contain the CA
-certificates of other trusted CAs.  You must use this file for the
-list of trusted CAs if you want to use chroot-mode. </p>
+<p> A file containing (PEM format) CA certificates of root CAs trusted
+to sign either remote SMTP client certificates or intermediate CA
+certificates.  These are loaded into memory before the smtpd(8) server
+enters the chroot jail. If the number of trusted roots is large, consider
+using smtpd_tls_CApath instead, but note that the latter directory must
+be present in the chroot jail if the smtpd(8) server is chrooted. This
+file may also be used to augment the server certificate trust chain,
+but it is best to include all the required certificates directly in the
+server certificate file. </p>
+
+<p> By default (see smtpd_tls_ask_ccert), client certificates are not
+requested, and smtpd_tls_CAfile should remain empty. If you do make use
+of client certificates, the distinguished names (DNs) of the certificate
+authorities listed in smtpd_tls_CAfile are sent to the remote SMTP client
+in the client certificate request message. MUAs with multiple client
+certificates may use the list of preferred certificate authorities
+to select the correct client certificate.  You may want to put your
+"preferred" CA or CAs in this file, and install other trusted CAs in
+$smtpd_tls_CApath. </p>
 
 <p> Example: </p>
 
@@ -8515,17 +8534,22 @@ smtpd_tls_CAfile = /etc/postfix/CAcert.pem
 
 %PARAM smtpd_tls_CApath
 
-<p> Directory with PEM format certificate authority certificates
-that the Postfix SMTP server offers to remote SMTP clients for the
-purpose of client certificate verification.  Do not forget to create
-the necessary "hash" links with, for example, "$OPENSSL_HOME/bin/c_rehash
-/etc/postfix/certs".  </p>
-
-<p> To use this option in chroot mode, this directory (or a copy)
-must be inside the chroot jail. Please note that in this case the
-CA certificates are not offered to the client, so that e.g.  Netscape
-clients might not offer certificates issued by them.  Use of this
-feature is therefore not recommended. </p>
+<p> A directory containing (PEM format) CA certificates of root CAs
+trusted to sign either remote SMTP client certificates or intermediate CA
+certificates. Do not forget to create the necessary "hash" links with,
+for example, "$OPENSSL_HOME/bin/c_rehash /etc/postfix/certs". To use
+smtpd_tls_CApath in chroot mode, this directory (or a copy) must be
+inside the chroot jail. </p>
+
+<p> By default (see smtpd_tls_ask_ccert), client certificates are
+not requested, and smtpd_tls_CApath should remain empty. In contrast
+to smtp_tls_CAfile, DNs of certificate authorities installed
+in $smtpd_tls_CApath are not included in the client certificate
+request message. MUAs with multiple client certificates may use the
+list of preferred certificate authorities to select the correct
+client certificate.  You may want to put your "preferred" CA or
+CAs in $smtp_tls_CAfile, and install the remaining trusted CAs in
+$smtpd_tls_CApath. </p>
 
 <p> Example: </p>
 
@@ -8827,13 +8851,14 @@ smtp_tls_eckey_file =
 <p> The best way to use the default settings is to comment out the above
 parameters in main.cf if present. </p>
 
-<p> In order to verify certificates, the CA certificate (in case
-of a certificate chain, all CA certificates) must be available.
-You should add these certificates to the client certificate, the
-client certificate first, then the issuing CA(s). </p>
+<p> To enable remote SMTP servers to verify the Postfix SMTP client
+certificate, the issuing CA certificates must be made available to the
+server. You should include the required certificates in the client
+certificate file, the client certificate first, then the issuing
+CA(s) (bottom-up order). </p>
 
-<p> Example: the certificate for "client.dom.ain" was issued by
-"intermediate CA" which itself has a certificate of "root CA".
+<p> Example: the certificate for "client.example.com" was issued by
+"intermediate CA" which itself has a certificate issued by "root CA".
 Create the client.pem file with "cat client_cert.pem intermediate_CA.pem
 root_CA.pem &gt; client.pem". </p>
 
@@ -8874,10 +8899,15 @@ smtp_tls_key_file = $smtp_tls_cert_file
 
 %PARAM smtp_tls_CAfile
 
-<p> The file with the certificate of the certification authority
-(CA) that issued the Postfix SMTP client certificate.  This is
-needed only when the CA certificate is not already present in the
-client certificate file.  </p>
+<p> A file containing CA certificates of root CAs trusted to sign
+either remote SMTP server certificates or intermediate CA certificates.
+These are loaded into memory before the smtp(8) client enters the
+chroot jail. If the number of trusted roots is large, consider using
+smtp_tls_CApath instead, but note that the latter directory must be
+present in the chroot jail if the smtp(8) client is chrooted. This
+file may also be used to augment the client certificate trust chain,
+but it is best to include all the required certificates directly in
+$smtp_tls_cert_file. </p>
 
 <p> Example: </p>
 
index b1aa1676fc1b55c0cce9327094527e105af37578..8bde6f7c0601456724c192348676330c65816e87 100644 (file)
 /*     The process name of a Postfix command or daemon process.
 /* .IP "\fBsyslog_facility (mail)\fR"
 /*     The syslog facility of Postfix logging.
-/* .IP "\fBsyslog_name (postfix)\fR"
+/* .IP "\fBsyslog_name (see 'postconf -d' output)\fR"
 /*     The mail system name that is prepended to the process name in syslog
 /*     records, so that "smtpd" becomes, for example, "postfix/smtpd".
 /* SEE ALSO
index ae62d21db1669d7e79cfa2056434eb9a0c46afc4..81d09942f6554fca98ddf88a97ce2e25f64d0b27 100644 (file)
 /*     The location of the Postfix top-level queue directory.
 /* .IP "\fBsyslog_facility (mail)\fR"
 /*     The syslog facility of Postfix logging.
-/* .IP "\fBsyslog_name (postfix)\fR"
+/* .IP "\fBsyslog_name (see 'postconf -d' output)\fR"
 /*     The mail system name that is prepended to the process name in syslog
 /*     records, so that "smtpd" becomes, for example, "postfix/smtpd".
 /* FILES
index 688b6860d28b5fe2b9a5b20a77233eeb30694965..a9dbdf5b71166e87d398f79291d1c21a21910dd4 100644 (file)
@@ -80,7 +80,7 @@
 /* .PP
 /*     Available in Postfix version 2.6 and later:
 /* .IP "\fBalways_add_missing_headers (no)\fR"
-/*     Always add (Resent-) From:, To:, Date: or Message-ID headers
+/*     Always add (Resent-) From:, To:, Date: or Message-ID: headers
 /*     when not present.
 /* BUILT-IN CONTENT FILTERING CONTROLS
 /* .ad
index c0e5e6debac05a67a4522bf9b9ef18573a95da82..d1d467edb49559e81ef242c305fafd26f46c41e9 100644 (file)
@@ -73,7 +73,7 @@
 /*     The location of the Postfix top-level queue directory.
 /* .IP "\fBsyslog_facility (mail)\fR"
 /*     The syslog facility of Postfix logging.
-/* .IP "\fBsyslog_name (postfix)\fR"
+/* .IP "\fBsyslog_name (see 'postconf -d' output)\fR"
 /*     The mail system name that is prepended to the process name in syslog
 /*     records, so that "smtpd" becomes, for example, "postfix/smtpd".
 /* SEE ALSO
index 6ee9e7714191bfef05729ca94ccea463f523539c..26aa0113470794970269904b00d2e2c7690ffbc3 100644 (file)
@@ -83,7 +83,7 @@
 /*     The location of the Postfix top-level queue directory.
 /* .IP "\fBsyslog_facility (mail)\fR"
 /*     The syslog facility of Postfix logging.
-/* .IP "\fBsyslog_name (postfix)\fR"
+/* .IP "\fBsyslog_name (see 'postconf -d' output)\fR"
 /*     The mail system name that is prepended to the process name in syslog
 /*     records, so that "smtpd" becomes, for example, "postfix/smtpd".
 /* SEE ALSO
index 2658819cdbadd735ee0e8306318624107c0784f3..53a2c8f44a6a07c66d81c0043961a8306ca49120 100644 (file)
 /*     The location of the Postfix top-level queue directory.
 /* .IP "\fBsyslog_facility (mail)\fR"
 /*     The syslog facility of Postfix logging.
-/* .IP "\fBsyslog_name (postfix)\fR"
+/* .IP "\fBsyslog_name (see 'postconf -d' output)\fR"
 /*     The mail system name that is prepended to the process name in syslog
 /*     records, so that "smtpd" becomes, for example, "postfix/smtpd".
 /* FILES
index 516d917359d03094731be42e7ed34e4146a562d6..d2b4c20f8d414b6b477281b9841387b1dc1f8bd2 100644 (file)
@@ -1003,8 +1003,8 @@ extern bool var_smtp_skip_5xx_greeting;
 #define DEF_IGN_MX_LOOKUP_ERR  0
 extern bool var_ign_mx_lookup_err;
 
-#define VAR_SKIP_QUIT_RESP     "smtp_skip_quit_response"
-#define DEF_SKIP_QUIT_RESP     1
+#define VAR_SMTP_SKIP_QUIT_RESP        "smtp_skip_quit_response"
+#define DEF_SMTP_SKIP_QUIT_RESP        1
 extern bool var_skip_quit_resp;
 
 #define VAR_SMTP_ALWAYS_EHLO   "smtp_always_send_ehlo"
index 1231f36d6561c78272b4a941a50f6b17f5510aca..68990a9291b6630283aee7358b143216160932d8 100644 (file)
@@ -20,8 +20,8 @@
   * Patches change both the patchlevel and the release date. Snapshots have no
   * patchlevel; they change the release date only.
   */
-#define MAIL_RELEASE_DATE      "20090415"
-#define MAIL_VERSION_NUMBER    "2.6.0-RC1"
+#define MAIL_RELEASE_DATE      "20090418"
+#define MAIL_VERSION_NUMBER    "2.6.0-RC2"
 
 #ifdef SNAPSHOT
 # define MAIL_VERSION_DATE     "-" MAIL_RELEASE_DATE
index 33af0ad766f43e0f044c472d7cd093dd2271a3b4..ebbf47d38e7bebfeeb82c0d53ecbe78b59f90928 100644 (file)
 /*     before mail delivery is attempted.
 /* .IP "\fBsyslog_facility (mail)\fR"
 /*     The syslog facility of Postfix logging.
-/* .IP "\fBsyslog_name (postfix)\fR"
+/* .IP "\fBsyslog_name (see 'postconf -d' output)\fR"
 /*     The mail system name that is prepended to the process name in syslog
 /*     records, so that "smtpd" becomes, for example, "postfix/smtpd".
 /* FILES
index f18572ac761969504c87491317ceeb6350e993c5..6167fc431dd54e228702364e6727f269e4e56d55 100644 (file)
 /*     The location of the Postfix top-level queue directory.
 /* .IP "\fBsyslog_facility (mail)\fR"
 /*     The syslog facility of Postfix logging.
-/* .IP "\fBsyslog_name (postfix)\fR"
+/* .IP "\fBsyslog_name (see 'postconf -d' output)\fR"
 /*     The mail system name that is prepended to the process name in syslog
 /*     records, so that "smtpd" becomes, for example, "postfix/smtpd".
 /* FILES
index 1a8b8b24142923e28a933b8bd47c34a3325f8362..e1e1b2d7f7ec462255e276756416e6aeb2bad8d2 100644 (file)
 /*     The location of the Postfix top-level queue directory.
 /* .IP "\fBsyslog_facility (mail)\fR"
 /*     The syslog facility of Postfix logging.
-/* .IP "\fBsyslog_name (postfix)\fR"
+/* .IP "\fBsyslog_name (see 'postconf -d' output)\fR"
 /*     The mail system name that is prepended to the process name in syslog
 /*     records, so that "smtpd" becomes, for example, "postfix/smtpd".
 /* FILES
index 3b4628435b4e698f544273f9638e963279974bad..ccf64749e6daf7f6cc41f9e9a810f5fa868bdacb 100644 (file)
@@ -77,7 +77,7 @@
 /*     The location of the Postfix top-level queue directory.
 /* .IP "\fBsyslog_facility (mail)\fR"
 /*     The syslog facility of Postfix logging.
-/* .IP "\fBsyslog_name (postfix)\fR"
+/* .IP "\fBsyslog_name (see 'postconf -d' output)\fR"
 /*     The mail system name that is prepended to the process name in syslog
 /*     records, so that "smtpd" becomes, for example, "postfix/smtpd".
 /* SEE ALSO
index 8deb6f0e4353b1c835c08d954c028c6671facc66..a17ba7f637c4593e5eabe76c67598b06042c3c49 100644 (file)
 /*     The separator between user names and address extensions (user+foo).
 /* .IP "\fBsyslog_facility (mail)\fR"
 /*     The syslog facility of Postfix logging.
-/* .IP "\fBsyslog_name (postfix)\fR"
+/* .IP "\fBsyslog_name (see 'postconf -d' output)\fR"
 /*     The mail system name that is prepended to the process name in syslog
 /*     records, so that "smtpd" becomes, for example, "postfix/smtpd".
 /* SEE ALSO
index cd05691733c6805376c149026ed49ca7be327bd7..34336cd7e301382dc3c6072cdfd5741a05c670c6 100644 (file)
 /*     and \fBpostmap\fR(1) commands.
 /* .IP "\fBsyslog_facility (mail)\fR"
 /*     The syslog facility of Postfix logging.
-/* .IP "\fBsyslog_name (postfix)\fR"
+/* .IP "\fBsyslog_name (see 'postconf -d' output)\fR"
 /*     The mail system name that is prepended to the process name in syslog
 /*     records, so that "smtpd" becomes, for example, "postfix/smtpd".
 /* STANDARDS
index 324ca9d3a67fa765e81da48c83055b4c0b869702..a91c9b95afc00a83c7ce45ba29335930aaf70850 100644 (file)
@@ -44,7 +44,7 @@ update: ../../bin/$(PROG) $(SAMPLES)
        cp $(PROG) ../../bin
 
 $(MAKES): $(INC_DIR)/mail_params.h ../global/mail_params.c
-       $(AWK) -f extract.awk ../*/*.c
+       $(AWK) -f extract.awk ../*/*.c | $(SHELL)
 
 $(AUTOS): auto.awk
        $(AWK) -f auto.awk
index f25437ee3d94276d4936d998b4e4417a4d8e65ab..4e0c690c4ce2e22a3dbc1f737fe8da51238a3639 100644 (file)
 # when doing duplicate elimination. Differences in the default value
 # or lower/upper bounds still result in "postconf -d" duplicates,
 # which are a sign of an error somewhere...
+#
+# XXX Work around ancient AWK implementations with a 10 file limit
+# and no working close() operator (e.g. Solaris). Some systems
+# have a more modern implementation that is XPG4-compatible, but it
+# is too much bother to find out where each system keeps these.
 
 /^(static| )*(const +)?CONFIG_INT_TABLE .*\{/,/\};/ { 
     if ($1 ~ /VAR/) {
-       print "int " substr($3,2,length($3)-2) ";" > "int_vars.h"
+       int_vars["int " substr($3,2,length($3)-2) ";"] = 1
        if (++itab[$1 $2 $4 $5 $6 $7 $8 $9] == 1) {
-           print |"sed 's/[    ][      ]*/ /g' > int_table.h"
+           int_table[$0] = 1
        }
     }
 }
 /^(static| )*(const +)?CONFIG_STR_TABLE .*\{/,/\};/ { 
     if ($1 ~ /^VAR/) {
-       print "char *" substr($3,2,length($3)-2) ";" > "str_vars.h"
+       str_vars["char *" substr($3,2,length($3)-2) ";"] = 1
        if (++stab[$1 $2 $4 $5 $6 $7 $8 $9] == 1) {
-           print |"sed 's/[    ][      ]*/ /g' > str_table.h"
+           str_table[$0] = 1
        }
     }
 }
 /^(static| )*(const +)?CONFIG_RAW_TABLE .*\{/,/\};/ { 
     if ($1 ~ /^VAR/) {
-       print "char *" substr($3,2,length($3)-2) ";" > "raw_vars.h"
+       raw_vars["char *" substr($3,2,length($3)-2) ";"] = 1
        if (++rtab[$1 $2 $4 $5 $6 $7 $8 $9] == 1) {
-           print |"sed 's/[    ][      ]*/ /g' > raw_table.h"
+           raw_table[$0] = 1
        }
     }
 }
 /^(static| )*(const +)?CONFIG_BOOL_TABLE .*\{/,/\};/ { 
     if ($1 ~ /^VAR/) {
-       print "int " substr($3,2,length($3)-2) ";" > "bool_vars.h"
+       bool_vars["int " substr($3,2,length($3)-2) ";"] = 1
        if (++btab[$1 $2 $4 $5 $6 $7 $8 $9] == 1) {
-           print |"sed 's/[    ][      ]*/ /g' > bool_table.h"
+           bool_table[$0] = 1
        }
     }
 }
 /^(static| )*(const +)?CONFIG_TIME_TABLE .*\{/,/\};/ { 
     if ($1 ~ /^VAR/) {
-       print "int " substr($3,2,length($3)-2) ";" > "time_vars.h"
+       time_vars["int " substr($3,2,length($3)-2) ";"] = 1
        if (++ttab[$1 $2 $4 $5 $6 $7 $8 $9] == 1) {
-           print |"sed 's/[    ][      ]*/ /g' > time_table.h" 
+           time_table[$0] = 1
        }
     }
 }
 /^(static| )*(const +)?CONFIG_NINT_TABLE .*\{/,/\};/ { 
     if ($1 ~ /VAR/) {
-       print "int " substr($3,2,length($3)-2) ";" > "nint_vars.h"
+       nint_vars["int " substr($3,2,length($3)-2) ";"] = 1
        if (++itab[$1 $2 $4 $5 $6 $7 $8 $9] == 1) {
-           print |"sed 's/[    ][      ]*/ /g' > nint_table.h"
+           nint_table[$0] = 1
        }
     }
 }
 
-# Workaround for broken gawk versions.
+END { 
+    # Print parameter declarations without busting old AWK's file limit.
+    print "cat >int_vars.h <<'EOF'"
+    for (key in int_vars)
+       print key
+    print "EOF"
+
+    print "cat >str_vars.h <<'EOF'"
+    for (key in str_vars)
+       print key
+    print "EOF"
+
+    print "cat >raw_vars.h <<'EOF'"
+    for (key in raw_vars)
+       print key
+    print "EOF"
+
+    print "cat >bool_vars.h <<'EOF'"
+    for (key in bool_vars)
+       print key
+    print "EOF"
+
+    print "cat >time_vars.h <<'EOF'"
+    for (key in time_vars)
+       print key
+    print "EOF"
+
+    print "cat >nint_vars.h <<'EOF'"
+    for (key in nint_vars)
+       print key
+    print "EOF"
+
+    # Print parameter initializations without busting old AWK's file limit.
+    print "sed 's/[    ][      ]*/ /g' >int_table.h <<'EOF'"
+    for (key in int_table)
+       print key
+    print "EOF"
 
-END { exit(0); }
+    print "sed 's/[    ][      ]*/ /g' >str_table.h <<'EOF'"
+    for (key in str_table)
+       print key
+    print "EOF"
+
+    print "sed 's/[    ][      ]*/ /g' >raw_table.h <<'EOF'"
+    for (key in raw_table)
+       print key
+    print "EOF"
+
+    print "sed 's/[    ][      ]*/ /g' >bool_table.h <<'EOF'"
+    for (key in bool_table)
+       print key
+    print "EOF"
+
+    print "sed 's/[    ][      ]*/ /g' >time_table.h <<'EOF'"
+    for (key in time_table)
+       print key
+    print "EOF"
+
+    print "sed 's/[    ][      ]*/ /g' >nint_table.h <<'EOF'"
+    for (key in nint_table)
+       print key
+    print "EOF"
+
+    # Flush output nicely.
+    exit(0);
+}
index 630bdb300ce440ac987ba8faebc0a9fd9c90bd70..8a3c7c2a03b28129bdf1919ac722756edcb22eb4 100644 (file)
@@ -68,7 +68,7 @@
 /*     The location of the Postfix top-level queue directory.
 /* .IP "\fBsyslog_facility (mail)\fR"
 /*     The syslog facility of Postfix logging.
-/* .IP "\fBsyslog_name (postfix)\fR"
+/* .IP "\fBsyslog_name (see 'postconf -d' output)\fR"
 /*     The mail system name that is prepended to the process name in syslog
 /*     records, so that "smtpd" becomes, for example, "postfix/smtpd".
 /* .IP "\fBtrigger_timeout (10s)\fR"
index 784843ce7e092a0f598838406aaab1e259d2d30b..000ff70d68bd813f3bdf9fee4412e45d1e778b47 100644 (file)
@@ -54,7 +54,7 @@
 /*     configuration files.
 /* .IP "\fBsyslog_facility (mail)\fR"
 /*     The syslog facility of Postfix logging.
-/* .IP "\fBsyslog_name (postfix)\fR"
+/* .IP "\fBsyslog_name (see 'postconf -d' output)\fR"
 /*     The mail system name that is prepended to the process name in syslog
 /*     records, so that "smtpd" becomes, for example, "postfix/smtpd".
 /* SEE ALSO
index be414e70fb031782bf0bb9838783896199a2d00e..e956aed9b5d210d923fdc75623ec1fcfffac17ef 100644 (file)
 /*     and \fBpostmap\fR(1) commands.
 /* .IP "\fBsyslog_facility (mail)\fR"
 /*     The syslog facility of Postfix logging.
-/* .IP "\fBsyslog_name (postfix)\fR"
+/* .IP "\fBsyslog_name (see 'postconf -d' output)\fR"
 /*     The mail system name that is prepended to the process name in syslog
 /*     records, so that "smtpd" becomes, for example, "postfix/smtpd".
 /* SEE ALSO
index 7ced31f05703e9441e4c2315d470613e9605a88b..24f08d9d0be68be99640efc581fe83668f320f92 100644 (file)
 /*     The location of the Postfix top-level queue directory.
 /* .IP "\fBsyslog_facility (mail)\fR"
 /*     The syslog facility of Postfix logging.
-/* .IP "\fBsyslog_name (postfix)\fR"
+/* .IP "\fBsyslog_name (see 'postconf -d' output)\fR"
 /*     The mail system name that is prepended to the process name in syslog
 /*     records, so that "smtpd" becomes, for example, "postfix/smtpd".
 /* .IP "\fBtrigger_timeout (10s)\fR"
index 48f390909ade23b3131ebb9dd41670d109a287c8..088df7652e767965cf22d3c191bf3711223e601b 100644 (file)
 /*     The location of the Postfix top-level queue directory.
 /* .IP "\fBsyslog_facility (mail)\fR"
 /*     The syslog facility of Postfix logging.
-/* .IP "\fBsyslog_name (postfix)\fR"
+/* .IP "\fBsyslog_name (see 'postconf -d' output)\fR"
 /*     The mail system name that is prepended to the process name in syslog
 /*     records, so that "smtpd" becomes, for example, "postfix/smtpd".
 /* SEE ALSO
index f147e63e006eb9b6f85a2628e9c9e013422455e0..a99993b58ba5451ab4c5a6d2542f8b85ba451ac5 100644 (file)
 /*     The location of the Postfix top-level queue directory.
 /* .IP "\fBsyslog_facility (mail)\fR"
 /*     The syslog facility of Postfix logging.
-/* .IP "\fBsyslog_name (postfix)\fR"
+/* .IP "\fBsyslog_name (see 'postconf -d' output)\fR"
 /*     The mail system name that is prepended to the process name in syslog
 /*     records, so that "smtpd" becomes, for example, "postfix/smtpd".
 /* FILES
index bb86c614d9a66d5b4309aa39042e04ed1cfb7505..28f4f2213052440a2d20b618bdf956a0a488f0a3 100644 (file)
 /*     The process name of a Postfix command or daemon process.
 /* .IP "\fBqmqpd_authorized_clients (empty)\fR"
 /*     What clients are allowed to connect to the QMQP server port.
-/* .IP "\fBqmqpd_client_port_logging (no)\fR"
-/*     Enable logging of the remote QMQP client port in addition to
-/*     the hostname and IP address.
 /* .IP "\fBqueue_directory (see 'postconf -d' output)\fR"
 /*     The location of the Postfix top-level queue directory.
 /* .IP "\fBsyslog_facility (mail)\fR"
 /*     The syslog facility of Postfix logging.
-/* .IP "\fBsyslog_name (postfix)\fR"
+/* .IP "\fBsyslog_name (see 'postconf -d' output)\fR"
 /*     The mail system name that is prepended to the process name in syslog
 /*     records, so that "smtpd" becomes, for example, "postfix/smtpd".
 /* .IP "\fBverp_delimiter_filter (-=+)\fR"
 /*     The characters Postfix accepts as VERP delimiter characters on the
 /*     Postfix \fBsendmail\fR(1) command line and in SMTP commands.
+/* .PP
+/*     Available in Postfix version 2.5 and later:
+/* .IP "\fBqmqpd_client_port_logging (no)\fR"
+/*     Enable logging of the remote QMQP client port in addition to
+/*     the hostname and IP address.
 /* SEE ALSO
 /*     http://cr.yp.to/proto/qmqp.html, QMQP protocol
 /*     cleanup(8), message canonicalization
index 6a4164ef6bd6c9e58b8970b5f9f95bc3d92bf1ff..81a3e886535ddb9c9ad35f0c95c7da2aef10544a 100644 (file)
 /*     The process name of a Postfix command or daemon process.
 /* .IP "\fBsyslog_facility (mail)\fR"
 /*     The syslog facility of Postfix logging.
-/* .IP "\fBsyslog_name (postfix)\fR"
+/* .IP "\fBsyslog_name (see 'postconf -d' output)\fR"
 /*     The mail system name that is prepended to the process name in syslog
 /*     records, so that "smtpd" becomes, for example, "postfix/smtpd".
 /* SEE ALSO
index 73517a60e7e60a03d76f95c6f0331617eb8d9ddc..ff23d337b376e16c8ec6da62456f761624b2d39d 100644 (file)
@@ -64,7 +64,7 @@
 /*     The location of the Postfix top-level queue directory.
 /* .IP "\fBsyslog_facility (mail)\fR"
 /*     The syslog facility of Postfix logging.
-/* .IP "\fBsyslog_name (postfix)\fR"
+/* .IP "\fBsyslog_name (see 'postconf -d' output)\fR"
 /*     The mail system name that is prepended to the process name in syslog
 /*     records, so that "smtpd" becomes, for example, "postfix/smtpd".
 /* FILES
index 645d5ae2a1efbd26c60b1e29276c5e9484cd49a7..dbadd98bccfff631ac11336558e1671b68c53877 100644 (file)
@@ -87,7 +87,7 @@
     };
     static const CONFIG_BOOL_TABLE lmtp_bool_table[] = {
        VAR_LMTP_SKIP_5XX, DEF_LMTP_SKIP_5XX, &var_smtp_skip_5xx_greeting,
-       VAR_SKIP_QUIT_RESP, DEF_SKIP_QUIT_RESP, &var_skip_quit_resp,
+       VAR_LMTP_SKIP_QUIT_RESP, DEF_LMTP_SKIP_QUIT_RESP, &var_skip_quit_resp,
        VAR_LMTP_SASL_ENABLE, DEF_LMTP_SASL_ENABLE, &var_smtp_sasl_enable,
        VAR_LMTP_RAND_ADDR, DEF_LMTP_RAND_ADDR, &var_smtp_rand_addr,
        VAR_LMTP_QUOTE_821_ENV, DEF_LMTP_QUOTE_821_ENV, &var_smtp_quote_821_env,
index 7546bcf5b30bc4f78f9ead13e642ccd5d8f2ec26..c0f9f553b67bffb0375bcdfebed45c66ed6ec077 100644 (file)
 /*     Time limit for Postfix SMTP client write and read operations
 /*     during TLS startup and shutdown handshake procedures.
 /* .IP "\fBsmtp_tls_CAfile (empty)\fR"
-/*     The file with the certificate of the certification authority
-/*     (CA) that issued the Postfix SMTP client certificate.
+/*     A file containing CA certificates of root CAs trusted to sign
+/*     either remote SMTP server certificates or intermediate CA certificates.
 /* .IP "\fBsmtp_tls_CApath (empty)\fR"
 /*     Directory with PEM format certificate authority certificates
 /*     that the Postfix SMTP client uses to verify a remote SMTP server
index ed0dd69631da7d8c04a8fb7b8f6aa6251614bc22..4c8afe881f0f051bc364625981a60c5e0ed80c49 100644 (file)
@@ -89,7 +89,7 @@
     static const CONFIG_BOOL_TABLE smtp_bool_table[] = {
        VAR_SMTP_SKIP_5XX, DEF_SMTP_SKIP_5XX, &var_smtp_skip_5xx_greeting,
        VAR_IGN_MX_LOOKUP_ERR, DEF_IGN_MX_LOOKUP_ERR, &var_ign_mx_lookup_err,
-       VAR_SKIP_QUIT_RESP, DEF_SKIP_QUIT_RESP, &var_skip_quit_resp,
+       VAR_SMTP_SKIP_QUIT_RESP, DEF_SMTP_SKIP_QUIT_RESP, &var_skip_quit_resp,
        VAR_SMTP_ALWAYS_EHLO, DEF_SMTP_ALWAYS_EHLO, &var_smtp_always_ehlo,
        VAR_SMTP_NEVER_EHLO, DEF_SMTP_NEVER_EHLO, &var_smtp_never_ehlo,
        VAR_SMTP_SASL_ENABLE, DEF_SMTP_SASL_ENABLE, &var_smtp_sasl_enable,
index 1b657e64b0b669ffc21f2d5d4f09c76e4f290343..c7ca62abc68c86e0d57036a3ba353034a1872968 100644 (file)
@@ -273,11 +273,16 @@ void    smtp_sasl_connect(SMTP_SESSION *session)
 void    smtp_sasl_start(SMTP_SESSION *session, const char *sasl_opts_name,
                                const char *sasl_opts_val)
 {
+    XSASL_CLIENT_CREATE_ARGS create_args;
+
     if (msg_verbose)
        msg_info("starting new SASL client");
     if ((session->sasl_client =
-        xsasl_client_create(smtp_sasl_impl, session->stream, var_procname,
-                            session->host, sasl_opts_val)) == 0)
+        XSASL_CLIENT_CREATE(smtp_sasl_impl, &create_args,
+                            stream = session->stream,
+                            service = var_procname,
+                            server_name = session->host,
+                            security_options = sasl_opts_val)) == 0)
        msg_fatal("SASL per-connection initialization failed");
     session->sasl_reply = vstring_alloc(20);
 }
index c5dcc8921890bda5e83c7e45527c1e013a66b73d..da68506bab1d8b1f5b6ae3f46b1abb8ff858a983 100644 (file)
 /*     The time limit for Postfix SMTP server write and read operations
 /*     during TLS startup and shutdown handshake procedures.
 /* .IP "\fBsmtpd_tls_CAfile (empty)\fR"
-/*     The file with the certificate of the certification authority
-/*     (CA) that issued the Postfix SMTP server certificate.
+/*     A file containing (PEM format) CA certificates of root CAs trusted
+/*     to sign either remote SMTP client certificates or intermediate CA
+/*     certificates.
 /* .IP "\fBsmtpd_tls_CAfile (empty)\fR"
-/*     The file with the certificate of the certification authority
-/*     (CA) that issued the Postfix SMTP server certificate.
+/*     A file containing (PEM format) CA certificates of root CAs trusted
+/*     to sign either remote SMTP client certificates or intermediate CA
+/*     certificates.
 /* .IP "\fBsmtpd_tls_always_issue_session_ids (yes)\fR"
 /*     Force the Postfix SMTP server to issue a TLS session id, even
 /*     when TLS session caching is turned off (smtpd_tls_session_cache_database
index 40743762462d7e8c244549effe9ebd11eaba08dc..da37c4f9a7ae7d319649b1f89b36ba442b07fb3a 100644 (file)
@@ -164,6 +164,8 @@ void    smtpd_sasl_activate(SMTPD_STATE *state, const char *sasl_opts_name,
                                    const char *sasl_opts_val)
 {
     const char *mechanism_list;
+    XSASL_SERVER_CREATE_ARGS create_args;
+    int     tls_flag;
 
     /*
      * Sanity check.
@@ -187,12 +189,24 @@ void    smtpd_sasl_activate(SMTPD_STATE *state, const char *sasl_opts_name,
      * Set up a new server context for this connection.
      */
 #define SMTPD_SASL_SERVICE "smtp"
+#ifdef USE_TLS
+    tls_flag = state->tls_context != 0;
+#else
+    tls_flag = 0;
+#endif
+#define ADDR_OR_EMPTY(addr, unknown) (strcmp(addr, unknown) ? addr : "")
+#define REALM_OR_NULL(realm) (*(realm) ? (realm) : (char *) 0)
 
     if ((state->sasl_server =
-        xsasl_server_create(smtpd_sasl_impl, state->client,
-                            SMTPD_SASL_SERVICE, *var_smtpd_sasl_realm ?
-                            var_smtpd_sasl_realm : (char *) 0,
-                            sasl_opts_val)) == 0)
+        XSASL_SERVER_CREATE(smtpd_sasl_impl, &create_args,
+                            stream = state->client,
+                            server_addr = "",  /* need smtpd_peer.c update */
+                            client_addr = ADDR_OR_EMPTY(state->addr,
+                                                      CLIENT_ADDR_UNKNOWN),
+                            service = SMTPD_SASL_SERVICE,
+                            user_realm = REALM_OR_NULL(var_smtpd_sasl_realm),
+                            security_options = sasl_opts_val,
+                            tls_flag = tls_flag)) == 0)
        msg_fatal("SASL per-connection initialization failed");
 
     /*
index 3ef6228f54e53b7a4f0357f71da7381dbc2f9441..37fdcac7445aa1bb9a1f0a7b5eb84940581f3efa 100644 (file)
 /*     The location of the Postfix top-level queue directory.
 /* .IP "\fBsyslog_facility (mail)\fR"
 /*     The syslog facility of Postfix logging.
-/* .IP "\fBsyslog_name (postfix)\fR"
+/* .IP "\fBsyslog_name (see 'postconf -d' output)\fR"
 /*     The mail system name that is prepended to the process name in syslog
 /*     records, so that "smtpd" becomes, for example, "postfix/smtpd".
 /* SEE ALSO
index 906f5b808eb8c3b35eec361e85d8b3c0bed749bd..c3f214e1540627f7b5acfab3f23037ea36f69e49 100644 (file)
 /*     The process name of a Postfix command or daemon process.
 /* .IP "\fBsyslog_facility (mail)\fR"
 /*     The syslog facility of Postfix logging.
-/* .IP "\fBsyslog_name (postfix)\fR"
+/* .IP "\fBsyslog_name (see 'postconf -d' output)\fR"
 /*     The mail system name that is prepended to the process name in syslog
 /*     records, so that "smtpd" becomes, for example, "postfix/smtpd".
 /* SEE ALSO
index fed4cfb38e66ee2f96ab686860c10f6a3e763b31..6eae44dc21daa36f6778a8a39722f444091b8b46 100644 (file)
 /*     responses.
 /* .IP "\fBsyslog_facility (mail)\fR"
 /*     The syslog facility of Postfix logging.
-/* .IP "\fBsyslog_name (postfix)\fR"
+/* .IP "\fBsyslog_name (see 'postconf -d' output)\fR"
 /*     The mail system name that is prepended to the process name in syslog
 /*     records, so that "smtpd" becomes, for example, "postfix/smtpd".
 /* .PP
index e2b33cd5b85d42895d7b8b38ff85ef06287fc321..80d3bcf8c2e2d2e6b126a989fc33a5756df76e2d 100644 (file)
 /*     The location of the Postfix top-level queue directory.
 /* .IP "\fBsyslog_facility (mail)\fR"
 /*     The syslog facility of Postfix logging.
-/* .IP "\fBsyslog_name (postfix)\fR"
+/* .IP "\fBsyslog_name (see 'postconf -d' output)\fR"
 /*     The mail system name that is prepended to the process name in syslog
 /*     records, so that "smtpd" becomes, for example, "postfix/smtpd".
 /* SEE ALSO
index 291ff8edd0a2f45145e3cc21a1c9bce298589516..4f5aa571301a866a8eec725344037e213abb8de9 100644 (file)
@@ -44,16 +44,29 @@ typedef struct XSASL_SERVER {
   * Generic server implementation. Specific instances extend this with their
   * own private data.
   */
+typedef struct XSASL_SERVER_CREATE_ARGS {
+    VSTREAM *stream;
+    const char *server_addr;
+    const char *client_addr;
+    const char *service;
+    const char *user_realm;
+    const char *security_options;
+    int     tls_flag;
+} XSASL_SERVER_CREATE_ARGS;
+
 typedef struct XSASL_SERVER_IMPL {
-    XSASL_SERVER *(*create) (struct XSASL_SERVER_IMPL *, VSTREAM *, const char *, const char *, const char *);
+    XSASL_SERVER *(*create) (struct XSASL_SERVER_IMPL *, XSASL_SERVER_CREATE_ARGS *);
     void    (*done) (struct XSASL_SERVER_IMPL *);
 } XSASL_SERVER_IMPL;
 
 extern XSASL_SERVER_IMPL *xsasl_server_init(const char *, const char *);
 extern ARGV *xsasl_server_types(void);
 
-#define xsasl_server_create(impl, stream, service, realm, sec_props) \
-       (impl)->create((impl), (stream), (service), (realm), (sec_props))
+#define xsasl_server_create(impl, args) \
+       (impl)->create((impl), (args))
+#define XSASL_SERVER_CREATE(impl, args, a1, a2, a3, a4, a5, a6, a7) \
+       xsasl_server_create((impl), (((args)->a1), ((args)->a2), ((args)->a3), \
+       ((args)->a4), ((args)->a5), ((args)->a6), ((args)->a7), (args)))
 #define xsasl_server_done(impl) (impl)->done((impl));
 
  /*
@@ -78,16 +91,26 @@ typedef struct XSASL_CLIENT {
   * Generic client implementation. Specific instances extend this with their
   * own private data.
   */
+typedef struct XSASL_CLIENT_CREATE_ARGS {
+    VSTREAM *stream;
+    const char *service;
+    const char *server_name;
+    const char *security_options;
+} XSASL_CLIENT_CREATE_ARGS;
+
 typedef struct XSASL_CLIENT_IMPL {
-    XSASL_CLIENT *(*create) (struct XSASL_CLIENT_IMPL *, VSTREAM *, const char *, const char *, const char *);
+    XSASL_CLIENT *(*create) (struct XSASL_CLIENT_IMPL *, XSASL_CLIENT_CREATE_ARGS *);
     void    (*done) (struct XSASL_CLIENT_IMPL *);
 } XSASL_CLIENT_IMPL;
 
 extern XSASL_CLIENT_IMPL *xsasl_client_init(const char *, const char *);
 extern ARGV *xsasl_client_types(void);
 
-#define xsasl_client_create(impl, stream, service, server, sec_props) \
-       (impl)->create((impl), (stream), (service), (server), (sec_props))
+#define xsasl_client_create(impl, args) \
+       (impl)->create((impl), (args))
+#define XSASL_CLIENT_CREATE(impl, args, a1, a2, a3, a4) \
+       xsasl_client_create((impl), (((args)->a1), ((args)->a2), ((args)->a3), \
+       ((args)->a4), (args)))
 #define xsasl_client_done(impl) (impl)->done((impl));
 
  /*
index d45e28dc17afee1362734a9b2f277cbd3bb85a99..0bddd41ef248e08de2c8b319e6c83765fb588b50 100644 (file)
 /*
 /*     ARGV    *xsasl_client_types()
 /*
-/*     XSASL_CLIENT *xsasl_client_create(implementation, stream, service, 
-/*                                     server_name, security_properties)
+/* .in +4
+/*     typedef struct XSASL_CLIENT_CREATE_ARGS {
+/*             VSTREAM *stream;
+/*             const char *service;
+/*             const char *server_name;
+/*             const char *security_options;
+/*     } XSASL_CLIENT_CREATE_ARGS;
+/* .in -4
+/*
+/*     XSASL_CLIENT *xsasl_client_create(implementation, create_args)
 /*     XSASL_CLIENT_IMPL *implementation;
-/*     VSTREAM *stream;
-/*     const char *service;
-/*     const char *server_name;
-/*     const char *security_properties;
+/*     XSASL_CLIENT_CREATE_ARGS *create_args;
+/*
+/*     XSASL_CLIENT *XSASL_CLIENT_CREATE(implementation, create_args,
+/*                                     stream = stream_val,
+/*                                     ...,
+/*                                     security_options = prop_val)
+/*     XSASL_CLIENT_IMPL *implementation;
+/*     XSASL_CLIENT_CREATE_ARGS *create_args;
 /*
 /*     void    xsasl_client_free(client)
 /*     XSASL_CLIENT *client;
 /*     security properties. The stream handle is stored so that
 /*     encryption can be turned on after successful negotiations.
 /*
+/*     XSASL_CLIENT_CREATE() is a macro that provides an interface
+/*     with named parameters.  Named parameters do not have to
+/*     appear in a fixed order. The parameter names correspond to
+/*     the member names of the XSASL_CLIENT_CREATE_ARGS structure.
+/*
 /*     xsasl_client_free() is called at the end of an SMTP session.
 /*     It destroys a SASL client instance, and disables further
 /*     read/write operations if encryption was turned on.
index c496f8f334b6a3e08b9ea9a7752366d99ab00162..16a098c0734ca479f3c64e34dc584ad7d07d5c4f 100644 (file)
@@ -148,10 +148,7 @@ typedef struct {
   */
 static void xsasl_cyrus_client_done(XSASL_CLIENT_IMPL *);
 static XSASL_CLIENT *xsasl_cyrus_client_create(XSASL_CLIENT_IMPL *,
-                                                      VSTREAM *,
-                                                      const char *,
-                                                      const char *,
-                                                      const char *);
+                                               XSASL_CLIENT_CREATE_ARGS *);
 static int xsasl_cyrus_client_set_security(XSASL_CLIENT *, const char *);
 static int xsasl_cyrus_client_first(XSASL_CLIENT *, const char *, const char *,
                                    const char *, const char **, VSTRING *);
@@ -301,10 +298,7 @@ static void xsasl_cyrus_client_done(XSASL_CLIENT_IMPL *impl)
 /* xsasl_cyrus_client_create - per-session SASL initialization */
 
 XSASL_CLIENT *xsasl_cyrus_client_create(XSASL_CLIENT_IMPL *unused_impl,
-                                               VSTREAM *stream,
-                                               const char *service,
-                                               const char *server,
-                                               const char *sec_props)
+                                            XSASL_CLIENT_CREATE_ARGS *args)
 {
     XSASL_CYRUS_CLIENT *client = 0;
     static sasl_callback_t callbacks[] = {
@@ -346,7 +340,7 @@ XSASL_CLIENT *xsasl_cyrus_client_create(XSASL_CLIENT_IMPL *unused_impl,
 #define NULL_SERVER_ADDR       ((char *) 0)
 #define NULL_CLIENT_ADDR       ((char *) 0)
 
-    if ((sasl_status = SASL_CLIENT_NEW(service, server,
+    if ((sasl_status = SASL_CLIENT_NEW(args->service, args->server_name,
                                       NULL_CLIENT_ADDR, NULL_SERVER_ADDR,
                                 var_cyrus_sasl_authzid ? custom_callbacks :
                                       custom_callbacks + 1, NULL_SECFLAGS,
@@ -369,7 +363,7 @@ XSASL_CLIENT *xsasl_cyrus_client_create(XSASL_CLIENT_IMPL *unused_impl,
     client->xsasl.free = xsasl_cyrus_client_free;
     client->xsasl.first = xsasl_cyrus_client_first;
     client->xsasl.next = xsasl_cyrus_client_next;
-    client->stream = stream;
+    client->stream = args->stream;
     client->sasl_conn = sasl_conn;
     client->callbacks = custom_callbacks;
     client->decoded = vstring_alloc(20);
@@ -379,7 +373,8 @@ XSASL_CLIENT *xsasl_cyrus_client_create(XSASL_CLIENT_IMPL *unused_impl,
     for (cp = custom_callbacks; cp->id != SASL_CB_LIST_END; cp++)
        cp->context = (void *) client;
 
-    if (xsasl_cyrus_client_set_security(&client->xsasl, sec_props)
+    if (xsasl_cyrus_client_set_security(&client->xsasl,
+                                       args->security_options)
        != XSASL_AUTH_OK)
        XSASL_CYRUS_CLIENT_CREATE_ERROR_RETURN(0);
 
index a86602d65771e0a6d55828f497f683ff99d5300a..78bb4df17b9174d4702d2dbb06c072ca8dcf63d0 100644 (file)
@@ -154,10 +154,7 @@ typedef struct {
   */
 static void xsasl_cyrus_server_done(XSASL_SERVER_IMPL *);
 static XSASL_SERVER *xsasl_cyrus_server_create(XSASL_SERVER_IMPL *,
-                                                      VSTREAM *,
-                                                      const char *,
-                                                      const char *,
-                                                      const char *);
+                                               XSASL_SERVER_CREATE_ARGS *);
 static void xsasl_cyrus_server_free(XSASL_SERVER *);
 static int xsasl_cyrus_server_first(XSASL_SERVER *, const char *,
                                            const char *, VSTRING *);
@@ -259,10 +256,7 @@ static void xsasl_cyrus_server_done(XSASL_SERVER_IMPL *impl)
 /* xsasl_cyrus_server_create - create server instance */
 
 static XSASL_SERVER *xsasl_cyrus_server_create(XSASL_SERVER_IMPL *unused_impl,
-                                                      VSTREAM *stream,
-                                                      const char *service,
-                                                      const char *realm,
-                                                      const char *sec_props)
+                                            XSASL_SERVER_CREATE_ARGS *args)
 {
     const char *myname = "xsasl_cyrus_server_create";
     char   *server_address;
@@ -273,7 +267,8 @@ static XSASL_SERVER *xsasl_cyrus_server_create(XSASL_SERVER_IMPL *unused_impl,
 
     if (msg_verbose)
        msg_info("%s: SASL service=%s, realm=%s",
-                myname, service, realm ? realm : "(null)");
+                myname, args->service, args->user_realm ?
+                args->user_realm : "(null)");
 
     /*
      * The optimizer will eliminate code duplication and/or dead code.
@@ -314,8 +309,8 @@ static XSASL_SERVER *xsasl_cyrus_server_create(XSASL_SERVER_IMPL *unused_impl,
 #endif
 
     if ((sasl_status =
-        SASL_SERVER_NEW(service, var_myhostname,
-                        realm ? realm : NO_AUTH_REALM,
+        SASL_SERVER_NEW(args->service, var_myhostname,
+                        args->user_realm ? args->user_realm : NO_AUTH_REALM,
                         server_address, client_address,
                         NO_SESSION_CALLBACKS, NO_SECURITY_LAYERS,
                         &sasl_conn)) != SASL_OK) {
@@ -335,13 +330,13 @@ static XSASL_SERVER *xsasl_cyrus_server_create(XSASL_SERVER_IMPL *unused_impl,
     server->xsasl.next = xsasl_cyrus_server_next;
     server->xsasl.get_mechanism_list = xsasl_cyrus_server_get_mechanism_list;
     server->xsasl.get_username = xsasl_cyrus_server_get_username;
-    server->stream = stream;
+    server->stream = args->stream;
     server->sasl_conn = sasl_conn;
     server->decoded = vstring_alloc(20);
     server->username = 0;
     server->mechanism_list = 0;
 
-    if (xsasl_cyrus_server_set_security(&server->xsasl, sec_props)
+    if (xsasl_cyrus_server_set_security(&server->xsasl, args->security_options)
        != XSASL_AUTH_OK)
        XSASL_CYRUS_SERVER_CREATE_ERROR_RETURN(0);
 
index ca27113d9f42f81b3748666d1f5fea45d6e77104..4883d097e8dcaaa6960740fab993ed60c26ccb84 100644 (file)
@@ -161,10 +161,11 @@ typedef struct {
     char   *username;                  /* authenticated user */
     VSTRING *sasl_line;
     unsigned int sec_props;            /* Postfix mechanism filter */
+    int     tls_flag;                  /* TLS enabled in this session */
     char   *mechanism_list;            /* filtered mechanism list */
     ARGV   *mechanism_argv;            /* ditto */
-    MAI_HOSTADDR_STR server_addr;      /* local IP address */
-    MAI_HOSTADDR_STR client_addr;      /* remote IP address */
+    char   *client_addr;               /* remote IP address */
+    char   *server_addr;               /* remote IP address */
 } XSASL_DOVECOT_SERVER;
 
  /*
@@ -172,10 +173,7 @@ typedef struct {
   */
 static void xsasl_dovecot_server_done(XSASL_SERVER_IMPL *);
 static XSASL_SERVER *xsasl_dovecot_server_create(XSASL_SERVER_IMPL *,
-                                                        VSTREAM *,
-                                                        const char *,
-                                                        const char *,
-                                                        const char *);
+                                               XSASL_SERVER_CREATE_ARGS *);
 static void xsasl_dovecot_server_free(XSASL_SERVER *);
 static int xsasl_dovecot_server_first(XSASL_SERVER *, const char *,
                                              const char *, VSTRING *);
@@ -394,20 +392,19 @@ static void xsasl_dovecot_server_done(XSASL_SERVER_IMPL *impl)
 /* xsasl_dovecot_server_create - create server instance */
 
 static XSASL_SERVER *xsasl_dovecot_server_create(XSASL_SERVER_IMPL *impl,
-                                                        VSTREAM *stream,
-                                                        const char *service,
-                                                        const char *realm,
-                                                     const char *sec_props)
+                                            XSASL_SERVER_CREATE_ARGS *args)
 {
     const char *myname = "xsasl_dovecot_server_create";
     XSASL_DOVECOT_SERVER *server;
     struct sockaddr_storage ss;
     struct sockaddr *sa = (struct sockaddr *) & ss;
     SOCKADDR_SIZE salen;
+    MAI_HOSTADDR_STR server_addr;
 
     if (msg_verbose)
        msg_info("%s: SASL service=%s, realm=%s",
-                myname, service, realm ? realm : "(null)");
+                myname, args->service, args->user_realm ?
+                args->user_realm : "(null)");
 
     /*
      * Extend the XSASL_SERVER_IMPL object with our own data. We use
@@ -423,26 +420,29 @@ static XSASL_SERVER *xsasl_dovecot_server_create(XSASL_SERVER_IMPL *impl,
     server->impl = (XSASL_DOVECOT_SERVER_IMPL *) impl;
     server->sasl_line = vstring_alloc(256);
     server->username = 0;
-    server->service = mystrdup(service);
+    server->service = mystrdup(args->service);
     server->last_request_id = 0;
     server->mechanism_list = 0;
     server->mechanism_argv = 0;
+    server->tls_flag = args->tls_flag;
     server->sec_props =
        name_mask_opt(myname, xsasl_dovecot_conf_sec_props,
-                     sec_props, NAME_MASK_ANY_CASE | NAME_MASK_FATAL);
+                     args->security_options,
+                     NAME_MASK_ANY_CASE | NAME_MASK_FATAL);
+    server->client_addr = mystrdup(args->client_addr);
 
     /*
-     * XXX This is not the right place: it ignores client overrides with the
-     * XCLIENT command.
+     * XXX Temporary code until smtpd_peer.c is updated.
      */
-    salen = sizeof(ss);
-    if (getpeername(vstream_fileno(stream), sa, &salen) < 0
-       || sockaddr_to_hostaddr(sa, salen, &server->client_addr, 0, 0) != 0)
-       server->client_addr.buf[0] = 0;
-    salen = sizeof(ss);
-    if (getsockname(vstream_fileno(stream), sa, &salen) < 0
-       || sockaddr_to_hostaddr(sa, salen, &server->server_addr, 0, 0) != 0)
-       server->server_addr.buf[0] = 0;
+    if (args->server_addr && *args->server_addr) {
+       server->server_addr = mystrdup(args->server_addr);
+    } else {
+       salen = sizeof(ss);
+       if (getsockname(vstream_fileno(args->stream), sa, &salen) < 0
+           || sockaddr_to_hostaddr(sa, salen, &server_addr, 0, 0) != 0)
+           server_addr.buf[0] = 0;
+       server->server_addr = mystrdup(server_addr.buf);
+    }
 
     return (&server->xsasl);
 }
@@ -481,6 +481,8 @@ static void xsasl_dovecot_server_free(XSASL_SERVER *xp)
        argv_free(server->mechanism_argv);
     }
     myfree(server->service);
+    myfree(server->server_addr);
+    myfree(server->client_addr);
     myfree((char *) server);
 }
 
@@ -638,8 +640,10 @@ int     xsasl_dovecot_server_first(XSASL_SERVER *xp, const char *sasl_method,
        vstream_fprintf(server->impl->sasl_stream,
                        "AUTH\t%u\t%s\tservice=%s\tnologin\tlip=%s\trip=%s",
                        server->last_request_id, sasl_method,
-                       server->service, server->server_addr.buf,
-                       server->client_addr.buf);
+                       server->service, server->server_addr,
+                       server->client_addr);
+       if (server->tls_flag)
+           vstream_fputs("\tsecured", server->impl->sasl_stream);
        if (init_response) {
 
            /*
index 28204f7bb8e9a6993c833f7c8148521d8e9bbf40..6b45ab8b098eb21a371c4122c3a0e45a94842494 100644 (file)
 /*
 /*     ARGV    *xsasl_server_types()
 /*
-/*     XSASL_SERVER *xsasl_server_create(implementation, stream, service,
-/*                                             user_realm, security_options)
+/* .in +4
+/*     typedef struct XSASL_SERVER_CREATE_ARGS {
+/*             VSTREAM *stream;
+/*             const char *server_addr;
+/*             const char *client_addr;
+/*             const char *service;
+/*             const char *user_realm;
+/*             const char *security_options;
+/*             int     tls_flag;
+/*     } XSASL_SERVER_CREATE_ARGS;
+/* .in -4
+/*
+/*     XSASL_SERVER *xsasl_server_create(implementation, args)
+/*     XSASL_SERVER_IMPL *implementation;
+/*     XSASL_SERVER_CREATE_ARGS *args;
+/*
+/*     XSASL_SERVER *XSASL_SERVER_CREATE(implementation, args,
+/*                                     stream = stream_value,
+/*                                     ...,
+/*                                     tls_flag = tls_flag_value)
 /*     XSASL_SERVER_IMPL *implementation;
-/*     const char *service;
-/*     VSTREAM *stream;
-/*     const char *user_realm;
-/*     const char *security_options;
+/*     XSASL_SERVER_CREATE_ARGS *args;
 /*
 /*     void xsasl_server_free(server)
 /*     XSASL_SERVER *server;
 /*     with the specified security properties. Specify a null
 /*     pointer when no realm should be used. The stream handle is
 /*     stored so that encryption can be turned on after successful
-/*     negotiations.
+/*     negotiations. Specify zero-length strings when a client or
+/*     server address is unavailable.
+/*
+/*     XSASL_SERVER_CREATE() is a macro that provides an interface
+/*     with named parameters.  Named parameters do not have to
+/*     appear in a fixed order. The parameter names correspond to
+/*     the member names of the XSASL_SERVER_CREATE_ARGS structure.
 /*
 /*     xsasl_server_free() is called at the end of an SMTP session.
 /*     It destroys a SASL server instance, and disables further
 /*     Arguments:
 /* .IP auth_method
 /*     AUTH command authentication method.
+/* .IP client_addr
+/*     IPv4 or IPv6 address (no surrounding [] or ipv6: prefix),
+/*     or zero-length string if unavailable.
 /* .IP init_resp
 /*     AUTH command initial response or null pointer.
 /* .IP implementation
 /*     equivalent. This is passed unchanged to the plug-in.
 /* .IP server
 /*     SASL plug-in server handle.
+/* .IP server_addr
+/*     IPv4 or IPv6 address (no surrounding [] or ipv6: prefix),
+/*     or zero-length string if unavailable.
 /* .IP server_reply
 /*     BASE64 encoded server non-error reply (without SMTP reply
 /*     code or enhanced status code), or ASCII error description.