]> git.ipfire.org Git - thirdparty/postfix.git/commitdiff
postfix-2.5-20070720
authorWietse Venema <wietse@porcupine.org>
Fri, 20 Jul 2007 05:00:00 +0000 (00:00 -0500)
committerViktor Dukhovni <viktor@dukhovni.org>
Tue, 5 Feb 2013 06:33:17 +0000 (06:33 +0000)
44 files changed:
postfix/HISTORY
postfix/README_FILES/SASL_README
postfix/RELEASE_NOTES
postfix/WISHLIST
postfix/examples/chroot-setup/Solaris10
postfix/examples/chroot-setup/Solaris8
postfix/html/SASL_README.html
postfix/html/access.5.html
postfix/html/aliases.5.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/header_checks.5.html
postfix/html/ldap_table.5.html
postfix/html/lmtp.8.html
postfix/html/local.8.html
postfix/html/oqmgr.8.html
postfix/html/pipe.8.html
postfix/html/postalias.1.html
postfix/html/postconf.5.html
postfix/html/postqueue.1.html
postfix/html/qmgr.8.html
postfix/html/smtp-sink.1.html
postfix/html/smtp-source.1.html
postfix/html/smtp.8.html
postfix/html/smtpd.8.html
postfix/html/trace.8.html
postfix/html/virtual.8.html
postfix/man/man1/smtp-source.1
postfix/man/man5/postconf.5
postfix/man/man8/smtp.8
postfix/mantools/postlink
postfix/proto/SASL_README.html
postfix/proto/postconf.proto
postfix/src/global/mail_params.h
postfix/src/global/mail_version.h
postfix/src/milter/milter8.c
postfix/src/milter/test-list
postfix/src/smtp/smtp.c
postfix/src/smtpd/smtpd.c
postfix/src/smtpstone/smtp-source.c
postfix/src/xsasl/xsasl_cyrus_client.c

index 493b2d2a1c9f19f0d083069d1956332184fc0e64..2658c13d157324661b849f00b1eb575a20e9241e 100644 (file)
@@ -13606,13 +13606,36 @@ Apologies for any names omitted.
 
 20070614
 
-       Workaround: some EXIM servers require SASL login without
-       authzid (authoriZation ID), i.e. the client must send only
-       the authcid (authentiCation ID) + the authcid's password.
-       The IETF draft document says that in this case the server
-       shall derive the authzid from the authcid. And since the
-       Postfix client always used the same value for authzid and
-       authcid, dropping the authzid should not create problems
-       (lightly tested with Cyrus SASL servers).  To get the old
-       behavior specify "send_cyrus_sasl_authzid = yes". File:
-       xsasl/xsasl_cyrus_client.c.
+       Workaround: some non-Cyrus SASL SMTP servers require SASL
+       login without authzid (authoriZation ID), i.e. the client
+       must send only the authcid (authentiCation ID) + the authcid's
+       password.  In this case the server is supposed to derive
+       the authzid from the authcid. This works as expected when
+       authenticating to a Cyrus SASL SMTP server.  To get the old
+       behavior specify "send_cyrus_sasl_authzid = yes", in which
+       case Postfix sends the (authzid, authcid, password), with
+       the authzid equal to the authcid. File: xsasl/xsasl_cyrus_client.c.
+
+20070619
+
+       Portability: /dev/poll support for Solaris chroot jail setup
+       scripts. Files: examples/chroot-setup/Solaris8,
+       examples/chroot-setup/Solaris10.
+
+20070713
+
+       The RFC documents at www.faqs.org are being polluted with
+       "feedback" spam. The Postfix hypertext documentation now
+       points to tools.ietf.org. File: mantools/postlink.
+
+20070719
+
+       Feature: updated smtp-sink with new options to send a
+       pre-formatted message from file, and to handle replies other
+       than the expected 2xx or 3xx. File: smtpstone/smtp-source.c.
+
+       Cleanup: streamlined Milter client error handling, so that
+       the (Postfix SMTP server's Milter client) does not get out
+       of sync with Milter applications after the (cleanup server's
+       Milter client) encounters some non-recoverable problem.
+       Files: milter/milter8.c, smtpd/smtpd.c.
index ee39ad617eccc5e6859d9d67650c4688a7c7b895..b10a6814d37382f0d7f77223751564611f8d5e02 100644 (file)
@@ -146,7 +146,9 @@ In order to allow mail relaying by authenticated clients:
 
     /etc/postfix/main.cf:
         smtpd_recipient_restrictions =
-            permit_mynetworks permit_sasl_authenticated ...
+            permit_mynetworks
+            permit_sasl_authenticated
+            reject_unauth_destination
 
 To report SASL login names in Received: message headers (Postfix version 2.3
 and later):
@@ -356,20 +358,20 @@ bold font.
     250-ETRN
     250-AUTH DIGEST-MD5 PLAIN CRAM-MD5
     250 8BITMIME
-    A\bAU\bUT\bTH\bH P\bPL\bLA\bAI\bIN\bd\bdG\bGV\bVz\bzd\bdA\bAB\bB0\b0Z\bZX\bXN\bN0\b0A\bAH\bHR\bRl\blc\bc3\b3R\bRw\bwY\bYX\bXN\bNz\bz
+    A\bAU\bUT\bTH\bH P\bPL\bLA\bAI\bIN\bA\bAH\bHR\bRl\blc\bc3\b3Q\bQA\bAd\bdG\bGV\bVz\bzd\bdH\bHB\bBh\bhc\bc3\b3M\bM=\b=
     235 Authentication successful
 
-Instead of dGVzdAB0ZXN0AHRlc3RwYXNz, specify the base64 encoded form of
-username\0username\0password (the \0 is a null byte). The example above is for
-a user named `test' with password `testpass'.
+Instead of AHRlc3QAdGVzdHBhc3M=, specify the base64 encoded form of
+\0username\0password (the \0 is a null byte). The example above is for a user
+named `test' with password `testpass'.
 
 In order to generate base64 encoded authentication information you can use one
 of the following commands:
 
-    % printf 'username\0username\0password' | mmencode
+    % printf '\0username\0password' | mmencode
 
     % perl -MMIME::Base64 -e \
-        'print encode_base64("username\0username\0password");'
+        'print encode_base64("\0username\0password");'
 
 The mmencode command is part of the metamail software. MIME::Base64 is
 available from http://www.cpan.org/.
index 67b7af21d2cd61622010d228e4880dc6ce72012f..0227312f24f5780b36dfe6ce3e36f2daa73c1597 100644 (file)
@@ -20,10 +20,10 @@ before proceeding.
 Incompatibility with Postfix snapshot 20070614
 ==============================================
 
-By default, the Cyrus SASL client no longer sends an authoriZation
-ID (authzid); it sends only the authentiCation ID (authcid) plus
-the authcid's password. Specify "send_cyrus_sasl_authzid = yes" to
-get the old behavior.
+By default, the Postfix Cyrus SASL client no longer sends a SASL
+authoriZation ID (authzid); it sends only the SASL authentiCation
+ID (authcid) plus the authcid's password. Specify "send_cyrus_sasl_authzid
+= yes" to get the old behavior.
 
 Incompatibility with Postfix snapshot 20070613
 ==============================================
index 6c1975bfab0ced775be70dffdfcf320c18d9b6fd..db194c8bb5ce67be38da2b9c2ac694904255859c 100644 (file)
@@ -1,5 +1,16 @@
 Wish list:
 
+       Absent a formal spec, model IPv6 RBL lookups after the IPv6
+       PTR lookups (one zone per hex nibble, nibbles in reversed
+       order). How to specify whether to query an RBL server for
+       status info about an IPv6 address? One could argue that as
+       long as IPv6 traffic is small an unsupported lookup doesn't
+       matter; and once IPv6 takes off, the RBL servers better
+       start supporting IPv6 client status information.
+
+       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
@@ -65,10 +76,14 @@ Wish list:
        into mailer-daemon (current bahavior) or disallow (strict
        behavior, currently implemented only in the SMTP server).
 
-       The type of var_message_limit should be changed from int
-       to long or better, to take advantage of LP64 architectures.
-       This also requires checking all expressions in which
-       var_message_limit appears.
+       Plan for time_t larger than long, or wait for LP64 to
+       dominate the world?
+
+       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.
 
        Add M flag (enable multi-recipient delivery) to pipe daemon.
 
index a815218f9d1690e9ba9611d7e3cce186aef7e049..8647d9a8cf407a971d2538ab4e9a0788ccd46169 100644 (file)
@@ -61,6 +61,7 @@ more="
 /dev/tcp6
 /dev/udp
 /dev/tcp
+/dev/poll
 /dev/rawip
 /dev/ticlts
 /dev/ticotsord
@@ -71,6 +72,7 @@ more="
 /devices/pseudo/tcp6@0:tcp6
 /devices/pseudo/udp@0:udp
 /devices/pseudo/tcp@0:tcp
+/devices/pseudo/poll@0:poll
 /devices/pseudo/icmp@0:icmp
 /devices/pseudo/tl@0:ticlts
 /devices/pseudo/tl@0:ticotsord
index dd749466d362dda345cb67a631261749c07a4a09..973e7310e54fd8dcf0074cc0726c0c4c344541b2 100644 (file)
@@ -61,6 +61,7 @@ more="
 /dev/tcp6
 /dev/udp
 /dev/tcp
+/dev/poll
 /dev/rawip
 /dev/ticlts
 /dev/ticotsord
@@ -71,6 +72,7 @@ more="
 /devices/pseudo/tcp6@0:tcp6
 /devices/pseudo/udp@0:udp
 /devices/pseudo/tcp@0:tcp
+/devices/pseudo/poll@0:poll
 /devices/pseudo/icmp@0:icmp
 /devices/pseudo/tl@0:ticlts
 /devices/pseudo/tl@0:ticotsord
index 3824e7de29ee8e45f6ad3152ea140ea597c15973..20c46a6152b204f604e00eeb1b3249b195e2df02 100644 (file)
@@ -28,7 +28,7 @@ Dovecot provides an alternative that may be worth considering.
 
 <h2><a name="intro">How Postfix uses SASL authentication information</a></h2>
 
-<p> Postfix SASL support (<a href="http://www.faqs.org/rfcs/rfc2554.html">RFC 2554</a>) can be used to authenticate
+<p> Postfix SASL support (<a href="http://tools.ietf.org/html/rfc2554">RFC 2554</a>) can be used to authenticate
 remote SMTP clients to the Postfix SMTP server, and to authenticate
 the Postfix SMTP client to a remote SMTP server.  </p>
 
@@ -239,7 +239,9 @@ SMTP server</a></h2>
 <pre>
 /etc/postfix/<a href="postconf.5.html">main.cf</a>:
     <a href="postconf.5.html#smtpd_recipient_restrictions">smtpd_recipient_restrictions</a> = 
-        <a href="postconf.5.html#permit_mynetworks">permit_mynetworks</a> <a href="postconf.5.html#permit_sasl_authenticated">permit_sasl_authenticated</a> ...
+        <a href="postconf.5.html#permit_mynetworks">permit_mynetworks</a> 
+        <a href="postconf.5.html#permit_sasl_authenticated">permit_sasl_authenticated</a> 
+        <a href="postconf.5.html#reject_unauth_destination">reject_unauth_destination</a>
 </pre>
 </blockquote>
 
@@ -537,13 +539,13 @@ client is shown in bold font. </p>
 250-ETRN
 250-AUTH DIGEST-MD5 PLAIN CRAM-MD5
 250 8BITMIME
-<b>AUTH PLAIN dGVzdAB0ZXN0AHRlc3RwYXNz</b>
+<b>AUTH PLAIN AHRlc3QAdGVzdHBhc3M=</b>
 235 Authentication successful
 </pre>
 </blockquote>
 
-<p> Instead of dGVzdAB0ZXN0AHRlc3RwYXNz, specify the base64 encoded
-form of username\0username\0password (the \0 is a null byte). The
+<p> Instead of AHRlc3QAdGVzdHBhc3M=, specify the base64 encoded
+form of \0username\0password (the \0 is a null byte). The
 example above is for a user named `test' with password `testpass'.
 </p>
 
@@ -552,14 +554,14 @@ you can use one of the following commands: </p>
 
 <blockquote>
 <pre>
-% printf 'username\0username\0password' | mmencode 
+% printf '\0username\0password' | mmencode 
 </pre>
 </blockquote>
 
 <blockquote>
 <pre>
 % perl -MMIME::Base64 -e \
-    'print encode_base64("username\0username\0password");'
+    'print encode_base64("\0username\0password");'
 </pre>
 </blockquote>
 
index 1eb182bbcb8f8ea82a25ea91680cffc807fc5349..230c1dcf16dabd325bb22b77ccab87631d324629 100644 (file)
@@ -179,7 +179,7 @@ ACCESS(5)                                                            ACCESS(5)
 
 <b>REJECT ACTIONS</b>
        Postfix version 2.3  and  later  support  enhanced  status
-       codes  as  defined in <a href="http://www.faqs.org/rfcs/rfc3463.html">RFC 3463</a>.  When no code is specified
+       codes  as  defined in <a href="http://tools.ietf.org/html/rfc3463">RFC 3463</a>.  When no code is specified
        at the beginning of the  <i>text</i>  below,  Postfix  inserts  a
        default  enhanced  status  code  of "5.7.1" in the case of
        reject actions, and "4.7.1" in the case of defer  actions.
@@ -322,7 +322,7 @@ ACCESS(5)                                                            ACCESS(5)
 
 <b>ENHANCED STATUS CODES</b>
        Postfix version 2.3  and  later  support  enhanced  status
-       codes  as  defined  in  <a href="http://www.faqs.org/rfcs/rfc3463.html">RFC 3463</a>.  When an enhanced status
+       codes  as  defined  in  <a href="http://tools.ietf.org/html/rfc3463">RFC 3463</a>.  When an enhanced status
        code is specified in an access table,  it  is  subject  to
        modification.  The  following  transformations  are needed
        when the same access  table  is  used  for  client,  helo,
index 30cddaa2783fc68f6a33d82486f04bba0ff41cef..6ed4b8bb3d8e4d75a7ff6647a0b9c23814f8a2aa 100644 (file)
@@ -65,7 +65,7 @@ ALIASES(5)                                                          ALIASES(5)
 
        <i>address</i>
               Mail is forwarded to <i>address</i>, which  is  compatible
-              with the <a href="http://www.faqs.org/rfcs/rfc822.html">RFC 822</a> standard.
+              with the <a href="http://tools.ietf.org/html/rfc822">RFC 822</a> standard.
 
        <i>/file/name</i>
               Mail  is  appended  to <i>/file/name</i>. See <a href="local.8.html"><b>local</b>(8)</a> for
@@ -174,7 +174,7 @@ ALIASES(5)                                                          ALIASES(5)
               .forward files.
 
 <b>STANDARDS</b>
-       <a href="http://www.faqs.org/rfcs/rfc822.html">RFC 822</a> (ARPA Internet Text Messages)
+       <a href="http://tools.ietf.org/html/rfc822">RFC 822</a> (ARPA Internet Text Messages)
 
 <b>SEE ALSO</b>
        <a href="local.8.html">local(8)</a>, local delivery agent
index 5d8aef4d76482d4ba4e76930e09f03ebfa2c3b22..d62ce02c8177de59c7a9caafad6571ba33df1e8e 100644 (file)
@@ -43,12 +43,12 @@ BOUNCE(8)                                                            BOUNCE(8)
        on retry logic in their own client.
 
 <b>STANDARDS</b>
-       <a href="http://www.faqs.org/rfcs/rfc822.html">RFC 822</a> (ARPA Internet Text Messages)
-       <a href="http://www.faqs.org/rfcs/rfc2045.html">RFC 2045</a> (Format of Internet Message Bodies)
-       <a href="http://www.faqs.org/rfcs/rfc2822.html">RFC 2822</a> (ARPA Internet Text Messages)
-       <a href="http://www.faqs.org/rfcs/rfc3462.html">RFC 3462</a> (Delivery Status Notifications)
-       <a href="http://www.faqs.org/rfcs/rfc3464.html">RFC 3464</a> (Delivery Status Notifications)
-       <a href="http://www.faqs.org/rfcs/rfc3834.html">RFC 3834</a> (Auto-Submitted: message header)
+       <a href="http://tools.ietf.org/html/rfc822">RFC 822</a> (ARPA Internet Text Messages)
+       <a href="http://tools.ietf.org/html/rfc2045">RFC 2045</a> (Format of Internet Message Bodies)
+       <a href="http://tools.ietf.org/html/rfc2822">RFC 2822</a> (ARPA Internet Text Messages)
+       <a href="http://tools.ietf.org/html/rfc3462">RFC 3462</a> (Delivery Status Notifications)
+       <a href="http://tools.ietf.org/html/rfc3464">RFC 3464</a> (Delivery Status Notifications)
+       <a href="http://tools.ietf.org/html/rfc3834">RFC 3834</a> (Auto-Submitted: message header)
 
 <b>DIAGNOSTICS</b>
        Problems and transactions are logged to <b>syslogd</b>(8).
index eb5a6202c276dd24d1c1dfe20a2db48023c9a8fc..45325867fa497f76fa1ee97c4d4358efc99edb17 100644 (file)
@@ -55,11 +55,11 @@ CLEANUP(8)                                                          CLEANUP(8)
        bounce  the message back to the sender in case of trouble.
 
 <b>STANDARDS</b>
-       <a href="http://www.faqs.org/rfcs/rfc822.html">RFC 822</a> (ARPA Internet Text Messages)
-       <a href="http://www.faqs.org/rfcs/rfc2045.html">RFC 2045</a> (MIME: Format of Internet Message Bodies)
-       <a href="http://www.faqs.org/rfcs/rfc2046.html">RFC 2046</a> (MIME: Media Types)
-       <a href="http://www.faqs.org/rfcs/rfc3463.html">RFC 3463</a> (Enhanced Status Codes)
-       <a href="http://www.faqs.org/rfcs/rfc3464.html">RFC 3464</a> (Delivery status notifications)
+       <a href="http://tools.ietf.org/html/rfc822">RFC 822</a> (ARPA Internet Text Messages)
+       <a href="http://tools.ietf.org/html/rfc2045">RFC 2045</a> (MIME: Format of Internet Message Bodies)
+       <a href="http://tools.ietf.org/html/rfc2046">RFC 2046</a> (MIME: Media Types)
+       <a href="http://tools.ietf.org/html/rfc3463">RFC 3463</a> (Enhanced Status Codes)
+       <a href="http://tools.ietf.org/html/rfc3464">RFC 3464</a> (Delivery status notifications)
 
 <b>DIAGNOSTICS</b>
        Problems and transactions are logged to <b>syslogd</b>(8).
index 5d8aef4d76482d4ba4e76930e09f03ebfa2c3b22..d62ce02c8177de59c7a9caafad6571ba33df1e8e 100644 (file)
@@ -43,12 +43,12 @@ BOUNCE(8)                                                            BOUNCE(8)
        on retry logic in their own client.
 
 <b>STANDARDS</b>
-       <a href="http://www.faqs.org/rfcs/rfc822.html">RFC 822</a> (ARPA Internet Text Messages)
-       <a href="http://www.faqs.org/rfcs/rfc2045.html">RFC 2045</a> (Format of Internet Message Bodies)
-       <a href="http://www.faqs.org/rfcs/rfc2822.html">RFC 2822</a> (ARPA Internet Text Messages)
-       <a href="http://www.faqs.org/rfcs/rfc3462.html">RFC 3462</a> (Delivery Status Notifications)
-       <a href="http://www.faqs.org/rfcs/rfc3464.html">RFC 3464</a> (Delivery Status Notifications)
-       <a href="http://www.faqs.org/rfcs/rfc3834.html">RFC 3834</a> (Auto-Submitted: message header)
+       <a href="http://tools.ietf.org/html/rfc822">RFC 822</a> (ARPA Internet Text Messages)
+       <a href="http://tools.ietf.org/html/rfc2045">RFC 2045</a> (Format of Internet Message Bodies)
+       <a href="http://tools.ietf.org/html/rfc2822">RFC 2822</a> (ARPA Internet Text Messages)
+       <a href="http://tools.ietf.org/html/rfc3462">RFC 3462</a> (Delivery Status Notifications)
+       <a href="http://tools.ietf.org/html/rfc3464">RFC 3464</a> (Delivery Status Notifications)
+       <a href="http://tools.ietf.org/html/rfc3834">RFC 3834</a> (Auto-Submitted: message header)
 
 <b>DIAGNOSTICS</b>
        Problems and transactions are logged to <b>syslogd</b>(8).
index 9325692c54ff3055e9906c3fb4fbc0a58d51e9f2..2be0a00a1129828403a1320201618abfd59ceeac 100644 (file)
@@ -18,7 +18,7 @@ DISCARD(8)                                                          DISCARD(8)
        queue  file,  a sender address, a domain or host name that
        is treated as the reason  for  discarding  the  mail,  and
        recipient information.  The reason may be prefixed with an
-       <a href="http://www.faqs.org/rfcs/rfc3463.html">RFC 3463</a>-compatible detail code.  This program expects  to
+       <a href="http://tools.ietf.org/html/rfc3463">RFC 3463</a>-compatible detail code.  This program expects  to
        be run from the <a href="master.8.html"><b>master</b>(8)</a> process manager.
 
        The  <a href="discard.8.html"><b>discard</b>(8)</a>  delivery  agent  pretends  to deliver all
index 180b843b8a4d57fcd82b5bf8dad18b528402a985..d0ca5093706119b80a53d4b6831906c93169a674 100644 (file)
@@ -17,8 +17,8 @@ ERROR(8)                                                              ERROR(8)
        requests from the queue manager. Each request specifies  a
        queue  file, a sender address, the reason for non-delivery
        (specified as the  next-hop  destination),  and  recipient
-       information.   The  reason  may  be  prefixed  with an <a href="http://www.faqs.org/rfcs/rfc3463.html">RFC</a>
-       <a href="http://www.faqs.org/rfcs/rfc3463.html">3463</a>-compatible  detail  code;  if  none  is  specified  a
+       information.   The  reason  may  be  prefixed  with an <a href="http://tools.ietf.org/html/rfc3463">RFC</a>
+       <a href="http://tools.ietf.org/html/rfc3463">3463</a>-compatible  detail  code;  if  none  is  specified  a
        default 4.0.0 or 5.0.0 code is used instead.  This program
        expects to be run from the <a href="master.8.html"><b>master</b>(8)</a> process manager.
 
@@ -37,7 +37,7 @@ ERROR(8)                                                              ERROR(8)
        privilege.
 
 <b>STANDARDS</b>
-       <a href="http://www.faqs.org/rfcs/rfc3463.html">RFC 3463</a> (Enhanced Status Codes)
+       <a href="http://tools.ietf.org/html/rfc3463">RFC 3463</a> (Enhanced Status Codes)
 
 <b>DIAGNOSTICS</b>
        Problems and transactions are logged to <b>syslogd</b>(8).
index 0edb3fde2872c65c2ceaab6e2b882824cf89ac8e..f0f68aa0e7fc3e1b160b28f9524e5b566537d7a7 100644 (file)
@@ -299,12 +299,12 @@ HEADER_CHECKS(5)                                              HEADER_CHECKS(5)
               or one body line at a time. A decision made for one
               line is not carried over to the next line.
 
-       <b>o</b>      If text in the message body is encoded  (<a href="http://www.faqs.org/rfcs/rfc2045.html">RFC  2045</a>)
+       <b>o</b>      If text in the message body is encoded  (<a href="http://tools.ietf.org/html/rfc2045">RFC  2045</a>)
               then the rules need to be specified for the encoded
               form.
 
-       <b>o</b>      Likewise, when message  headers  are  encoded  (<a href="http://www.faqs.org/rfcs/rfc2047.html">RFC</a>
-              <a href="http://www.faqs.org/rfcs/rfc2047.html">2047</a>)  then  the rules need to be specified for the
+       <b>o</b>      Likewise, when message  headers  are  encoded  (<a href="http://tools.ietf.org/html/rfc2047">RFC</a>
+              <a href="http://tools.ietf.org/html/rfc2047">2047</a>)  then  the rules need to be specified for the
               encoded form.
 
        Message headers added by the <a href="cleanup.8.html"><b>cleanup</b>(8)</a> daemon itself  are
@@ -386,8 +386,8 @@ HEADER_CHECKS(5)                                              HEADER_CHECKS(5)
        <a href="postmap.1.html">postmap(1)</a>, Postfix lookup table management
        <a href="postsuper.1.html">postsuper(1)</a>, Postfix janitor
        <a href="postcat.1.html">postcat(1)</a>, show Postfix queue file contents
-       <a href="http://www.faqs.org/rfcs/rfc2045.html">RFC 2045</a>, base64 and quoted-printable encoding rules
-       <a href="http://www.faqs.org/rfcs/rfc2047.html">RFC 2047</a>, message header encoding for non-ASCII text
+       <a href="http://tools.ietf.org/html/rfc2045">RFC 2045</a>, base64 and quoted-printable encoding rules
+       <a href="http://tools.ietf.org/html/rfc2047">RFC 2047</a>, message header encoding for non-ASCII text
 
 <b>README FILES</b>
        <a href="DATABASE_README.html">DATABASE_README</a>, Postfix lookup table overview
index 19edaa59f9b43c5ac41e93e6995638d3ff632740..9653b1a1f9c0622b0e707b2bc2b8e47e604bc48f 100644 (file)
@@ -143,7 +143,7 @@ LDAP_TABLE(5)                                                    LDAP_TABLE(5)
                   timeout = 5
 
        <b>search_base (No default; you must configure this)</b>
-              The <a href="http://www.faqs.org/rfcs/rfc2253.html">RFC2253</a> base DN at which to conduct the search,
+              The <a href="http://tools.ietf.org/html/rfc2253">RFC2253</a> base DN at which to conduct the search,
               e.g.
 
                   search_base = dc=your, dc=com
@@ -153,21 +153,21 @@ LDAP_TABLE(5)                                                    LDAP_TABLE(5)
 
               <b>%%</b>     This is replaced by a literal '%' character.
 
-              <b>%s</b>     This is replaced by the input key.  <a href="http://www.faqs.org/rfcs/rfc2253.html">RFC 2253</a>
+              <b>%s</b>     This is replaced by the input key.  <a href="http://tools.ietf.org/html/rfc2253">RFC 2253</a>
                      quoting is used to make sure that the  input
                      key  does not add unexpected metacharacters.
 
               <b>%u</b>     When the input key is an address of the form
-                     user@domain,  <b>%u</b>  is  replaced  by  the (<a href="http://www.faqs.org/rfcs/rfc2253.html">RFC</a>
-                     <a href="http://www.faqs.org/rfcs/rfc2253.html">2253</a>) quoted  local  part  of  the  address.
+                     user@domain,  <b>%u</b>  is  replaced  by  the (<a href="http://tools.ietf.org/html/rfc2253">RFC</a>
+                     <a href="http://tools.ietf.org/html/rfc2253">2253</a>) quoted  local  part  of  the  address.
                      Otherwise,  <b>%u</b>  is  replaced  by  the entire
                      search string.  If the localpart  is  empty,
                      the  search  is  suppressed  and  returns no
                      results.
 
               <b>%d</b>     When the input key is an address of the form
-                     user@domain,  <b>%d</b>  is  replaced  by  the (<a href="http://www.faqs.org/rfcs/rfc2253.html">RFC</a>
-                     <a href="http://www.faqs.org/rfcs/rfc2253.html">2253</a>) quoted domain  part  of  the  address.
+                     user@domain,  <b>%d</b>  is  replaced  by  the (<a href="http://tools.ietf.org/html/rfc2253">RFC</a>
+                     <a href="http://tools.ietf.org/html/rfc2253">2253</a>) quoted domain  part  of  the  address.
                      Otherwise,  the  search  is  suppressed  and
                      returns no results.
 
@@ -191,7 +191,7 @@ LDAP_TABLE(5)                                                    LDAP_TABLE(5)
                      returns no results.
 
        <b>query_filter (default: mailacceptinggeneralid=%s)</b>
-              The  <a href="http://www.faqs.org/rfcs/rfc2254.html">RFC2254</a>  filter  used to search the directory,
+              The  <a href="http://tools.ietf.org/html/rfc2254">RFC2254</a>  filter  used to search the directory,
               where <b>%s</b> is a substitute for the address Postfix is
               trying to resolve, e.g.
 
@@ -203,21 +203,21 @@ LDAP_TABLE(5)                                                    LDAP_TABLE(5)
               <b>%%</b>     This is replaced by a literal '%' character.
                      (Postfix 2.2 and later).
 
-              <b>%s</b>     This is replaced by the input key.  <a href="http://www.faqs.org/rfcs/rfc2254.html">RFC 2254</a>
+              <b>%s</b>     This is replaced by the input key.  <a href="http://tools.ietf.org/html/rfc2254">RFC 2254</a>
                      quoting is used to make sure that the  input
                      key  does not add unexpected metacharacters.
 
               <b>%u</b>     When the input key is an address of the form
-                     user@domain,  <b>%u</b>  is  replaced  by  the (<a href="http://www.faqs.org/rfcs/rfc2254.html">RFC</a>
-                     <a href="http://www.faqs.org/rfcs/rfc2254.html">2254</a>) quoted  local  part  of  the  address.
+                     user@domain,  <b>%u</b>  is  replaced  by  the (<a href="http://tools.ietf.org/html/rfc2254">RFC</a>
+                     <a href="http://tools.ietf.org/html/rfc2254">2254</a>) quoted  local  part  of  the  address.
                      Otherwise,  <b>%u</b>  is  replaced  by  the entire
                      search string.  If the localpart  is  empty,
                      the  search  is  suppressed  and  returns no
                      results.
 
               <b>%d</b>     When the input key is an address of the form
-                     user@domain,  <b>%d</b>  is  replaced  by  the (<a href="http://www.faqs.org/rfcs/rfc2254.html">RFC</a>
-                     <a href="http://www.faqs.org/rfcs/rfc2254.html">2254</a>) quoted domain  part  of  the  address.
+                     user@domain,  <b>%d</b>  is  replaced  by  the (<a href="http://tools.ietf.org/html/rfc2254">RFC</a>
+                     <a href="http://tools.ietf.org/html/rfc2254">2254</a>) quoted domain  part  of  the  address.
                      Otherwise,  the  search  is  suppressed  and
                      returns no results.
 
@@ -612,7 +612,7 @@ LDAP_TABLE(5)                                                    LDAP_TABLE(5)
        tory  entries  whose  mailacceptinggeneralid  attribute is
        "ldapuser", read the "maildrop" attributes of those found,
        and build a list of their maildrops, which will be treated
-       as <a href="http://www.faqs.org/rfcs/rfc822.html">RFC822</a> addresses to which the message  will  be  deliv-
+       as <a href="http://tools.ietf.org/html/rfc822">RFC822</a> addresses to which the message  will  be  deliv-
        ered.
 
 <b>SEE ALSO</b>
index 65101c012ea7dcf8b49477df1d56eb6aea40cfec..482d3e236142711d573a90f254ac2882fc0f3b81 100644 (file)
@@ -99,21 +99,21 @@ SMTP(8)                                                                SMTP(8)
        low privilege.
 
 <b>STANDARDS</b>
-       <a href="http://www.faqs.org/rfcs/rfc821.html">RFC 821</a> (SMTP protocol)
-       <a href="http://www.faqs.org/rfcs/rfc822.html">RFC 822</a> (ARPA Internet Text Messages)
-       <a href="http://www.faqs.org/rfcs/rfc1651.html">RFC 1651</a> (SMTP service extensions)
-       <a href="http://www.faqs.org/rfcs/rfc1652.html">RFC 1652</a> (8bit-MIME transport)
-       <a href="http://www.faqs.org/rfcs/rfc1870.html">RFC 1870</a> (Message Size Declaration)
-       <a href="http://www.faqs.org/rfcs/rfc2033.html">RFC 2033</a> (LMTP protocol)
-       <a href="http://www.faqs.org/rfcs/rfc2034.html">RFC 2034</a> (SMTP Enhanced Error Codes)
-       <a href="http://www.faqs.org/rfcs/rfc2045.html">RFC 2045</a> (MIME: Format of Internet Message Bodies)
-       <a href="http://www.faqs.org/rfcs/rfc2046.html">RFC 2046</a> (MIME: Media Types)
-       <a href="http://www.faqs.org/rfcs/rfc2554.html">RFC 2554</a> (AUTH command)
-       <a href="http://www.faqs.org/rfcs/rfc2821.html">RFC 2821</a> (SMTP protocol)
-       <a href="http://www.faqs.org/rfcs/rfc2920.html">RFC 2920</a> (SMTP Pipelining)
-       <a href="http://www.faqs.org/rfcs/rfc3207.html">RFC 3207</a> (STARTTLS command)
-       <a href="http://www.faqs.org/rfcs/rfc3461.html">RFC 3461</a> (SMTP DSN Extension)
-       <a href="http://www.faqs.org/rfcs/rfc3463.html">RFC 3463</a> (Enhanced Status Codes)
+       <a href="http://tools.ietf.org/html/rfc821">RFC 821</a> (SMTP protocol)
+       <a href="http://tools.ietf.org/html/rfc822">RFC 822</a> (ARPA Internet Text Messages)
+       <a href="http://tools.ietf.org/html/rfc1651">RFC 1651</a> (SMTP service extensions)
+       <a href="http://tools.ietf.org/html/rfc1652">RFC 1652</a> (8bit-MIME transport)
+       <a href="http://tools.ietf.org/html/rfc1870">RFC 1870</a> (Message Size Declaration)
+       <a href="http://tools.ietf.org/html/rfc2033">RFC 2033</a> (LMTP protocol)
+       <a href="http://tools.ietf.org/html/rfc2034">RFC 2034</a> (SMTP Enhanced Error Codes)
+       <a href="http://tools.ietf.org/html/rfc2045">RFC 2045</a> (MIME: Format of Internet Message Bodies)
+       <a href="http://tools.ietf.org/html/rfc2046">RFC 2046</a> (MIME: Media Types)
+       <a href="http://tools.ietf.org/html/rfc2554">RFC 2554</a> (AUTH command)
+       <a href="http://tools.ietf.org/html/rfc2821">RFC 2821</a> (SMTP protocol)
+       <a href="http://tools.ietf.org/html/rfc2920">RFC 2920</a> (SMTP Pipelining)
+       <a href="http://tools.ietf.org/html/rfc3207">RFC 3207</a> (STARTTLS command)
+       <a href="http://tools.ietf.org/html/rfc3461">RFC 3461</a> (SMTP DSN Extension)
+       <a href="http://tools.ietf.org/html/rfc3463">RFC 3463</a> (Enhanced Status Codes)
 
 <b>DIAGNOSTICS</b>
        Problems  and transactions are logged to <b>syslogd</b>(8).  Cor-
@@ -193,7 +193,7 @@ SMTP(8)                                                                SMTP(8)
 
        <b><a href="postconf.5.html#smtp_quote_rfc821_envelope">smtp_quote_rfc821_envelope</a> (yes)</b>
               Quote addresses in SMTP MAIL FROM and RCPT TO  com-
-              mands as required by <a href="http://www.faqs.org/rfcs/rfc821.html">RFC 821</a>.
+              mands as required by <a href="http://tools.ietf.org/html/rfc821">RFC 821</a>.
 
        <b><a href="postconf.5.html#smtp_skip_5xx_greeting">smtp_skip_5xx_greeting</a> (yes)</b>
               Skip SMTP servers that greet with a 5XX status code
@@ -253,13 +253,13 @@ SMTP(8)                                                                SMTP(8)
               will ignore in the LHLO response from a remote LMTP
               server.
 
-       Available in Postfix version 2.5 and later:
+       Available in Postfix version 2.4.4 and later:
 
        <b><a href="postconf.5.html#send_cyrus_sasl_authzid">send_cyrus_sasl_authzid</a> (no)</b>
-              When authenticating to  a  SASL  server,  with  the
-              default  setting  "no",  send  no  authoriZation ID
-              (authzid); send only the authentiCation  ID  (auth-
-              cid) plus the authcid's password.
+              When authenticating to a remote SMTP or LMTP server
+              with  the default setting "no", send no SASL autho-
+              riZation ID (authzid); send only the SASL authenti-
+              Cation ID (authcid) plus the authcid's password.
 
 <b>MIME PROCESSING CONTROLS</b>
        Available in Postfix version 2.0 and later:
index de3fd4f545ba7af2c224f33d3c9f19b39138814c..26708b5dfecd7c232f89e3beef914e60383adf74 100644 (file)
@@ -183,7 +183,7 @@ LOCAL(8)                                                              LOCAL(8)
        ventions  defined  in  &lt;<b>sysexits.h</b>&gt;.   Exit status 0 means
        normal successful completion.
 
-       Postfix version  2.3  and  later  support  <a href="http://www.faqs.org/rfcs/rfc3463.html">RFC  3463</a>-style
+       Postfix version  2.3  and  later  support  <a href="http://tools.ietf.org/html/rfc3463">RFC  3463</a>-style
        enhanced  status  codes.   If  a command terminates with a
        non-zero exit status, and the command output  begins  with
        an enhanced status code, this status code takes precedence
@@ -318,8 +318,8 @@ LOCAL(8)                                                              LOCAL(8)
        the <b><a href="postconf.5.html#default_privs">default_privs</a></b> configuration parameter.
 
 <b>STANDARDS</b>
-       <a href="http://www.faqs.org/rfcs/rfc822.html">RFC 822</a> (ARPA Internet Text Messages)
-       <a href="http://www.faqs.org/rfcs/rfc3463.html">RFC 3463</a> (Enhanced status codes)
+       <a href="http://tools.ietf.org/html/rfc822">RFC 822</a> (ARPA Internet Text Messages)
+       <a href="http://tools.ietf.org/html/rfc3463">RFC 3463</a> (Enhanced status codes)
 
 <b>DIAGNOSTICS</b>
        Problems and transactions are logged to <b>syslogd</b>(8).   Cor-
index a17925cd1cebcb01d401c312131a30b8b87e9334..f9db969c5ad1f40cdab4a5e385e7a82ced0f05ae 100644 (file)
@@ -149,8 +149,8 @@ OQMGR(8)                                                              OQMGR(8)
        manager of the arrival of new mail one would request <b>I</b>.
 
 <b>STANDARDS</b>
-       <a href="http://www.faqs.org/rfcs/rfc3463.html">RFC 3463</a> (Enhanced status codes)
-       <a href="http://www.faqs.org/rfcs/rfc3464.html">RFC 3464</a> (Delivery status notifications)
+       <a href="http://tools.ietf.org/html/rfc3463">RFC 3463</a> (Enhanced status codes)
+       <a href="http://tools.ietf.org/html/rfc3464">RFC 3464</a> (Delivery status notifications)
 
 <b>SECURITY</b>
        The <a href="qmgr.8.html"><b>oqmgr</b>(8)</a> daemon is not security  sensitive.  It  reads
index df78106529c1d3e4feb26e243b214e15cfd2a43d..6da46ca0818dbf1d6ab6d84bce7969596ec96014 100644 (file)
@@ -127,7 +127,7 @@ PIPE(8)                                                                PIPE(8)
                      ters in the command-line <b>$sender</b> and <b>$recip-</b>
                      <b>ient</b> address localparts (text to the left of
                      the right-most <b>@</b> character), according to an
-                     8-bit  transparent version of <a href="http://www.faqs.org/rfcs/rfc822.html">RFC 822</a>.  This
+                     8-bit  transparent version of <a href="http://tools.ietf.org/html/rfc822">RFC 822</a>.  This
                      is recommended  for  delivery  via  <b>UUCP</b>  or
                      <b>BSMTP</b>.
 
@@ -302,8 +302,8 @@ PIPE(8)                                                                PIPE(8)
 
               <b>${sasl_sender</b>}
                      This macro expands to the SASL  sender  name
-                     (i.e.  the  original  submitter  as  per <a href="http://www.faqs.org/rfcs/rfc2554.html">RFC</a>
-                     <a href="http://www.faqs.org/rfcs/rfc2554.html">2554</a>) used during the reception of the  mes-
+                     (i.e.  the  original  submitter  as  per <a href="http://tools.ietf.org/html/rfc2554">RFC</a>
+                     <a href="http://tools.ietf.org/html/rfc2554">2554</a>) used during the reception of the  mes-
                      sage.
 
                      This  is available in Postfix 2.2 and later.
@@ -345,14 +345,14 @@ PIPE(8)                                                                PIPE(8)
                      for case folding.
 
 <b>STANDARDS</b>
-       <a href="http://www.faqs.org/rfcs/rfc3463.html">RFC 3463</a> (Enhanced status codes)
+       <a href="http://tools.ietf.org/html/rfc3463">RFC 3463</a> (Enhanced status codes)
 
 <b>DIAGNOSTICS</b>
        Command  exit status codes are expected to follow the con-
        ventions defined in &lt;<b>sysexits.h</b>&gt;.   Exit  status  0  means
        normal successful completion.
 
-       Postfix  version  2.3  and  later  support  <a href="http://www.faqs.org/rfcs/rfc3463.html">RFC 3463</a>-style
+       Postfix  version  2.3  and  later  support  <a href="http://tools.ietf.org/html/rfc3463">RFC 3463</a>-style
        enhanced status codes.  If a  command  terminates  with  a
        non-zero  exit  status, and the command output begins with
        an enhanced status code, this status code takes precedence
index 0d5daca65add0386187833625022afa1eb171235..6304118f78bd4dce0038d042b742a23d0ed3931c 100644 (file)
@@ -215,7 +215,7 @@ POSTALIAS(1)                                                      POSTALIAS(1)
               becomes, for example, "postfix/smtpd".
 
 <b>STANDARDS</b>
-       <a href="http://www.faqs.org/rfcs/rfc822.html">RFC 822</a> (ARPA Internet Text Messages)
+       <a href="http://tools.ietf.org/html/rfc822">RFC 822</a> (ARPA Internet Text Messages)
 
 <b>SEE ALSO</b>
        <a href="aliases.5.html">aliases(5)</a>, format of alias database input file.
index f15cad0d9bddfb2b8deace8baf58ad78e8fdc3e3..e461dac4b1fb850159f25d0db81c25f26e72a8d7 100644 (file)
@@ -94,7 +94,7 @@ is rejected by an <a href="access.5.html">access(5)</a> map restriction.
 </p>
 
 <p>
-Do not change this unless you have a complete understanding of <a href="http://www.faqs.org/rfcs/rfc821.html">RFC 821</a>.
+Do not change this unless you have a complete understanding of <a href="http://tools.ietf.org/html/rfc821">RFC 821</a>.
 </p>
 
 
@@ -1163,7 +1163,7 @@ is placed into the Postfix configuration directory.  </p>
 
 <p>
 Enable inter-operability with SMTP clients that implement an obsolete
-version of the AUTH command (<a href="http://www.faqs.org/rfcs/rfc2554.html">RFC 2554</a>). Examples of such clients
+version of the AUTH command (<a href="http://tools.ietf.org/html/rfc2554">RFC 2554</a>). Examples of such clients
 are MicroSoft Outlook Express version 4 and MicroSoft Exchange
 version 5.0.
 </p>
@@ -1798,7 +1798,7 @@ address, or Recipient address. </dd>
 <a href="postconf.5.html#maps_rbl_reject_code">maps_rbl_reject_code</a> configuration parameter. Note: The numerical
 SMTP response code is required, and must appear at the start of the
 reply. With Postfix version 2.3 and later this information may be followed
-by an <a href="http://www.faqs.org/rfcs/rfc3463.html">RFC 3463</a> enhanced status code. </dd>
+by an <a href="http://tools.ietf.org/html/rfc3463">RFC 3463</a> enhanced status code. </dd>
 
 <dt><b>$rbl_domain</b></dt>
 
@@ -1971,7 +1971,7 @@ client request is rejected by the "defer" restriction.
 </p>
 
 <p>
-Do not change this unless you have a complete understanding of <a href="http://www.faqs.org/rfcs/rfc821.html">RFC 821</a>.
+Do not change this unless you have a complete understanding of <a href="http://tools.ietf.org/html/rfc821">RFC 821</a>.
 </p>
 
 
@@ -2967,7 +2967,7 @@ on whether the operating system implements IPv6. </p>
 <p> Note: you MUST stop and start Postfix after changing this
 parameter. </p>
 
-<p> On systems that pre-date IPV6_V6ONLY support (<a href="http://www.faqs.org/rfcs/rfc3493.html">RFC 3493</a>), an
+<p> On systems that pre-date IPV6_V6ONLY support (<a href="http://tools.ietf.org/html/rfc3493">RFC 3493</a>), an
 IPv6 server will also accept IPv4 connections, even when IPv4 is
 turned off with the <a href="postconf.5.html#inet_protocols">inet_protocols</a> parameter.  On systems with
 IPV6_V6ONLY support, Postfix will use separate server sockets for
@@ -2978,7 +2978,7 @@ corresponding protocol.  </p>
 Postfix will to DNS type A record lookups, and will convert
 IPv4-in-IPv6 client IP addresses (::ffff:1.2.3.4) to their original
 IPv4 form (1.2.3.4).  The latter is needed on hosts that pre-date
-IPV6_V6ONLY support (<a href="http://www.faqs.org/rfcs/rfc3493.html">RFC 3493</a>). </p>
+IPV6_V6ONLY support (<a href="http://tools.ietf.org/html/rfc3493">RFC 3493</a>). </p>
 
 <p> When IPv6 support is enabled via the <a href="postconf.5.html#inet_protocols">inet_protocols</a> parameter,
 Postfix will do DNS type AAAA record lookups. </p>
@@ -3054,7 +3054,7 @@ restriction.
 </p>
 
 <p>
-Do not change this unless you have a complete understanding of <a href="http://www.faqs.org/rfcs/rfc821.html">RFC 821</a>.
+Do not change this unless you have a complete understanding of <a href="http://tools.ietf.org/html/rfc821">RFC 821</a>.
 </p>
 
 
@@ -4188,7 +4188,7 @@ a neighboring system.  </dd>
 <dt><b> <a href="postconf.5.html#permit_sasl_authenticated">permit_sasl_authenticated</a> </b></dt>
 
 <dd> Append the domain name in $<a href="postconf.5.html#myorigin">myorigin</a> or $<a href="postconf.5.html#mydomain">mydomain</a> when the
-client is successfully authenticated via the <a href="http://www.faqs.org/rfcs/rfc2554.html">RFC 2554</a> (AUTH)
+client is successfully authenticated via the <a href="http://tools.ietf.org/html/rfc2554">RFC 2554</a> (AUTH)
 protocol. </dd>
 
 <dt><b> <a href="postconf.5.html#permit_tls_clientcerts">permit_tls_clientcerts</a> </b></dt>
@@ -4772,7 +4772,7 @@ client request is blocked by the <a href="postconf.5.html#reject_rbl_client">rej
 </p>
 
 <p>
-Do not change this unless you have a complete understanding of <a href="http://www.faqs.org/rfcs/rfc821.html">RFC 821</a>.
+Do not change this unless you have a complete understanding of <a href="http://tools.ietf.org/html/rfc821">RFC 821</a>.
 </p>
 
 
@@ -5316,7 +5316,7 @@ restriction.
 </p>
 
 <p>
-Do not change this unless you have a complete understanding of <a href="http://www.faqs.org/rfcs/rfc821.html">RFC 821</a>.
+Do not change this unless you have a complete understanding of <a href="http://tools.ietf.org/html/rfc821">RFC 821</a>.
 </p>
 
 <p>
@@ -6346,7 +6346,7 @@ client request is rejected by the "reject" restriction.
 </p>
 
 <p>
-Do not change this unless you have a complete understanding of <a href="http://www.faqs.org/rfcs/rfc821.html">RFC 821</a>.
+Do not change this unless you have a complete understanding of <a href="http://tools.ietf.org/html/rfc821">RFC 821</a>.
 </p>
 
 
@@ -6454,7 +6454,7 @@ restriction.
 </p>
 
 <p>
-Do not change this unless you have a complete understanding of <a href="http://www.faqs.org/rfcs/rfc821.html">RFC 821</a>.
+Do not change this unless you have a complete understanding of <a href="http://tools.ietf.org/html/rfc821">RFC 821</a>.
 </p>
 
 
@@ -6646,7 +6646,7 @@ the mail server (NOT RECOMMENDED).
 looking inside quotes.  </p>
 
 <p> By default, the Postfix address resolver does not quote the
-address localpart as per <a href="http://www.faqs.org/rfcs/rfc822.html">RFC 822</a>, so that additional @ or % or !
+address localpart as per <a href="http://tools.ietf.org/html/rfc822">RFC 822</a>, so that additional @ or % or !
 operators remain visible. This behavior is safe but it is also
 technically incorrect.  </p>
 
@@ -6718,16 +6718,17 @@ The name of the directory with example Postfix configuration files.
 <DT><b><a name="send_cyrus_sasl_authzid">send_cyrus_sasl_authzid</a>
 (default: no)</b></DT><DD>
 
-<p> When authenticating to a SASL server, with the default setting
-"no", send no authoriZation ID (authzid); send only the authentiCation
-ID (authcid) plus the authcid's password. </p>
+<p> When authenticating to a remote SMTP or LMTP server with the
+default setting "no", send no SASL authoriZation ID (authzid); send
+only the SASL authentiCation ID (authcid) plus the authcid's password.
+</p>
 
 <p> The non-default setting "yes" enables the behavior of older
-Postfix versions.  These always send an authzid that is equal to
-the authcid, but this causes inter-operability problems with some
-SMTP servers. </p>
+Postfix versions.  These always send a SASL authzid that is equal
+to the SASL authcid, but this causes inter-operability problems
+with some SMTP servers. </p>
 
-<p> This feature is available in Postfix 2.5 and later. </p>
+<p> This feature is available in Postfix 2.4.4 and later. </p>
 
 
 </DD>
@@ -7353,7 +7354,7 @@ the CommonName is checked.  The behavior may be changed with the
 <a href="postconf.5.html#smtp_tls_enforce_peername">smtp_tls_enforce_peername</a> option.  </p>
 
 <p> This option is useful only if you are definitely sure that you
-will only connect to servers that support <a href="http://www.faqs.org/rfcs/rfc2487.html">RFC 2487</a> _and_ that
+will only connect to servers that support <a href="http://tools.ietf.org/html/rfc2487">RFC 2487</a> _and_ that
 provide valid server certificates.  Typical use is for clients that
 send all their email to a dedicated mailhub.  </p>
 
@@ -7664,12 +7665,12 @@ The default time unit is s (seconds).
 
 <p>
 Quote addresses in SMTP MAIL FROM and RCPT TO commands as required
-by <a href="http://www.faqs.org/rfcs/rfc821.html">RFC 821</a>. This includes putting quotes around an address localpart
+by <a href="http://tools.ietf.org/html/rfc821">RFC 821</a>. This includes putting quotes around an address localpart
 that ends in ".".
 </p>
 
 <p>
-The default is to comply with <a href="http://www.faqs.org/rfcs/rfc821.html">RFC 821</a>. If you have to send mail to
+The default is to comply with <a href="http://tools.ietf.org/html/rfc821">RFC 821</a>. If you have to send mail to
 a broken SMTP server, configure a special SMTP client in <a href="master.5.html">master.cf</a>:
 </p>
 
@@ -8156,7 +8157,7 @@ access only to the system superuser account ("root"). </p>
 
 <p> With mandatory TLS encryption, require that the remote SMTP
 server hostname matches the information in the remote SMTP server
-certificate.  As of <a href="http://www.faqs.org/rfcs/rfc2487.html">RFC 2487</a> the requirements for hostname checking
+certificate.  As of <a href="http://tools.ietf.org/html/rfc2487">RFC 2487</a> the requirements for hostname checking
 for MTA clients are not specified. </p>
 
 <p> This option can be set to "no" to disable strict peer name
@@ -9299,7 +9300,7 @@ network or network address listed in  $<a href="postconf.5.html#mynetworks">myne
 <dt><b><a name="permit_sasl_authenticated">permit_sasl_authenticated</a></b></dt>
 
 <dd> Permit the request when the client is successfully
-authenticated via the <a href="http://www.faqs.org/rfcs/rfc2554.html">RFC 2554</a> (AUTH) protocol. </dd>
+authenticated via the <a href="http://tools.ietf.org/html/rfc2554">RFC 2554</a> (AUTH) protocol. </dd>
 
 <dt><b><a name="permit_tls_all_clientcerts">permit_tls_all_clientcerts</a></b></dt>
 
@@ -9648,7 +9649,7 @@ applies in the context of the SMTP END-OF-DATA command. </p>
 (default: no)</b></DT><DD>
 
 <p> Mandatory TLS: announce STARTTLS support to SMTP clients,
-and require that clients use TLS encryption.  According to <a href="http://www.faqs.org/rfcs/rfc2487.html">RFC 2487</a>
+and require that clients use TLS encryption.  According to <a href="http://tools.ietf.org/html/rfc2487">RFC 2487</a>
 this MUST NOT be applied in case of a publicly-referenced SMTP
 server.  This option is off by default and should be used only on
 dedicated servers. </p>
@@ -11435,7 +11436,7 @@ to SMTP clients, but do not require that clients use TLS encryption.
 
 <dt><b>encrypt</b></dt> <dd>Mandatory TLS encryption: announce
 STARTTLS support to SMTP clients, and require that clients use TLS
-encryption. According to <a href="http://www.faqs.org/rfcs/rfc2487.html">RFC 2487</a> this MUST NOT be applied in case
+encryption. According to <a href="http://tools.ietf.org/html/rfc2487">RFC 2487</a> this MUST NOT be applied in case
 of a publicly-referenced SMTP server. Instead, this option should
 be used only on dedicated servers. </dd>
 
@@ -11667,12 +11668,12 @@ This feature is available in Postfix 2.0 and later.
 <p>
 Require that addresses received in SMTP MAIL FROM and RCPT TO
 commands are enclosed with &lt;&gt;, and that those addresses do
-not contain <a href="http://www.faqs.org/rfcs/rfc822.html">RFC 822</a> style comments or phrases.  This stops mail
+not contain <a href="http://tools.ietf.org/html/rfc822">RFC 822</a> style comments or phrases.  This stops mail
 from poorly written software.
 </p>
 
 <p>
-By default, the Postfix SMTP server accepts <a href="http://www.faqs.org/rfcs/rfc822.html">RFC 822</a> syntax in MAIL
+By default, the Postfix SMTP server accepts <a href="http://tools.ietf.org/html/rfc822">RFC 822</a> syntax in MAIL
 FROM and RCPT TO addresses.
 </p>
 
@@ -12025,7 +12026,7 @@ always 450 in case of a temporary DNS error.
 </p>
 
 <p>
-Do not change this unless you have a complete understanding of <a href="http://www.faqs.org/rfcs/rfc821.html">RFC 821</a>.
+Do not change this unless you have a complete understanding of <a href="http://tools.ietf.org/html/rfc821">RFC 821</a>.
 </p>
 
 
@@ -12042,7 +12043,7 @@ with 450 when the mapping failed due to a temporary error condition.
 </p>
 
 <p>
-Do not change this unless you have a complete understanding of <a href="http://www.faqs.org/rfcs/rfc821.html">RFC 821</a>.
+Do not change this unless you have a complete understanding of <a href="http://tools.ietf.org/html/rfc821">RFC 821</a>.
 </p>
 
 
@@ -12058,7 +12059,7 @@ specified with the HELO or EHLO command is rejected by the
 </p>
 
 <p>
-Do not change this unless you have a complete understanding of <a href="http://www.faqs.org/rfcs/rfc821.html">RFC 821</a>.
+Do not change this unless you have a complete understanding of <a href="http://tools.ietf.org/html/rfc821">RFC 821</a>.
 </p>
 
 
@@ -12158,7 +12159,7 @@ accept the address anyway.
 </p>
 
 <p>
-Do not change this unless you have a complete understanding of <a href="http://www.faqs.org/rfcs/rfc821.html">RFC 821</a>.
+Do not change this unless you have a complete understanding of <a href="http://tools.ietf.org/html/rfc821">RFC 821</a>.
 </p>
 
 <p>
@@ -12182,7 +12183,7 @@ accept the address anyway.
 </p>
 
 <p>
-Do not change this unless you have a complete understanding of <a href="http://www.faqs.org/rfcs/rfc821.html">RFC 821</a>.
+Do not change this unless you have a complete understanding of <a href="http://tools.ietf.org/html/rfc821">RFC 821</a>.
 </p>
 
 <p>
index 6061cfa58d8a3e82cac1c7ab5fd794b0ae464b9c..b0f8677498b6764346690066cf61a818809bcb27 100644 (file)
@@ -75,7 +75,7 @@ POSTQUEUE(1)                                                      POSTQUEUE(1)
        <b>-s</b> <i>site</i>
               Schedule  immediate  delivery  of  all mail that is
               queued for the named <i>site</i>. A numerical site must be
-              specified  as  a  valid  <a href="http://www.faqs.org/rfcs/rfc2821.html">RFC  2821</a>  address literal
+              specified  as  a  valid  <a href="http://tools.ietf.org/html/rfc2821">RFC  2821</a>  address literal
               enclosed in [], just like in email addresses.   The
               site must be eligible for the "fast flush" service.
               See <a href="flush.8.html"><b>flush</b>(8)</a> for more information about  the  "fast
index 6679ec2ccefddfffd65916ea0d158846ae9f72c6..ce4106af838e43975e8c353e5d6eeb62df143ab1 100644 (file)
@@ -155,8 +155,8 @@ QMGR(8)                                                                QMGR(8)
        manager of the arrival of new mail one would request <b>I</b>.
 
 <b>STANDARDS</b>
-       <a href="http://www.faqs.org/rfcs/rfc3463.html">RFC 3463</a> (Enhanced status codes)
-       <a href="http://www.faqs.org/rfcs/rfc3464.html">RFC 3464</a> (Delivery status notifications)
+       <a href="http://tools.ietf.org/html/rfc3463">RFC 3463</a> (Enhanced status codes)
+       <a href="http://tools.ietf.org/html/rfc3464">RFC 3464</a> (Delivery status notifications)
 
 <b>SECURITY</b>
        The  <a href="qmgr.8.html"><b>qmgr</b>(8)</a>  daemon  is  not security sensitive. It reads
index 92e298c9ae2f7cdf35f949b75c79e374796a7d42..6dfc676fedaf3ab857f47cba93751a8b882a0534 100644 (file)
@@ -260,7 +260,7 @@ SMTP-SINK(1)                                                      SMTP-SINK(1)
                      per-message capture file name.
 
               <i>time-stamp</i>
-                     A time stamp as defined in <a href="http://www.faqs.org/rfcs/rfc2822.html">RFC 2822</a>.
+                     A time stamp as defined in <a href="http://tools.ietf.org/html/rfc2822">RFC 2822</a>.
 
 <b>SEE ALSO</b>
        <a href="smtp-source.1.html">smtp-source(1)</a>, SMTP/LMTP message generator
index 31f285055b89d84be314d491cabdaca83d9155c7..ca707017c1792eadda4c95acaf45e9a2783b9a96 100644 (file)
@@ -35,23 +35,32 @@ SMTP-SOURCE(1)                                                  SMTP-SOURCE(1)
               available  when  Postfix is built without IPv6 sup-
               port.
 
-       <b>-c</b>     Display a running counter that is incremented  each
+       <b>-A</b>     Don't abort when the server sends  something  other
+              than the expected positive reply code.
+
+       <b>-c</b>     Display  a running counter that is incremented each
               time an SMTP DATA command completes.
 
        <b>-C</b> <i>count</i>
-              When  a  host  sends  RESET instead of SYN|ACK, try
-              <i>count</i> times before giving up. The default count  is
+              When a host sends RESET  instead  of  SYN|ACK,  try
+              <i>count</i>  times before giving up. The default count is
               1. Specify a larger count in order to work around a
               problem with TCP/IP stacks that send RESET when the
               listen queue is full.
 
-       <b>-d</b>     Don't  disconnect after sending a message; send the
+       <b>-d</b>     Don't disconnect after sending a message; send  the
               next message over the same connection.
 
        <b>-f</b> <i>from</i>
-              Use  the   specified   sender   address   (default:
+              Use   the   specified   sender   address  (default:
               &lt;foo@<a href="postconf.5.html#myhostname">myhostname</a>&gt;).
 
+       <b>-F</b> <i>file</i>
+              Send the pre-formatted message header and  body  in
+              the  specified  <i>file</i>,  while  prepending '.' before
+              lines that begin with '.', and while appending CRLF
+              after each line.
+
        <b>-l</b> <i>length</i>
               Send  <i>length</i>  bytes  as message payload. The length
               does not include message headers.
@@ -81,6 +90,11 @@ SMTP-SOURCE(1)                                                  SMTP-SOURCE(1)
               action (default: 1).  Recipient names are generated
               by prepending a number to the recipient address.
 
+       <b>-R</b> <i>interval</i>
+              Wait for a random period of time 0 &lt;= n &lt;= interval
+              between messages.  Suspending one thread  does  not
+              affect other delivery threads.
+
        <b>-s</b> <i>session</i><b>_</b><i>count</i>
               Run the specified number of SMTP sessions in paral-
               lel (default: 1).
@@ -92,11 +106,6 @@ SMTP-SOURCE(1)                                                  SMTP-SOURCE(1)
        <b>-t</b> <i>to</i>  Use   the  specified  recipient  address  (default:
               &lt;foo@<a href="postconf.5.html#myhostname">myhostname</a>&gt;).
 
-       <b>-R</b> <i>interval</i>
-              Wait for a random period of time 0 &lt;= n &lt;= interval
-              between  messages.   Suspending one thread does not
-              affect other delivery threads.
-
        <b>-v</b>     Make the program more verbose, for  debugging  pur-
               poses.
 
index 65101c012ea7dcf8b49477df1d56eb6aea40cfec..482d3e236142711d573a90f254ac2882fc0f3b81 100644 (file)
@@ -99,21 +99,21 @@ SMTP(8)                                                                SMTP(8)
        low privilege.
 
 <b>STANDARDS</b>
-       <a href="http://www.faqs.org/rfcs/rfc821.html">RFC 821</a> (SMTP protocol)
-       <a href="http://www.faqs.org/rfcs/rfc822.html">RFC 822</a> (ARPA Internet Text Messages)
-       <a href="http://www.faqs.org/rfcs/rfc1651.html">RFC 1651</a> (SMTP service extensions)
-       <a href="http://www.faqs.org/rfcs/rfc1652.html">RFC 1652</a> (8bit-MIME transport)
-       <a href="http://www.faqs.org/rfcs/rfc1870.html">RFC 1870</a> (Message Size Declaration)
-       <a href="http://www.faqs.org/rfcs/rfc2033.html">RFC 2033</a> (LMTP protocol)
-       <a href="http://www.faqs.org/rfcs/rfc2034.html">RFC 2034</a> (SMTP Enhanced Error Codes)
-       <a href="http://www.faqs.org/rfcs/rfc2045.html">RFC 2045</a> (MIME: Format of Internet Message Bodies)
-       <a href="http://www.faqs.org/rfcs/rfc2046.html">RFC 2046</a> (MIME: Media Types)
-       <a href="http://www.faqs.org/rfcs/rfc2554.html">RFC 2554</a> (AUTH command)
-       <a href="http://www.faqs.org/rfcs/rfc2821.html">RFC 2821</a> (SMTP protocol)
-       <a href="http://www.faqs.org/rfcs/rfc2920.html">RFC 2920</a> (SMTP Pipelining)
-       <a href="http://www.faqs.org/rfcs/rfc3207.html">RFC 3207</a> (STARTTLS command)
-       <a href="http://www.faqs.org/rfcs/rfc3461.html">RFC 3461</a> (SMTP DSN Extension)
-       <a href="http://www.faqs.org/rfcs/rfc3463.html">RFC 3463</a> (Enhanced Status Codes)
+       <a href="http://tools.ietf.org/html/rfc821">RFC 821</a> (SMTP protocol)
+       <a href="http://tools.ietf.org/html/rfc822">RFC 822</a> (ARPA Internet Text Messages)
+       <a href="http://tools.ietf.org/html/rfc1651">RFC 1651</a> (SMTP service extensions)
+       <a href="http://tools.ietf.org/html/rfc1652">RFC 1652</a> (8bit-MIME transport)
+       <a href="http://tools.ietf.org/html/rfc1870">RFC 1870</a> (Message Size Declaration)
+       <a href="http://tools.ietf.org/html/rfc2033">RFC 2033</a> (LMTP protocol)
+       <a href="http://tools.ietf.org/html/rfc2034">RFC 2034</a> (SMTP Enhanced Error Codes)
+       <a href="http://tools.ietf.org/html/rfc2045">RFC 2045</a> (MIME: Format of Internet Message Bodies)
+       <a href="http://tools.ietf.org/html/rfc2046">RFC 2046</a> (MIME: Media Types)
+       <a href="http://tools.ietf.org/html/rfc2554">RFC 2554</a> (AUTH command)
+       <a href="http://tools.ietf.org/html/rfc2821">RFC 2821</a> (SMTP protocol)
+       <a href="http://tools.ietf.org/html/rfc2920">RFC 2920</a> (SMTP Pipelining)
+       <a href="http://tools.ietf.org/html/rfc3207">RFC 3207</a> (STARTTLS command)
+       <a href="http://tools.ietf.org/html/rfc3461">RFC 3461</a> (SMTP DSN Extension)
+       <a href="http://tools.ietf.org/html/rfc3463">RFC 3463</a> (Enhanced Status Codes)
 
 <b>DIAGNOSTICS</b>
        Problems  and transactions are logged to <b>syslogd</b>(8).  Cor-
@@ -193,7 +193,7 @@ SMTP(8)                                                                SMTP(8)
 
        <b><a href="postconf.5.html#smtp_quote_rfc821_envelope">smtp_quote_rfc821_envelope</a> (yes)</b>
               Quote addresses in SMTP MAIL FROM and RCPT TO  com-
-              mands as required by <a href="http://www.faqs.org/rfcs/rfc821.html">RFC 821</a>.
+              mands as required by <a href="http://tools.ietf.org/html/rfc821">RFC 821</a>.
 
        <b><a href="postconf.5.html#smtp_skip_5xx_greeting">smtp_skip_5xx_greeting</a> (yes)</b>
               Skip SMTP servers that greet with a 5XX status code
@@ -253,13 +253,13 @@ SMTP(8)                                                                SMTP(8)
               will ignore in the LHLO response from a remote LMTP
               server.
 
-       Available in Postfix version 2.5 and later:
+       Available in Postfix version 2.4.4 and later:
 
        <b><a href="postconf.5.html#send_cyrus_sasl_authzid">send_cyrus_sasl_authzid</a> (no)</b>
-              When authenticating to  a  SASL  server,  with  the
-              default  setting  "no",  send  no  authoriZation ID
-              (authzid); send only the authentiCation  ID  (auth-
-              cid) plus the authcid's password.
+              When authenticating to a remote SMTP or LMTP server
+              with  the default setting "no", send no SASL autho-
+              riZation ID (authzid); send only the SASL authenti-
+              Cation ID (authcid) plus the authcid's password.
 
 <b>MIME PROCESSING CONTROLS</b>
        Available in Postfix version 2.0 and later:
index 01f4b58dbb39a0497ea005502dec613930c07579..557a543c3b6a575956c854d4360efb503c20aa98 100644 (file)
@@ -41,19 +41,19 @@ SMTPD(8)                                                              SMTPD(8)
        SMTP server can be run chrooted at fixed low privilege.
 
 <b>STANDARDS</b>
-       <a href="http://www.faqs.org/rfcs/rfc821.html">RFC 821</a> (SMTP protocol)
-       <a href="http://www.faqs.org/rfcs/rfc1123.html">RFC 1123</a> (Host requirements)
-       <a href="http://www.faqs.org/rfcs/rfc1652.html">RFC 1652</a> (8bit-MIME transport)
-       <a href="http://www.faqs.org/rfcs/rfc1869.html">RFC 1869</a> (SMTP service extensions)
-       <a href="http://www.faqs.org/rfcs/rfc1870.html">RFC 1870</a> (Message Size Declaration)
-       <a href="http://www.faqs.org/rfcs/rfc1985.html">RFC 1985</a> (ETRN command)
-       <a href="http://www.faqs.org/rfcs/rfc2034.html">RFC 2034</a> (SMTP Enhanced Error Codes)
-       <a href="http://www.faqs.org/rfcs/rfc2554.html">RFC 2554</a> (AUTH command)
-       <a href="http://www.faqs.org/rfcs/rfc2821.html">RFC 2821</a> (SMTP protocol)
-       <a href="http://www.faqs.org/rfcs/rfc2920.html">RFC 2920</a> (SMTP Pipelining)
-       <a href="http://www.faqs.org/rfcs/rfc3207.html">RFC 3207</a> (STARTTLS command)
-       <a href="http://www.faqs.org/rfcs/rfc3461.html">RFC 3461</a> (SMTP DSN Extension)
-       <a href="http://www.faqs.org/rfcs/rfc3463.html">RFC 3463</a> (Enhanced Status Codes)
+       <a href="http://tools.ietf.org/html/rfc821">RFC 821</a> (SMTP protocol)
+       <a href="http://tools.ietf.org/html/rfc1123">RFC 1123</a> (Host requirements)
+       <a href="http://tools.ietf.org/html/rfc1652">RFC 1652</a> (8bit-MIME transport)
+       <a href="http://tools.ietf.org/html/rfc1869">RFC 1869</a> (SMTP service extensions)
+       <a href="http://tools.ietf.org/html/rfc1870">RFC 1870</a> (Message Size Declaration)
+       <a href="http://tools.ietf.org/html/rfc1985">RFC 1985</a> (ETRN command)
+       <a href="http://tools.ietf.org/html/rfc2034">RFC 2034</a> (SMTP Enhanced Error Codes)
+       <a href="http://tools.ietf.org/html/rfc2554">RFC 2554</a> (AUTH command)
+       <a href="http://tools.ietf.org/html/rfc2821">RFC 2821</a> (SMTP protocol)
+       <a href="http://tools.ietf.org/html/rfc2920">RFC 2920</a> (SMTP Pipelining)
+       <a href="http://tools.ietf.org/html/rfc3207">RFC 3207</a> (STARTTLS command)
+       <a href="http://tools.ietf.org/html/rfc3461">RFC 3461</a> (SMTP DSN Extension)
+       <a href="http://tools.ietf.org/html/rfc3463">RFC 3463</a> (Enhanced Status Codes)
 
 <b>DIAGNOSTICS</b>
        Problems and transactions are logged to <b>syslogd</b>(8).
@@ -78,7 +78,7 @@ SMTPD(8)                                                              SMTPD(8)
        <b><a href="postconf.5.html#broken_sasl_auth_clients">broken_sasl_auth_clients</a> (no)</b>
               Enable inter-operability  with  SMTP  clients  that
               implement  an  obsolete version of the AUTH command
-              (<a href="http://www.faqs.org/rfcs/rfc2554.html">RFC 2554</a>).
+              (<a href="http://tools.ietf.org/html/rfc2554">RFC 2554</a>).
 
        <b><a href="postconf.5.html#disable_vrfy_command">disable_vrfy_command</a> (no)</b>
               Disable the SMTP VRFY command.
@@ -91,7 +91,7 @@ SMTPD(8)                                                              SMTPD(8)
        <b><a href="postconf.5.html#strict_rfc821_envelopes">strict_rfc821_envelopes</a> (no)</b>
               Require that addresses received in SMTP  MAIL  FROM
               and RCPT TO commands are enclosed with &lt;&gt;, and that
-              those addresses do not contain <a href="http://www.faqs.org/rfcs/rfc822.html">RFC 822</a>  style  com-
+              those addresses do not contain <a href="http://tools.ietf.org/html/rfc822">RFC 822</a>  style  com-
               ments or phrases.
 
        Available in Postfix version 2.1 and later:
@@ -283,7 +283,7 @@ SMTPD(8)                                                              SMTPD(8)
               feature.
 
 <b>SASL AUTHENTICATION CONTROLS</b>
-       Postfix SASL support (<a href="http://www.faqs.org/rfcs/rfc2554.html">RFC 2554</a>) can be used  to  authenti-
+       Postfix SASL support (<a href="http://tools.ietf.org/html/rfc2554">RFC 2554</a>) can be used  to  authenti-
        cate  remote  SMTP clients to the Postfix SMTP server, and
        to authenticate the Postfix SMTP client to a  remote  SMTP
        server.  See the <a href="SASL_README.html">SASL_README</a> document for details.
@@ -291,7 +291,7 @@ SMTPD(8)                                                              SMTPD(8)
        <b><a href="postconf.5.html#broken_sasl_auth_clients">broken_sasl_auth_clients</a> (no)</b>
               Enable  inter-operability  with  SMTP  clients that
               implement an obsolete version of the  AUTH  command
-              (<a href="http://www.faqs.org/rfcs/rfc2554.html">RFC 2554</a>).
+              (<a href="http://tools.ietf.org/html/rfc2554">RFC 2554</a>).
 
        <b><a href="postconf.5.html#smtpd_sasl_auth_enable">smtpd_sasl_auth_enable</a> (no)</b>
               Enable  SASL  authentication  in  the  Postfix SMTP
index 5d8aef4d76482d4ba4e76930e09f03ebfa2c3b22..d62ce02c8177de59c7a9caafad6571ba33df1e8e 100644 (file)
@@ -43,12 +43,12 @@ BOUNCE(8)                                                            BOUNCE(8)
        on retry logic in their own client.
 
 <b>STANDARDS</b>
-       <a href="http://www.faqs.org/rfcs/rfc822.html">RFC 822</a> (ARPA Internet Text Messages)
-       <a href="http://www.faqs.org/rfcs/rfc2045.html">RFC 2045</a> (Format of Internet Message Bodies)
-       <a href="http://www.faqs.org/rfcs/rfc2822.html">RFC 2822</a> (ARPA Internet Text Messages)
-       <a href="http://www.faqs.org/rfcs/rfc3462.html">RFC 3462</a> (Delivery Status Notifications)
-       <a href="http://www.faqs.org/rfcs/rfc3464.html">RFC 3464</a> (Delivery Status Notifications)
-       <a href="http://www.faqs.org/rfcs/rfc3834.html">RFC 3834</a> (Auto-Submitted: message header)
+       <a href="http://tools.ietf.org/html/rfc822">RFC 822</a> (ARPA Internet Text Messages)
+       <a href="http://tools.ietf.org/html/rfc2045">RFC 2045</a> (Format of Internet Message Bodies)
+       <a href="http://tools.ietf.org/html/rfc2822">RFC 2822</a> (ARPA Internet Text Messages)
+       <a href="http://tools.ietf.org/html/rfc3462">RFC 3462</a> (Delivery Status Notifications)
+       <a href="http://tools.ietf.org/html/rfc3464">RFC 3464</a> (Delivery Status Notifications)
+       <a href="http://tools.ietf.org/html/rfc3834">RFC 3834</a> (Auto-Submitted: message header)
 
 <b>DIAGNOSTICS</b>
        Problems and transactions are logged to <b>syslogd</b>(8).
index 3d7e5268a1a1e7b48346f65ee9983a3606e1beea..7d1e21bdbe5770b66403bd9c748734e64ac8353d 100644 (file)
@@ -131,7 +131,7 @@ VIRTUAL(8)                                                          VIRTUAL(8)
        virtual delivery agent will terminate with a fatal  error.
 
 <b>STANDARDS</b>
-       <a href="http://www.faqs.org/rfcs/rfc822.html">RFC 822</a> (ARPA Internet Text Messages)
+       <a href="http://tools.ietf.org/html/rfc822">RFC 822</a> (ARPA Internet Text Messages)
 
 <b>DIAGNOSTICS</b>
        Mail bounces when the recipient has no mailbox or when the
index 0dabccf98f1621259105c4c08c8887314dddc8e0..21b4e06cad93bb4dc4cebed4290070fdeecbb834 100644 (file)
@@ -33,6 +33,9 @@ Postfix is built without IPv6 support.
 .IP \fB-6\fR
 Connect to the server with IPv6. This option is not available when
 Postfix is built without IPv6 support.
+.IP "\fB-A\fR"
+Don't abort when the server sends something other than the
+expected positive reply code.
 .IP \fB-c\fR
 Display a running counter that is incremented each time
 an SMTP DATA command completes.
@@ -46,6 +49,10 @@ Don't disconnect after sending a message; send the next
 message over the same connection.
 .IP "\fB-f \fIfrom\fR"
 Use the specified sender address (default: <foo@myhostname>).
+.IP "\fB-F \fIfile\fR"
+Send the pre-formatted message header and body in the
+specified \fIfile\fR, while prepending '.' before lines that
+begin with '.', and while appending CRLF after each line.
 .IP "\fB-l \fIlength\fR"
 Send \fIlength\fR bytes as message payload. The length does not
 include message headers.
@@ -69,15 +76,15 @@ Old mode: don't send HELO, and don't send message headers.
 Send the specified number of recipients per transaction (default: 1).
 Recipient names are generated by prepending a number to the
 recipient address.
+.IP "\fB-R \fIinterval\fR"
+Wait for a random period of time 0 <= n <= interval between messages.
+Suspending one thread does not affect other delivery threads.
 .IP "\fB-s \fIsession_count\fR"
 Run the specified number of SMTP sessions in parallel (default: 1).
 .IP "\fB-S \fIsubject\fR"
 Send mail with the named subject line (default: none).
 .IP "\fB-t \fIto\fR"
 Use the specified recipient address (default: <foo@myhostname>).
-.IP "\fB-R \fIinterval\fR"
-Wait for a random period of time 0 <= n <= interval between messages.
-Suspending one thread does not affect other delivery threads.
 .IP \fB-v\fR
 Make the program more verbose, for debugging purposes.
 .IP "\fB-w \fIinterval\fR"
index 678792d71e363603255a23327579eabf9c3d8530..6b5a4c9d47930961ccbc562d228ddebe29ae18bd 100644 (file)
@@ -3727,16 +3727,16 @@ This feature is available in Postfix 2.0 and later.
 .SH sample_directory (default: /etc/postfix)
 The name of the directory with example Postfix configuration files.
 .SH send_cyrus_sasl_authzid (default: no)
-When authenticating to a SASL server, with the default setting
-"no", send no authoriZation ID (authzid); send only the authentiCation
-ID (authcid) plus the authcid's password.
+When authenticating to a remote SMTP or LMTP server with the
+default setting "no", send no SASL authoriZation ID (authzid); send
+only the SASL authentiCation ID (authcid) plus the authcid's password.
 .PP
 The non-default setting "yes" enables the behavior of older
-Postfix versions.  These always send an authzid that is equal to
-the authcid, but this causes inter-operability problems with some
-SMTP servers.
+Postfix versions.  These always send a SASL authzid that is equal
+to the SASL authcid, but this causes inter-operability problems
+with some SMTP servers.
 .PP
-This feature is available in Postfix 2.5 and later.
+This feature is available in Postfix 2.4.4 and later.
 .SH sender_based_routing (default: no)
 This parameter should not be used. It was replaced by sender_dependent_relayhost_maps
 in Postfix version 2.3.
index 73932bae746b9d4c4f1e409a042127a9e5c709a7..dd49319f520a8cd88fa1b80fbb4c5a42c1894592 100644 (file)
@@ -227,11 +227,11 @@ A case insensitive list of LHLO keywords (pipelining, starttls,
 auth, etc.) that the LMTP client will ignore in the LHLO response
 from a remote LMTP server.
 .PP
-Available in Postfix version 2.5 and later:
+Available in Postfix version 2.4.4 and later:
 .IP "\fBsend_cyrus_sasl_authzid (no)\fR"
-When authenticating to a SASL server, with the default setting
-"no", send no authoriZation ID (authzid); send only the authentiCation
-ID (authcid) plus the authcid's password.
+When authenticating to a remote SMTP or LMTP server with the
+default setting "no", send no SASL authoriZation ID (authzid); send
+only the SASL authentiCation ID (authcid) plus the authcid's password.
 .SH "MIME PROCESSING CONTROLS"
 .na
 .nf
index cb3c162f63d6892cd8add4099181fc1dbd4826d9..ae6d162e6f6c0e06de07392a8694dc6723ce6bda 100755 (executable)
@@ -788,7 +788,7 @@ while (<>) {
 
     s/(http:\/\/[^ ,"\(\)]*[^ ,"\(\):;!?.])/<a href="$1">$1<\/a>/;
     s/(ftp:\/\/[^ ,"\(\)]*[^ ,"\(\):;!?.])/<a href="$1">$1<\/a>/;
-    s/\bRFC\s*([1-9]\d*)/<a href="http:\/\/www.faqs.org\/rfcs\/rfc$1.html">$&<\/a>/;
+    s/\bRFC\s*([1-9]\d*)/<a href="http:\/\/tools.ietf.org\/html\/rfc$1">$&<\/a>/;
 
     # Split README/RFC/parameter/restriction hyperlinks that span line breaks
 
index fd3441892079abebd5073a58bdb53a0b20d18139..161ad058f1d0cf7efda4e239fe8a81a617dec024 100644 (file)
@@ -239,7 +239,9 @@ SMTP server</a></h2>
 <pre>
 /etc/postfix/main.cf:
     smtpd_recipient_restrictions = 
-        permit_mynetworks permit_sasl_authenticated ...
+        permit_mynetworks 
+        permit_sasl_authenticated 
+        reject_unauth_destination
 </pre>
 </blockquote>
 
@@ -537,13 +539,13 @@ client is shown in bold font. </p>
 250-ETRN
 250-AUTH DIGEST-MD5 PLAIN CRAM-MD5
 250 8BITMIME
-<b>AUTH PLAIN dGVzdAB0ZXN0AHRlc3RwYXNz</b>
+<b>AUTH PLAIN AHRlc3QAdGVzdHBhc3M=</b>
 235 Authentication successful
 </pre>
 </blockquote>
 
-<p> Instead of dGVzdAB0ZXN0AHRlc3RwYXNz, specify the base64 encoded
-form of username\0username\0password (the \0 is a null byte). The
+<p> Instead of AHRlc3QAdGVzdHBhc3M=, specify the base64 encoded
+form of \0username\0password (the \0 is a null byte). The
 example above is for a user named `test' with password `testpass'.
 </p>
 
@@ -552,14 +554,14 @@ you can use one of the following commands: </p>
 
 <blockquote>
 <pre>
-% printf 'username\0username\0password' | mmencode 
+% printf '\0username\0password' | mmencode 
 </pre>
 </blockquote>
 
 <blockquote>
 <pre>
 % perl -MMIME::Base64 -e \
-    'print encode_base64("username\0username\0password");'
+    'print encode_base64("\0username\0password");'
 </pre>
 </blockquote>
 
index 5a72ba8ad8435116b6e3ee84b80f4c697f18f1f5..cd412cf9eac09564f9c05a7119c8e4b7e0cf2610 100644 (file)
@@ -10606,13 +10606,14 @@ behavior was hard-coded to be "always on".  </p>
 
 %PARAM send_cyrus_sasl_authzid no
 
-<p> When authenticating to a SASL server, with the default setting
-"no", send no authoriZation ID (authzid); send only the authentiCation
-ID (authcid) plus the authcid's password. </p>
+<p> When authenticating to a remote SMTP or LMTP server with the
+default setting "no", send no SASL authoriZation ID (authzid); send
+only the SASL authentiCation ID (authcid) plus the authcid's password.
+</p>
 
 <p> The non-default setting "yes" enables the behavior of older
-Postfix versions.  These always send an authzid that is equal to
-the authcid, but this causes inter-operability problems with some
-SMTP servers. </p>
+Postfix versions.  These always send a SASL authzid that is equal
+to the SASL authcid, but this causes inter-operability problems
+with some SMTP servers. </p>
 
-<p> This feature is available in Postfix 2.5 and later. </p>
+<p> This feature is available in Postfix 2.4.4 and later. </p>
index d7f9c0f56164aa625e5230d31cf78d7b4af2820b..ad77418410b7d75686ef5f119f45ab7a26829155 100644 (file)
@@ -41,9 +41,12 @@ extern bool var_show_unk_rcpt_table;
   * What problem classes should be reported to the postmaster via email.
   * Default is bad problems only. See mail_error(3). Even when mail notices
   * are disabled, problems are still logged to the syslog daemon.
+  * 
+  * Do not add "protocol" to the default setting. It gives Postfix a bad
+  * reputation: people get mail whenever spam software makes a mistake.
   */
 #define VAR_NOTIFY_CLASSES     "notify_classes"
-#define DEF_NOTIFY_CLASSES     "resource, software"
+#define DEF_NOTIFY_CLASSES     "resource, software"    /* Not: "protocol" */
 extern char *var_notify_classes;
 
  /*
index 9285ed049304dbcc3ab0306d7a71279f5437c92f..a6a413364915dc1682ecf97281c3675bf2c178d1 100644 (file)
@@ -20,7 +20,7 @@
   * Patches change both the patchlevel and the release date. Snapshots have no
   * patchlevel; they change the release date only.
   */
-#define MAIL_RELEASE_DATE      "20070614"
+#define MAIL_RELEASE_DATE      "20070720"
 #define MAIL_VERSION_NUMBER    "2.5"
 
 #ifdef SNAPSHOT
index a3b2e364e3d54364aed07ddce5eda7d6db593c7f..2753d7c4b9443bab8681602ce3818de9e4bd29f3 100644 (file)
 #include <string.h>
 #include <stdarg.h>
 
+#ifndef SHUT_RDWR
+#define SHUT_RDWR      2
+#endif
+
 /* Sendmail 8 Milter protocol. */
 
 #ifdef USE_LIBMILTER_INCLUDES
@@ -437,7 +441,22 @@ static int milter8_conf_error(MILTER8 *milter)
 {
     const char *reply;
 
+    /*
+     * While reading the following, keep in mind that a client-side Milter
+     * socket is shared between the Postfix SMTP server and the cleanup
+     * server. The SMTP server reports only the SMTP events to the Milter.
+     * The cleanup server reports the headers and body to the Milter, and
+     * receives the header or body modification requests from the Milter.
+     * 
+     * XXX When the cleanup server closes its end of the Milter socket after
+     * some local/remote configuration error, the SMTP server is left out of
+     * sync with the Milter. Sending an ABORT to the Milters will not restore
+     * synchronization, because there may be any number of Milter replies
+     * already in flight. Workaround: poison the socket and force the SMTP
+     * server to abandon it.
+     */
     if (milter->fp != 0) {
+       (void) shutdown(vstream_fileno(milter->fp), SHUT_RDWR);
        (void) vstream_fclose(milter->fp);
        milter->fp = 0;
     }
@@ -456,7 +475,22 @@ static int milter8_comm_error(MILTER8 *milter)
 {
     const char *reply;
 
+    /*
+     * While reading the following, keep in mind that a client-side Milter
+     * socket is shared between the Postfix SMTP server and the cleanup
+     * server. The SMTP server reports only the SMTP events to the Milter.
+     * The cleanup server reports the headers and body to the Milter, and
+     * receives the header or body modification requests from the Milter.
+     * 
+     * XXX When the cleanup server closes its end of the Milter socket after
+     * some local or remote remote protocol error, the SMTP server is left
+     * out of sync with the Milter. Sending an ABORT to the Milters will not
+     * restore synchronization, because there may be any number of Milter
+     * replies already in flight. Workaround: poison the socket and force the
+     * SMTP server to abandon it.
+     */
     if (milter->fp != 0) {
+       (void) shutdown(vstream_fileno(milter->fp), SHUT_RDWR);
        (void) vstream_fclose(milter->fp);
        milter->fp = 0;
     }
@@ -475,28 +509,6 @@ static int milter8_comm_error(MILTER8 *milter)
     return (milter->state = MILTER8_STAT_ERROR);
 }
 
-/* milter8_edit_error - local queue file update error */
-
-static void milter8_edit_error(MILTER8 *milter, const char *reply)
-{
-
-    /*
-     * Close the socket, so we don't have to skip pending replies from this
-     * Milter instance.
-     */
-    if (milter->fp != 0) {
-       (void) vstream_fclose(milter->fp);
-       milter->fp = 0;
-    }
-
-    /*
-     * Set the socket state to ERROR, so we don't try to send further MTA
-     * events to this Milter instance.
-     */
-    milter8_def_reply(milter, reply);
-    milter->state = MILTER8_STAT_ERROR;
-}
-
 /* milter8_close_stream - close stream to milter application */
 
 static void milter8_close_stream(MILTER8 *milter)
@@ -895,6 +907,7 @@ static const char *milter8_event(MILTER8 *milter, int event,
     const char *retval = 0;
     VSTRING *body_line_buf = 0;
     int     done = 0;
+    int     body_edit_lockout = 0;
 
 #define DONT_SKIP_REPLY        0
 
@@ -1000,6 +1013,22 @@ static const char *milter8_event(MILTER8 *milter, int event,
      * processing.
      * 
      * XXX Bound the loop iteration count.
+     * 
+     * While reading the following, keep in mind that a client-side Milter
+     * socket is shared between the Postfix SMTP server and the cleanup
+     * server. The SMTP server reports only the SMTP events to the Milter.
+     * The cleanup server reports the headers and body to the Milter, and
+     * receives the header or body modification requests from the Milter.
+     * 
+     * In the end-of-body stage, the Milter may reply with one or more queue
+     * file edit requests before it replies with its final decision: accept,
+     * reject, etc. After a local queue file edit error, do not close the
+     * Milter socket in the cleanup server. Instead skip all further Milter
+     * replies until the final decision. This way the Postfix SMTP server
+     * stays in sync with the Milter, and Postfix doesn't have to lose the
+     * ability to handle multiple deliveries within the same SMTP session.
+     * This requires that the Postfix SMTP server uses something other than
+     * CLEANUP_STAT_WRITE when it loses contact with the cleanup server.
      */
 #define IN_CONNECT_EVENT(e) ((e) == SMFIC_CONNECT || (e) == SMFIC_HELO)
 
@@ -1027,10 +1056,18 @@ static const char *milter8_event(MILTER8 *milter, int event,
 
        /*
         * Handle unfinished message body replacement first.
+        * 
+        * XXX When SMFIR_REPLBODY is followed by some different request, we
+        * assume that the body replacement operation is complete. The queue
+        * file editing implementation currently does not support sending
+        * part 1 of the body replacement text, doing some other queue file
+        * updates, and then sending part 2 of the body replacement text. To
+        * avoid loss of data, we log an error when SMFIR_REPLBODY requests
+        * are alternated with other requests.
         */
        if (body_line_buf != 0 && cmd != SMFIR_REPLBODY) {
            /* In case the last body replacement line didn't end in CRLF. */
-           if (LEN(body_line_buf) > 0)
+           if (edit_resp == 0 && LEN(body_line_buf) > 0)
                edit_resp = parent->repl_body(parent->chg_context,
                                              MILTER_BODY_LINE,
                                              body_line_buf);
@@ -1038,10 +1075,7 @@ static const char *milter8_event(MILTER8 *milter, int event,
                edit_resp = parent->repl_body(parent->chg_context,
                                              MILTER_BODY_END,
                                              (VSTRING *) 0);
-           if (edit_resp) {
-               milter8_edit_error(milter, edit_resp);
-               MILTER8_EVENT_BREAK(milter->def_reply);
-           }
+           body_edit_lockout = 1;
            vstring_free(body_line_buf);
            body_line_buf = 0;
        }
@@ -1095,7 +1129,6 @@ static const char *milter8_event(MILTER8 *milter, int event,
            if (IN_CONNECT_EVENT(event)) {
                msg_warn("milter %s: DISCARD action is not allowed "
                         "for connect or helo", milter->m.name);
-               milter8_conf_error(milter);
                MILTER8_EVENT_BREAK(milter->def_reply);
            } else {
                /* No more events for this message. */
@@ -1231,6 +1264,9 @@ static const char *milter8_event(MILTER8 *milter, int event,
                                          MILTER8_DATA_STRING, milter->body,
                                          MILTER8_DATA_END) != 0)
                        MILTER8_EVENT_BREAK(milter->def_reply);
+                   /* Skip to the next request after previous edit error. */
+                   if (edit_resp)
+                       continue;
                    /* XXX Sendmail 8 compatibility. */
                    if (index == 0)
                        index = 1;
@@ -1255,10 +1291,6 @@ static const char *milter8_event(MILTER8 *milter, int event,
                        edit_resp = parent->del_header(parent->chg_context,
                                                       (ssize_t) index,
                                                       STR(milter->buf));
-                   if (edit_resp) {
-                       milter8_edit_error(milter, edit_resp);
-                       MILTER8_EVENT_BREAK(milter->def_reply);
-                   }
                    continue;
 #endif
 
@@ -1271,13 +1303,12 @@ static const char *milter8_event(MILTER8 *milter, int event,
                                          MILTER8_DATA_STRING, milter->body,
                                          MILTER8_DATA_END) != 0)
                        MILTER8_EVENT_BREAK(milter->def_reply);
+                   /* Skip to the next request after previous edit error. */
+                   if (edit_resp)
+                       continue;
                    edit_resp = parent->add_header(parent->chg_context,
                                                   STR(milter->buf),
                                                   STR(milter->body));
-                   if (edit_resp) {
-                       milter8_edit_error(milter, edit_resp);
-                       MILTER8_EVENT_BREAK(milter->def_reply);
-                   }
                    continue;
 
                    /*
@@ -1294,6 +1325,9 @@ static const char *milter8_event(MILTER8 *milter, int event,
                                          MILTER8_DATA_STRING, milter->body,
                                          MILTER8_DATA_END) != 0)
                        MILTER8_EVENT_BREAK(milter->def_reply);
+                   /* Skip to the next request after previous edit error. */
+                   if (edit_resp)
+                       continue;
                    if ((ssize_t) index + 1 < 1) {
                        msg_warn("milter %s: bad insert header index: %ld",
                                 milter->m.name, (long) index);
@@ -1304,10 +1338,6 @@ static const char *milter8_event(MILTER8 *milter, int event,
                                                   (ssize_t) index + 1,
                                                   STR(milter->buf),
                                                   STR(milter->body));
-                   if (edit_resp) {
-                       milter8_edit_error(milter, edit_resp);
-                       MILTER8_EVENT_BREAK(milter->def_reply);
-                   }
                    continue;
 #endif
 
@@ -1319,12 +1349,11 @@ static const char *milter8_event(MILTER8 *milter, int event,
                                          MILTER8_DATA_STRING, milter->buf,
                                          MILTER8_DATA_END) != 0)
                        MILTER8_EVENT_BREAK(milter->def_reply);
+                   /* Skip to the next request after previous edit error. */
+                   if (edit_resp)
+                       continue;
                    edit_resp = parent->add_rcpt(parent->chg_context,
                                                 STR(milter->buf));
-                   if (edit_resp) {
-                       milter8_edit_error(milter, edit_resp);
-                       MILTER8_EVENT_BREAK(milter->def_reply);
-                   }
                    continue;
 
                    /*
@@ -1335,12 +1364,11 @@ static const char *milter8_event(MILTER8 *milter, int event,
                                          MILTER8_DATA_STRING, milter->buf,
                                          MILTER8_DATA_END) != 0)
                        MILTER8_EVENT_BREAK(milter->def_reply);
+                   /* Skip to the next request after previous edit error. */
+                   if (edit_resp)
+                       continue;
                    edit_resp = parent->del_rcpt(parent->chg_context,
                                                 STR(milter->buf));
-                   if (edit_resp) {
-                       milter8_edit_error(milter, edit_resp);
-                       MILTER8_EVENT_BREAK(milter->def_reply);
-                   }
                    continue;
 
                    /*
@@ -1348,10 +1376,20 @@ static const char *milter8_event(MILTER8 *milter, int event,
                     * update the message size.
                     */
                case SMFIR_REPLBODY:
+                   if (body_edit_lockout) {
+                       msg_warn("milter %s: body replacement requests can't "
+                                "currently be mixed with other requests",
+                                milter->m.name);
+                       milter8_conf_error(milter);
+                       MILTER8_EVENT_BREAK(milter->def_reply);
+                   }
                    if (milter8_read_data(milter, data_size,
                                          MILTER8_DATA_BUFFER, milter->body,
                                          MILTER8_DATA_END) != 0)
                        MILTER8_EVENT_BREAK(milter->def_reply);
+                   /* Skip to the next request after previous edit error. */
+                   if (edit_resp)
+                       continue;
                    /* Start body replacement. */
                    if (body_line_buf == 0) {
                        body_line_buf = vstring_alloc(var_line_limit);
@@ -1376,10 +1414,6 @@ static const char *milter8_event(MILTER8 *milter, int event,
                            VSTRING_ADDCH(body_line_buf, ch);
                        }
                    }
-                   if (edit_resp) {
-                       milter8_edit_error(milter, edit_resp);
-                       MILTER8_EVENT_BREAK(milter->def_reply);
-                   }
                    continue;
                }
            }
@@ -1410,6 +1444,15 @@ static const char *milter8_event(MILTER8 *milter, int event,
     if (body_line_buf)
        vstring_free(body_line_buf);
 
+    /*
+     * XXX Some cleanup clients ask the cleanup server to bounce mail for
+     * them. In that case we must override a hard reject retval result after
+     * queue file update failure. This is not a big problem; the odds are
+     * small that a Milter application sends a hard reject after replacing
+     * the message body.
+     */
+    if (edit_resp && (retval == 0 || strchr("DS4", retval[0]) == 0))
+       retval = edit_resp;
     return (retval);
 }
 
index 62c4bb6b322ef848d922d3705a12cb0e64a35dcd..d4cef7a7c6122eee8e6b411a7c2bce635f8f3f8e 100644 (file)
@@ -1,49 +1,49 @@
 # Reject with text 
-./test-milter -C 1 -a "554 5.7.1 1% 2%% 3%%%" -c connect -p inet:9999@127.0.0.1
-./test-milter -C 1 -a "554 5.7.1 1% 2%% 3%%%" -c helo -p inet:9999@127.0.0.1
-./test-milter -C 1 -a "554 5.7.1 1% 2%% 3%%%" -c mail -p inet:9999@127.0.0.1
-./test-milter -C 1 -a "554 5.7.1 1% 2%% 3%%%" -c rcpt -p inet:9999@127.0.0.1
-./test-milter -C 1 -a "554 5.7.1 1% 2%% 3%%%" -c header -p inet:9999@127.0.0.1
-./test-milter -C 1 -a "554 5.7.1 1% 2%% 3%%%" -c eoh -p inet:9999@127.0.0.1
-./test-milter -C 1 -a "554 5.7.1 1% 2%% 3%%%" -c body -p inet:9999@127.0.0.1
-./test-milter -C 1 -a "554 5.7.1 1% 2%% 3%%%" -c eom -p inet:9999@127.0.0.1
+./test-milter -C 1 -a "554 5.7.1 1% 2%% 3%%%" -c connect -p inet:9999@0.0.0.0
+./test-milter -C 1 -a "554 5.7.1 1% 2%% 3%%%" -c helo -p inet:9999@0.0.0.0
+./test-milter -C 1 -a "554 5.7.1 1% 2%% 3%%%" -c mail -p inet:9999@0.0.0.0
+./test-milter -C 1 -a "554 5.7.1 1% 2%% 3%%%" -c rcpt -p inet:9999@0.0.0.0
+./test-milter -C 1 -a "554 5.7.1 1% 2%% 3%%%" -c header -p inet:9999@0.0.0.0
+./test-milter -C 1 -a "554 5.7.1 1% 2%% 3%%%" -c eoh -p inet:9999@0.0.0.0
+./test-milter -C 1 -a "554 5.7.1 1% 2%% 3%%%" -c body -p inet:9999@0.0.0.0
+./test-milter -C 1 -a "554 5.7.1 1% 2%% 3%%%" -c eom -p inet:9999@0.0.0.0
 
 # Tempfail tests
-./test-milter -C 1 -a tempfail -c connect -p inet:9999@127.0.0.1
-./test-milter -C 1 -a tempfail -c helo -p inet:9999@127.0.0.1
-./test-milter -C 1 -a tempfail -c mail -p inet:9999@127.0.0.1
-./test-milter -C 1 -a tempfail -c rcpt -p inet:9999@127.0.0.1
-./test-milter -C 1 -a tempfail -c header -p inet:9999@127.0.0.1
-./test-milter -C 1 -a tempfail -c eoh -p inet:9999@127.0.0.1
-./test-milter -C 1 -a tempfail -c body -p inet:9999@127.0.0.1
-./test-milter -C 1 -a tempfail -c eom -p inet:9999@127.0.0.1
+./test-milter -C 1 -a tempfail -c connect -p inet:9999@0.0.0.0
+./test-milter -C 1 -a tempfail -c helo -p inet:9999@0.0.0.0
+./test-milter -C 1 -a tempfail -c mail -p inet:9999@0.0.0.0
+./test-milter -C 1 -a tempfail -c rcpt -p inet:9999@0.0.0.0
+./test-milter -C 1 -a tempfail -c header -p inet:9999@0.0.0.0
+./test-milter -C 1 -a tempfail -c eoh -p inet:9999@0.0.0.0
+./test-milter -C 1 -a tempfail -c body -p inet:9999@0.0.0.0
+./test-milter -C 1 -a tempfail -c eom -p inet:9999@0.0.0.0
 
 # Reject tests
-./test-milter -C 1 -a reject -c connect -p inet:9999@127.0.0.1
-./test-milter -C 1 -a reject -c helo -p inet:9999@127.0.0.1
-./test-milter -C 1 -a reject -c mail -p inet:9999@127.0.0.1
-./test-milter -C 1 -a reject -c rcpt -p inet:9999@127.0.0.1
-./test-milter -C 1 -a reject -c header -p inet:9999@127.0.0.1
-./test-milter -C 1 -a reject -c eoh -p inet:9999@127.0.0.1
-./test-milter -C 1 -a reject -c body -p inet:9999@127.0.0.1
-./test-milter -C 1 -a reject -c eom -p inet:9999@127.0.0.1
+./test-milter -C 1 -a reject -c connect -p inet:9999@0.0.0.0
+./test-milter -C 1 -a reject -c helo -p inet:9999@0.0.0.0
+./test-milter -C 1 -a reject -c mail -p inet:9999@0.0.0.0
+./test-milter -C 1 -a reject -c rcpt -p inet:9999@0.0.0.0
+./test-milter -C 1 -a reject -c header -p inet:9999@0.0.0.0
+./test-milter -C 1 -a reject -c eoh -p inet:9999@0.0.0.0
+./test-milter -C 1 -a reject -c body -p inet:9999@0.0.0.0
+./test-milter -C 1 -a reject -c eom -p inet:9999@0.0.0.0
 
 # Accept tests
-./test-milter -C 1 -a accept -c connect -p inet:9999@127.0.0.1
-./test-milter -C 1 -a accept -c helo -p inet:9999@127.0.0.1
-./test-milter -C 1 -a accept -c rcpt -p inet:9999@127.0.0.1
-./test-milter -C 1 -a accept -c mail -p inet:9999@127.0.0.1
-./test-milter -C 1 -a accept -c header -p inet:9999@127.0.0.1
-./test-milter -C 1 -a accept -c eoh -p inet:9999@127.0.0.1
-./test-milter -C 1 -a accept -c body -p inet:9999@127.0.0.1
-./test-milter -C 1 -a accept -c eom -p inet:9999@127.0.0.1
+./test-milter -C 1 -a accept -c connect -p inet:9999@0.0.0.0
+./test-milter -C 1 -a accept -c helo -p inet:9999@0.0.0.0
+./test-milter -C 1 -a accept -c rcpt -p inet:9999@0.0.0.0
+./test-milter -C 1 -a accept -c mail -p inet:9999@0.0.0.0
+./test-milter -C 1 -a accept -c header -p inet:9999@0.0.0.0
+./test-milter -C 1 -a accept -c eoh -p inet:9999@0.0.0.0
+./test-milter -C 1 -a accept -c body -p inet:9999@0.0.0.0
+./test-milter -C 1 -a accept -c eom -p inet:9999@0.0.0.0
 
 # discard tests
-./test-milter -C 1 -a discard -c connect -p inet:9999@127.0.0.1
-./test-milter -C 1 -a discard -c helo -p inet:9999@127.0.0.1
-./test-milter -C 1 -a discard -c rcpt -p inet:9999@127.0.0.1
-./test-milter -C 1 -a discard -c mail -p inet:9999@127.0.0.1
-./test-milter -C 1 -a discard -c header -p inet:9999@127.0.0.1
-./test-milter -C 1 -a discard -c eoh -p inet:9999@127.0.0.1
-./test-milter -C 1 -a discard -c body -p inet:9999@127.0.0.1
-./test-milter -C 1 -a discard -c eom -p inet:9999@127.0.0.1
+./test-milter -C 1 -a discard -c connect -p inet:9999@0.0.0.0
+./test-milter -C 1 -a discard -c helo -p inet:9999@0.0.0.0
+./test-milter -C 1 -a discard -c rcpt -p inet:9999@0.0.0.0
+./test-milter -C 1 -a discard -c mail -p inet:9999@0.0.0.0
+./test-milter -C 1 -a discard -c header -p inet:9999@0.0.0.0
+./test-milter -C 1 -a discard -c eoh -p inet:9999@0.0.0.0
+./test-milter -C 1 -a discard -c body -p inet:9999@0.0.0.0
+./test-milter -C 1 -a discard -c eom -p inet:9999@0.0.0.0
index 6b6d6791cdf941cd097e4ce0383fa61396666319..701e8fe90dce8e81e4b4002bec7f57c9ee8279f6 100644 (file)
 /*     auth, etc.) that the LMTP client will ignore in the LHLO response
 /*     from a remote LMTP server.
 /* .PP
-/*     Available in Postfix version 2.5 and later:
+/*     Available in Postfix version 2.4.4 and later:
 /* .IP "\fBsend_cyrus_sasl_authzid (no)\fR"
-/*     When authenticating to a SASL server, with the default setting
-/*     "no", send no authoriZation ID (authzid); send only the authentiCation
-/*     ID (authcid) plus the authcid's password.
+/*     When authenticating to a remote SMTP or LMTP server with the
+/*     default setting "no", send no SASL authoriZation ID (authzid); send
+/*     only the SASL authentiCation ID (authcid) plus the authcid's password.
 /* MIME PROCESSING CONTROLS
 /* .ad
 /* .fi
index 4bcab36d894ad1aeed5757619205ebf4cae0b0f1..44d0246a9e090fb7ea739bd141cae195fdc761da 100644 (file)
@@ -2068,7 +2068,8 @@ static int mail_cmd(SMTPD_STATE *state, int argc, SMTPD_TOKEN *argv)
      * Check the queue file space, if applicable.
      */
     if (!USE_SMTPD_PROXY(state)) {
-       if ((err = smtpd_check_queue(state)) != 0) {
+       if (SMTPD_STAND_ALONE(state) == 0
+           && (err = smtpd_check_queue(state)) != 0) {
            /* XXX Reset access map side effects. */
            mail_reset(state);
            smtpd_chat_reply(state, "%s", err);
@@ -2758,6 +2759,25 @@ static int data_cmd(SMTPD_STATE *state, int argc, SMTPD_TOKEN *unused_argv)
        state->cleanup = 0;
     }
 
+    /*
+     * XXX If we lost the cleanup server, the Postfix SMTP server will be out
+     * of sync with Milter applications. Sending an ABORT to the Milters is
+     * not sufficient to restore synchronization, because there may be any
+     * number of Milter replies already in flight. Destroying and recreating
+     * the Milters (and faking the connect and ehlo events) is too much
+     * trouble for testing and maintenance. Workaround: force the Postfix
+     * SMTP server to hang up with a 421 response in the rare case that the
+     * cleanup server breaks AND that the remote SMTP client continues the
+     * session after end-of-data.
+     * 
+     * XXX Should use something other than CLEANUP_STAT_WRITE when we lose
+     * contact with the cleanup server. This requires internal changes to the
+     * mail_stream module; these may affect other mail_stream_service() users
+     * (qmqpd, sendmail, ...).
+     */
+    if (smtpd_milters != 0 && (state->err & CLEANUP_STAT_WRITE) != 0)
+       state->access_denied = mystrdup("421 4.3.0 Mail system error");
+
     /*
      * Handle any errors. One message may suffer from multiple errors, so
      * complain only about the most severe error. Forgive any previous client
@@ -4208,6 +4228,17 @@ static void pre_jail_init(char *unused_name, char **unused_argv)
     xclient_hosts = namadr_list_init(MATCH_FLAG_NONE, var_xclient_hosts);
     xforward_hosts = namadr_list_init(MATCH_FLAG_NONE, var_xforward_hosts);
     hogger_list = namadr_list_init(MATCH_FLAG_NONE, var_smtpd_hoggers);
+
+    /*
+     * Open maps before dropping privileges so we can read passwords etc.
+     * 
+     * XXX We should not do this in stand-alone (sendmail -bs) mode, but we
+     * can't use SMTPD_STAND_ALONE(state) here. This means "sendmail -bs"
+     * will try to connect to proxymap when invoked by root for mail
+     * submission. To fix, we would have to pass stand-alone mode information
+     * via different means. For now we have to tell people not to run mail
+     * clients as root.
+     */
     if (getuid() == 0 || getuid() == var_owner_uid)
        smtpd_check_init();
     debug_peer_init();
index 52306cf8c9017ed946119e05587365ef250f2305..2bd61592d13d25bb04cc367c7947cc0973a72b14 100644 (file)
@@ -27,6 +27,9 @@
 /* .IP \fB-6\fR
 /*     Connect to the server with IPv6. This option is not available when
 /*     Postfix is built without IPv6 support.
+/* .IP "\fB-A\fR"
+/*     Don't abort when the server sends something other than the
+/*     expected positive reply code.
 /* .IP \fB-c\fR
 /*     Display a running counter that is incremented each time
 /*     an SMTP DATA command completes.
 /*     message over the same connection.
 /* .IP "\fB-f \fIfrom\fR"
 /*     Use the specified sender address (default: <foo@myhostname>).
+/* .IP "\fB-F \fIfile\fR"
+/*     Send the pre-formatted message header and body in the
+/*     specified \fIfile\fR, while prepending '.' before lines that
+/*     begin with '.', and while appending CRLF after each line.
 /* .IP "\fB-l \fIlength\fR"
 /*     Send \fIlength\fR bytes as message payload. The length does not
 /*     include message headers.
 /*     Send the specified number of recipients per transaction (default: 1).
 /*     Recipient names are generated by prepending a number to the
 /*     recipient address.
+/* .IP "\fB-R \fIinterval\fR"
+/*     Wait for a random period of time 0 <= n <= interval between messages.
+/*     Suspending one thread does not affect other delivery threads.
 /* .IP "\fB-s \fIsession_count\fR"
 /*     Run the specified number of SMTP sessions in parallel (default: 1).
 /* .IP "\fB-S \fIsubject\fR"
 /*     Send mail with the named subject line (default: none).
 /* .IP "\fB-t \fIto\fR"
 /*     Use the specified recipient address (default: <foo@myhostname>).
-/* .IP "\fB-R \fIinterval\fR"
-/*     Wait for a random period of time 0 <= n <= interval between messages.
-/*     Suspending one thread does not affect other delivery threads.
 /* .IP \fB-v\fR
 /*     Make the program more verbose, for debugging purposes.
 /* .IP "\fB-w \fIinterval\fR"
@@ -154,6 +161,7 @@ typedef struct SESSION {
     int     xfer_count;                        /* # of xfers in session */
     int     rcpt_done;                 /* # of recipients done */
     int     rcpt_count;                        /* # of recipients to go */
+    int     rcpt_accepted;             /* # of recipients accepted */
     VSTREAM *stream;                   /* open connection */
     int     connect_count;             /* # of connect()s to retry */
     struct SESSION *next;              /* connect() queue linkage */
@@ -199,6 +207,7 @@ static int fixed_delay = 0;
 static int talk_lmtp = 0;
 static char *subject = 0;
 static int number_rcpts = 0;
+static int allow_reject = 0;
 
 static void enqueue_connect(SESSION *);
 static void start_connect(SESSION *);
@@ -213,6 +222,8 @@ static void rcpt_done(int, char *);
 static void send_data(int, char *);
 static void data_done(int, char *);
 static void dot_done(int, char *);
+static void send_rset(int, char *);
+static void rset_done(int, char *);
 static void send_quit(SESSION *);
 static void quit_done(int, char *);
 
@@ -492,8 +503,13 @@ static void read_banner(int unused_event, char *context)
     /*
      * Read and parse the server's SMTP greeting banner.
      */
-    if (((resp = response(session->stream, buffer))->code / 100) != 2)
-       msg_fatal("bad startup: %d %s", resp->code, resp->str);
+    if (((resp = response(session->stream, buffer))->code / 100) == 2) {
+        /* void */ ;
+    } else if (allow_reject) {
+       msg_warn("rejected at server banner: %d %s", resp->code, resp->str);
+    } else {
+       msg_fatal("rejected at server banner: %d %s", resp->code, resp->str);
+    }
 
     /*
      * Send helo or send the envelope sender address.
@@ -540,8 +556,13 @@ static void helo_done(int unused_event, char *context)
     if ((except = vstream_setjmp(session->stream)) != 0)
        msg_fatal("%s while sending %s", exception_text(except), protocol);
 
-    if ((resp = response(session->stream, buffer))->code / 100 != 2)
+    if ((resp = response(session->stream, buffer))->code / 100 == 2) {
+        /* void */ ;
+    } else if (allow_reject) {
+       msg_warn("%s rejected: %d %s", protocol, resp->code, resp->str);
+    } else {
        msg_fatal("%s rejected: %d %s", protocol, resp->code, resp->str);
+    }
 
     send_mail(session);
 }
@@ -580,12 +601,17 @@ static void mail_done(int unused, char *context)
     if ((except = vstream_setjmp(session->stream)) != 0)
        msg_fatal("%s while sending sender", exception_text(except));
 
-    if ((resp = response(session->stream, buffer))->code / 100 != 2)
+    if ((resp = response(session->stream, buffer))->code / 100 == 2) {
+       session->rcpt_count = recipients;
+       session->rcpt_done = 0;
+       session->rcpt_accepted = 0;
+       send_rcpt(unused, context);
+    } else if (allow_reject) {
+       msg_warn("sender rejected: %d %s", resp->code, resp->str);
+       send_rset(unused, context);
+    } else {
        msg_fatal("sender rejected: %d %s", resp->code, resp->str);
-
-    session->rcpt_count = recipients;
-    session->rcpt_done = 0;
-    send_rcpt(unused, context);
+    }
 }
 
 /* send_rcpt - send recipient address */
@@ -630,16 +656,23 @@ static void rcpt_done(int unused, char *context)
     if ((except = vstream_setjmp(session->stream)) != 0)
        msg_fatal("%s while sending recipient", exception_text(except));
 
-    if ((resp = response(session->stream, buffer))->code / 100 != 2)
+    if ((resp = response(session->stream, buffer))->code / 100 == 2) {
+       session->rcpt_accepted++;
+    } else if (allow_reject) {
+       msg_warn("recipient rejected: %d %s", resp->code, resp->str);
+    } else {
        msg_fatal("recipient rejected: %d %s", resp->code, resp->str);
+    }
 
     /*
      * Send another RCPT command or send DATA.
      */
     if (session->rcpt_count > 0)
        send_rcpt(unused, context);
-    else
+    else if (session->rcpt_accepted > 0)
        send_data(unused, context);
+    else
+       send_rset(unused, context);
 }
 
 /* send_data - send DATA command */
@@ -664,7 +697,7 @@ static void send_data(int unused_event, char *context)
 
 /* data_done - send message content */
 
-static void data_done(int unused_event, char *context)
+static void data_done(int unused, char *context)
 {
     SESSION *session = (SESSION *) context;
     RESPONSE *resp;
@@ -677,8 +710,15 @@ static void data_done(int unused_event, char *context)
      */
     if ((except = vstream_setjmp(session->stream)) != 0)
        msg_fatal("%s while sending DATA command", exception_text(except));
-    if ((resp = response(session->stream, buffer))->code != 354)
-       msg_fatal("data %d %s", resp->code, resp->str);
+    if ((resp = response(session->stream, buffer))->code == 354) {
+        /* see below */ ;
+    } else if (allow_reject) {
+       msg_warn("data rejected: %d %s", resp->code, resp->str);
+       send_rset(unused, context);
+       return;
+    } else {
+       msg_fatal("data rejected: %d %s", resp->code, resp->str);
+    }
 
     /*
      * Send basic header to keep mailers that bother to examine them happy.
@@ -737,7 +777,7 @@ static void data_done(int unused_event, char *context)
     event_enable_read(vstream_fileno(session->stream), dot_done, (char *) session);
 }
 
-/* dot_done - send QUIT */
+/* dot_done - send QUIT or start another transaction */
 
 static void dot_done(int unused_event, char *context)
 {
@@ -751,8 +791,13 @@ static void dot_done(int unused_event, char *context)
     if ((except = vstream_setjmp(session->stream)) != 0)
        msg_fatal("%s while sending message", exception_text(except));
     do {                                       /* XXX this could block */
-       if ((resp = response(session->stream, buffer))->code / 100 != 2)
-           msg_fatal("data %d %s", resp->code, resp->str);
+       if ((resp = response(session->stream, buffer))->code / 100 == 2) {
+            /* void */ ;
+       } else if (allow_reject) {
+           msg_warn("end of data rejected: %d %s", resp->code, resp->str);
+       } else {
+           msg_fatal("end of data rejected: %d %s", resp->code, resp->str);
+       }
     } while (talk_lmtp && --session->rcpt_done > 0);
     session->xfer_count++;
 
@@ -767,6 +812,48 @@ static void dot_done(int unused_event, char *context)
     }
 }
 
+/* send_rset - send RSET command */
+
+static void send_rset(int unused_event, char *context)
+{
+    SESSION *session = (SESSION *) context;
+
+    command(session->stream, "RSET");
+    event_enable_read(vstream_fileno(session->stream), rset_done, (char *) session);
+}
+
+/* rset_done - handle RSET reply */
+
+static void rset_done(int unused_event, char *context)
+{
+    SESSION *session = (SESSION *) context;
+    RESPONSE *resp;
+    int     except;
+
+    /*
+     * Get response to RSET command.
+     */
+    if ((except = vstream_setjmp(session->stream)) != 0)
+       msg_fatal("%s while sending message", exception_text(except));
+    if ((resp = response(session->stream, buffer))->code / 100 == 2) {
+       /* void */
+    } else if (allow_reject) {
+       msg_warn("rset rejected: %d %s", resp->code, resp->str);
+    } else {
+       msg_fatal("rset rejected: %d %s", resp->code, resp->str);
+    }
+
+    /*
+     * Say goodbye or send the next message.
+     */
+    if (disconnect || message_count < 1) {
+       send_quit(session);
+    } else {
+       event_disable_readwrite(vstream_fileno(session->stream));
+       start_another(session);
+    }
+}
+
 /* send_quit - send QUIT command */
 
 static void send_quit(SESSION *session)
@@ -815,6 +902,7 @@ int     main(int argc, char **argv)
     int     aierr;
     const char *protocols = INET_PROTO_NAME_ALL;
     INET_PROTO_INFO *proto_info;
+    char   *message_file = 0;
 
     /*
      * Fingerprint executables and core dumps.
@@ -827,7 +915,7 @@ int     main(int argc, char **argv)
     /*
      * Parse JCL.
      */
-    while ((ch = GETOPT(argc, argv, "46cC:df:l:Lm:M:Nor:R:s:S:t:vw:")) > 0) {
+    while ((ch = GETOPT(argc, argv, "46AcC:df:F:l:Lm:M:Nor:R:s:S:t:vw:")) > 0) {
        switch (ch) {
        case '4':
            protocols = INET_PROTO_NAME_IPV4;
@@ -835,6 +923,9 @@ int     main(int argc, char **argv)
        case '6':
            protocols = INET_PROTO_NAME_IPV6;
            break;
+       case 'A':
+           allow_reject = 1;
+           break;
        case 'c':
            count++;
            break;
@@ -848,16 +939,16 @@ int     main(int argc, char **argv)
        case 'f':
            sender = optarg;
            break;
+       case 'F':
+           if (message_file == 0 && message_length > 0)
+               msg_fatal("-l option cannot be used with -F");
+           message_file = optarg;
+           break;
        case 'l':
+           if (message_file != 0)
+               msg_fatal("-l option cannot be used with -F");
            if ((message_length = atoi(optarg)) <= 0)
                msg_fatal("bad message length: %s", optarg);
-           message_data = mymalloc(message_length);
-           memset(message_data, 'X', message_length);
-           for (i = 80; i < message_length; i += 80) {
-               message_data[i - 80] = "0123456789"[(i / 80) % 10];
-               message_data[i - 2] = '\r';
-               message_data[i - 1] = '\n';
-           }
            break;
        case 'L':
            talk_lmtp = 1;
@@ -922,6 +1013,40 @@ int     main(int argc, char **argv)
     if (random_delay > 0)
        srand(getpid());
 
+    /*
+     * Initialize the message content, SMTP encoded. smtp_fputs() will append
+     * another \r\n but we don't care.
+     */
+    if (message_file != 0) {
+       VSTREAM *fp;
+       VSTRING *buf = vstring_alloc(100);
+       VSTRING *msg = vstring_alloc(100);
+
+       if ((fp = vstream_fopen(message_file, O_RDONLY, 0)) == 0)
+           msg_fatal("open %s: %m", message_file);
+       while (vstring_get_nonl(buf, fp) != VSTREAM_EOF) {
+           if (*vstring_str(buf) == '.')
+               VSTRING_ADDCH(msg, '.');
+           vstring_memcat(msg, vstring_str(buf), VSTRING_LEN(buf));
+           vstring_memcat(msg, "\r\n", 2);
+       }
+       if (vstream_ferror(fp))
+           msg_fatal("read %s: %m", message_file);
+       vstream_fclose(fp);
+       vstring_free(buf);
+       message_length = VSTRING_LEN(msg);
+       message_data = vstring_export(msg);
+       send_headers = 0;
+    } else if (message_length > 0) {
+       message_data = mymalloc(message_length);
+       memset(message_data, 'X', message_length);
+       for (i = 80; i < message_length; i += 80) {
+           message_data[i - 80] = "0123456789"[(i / 80) % 10];
+           message_data[i - 2] = '\r';
+           message_data[i - 1] = '\n';
+       }
+    }
+
     /*
      * Translate endpoint address to internal form.
      */
index e49728d240a45fb5de4ca5dcd2a4fba0acc12f23..c496f8f334b6a3e08b9ea9a7752366d99ab00162 100644 (file)
@@ -66,7 +66,7 @@
 #include <stringops.h>
 
  /*
-  * Global library.
+  * Global library
   */
 #include <mail_params.h>