]> git.ipfire.org Git - thirdparty/postfix.git/commitdiff
postfix-2.6-20080428
authorWietse Venema <wietse@porcupine.org>
Mon, 28 Apr 2008 05:00:00 +0000 (00:00 -0500)
committerViktor Dukhovni <viktor@dukhovni.org>
Tue, 5 Feb 2013 06:34:01 +0000 (06:34 +0000)
18 files changed:
postfix/HISTORY
postfix/README_FILES/ADDRESS_VERIFICATION_README
postfix/RELEASE_NOTES
postfix/html/ADDRESS_VERIFICATION_README.html
postfix/html/postconf.5.html
postfix/html/smtpd.8.html
postfix/man/man5/postconf.5
postfix/man/man8/smtpd.8
postfix/mantools/postlink
postfix/proto/ADDRESS_VERIFICATION_README.html
postfix/proto/postconf.proto
postfix/src/global/mail_params.h
postfix/src/global/mail_version.h
postfix/src/smtpd/smtpd.c
postfix/src/smtpd/smtpd.h
postfix/src/smtpd/smtpd_check.c
postfix/src/smtpd/smtpd_peer.c
postfix/src/util/dict_pcre.c

index 972b7f40d1ae0ba0ee5f61837cd6af5e1cc49361..b69e9ed8413e5e5924fdc2d7e19aba26c21d6a44 100644 (file)
@@ -14404,7 +14404,7 @@ Apologies for any names omitted.
        -m) will be compatible with a future postcat -h option.
        File: postmap/postmap.c.
 
-20040811
+20080411
 
        Bugfix (introduced Postfix 2.0): after "warn_if_reject
        reject_unlisted_recipient/sender", the SMTP server mistakenly
@@ -14417,3 +14417,29 @@ Apologies for any names omitted.
        compatibility feature only with queue files that don't
        contain logging attributes. Problem reported by Liviu Daia.
        Files *qmgr/qmgr_message.c.
+
+20080424
+
+       Cleanup: some warning messages said "regexp" or "regexp
+       map" instead of "pcre map". File: util/dict_pcre.c.
+
+20080426
+
+       Feature: finer control over address verification error
+       handling and amount of information disclosed in the SMTP
+       reject message.  Parameters: unverified_recipient_defer_code,
+       unverified_recipient_reject_reason, unverified_sender_defer_code,
+       unverified_sender_reject_reason. If I don't do this properly,
+       then someone will do it anyway. File: src/smtpd/smtpd_check.c.
+
+20080428
+
+       Cleanup: the proxy_read_maps (Postfix 2.0) default setting
+       was not updated when adding sender/recipient_bcc_maps
+       (Postfix 2.1) and smtp/lmtp_generic_maps (Postfix 2.3).
+       File: global/mail_params.h.
+
+       Cleanup: the SMTP server's XFORWARD and XCLIENT support
+       was not updated when the smtpd_client_port_logging configuration
+       parameter was added. Code by Victor Duchovni. Files:
+       smtpd/smtpd.c, smtpd/smtpd_peer.c.
index e27184138eb74dbfd470406ed7c61878e0e7a9cb..d102c9cab6cdf2a7f337f6543a4fa860969aec55 100644 (file)
@@ -103,9 +103,10 @@ L\bLi\bim\bmi\bit\bta\bat\bti\bio\bon\bns\bs o\bof\bf a\bad\bdd\bdr\bre\bes\bss\bs v\bve\ber\bri\bif\bfi\b
     response to end of DATA after a message is transferred. Postfix address
     verification does not work with such sites.
 
-  * By default, Postfix probe messages have "postmaster@$myorigin" as the
-    sender address. This is SAFE because the Postfix SMTP server does not
-    reject mail for this address.
+  * By default, Postfix probe messages have "double-bounce@$myorigin" as the
+    sender address (with Postfix versions before 2.5, the default is
+    "postmaster@$myorigin"). This is SAFE because the Postfix SMTP server does
+    not reject mail for this address.
 
     You can change this into the null address ("address_verify_sender ="). This
     is UNSAFE because address probes will fail with mis-configured sites that
@@ -138,23 +139,39 @@ described later.
             reject_unknown_recipient_domain
             reject_unverified_recipient
             ...
+        # Postfix 2.6 and later privacy feature.
+        # unverified_recipient_reject_reason = Address lookup failed
 
 The "reject_unknown_recipient_domain" restriction blocks mail for non-existent
 domains. Putting this before "reject_unverified_recipient" avoids the overhead
 of generating unnecessary probe messages.
 
-The unverified_recipient_reject_code parameter (default 450) specifies how
-Postfix replies when a recipient address is known to bounce. Change this
-setting into 550 when you trust Postfix's judgments.
+The unverified_recipient_reject_code parameter (default 450) specifies the
+numerical Postfix SMTP server reply code when a recipient address is known to
+bounce. Change this setting into 550 when you trust Postfix's judgments.
+
+The following features are available in Postfix 2.6 and later.
+
+The unverified_recipient_defer_code parameter (default 450) specifies the
+numerical Postfix SMTP server reply code when a recipient address probe fails
+with some temporary error. Some sites insist on changing this into 250. NOTE:
+This change turns MX servers into backscatter sources when the load is high.
+
+The unverified_recipient_reject_reason parameter (default: empty) specifies
+fixed text that Postfix will send to remote SMTP clients, instead of sending
+actual address verification details.
 
 S\bSe\ben\bnd\bde\ber\br a\bad\bdd\bdr\bre\bes\bss\bs v\bve\ber\bri\bif\bfi\bic\bca\bat\bti\bio\bon\bn f\bfo\bor\br m\bma\bai\bil\bl f\bfr\bro\bom\bm f\bfr\bre\beq\bqu\bue\ben\bnt\btl\bly\by f\bfo\bor\brg\bge\bed\bd d\bdo\bom\bma\bai\bin\bns\bs
 
-It is relatively safe to turn on sender address verification for specific
-domains that often appear in forged email.
+Only for very small sites, it is relatively safe to turn on sender address
+verification for specific domains that often appear in forged email.
 
     /etc/postfix/main.cf:
         smtpd_sender_restrictions = hash:/etc/postfix/sender_access
         unverified_sender_reject_code = 550
+        # Postfix 2.6 and later.
+        # unverified_sender_defer_code = 250
+
         # Note 1: Be sure to read the "Caching" section below!
         # Note 2: Avoid hash files here. Use btree instead.
         address_verify_map = btree:/var/lib/postfix/verify
@@ -191,6 +208,9 @@ be blocked:
             reject_unknown_sender_domain
             warn_if_reject reject_unverified_sender
             ...
+        # Postfix 2.6 and later.
+        # unverified_sender_reject_reason = Address verification failed
+
         # Note 1: Be sure to read the "Caching" section below!
         # Note 2: Avoid hash files here. Use btree instead.
         address_verify_map = btree:/var/lib/postfix/verify
@@ -215,9 +235,19 @@ The "reject_unknown_sender_domain" restriction blocks mail from non-existent
 domains. Putting this before "reject_unverified_sender" avoids the overhead of
 generating unnecessary probe messages.
 
-The unverified_sender_reject_code parameter (default 450) specifies how Postfix
-replies when a sender address is known to bounce. Change this setting into 550
-when you trust Postfix's judgments.
+The unverified_sender_reject_code parameter (default 450) specifies the
+numerical Postfix server reply code when a sender address is known to bounce.
+Change this setting into 550 when you trust Postfix's judgments.
+
+The following features are available in Postfix 2.6 and later.
+
+The unverified_sender_defer_code parameter (default 450) specifies the
+numerical Postfix SMTP server reply code when a sender address verification
+probe fails with some temporary error. Specify a valid 2xx or 4xx code.
+
+The unverified_sender_reject_reason parameter (default: empty) specifies fixed
+text that Postfix will send to remote SMTP clients, instead of sending actual
+addres verification details.
 
 A\bAd\bdd\bdr\bre\bes\bss\bs v\bve\ber\bri\bif\bfi\bic\bca\bat\bti\bio\bon\bn d\bda\bat\bta\bab\bba\bas\bse\be
 
index fb9c93e08a6a7dbb620483e922cf8a5d449afe5c..d3ec800e2e46e22b2ebb835314d778003feaa040 100644 (file)
@@ -17,6 +17,28 @@ Incompatibility with Postfix 2.4 and earlier
 If you upgrade from Postfix 2.4 or earlier, read RELEASE_NOTES-2.5
 before proceeding.
 
+Incompatibility with snapshot 20080428
+======================================
+
+Postfix SMTP server replies for address verification have changed.
+unverified_recipient_reject_code and unverified_sender_reject_code
+now handle "5XX" rejects only. The "4XX" rejects are now controlled
+with unverified_sender_defer_code and unverified_recipient_defer_code.
+
+Major changes with snapshot 20080428
+====================================
+
+Finer control over the way that Postfix reports address verification
+failures are reported to remote SMTP clients.
+
+- unverified_sender/recipient_defer_code: the numerical Postfix
+  SMTP server reply code when address verification failed due
+  to some temporary error.
+
+- unverified_sender/recipient_reject_reason: fixed text that Postfix
+  will send to the remote SMTP client, instead of sending actual
+  address verification details.
+
 Incompatible changes with snapshot 20080207
 ===========================================
 
index 70c6e6f22a40a3cf4e318d8bcbc8d244735bfdda..40ec8a0ca06660e85852d2f34d70a1e5afa7abc3 100644 (file)
@@ -207,9 +207,10 @@ delivery failure in response to end of DATA after a message is
 transferred.  Postfix address verification does not work with such
 sites. </p>
 
-<li> <p> By default, Postfix probe messages have "postmaster@$<a href="postconf.5.html#myorigin">myorigin</a>"
-as the sender address. This is SAFE because the Postfix SMTP server
-does not reject mail for this address. </p>
+<li> <p> By default, Postfix probe messages have "double-bounce@$<a href="postconf.5.html#myorigin">myorigin</a>"
+as the sender address (with Postfix versions before 2.5, the default
+is "postmaster@$<a href="postconf.5.html#myorigin">myorigin</a>"). This is SAFE because the Postfix SMTP
+server does not reject mail for this address. </p>
 
 <p> You can change this into the null address ("<a href="postconf.5.html#address_verify_sender">address_verify_sender</a>
 ="). This is UNSAFE because address probes will fail with
@@ -248,6 +249,8 @@ probing the same address repeatedly, you can store the result in a
         <a href="postconf.5.html#reject_unknown_recipient_domain">reject_unknown_recipient_domain</a>
         <a href="postconf.5.html#reject_unverified_recipient">reject_unverified_recipient</a>
         ...
+    # Postfix 2.6 and later privacy feature.
+    # <a href="postconf.5.html#unverified_recipient_reject_reason">unverified_recipient_reject_reason</a> = Address lookup failed
 </pre>
 </blockquote>
 
@@ -256,20 +259,38 @@ for non-existent domains. Putting this before "<a href="postconf.5.html#reject_u
 avoids the overhead of generating unnecessary probe messages. </p>
 
 <p> The <a href="postconf.5.html#unverified_recipient_reject_code">unverified_recipient_reject_code</a> parameter (default 450)
-specifies how Postfix replies when a recipient address is known to
+specifies the numerical Postfix SMTP server reply code when a
+recipient address is known to
 bounce.  Change this setting into 550 when you trust Postfix's
 judgments. </p>
 
+<p> The following features are available in Postfix 2.6 and later.
+</p>
+
+<p> The <a href="postconf.5.html#unverified_recipient_defer_code">unverified_recipient_defer_code</a> parameter (default 450)
+specifies the numerical Postfix SMTP server reply code when a
+recipient address probe fails with some temporary error. Some sites
+insist on changing this into 250. NOTE: This change turns MX servers
+into backscatter sources when the load is high.  </p>
+
+<p> The <a href="postconf.5.html#unverified_recipient_reject_reason">unverified_recipient_reject_reason</a> parameter (default:
+empty) specifies fixed text that Postfix will send to remote SMTP
+clients, instead of sending actual address verification details.  </p>
+
 <h2><a name="forged_sender">Sender address verification for mail from frequently forged domains</a></h2>
 
-<p> It is relatively safe to turn on sender address verification for
-specific domains that often appear in forged email. </p>
+<p> Only for very small sites, it is relatively safe to turn on
+sender address verification for specific domains that often appear
+in forged email.  </p>
 
 <blockquote>
 <pre>
 /etc/postfix/<a href="postconf.5.html">main.cf</a>:
     <a href="postconf.5.html#smtpd_sender_restrictions">smtpd_sender_restrictions</a> = hash:/etc/postfix/sender_access
     <a href="postconf.5.html#unverified_sender_reject_code">unverified_sender_reject_code</a> = 550
+    # Postfix 2.6 and later.
+    # <a href="postconf.5.html#unverified_sender_defer_code">unverified_sender_defer_code</a> = 250
+
     # Note 1: Be sure to read the "<a href="#caching">Caching</a>" section below!
     # Note 2: Avoid hash files here. Use btree instead.
     <a href="postconf.5.html#address_verify_map">address_verify_map</a> = btree:/var/lib/postfix/verify
@@ -312,6 +333,9 @@ you can see what mail would be blocked: </p>
         <a href="postconf.5.html#reject_unknown_sender_domain">reject_unknown_sender_domain</a>
         <a href="postconf.5.html#warn_if_reject">warn_if_reject</a> <a href="postconf.5.html#reject_unverified_sender">reject_unverified_sender</a> 
         ...
+    # Postfix 2.6 and later.
+    # <a href="postconf.5.html#unverified_sender_reject_reason">unverified_sender_reject_reason</a> = Address verification failed
+
     # Note 1: Be sure to read the "<a href="#caching">Caching</a>" section below!
     # Note 2: Avoid hash files here. Use btree instead.
     <a href="postconf.5.html#address_verify_map">address_verify_map</a> = btree:/var/lib/postfix/verify
@@ -345,10 +369,23 @@ non-existent domains. Putting this before "<a href="postconf.5.html#reject_unver
 avoids the overhead of generating unnecessary probe messages. </p>
 
 <p> The <a href="postconf.5.html#unverified_sender_reject_code">unverified_sender_reject_code</a> parameter (default 450)
-specifies how Postfix replies when a sender address is known to
+specifies the numerical Postfix server reply code when a sender
+address is known to
 bounce.  Change this setting into 550 when you trust Postfix's
 judgments. </p>
 
+<p> The following features are available in Postfix 2.6 and later.
+</p>
+
+<p> The <a href="postconf.5.html#unverified_sender_defer_code">unverified_sender_defer_code</a> parameter (default 450) specifies
+the numerical Postfix SMTP server reply code when a sender address
+verification probe fails with some temporary error. Specify a valid
+2xx or 4xx code. </p>
+
+<p> The <a href="postconf.5.html#unverified_sender_reject_reason">unverified_sender_reject_reason</a> parameter (default:
+empty) specifies fixed text that Postfix will send to remote SMTP
+clients, instead of sending actual addres verification details.  </p>
+
 <h2><a name="caching">Address verification database</a></h2>
 
 <p> NOTE: By default, address verification information is not stored
index d8a05ce1a3a479b8c6d09abada6f99bfae7f0526..eac8426d564876efbb9abb338bf552376e8442f9 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://tools.ietf.org/html/rfc821">RFC 821</a>.
+Do not change this unless you have a complete understanding of <a href="http://tools.ietf.org/html/rfc2821">RFC 2821</a>.
 </p>
 
 
@@ -2207,7 +2207,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://tools.ietf.org/html/rfc821">RFC 821</a>.
+Do not change this unless you have a complete understanding of <a href="http://tools.ietf.org/html/rfc2821">RFC 2821</a>.
 </p>
 
 
@@ -3319,7 +3319,7 @@ restriction.
 </p>
 
 <p>
-Do not change this unless you have a complete understanding of <a href="http://tools.ietf.org/html/rfc821">RFC 821</a>.
+Do not change this unless you have a complete understanding of <a href="http://tools.ietf.org/html/rfc2821">RFC 2821</a>.
 </p>
 
 
@@ -5118,7 +5118,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://tools.ietf.org/html/rfc821">RFC 821</a>.
+Do not change this unless you have a complete understanding of <a href="http://tools.ietf.org/html/rfc2821">RFC 2821</a>.
 </p>
 
 
@@ -5683,7 +5683,7 @@ restriction.
 </p>
 
 <p>
-Do not change this unless you have a complete understanding of <a href="http://tools.ietf.org/html/rfc821">RFC 821</a>.
+Do not change this unless you have a complete understanding of <a href="http://tools.ietf.org/html/rfc2821">RFC 2821</a>.
 </p>
 
 <p>
@@ -6740,7 +6740,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://tools.ietf.org/html/rfc821">RFC 821</a>.
+Do not change this unless you have a complete understanding of <a href="http://tools.ietf.org/html/rfc2821">RFC 2821</a>.
 </p>
 
 
@@ -6848,7 +6848,7 @@ restriction.
 </p>
 
 <p>
-Do not change this unless you have a complete understanding of <a href="http://tools.ietf.org/html/rfc821">RFC 821</a>.
+Do not change this unless you have a complete understanding of <a href="http://tools.ietf.org/html/rfc2821">RFC 2821</a>.
 </p>
 
 
@@ -8122,12 +8122,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://tools.ietf.org/html/rfc821">RFC 821</a>. This includes putting quotes around an address localpart
+by <a href="http://tools.ietf.org/html/rfc2821">RFC 2821</a>. This includes putting quotes around an address localpart
 that ends in ".".
 </p>
 
 <p>
-The default is to comply with <a href="http://tools.ietf.org/html/rfc821">RFC 821</a>. If you have to send mail to
+The default is to comply with <a href="http://tools.ietf.org/html/rfc2821">RFC 2821</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>
 
@@ -11053,9 +11053,10 @@ Address verification information is managed by the <a href="verify.8.html">verif
 see the <a href="ADDRESS_VERIFICATION_README.html">ADDRESS_VERIFICATION_README</a> file for details.  <br> The
 <a href="postconf.5.html#unverified_recipient_reject_code">unverified_recipient_reject_code</a> parameter specifies the response
 when an address is known to bounce (default: 450, change into 550
-when you are confident that it is safe to do so). Postfix replies
-with 450 when an address probe failed due to a temporary problem.
-This feature is available in Postfix 2.1 and later.  </dd>
+when you are confident that it is safe to do so).  The
+<a href="postconf.5.html#unverified_recipient_defer_code">unverified_recipient_defer_code</a> parameter specifies the response
+when an address probe failed due to a temporary problem (default:
+450).  This feature is available in Postfix 2.1 and later.  </dd>
 
 </dl>
 
@@ -11578,9 +11579,10 @@ Address verification information is managed by the <a href="verify.8.html">verif
 see the <a href="ADDRESS_VERIFICATION_README.html">ADDRESS_VERIFICATION_README</a> file for details. <br> The
 <a href="postconf.5.html#unverified_sender_reject_code">unverified_sender_reject_code</a> parameter specifies the response when
 an address is known to bounce (default: 450, change into 550 when
-you are confident that it is safe to do so). Postfix replies with
-450 when an address probe failed due to a temporary problem.  This
-feature is available in Postfix 2.1 and later.  </dd>
+you are confident that it is safe to do so). The
+<a href="postconf.5.html#unverified_sender_defer_code">unverified_sender_defer_code</a> specifies the response when an address
+address probe failed due to a temporary problem (default: 450).
+This feature is available in Postfix 2.1 and later.  </dd>
 
 </dl>
 
@@ -13074,7 +13076,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://tools.ietf.org/html/rfc821">RFC 821</a>.
+Do not change this unless you have a complete understanding of <a href="http://tools.ietf.org/html/rfc2821">RFC 2821</a>.
 </p>
 
 
@@ -13091,7 +13093,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://tools.ietf.org/html/rfc821">RFC 821</a>.
+Do not change this unless you have a complete understanding of <a href="http://tools.ietf.org/html/rfc2821">RFC 2821</a>.
 </p>
 
 
@@ -13107,7 +13109,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://tools.ietf.org/html/rfc821">RFC 821</a>.
+Do not change this unless you have a complete understanding of <a href="http://tools.ietf.org/html/rfc2821">RFC 2821</a>.
 </p>
 
 
@@ -13191,6 +13193,30 @@ This feature is available in Postfix 2.0 and later.
 </p>
 
 
+</DD>
+
+<DT><b><a name="unverified_recipient_defer_code">unverified_recipient_defer_code</a>
+(default: 450)</b></DT><DD>
+
+<p>
+The numerical Postfix SMTP server response when a recipient address
+probe fails due to a temporary error condition.
+</p>
+
+<p>
+Unlike elsewhere in Postfix, you can specify 250 in order to
+accept the address anyway.
+</p>
+
+<p>
+Do not change this unless you have a complete understanding of <a href="http://tools.ietf.org/html/rfc2821">RFC 2821</a>.
+</p>
+
+<p>
+This feature is available in Postfix 2.6 and later.
+</p>
+
+
 </DD>
 
 <DT><b><a name="unverified_recipient_reject_code">unverified_recipient_reject_code</a>
@@ -13207,7 +13233,7 @@ accept the address anyway.
 </p>
 
 <p>
-Do not change this unless you have a complete understanding of <a href="http://tools.ietf.org/html/rfc821">RFC 821</a>.
+Do not change this unless you have a complete understanding of <a href="http://tools.ietf.org/html/rfc2821">RFC 2821</a>.
 </p>
 
 <p>
@@ -13215,6 +13241,42 @@ This feature is available in Postfix 2.1 and later.
 </p>
 
 
+</DD>
+
+<DT><b><a name="unverified_recipient_reject_reason">unverified_recipient_reject_reason</a>
+(default: empty)</b></DT><DD>
+
+<p> When rejecting mail with <a href="postconf.5.html#reject_unverified_recipient">reject_unverified_recipient</a>, reply
+with this text as the reason, instead of actual address verification
+details.
+
+<p> This feature is available in Postfix 2.6 and later. </p>
+
+
+</DD>
+
+<DT><b><a name="unverified_sender_defer_code">unverified_sender_defer_code</a>
+(default: 450)</b></DT><DD>
+
+<p>
+The numerical Postfix SMTP server response code when a sender address
+probe fails due to a temporary error condition.
+</p>
+
+<p>
+Unlike elsewhere in Postfix, you can specify 250 in order to
+accept the address anyway.
+</p>
+
+<p>
+Do not change this unless you have a complete understanding of <a href="http://tools.ietf.org/html/rfc2821">RFC 2821</a>.
+</p>
+
+<p>
+This feature is available in Postfix 2.6 and later.
+</p>
+
+
 </DD>
 
 <DT><b><a name="unverified_sender_reject_code">unverified_sender_reject_code</a>
@@ -13231,7 +13293,7 @@ accept the address anyway.
 </p>
 
 <p>
-Do not change this unless you have a complete understanding of <a href="http://tools.ietf.org/html/rfc821">RFC 821</a>.
+Do not change this unless you have a complete understanding of <a href="http://tools.ietf.org/html/rfc2821">RFC 2821</a>.
 </p>
 
 <p>
@@ -13239,6 +13301,18 @@ This feature is available in Postfix 2.1 and later.
 </p>
 
 
+</DD>
+
+<DT><b><a name="unverified_sender_reject_reason">unverified_sender_reject_reason</a>
+(default: empty)</b></DT><DD>
+
+<p> When rejecting mail with <a href="postconf.5.html#reject_unverified_sender">reject_unverified_sender</a>, reply with
+this text as the reason, instead of actual address verification
+details.
+
+<p> This feature is available in Postfix 2.6 and later. </p>
+
+
 </DD>
 
 <DT><b><a name="verp_delimiter_filter">verp_delimiter_filter</a>
index 555ff650c1284270c556e3ac71027cebce3a2406..f60e811b84f2ceacd7082a6ebf9eb0b5301e31a5 100644 (file)
@@ -964,6 +964,28 @@ SMTPD(8)                                                              SMTPD(8)
               recipient address is rejected by the <a href="postconf.5.html#reject_unverified_recipient">reject_unveri</a>-
               <a href="postconf.5.html#reject_unverified_recipient">fied_recipient</a> restriction.
 
+       Available in Postfix version 2.6 and later:
+
+       <b><a href="postconf.5.html#unverified_sender_defer_code">unverified_sender_defer_code</a> (450)</b>
+              The numerical Postfix  SMTP  server  response  code
+              when  a  sender address probe fails due to a tempo-
+              rary error condition.
+
+       <b><a href="postconf.5.html#unverified_recipient_defer_code">unverified_recipient_defer_code</a> (450)</b>
+              The numerical Postfix SMTP server response  when  a
+              recipient  address  probe  fails due to a temporary
+              error condition.
+
+       <b><a href="postconf.5.html#unverified_sender_reject_reason">unverified_sender_reject_reason</a> (empty)</b>
+              When rejecting mail with  <a href="postconf.5.html#reject_unverified_sender">reject_unverified_sender</a>,
+              reply  with  this  text  as  the reason, instead of
+              actual address verification details.
+
+       <b><a href="postconf.5.html#unverified_recipient_reject_reason">unverified_recipient_reject_reason</a> (empty)</b>
+              When rejecting mail with  reject_unverified_recipi-
+              ent, reply with this text as the reason, instead of
+              actual address verification details.
+
 <b>ACCESS CONTROL RESPONSES</b>
        The following  parameters  control  numerical  SMTP  reply
        codes and/or text responses.
index 0daa4fd84b5b7b72ba2704c2564b3965c208068e..3b4124755a888ff6f717e6abbdbcea434e4dbf43 100644 (file)
@@ -67,7 +67,7 @@ parameter.
 The numerical Postfix SMTP server response code when a client
 is rejected by an \fBaccess\fR(5) map restriction.
 .PP
-Do not change this unless you have a complete understanding of RFC 821.
+Do not change this unless you have a complete understanding of RFC 2821.
 .SH address_verify_default_transport (default: $default_transport)
 Overrides the default_transport parameter setting for address
 verification probes.
@@ -1257,7 +1257,7 @@ This feature is available in Postfix 1.1 and later.
 The numerical Postfix SMTP server response code when a remote SMTP
 client request is rejected by the "defer" restriction.
 .PP
-Do not change this unless you have a complete understanding of RFC 821.
+Do not change this unless you have a complete understanding of RFC 2821.
 .SH defer_service_name (default: defer)
 The name of the defer service. This service is implemented by the
 \fBbounce\fR(8) daemon and maintains a record
@@ -1852,7 +1852,7 @@ The numerical Postfix SMTP server response code when the client
 HELO or EHLO command parameter is rejected by the reject_invalid_helo_hostname
 restriction.
 .PP
-Do not change this unless you have a complete understanding of RFC 821.
+Do not change this unless you have a complete understanding of RFC 2821.
 .SH ipc_idle (default: version dependent)
 The time after which a client closes an idle internal communication
 channel.  The purpose is to allow servers to terminate voluntarily
@@ -2808,7 +2808,7 @@ The numerical Postfix SMTP server response code when a remote SMTP
 client request is blocked by the reject_rbl_client, reject_rhsbl_client,
 reject_rhsbl_sender or reject_rhsbl_recipient restriction.
 .PP
-Do not change this unless you have a complete understanding of RFC 821.
+Do not change this unless you have a complete understanding of RFC 2821.
 .SH masquerade_classes (default: envelope_sender, header_sender, header_recipient)
 What addresses are subject to address masquerading.
 .PP
@@ -3134,7 +3134,7 @@ The numerical Postfix SMTP server response code when a remote SMTP
 client request is blocked by the reject_multi_recipient_bounce
 restriction.
 .PP
-Do not change this unless you have a complete understanding of RFC 821.
+Do not change this unless you have a complete understanding of RFC 2821.
 .PP
 This feature is available in Postfix 2.1 and later.
 .SH mydestination (default: $myhostname, localhost.$mydomain, localhost)
@@ -3741,7 +3741,7 @@ recipient_delimiter = +
 The numerical Postfix SMTP server response code when a remote SMTP
 client request is rejected by the "reject" restriction.
 .PP
-Do not change this unless you have a complete understanding of RFC 821.
+Do not change this unless you have a complete understanding of RFC 2821.
 .SH relay_clientcerts (default: empty)
 List of tables with remote SMTP client-certificate fingerprints
 for which the Postfix SMTP server will allow access with the
@@ -3818,7 +3818,7 @@ The numerical Postfix SMTP server response code when a client
 request is rejected by the reject_unauth_destination recipient
 restriction.
 .PP
-Do not change this unless you have a complete understanding of RFC 821.
+Do not change this unless you have a complete understanding of RFC 2821.
 .SH relay_recipient_maps (default: empty)
 Optional lookup tables with all valid addresses in the domains
 that match $relay_domains. Specify @domain as a wild-card for
@@ -4566,10 +4566,10 @@ Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
 The default time unit is s (seconds).
 .SH smtp_quote_rfc821_envelope (default: yes)
 Quote addresses in SMTP MAIL FROM and RCPT TO commands as required
-by RFC 821. This includes putting quotes around an address localpart
+by RFC 2821. This includes putting quotes around an address localpart
 that ends in ".".
 .PP
-The default is to comply with RFC 821. If you have to send mail to
+The default is to comply with RFC 2821. If you have to send mail to
 a broken SMTP server, configure a special SMTP client in master.cf:
 .sp
 .in +4
@@ -6722,9 +6722,10 @@ see the ADDRESS_VERIFICATION_README file for details.
 The
 unverified_recipient_reject_code parameter specifies the response
 when an address is known to bounce (default: 450, change into 550
-when you are confident that it is safe to do so). Postfix replies
-with 450 when an address probe failed due to a temporary problem.
-This feature is available in Postfix 2.1 and later.
+when you are confident that it is safe to do so).  The
+unverified_recipient_defer_code parameter specifies the response
+when an address probe failed due to a temporary problem (default:
+450).  This feature is available in Postfix 2.1 and later.
 .PP
 Other restrictions that are valid in this context:
 .IP \(bu
@@ -7067,9 +7068,10 @@ see the ADDRESS_VERIFICATION_README file for details.
 The
 unverified_sender_reject_code parameter specifies the response when
 an address is known to bounce (default: 450, change into 550 when
-you are confident that it is safe to do so). Postfix replies with
-450 when an address probe failed due to a temporary problem.  This
-feature is available in Postfix 2.1 and later.
+you are confident that it is safe to do so). The
+unverified_sender_defer_code specifies the response when an address
+address probe failed due to a temporary problem (default: 450).
+This feature is available in Postfix 2.1 and later.
 .PP
 Other restrictions that are valid in this context:
 .IP \(bu
@@ -8075,20 +8077,20 @@ recipient address is rejected by the reject_unknown_sender_domain
 or reject_unknown_recipient_domain restriction.  The response is
 always 450 in case of a temporary DNS error.
 .PP
-Do not change this unless you have a complete understanding of RFC 821.
+Do not change this unless you have a complete understanding of RFC 2821.
 .SH unknown_client_reject_code (default: 450)
 The numerical Postfix SMTP server response code when a client
 without valid address <=> name mapping is rejected by the
 reject_unknown_client_hostname restriction. The SMTP server always replies
 with 450 when the mapping failed due to a temporary error condition.
 .PP
-Do not change this unless you have a complete understanding of RFC 821.
+Do not change this unless you have a complete understanding of RFC 2821.
 .SH unknown_hostname_reject_code (default: 450)
 The numerical Postfix SMTP server response code when the hostname
 specified with the HELO or EHLO command is rejected by the
 reject_unknown_helo_hostname restriction.
 .PP
-Do not change this unless you have a complete understanding of RFC 821.
+Do not change this unless you have a complete understanding of RFC 2821.
 .SH unknown_local_recipient_reject_code (default: 550)
 The numerical Postfix SMTP server response code when a recipient
 address is local, and $local_recipient_maps specifies a list of
@@ -8129,6 +8131,16 @@ $virtual_mailbox_domains, and $virtual_mailbox_maps specifies a list
 of lookup tables that does not match the recipient address.
 .PP
 This feature is available in Postfix 2.0 and later.
+.SH unverified_recipient_defer_code (default: 450)
+The numerical Postfix SMTP server response when a recipient address
+probe fails due to a temporary error condition.
+.PP
+Unlike elsewhere in Postfix, you can specify 250 in order to
+accept the address anyway.
+.PP
+Do not change this unless you have a complete understanding of RFC 2821.
+.PP
+This feature is available in Postfix 2.6 and later.
 .SH unverified_recipient_reject_code (default: 450)
 The numerical Postfix SMTP server response when a recipient address
 is rejected by the reject_unverified_recipient restriction.
@@ -8136,9 +8148,25 @@ is rejected by the reject_unverified_recipient restriction.
 Unlike elsewhere in Postfix, you can specify 250 in order to
 accept the address anyway.
 .PP
-Do not change this unless you have a complete understanding of RFC 821.
+Do not change this unless you have a complete understanding of RFC 2821.
 .PP
 This feature is available in Postfix 2.1 and later.
+.SH unverified_recipient_reject_reason (default: empty)
+When rejecting mail with reject_unverified_recipient, reply
+with this text as the reason, instead of actual address verification
+details.
+.PP
+This feature is available in Postfix 2.6 and later.
+.SH unverified_sender_defer_code (default: 450)
+The numerical Postfix SMTP server response code when a sender address
+probe fails due to a temporary error condition.
+.PP
+Unlike elsewhere in Postfix, you can specify 250 in order to
+accept the address anyway.
+.PP
+Do not change this unless you have a complete understanding of RFC 2821.
+.PP
+This feature is available in Postfix 2.6 and later.
 .SH unverified_sender_reject_code (default: 450)
 The numerical Postfix SMTP server response code when a recipient
 address is rejected by the reject_unverified_sender restriction.
@@ -8146,9 +8174,15 @@ address is rejected by the reject_unverified_sender restriction.
 Unlike elsewhere in Postfix, you can specify 250 in order to
 accept the address anyway.
 .PP
-Do not change this unless you have a complete understanding of RFC 821.
+Do not change this unless you have a complete understanding of RFC 2821.
 .PP
 This feature is available in Postfix 2.1 and later.
+.SH unverified_sender_reject_reason (default: empty)
+When rejecting mail with reject_unverified_sender, reply with
+this text as the reason, instead of actual address verification
+details.
+.PP
+This feature is available in Postfix 2.6 and later.
 .SH verp_delimiter_filter (default: -=+)
 The characters Postfix accepts as VERP delimiter characters on the
 Postfix \fBsendmail\fR(1) command line and in SMTP commands.
index b0014b5c69a495323b9ece407efdab78a22c3903..d1e45a72cc68104f87be6c2e6ea09c0aad03bf30 100644 (file)
@@ -774,6 +774,22 @@ address is rejected by the reject_unverified_sender restriction.
 .IP "\fBunverified_recipient_reject_code (450)\fR"
 The numerical Postfix SMTP server response when a recipient address
 is rejected by the reject_unverified_recipient restriction.
+.PP
+Available in Postfix version 2.6 and later:
+.IP "\fBunverified_sender_defer_code (450)\fR"
+The numerical Postfix SMTP server response code when a sender address
+probe fails due to a temporary error condition.
+.IP "\fBunverified_recipient_defer_code (450)\fR"
+The numerical Postfix SMTP server response when a recipient address
+probe fails due to a temporary error condition.
+.IP "\fBunverified_sender_reject_reason (empty)\fR"
+When rejecting mail with reject_unverified_sender, reply with
+this text as the reason, instead of actual address verification
+details.
+.IP "\fBunverified_recipient_reject_reason (empty)\fR"
+When rejecting mail with reject_unverified_recipient, reply
+with this text as the reason, instead of actual address verification
+details.
 .SH "ACCESS CONTROL RESPONSES"
 .na
 .nf
index 07c43c01f76fcf5f2f274788f86689aef57fe22e..cc498cb5a6a8cecd2dae59bd5f4f159a1195e814 100755 (executable)
@@ -535,7 +535,11 @@ while (<>) {
     s;\bunknown_virtual_alias_reject_code\b;<a href="postconf.5.html#unknown_virtual_alias_reject_code">$&</a>;g;
     s;\bunknown_virtual_mail[-</bB>]*\n* *[<bB>]*box_reject_code\b;<a href="postconf.5.html#unknown_virtual_mailbox_reject_code">$&</a>;g;
     s;\bunverified_recip[-</bB>]*\n* *[<bB>]*ient_reject_code\b;<a href="postconf.5.html#unverified_recipient_reject_code">$&</a>;g;
+    s;\bunverified_recip[-</bB>]*\n* *[<bB>]*ient_defer_code\b;<a href="postconf.5.html#unverified_recipient_defer_code">$&</a>;g;
     s;\bunverified_sender_reject_code\b;<a href="postconf.5.html#unverified_sender_reject_code">$&</a>;g;
+    s;\bunverified_sender_defer_code\b;<a href="postconf.5.html#unverified_sender_defer_code">$&</a>;g;
+    s;\bunverified_recipient_reject_reason\b;<a href="postconf.5.html#unverified_recipient_reject_reason">$&</a>;g;
+    s;\bunverified_sender_reject_reason\b;<a href="postconf.5.html#unverified_sender_reject_reason">$&</a>;g;
     s;\bverp_delimiter_filter\b;<a href="postconf.5.html#verp_delimiter_filter">$&</a>;g;
     s;\bvir[-</bB>]*\n*[ <bB>]*tual_alias_domains\b;<a href="postconf.5.html#virtual_alias_domains">$&</a>;g;
     s;\bvir[-</bB>]*\n*[ <bB>]*tual_alias_expansion_limit\b;<a href="postconf.5.html#virtual_alias_expansion_limit">$&</a>;g;
index f0b01d594d7601c73cede5c722c8ce6f6644effc..89c8b809970c8c4bd79553fc8e917bde9074ab66 100644 (file)
@@ -207,9 +207,10 @@ delivery failure in response to end of DATA after a message is
 transferred.  Postfix address verification does not work with such
 sites. </p>
 
-<li> <p> By default, Postfix probe messages have "postmaster@$myorigin"
-as the sender address. This is SAFE because the Postfix SMTP server
-does not reject mail for this address. </p>
+<li> <p> By default, Postfix probe messages have "double-bounce@$myorigin"
+as the sender address (with Postfix versions before 2.5, the default
+is "postmaster@$myorigin"). This is SAFE because the Postfix SMTP
+server does not reject mail for this address. </p>
 
 <p> You can change this into the null address ("address_verify_sender
 ="). This is UNSAFE because address probes will fail with
@@ -248,6 +249,8 @@ probing the same address repeatedly, you can store the result in a
         reject_unknown_recipient_domain
         reject_unverified_recipient
         ...
+    # Postfix 2.6 and later privacy feature.
+    # unverified_recipient_reject_reason = Address lookup failed
 </pre>
 </blockquote>
 
@@ -256,20 +259,38 @@ for non-existent domains. Putting this before "reject_unverified_recipient"
 avoids the overhead of generating unnecessary probe messages. </p>
 
 <p> The unverified_recipient_reject_code parameter (default 450)
-specifies how Postfix replies when a recipient address is known to
+specifies the numerical Postfix SMTP server reply code when a
+recipient address is known to
 bounce.  Change this setting into 550 when you trust Postfix's
 judgments. </p>
 
+<p> The following features are available in Postfix 2.6 and later.
+</p>
+
+<p> The unverified_recipient_defer_code parameter (default 450)
+specifies the numerical Postfix SMTP server reply code when a
+recipient address probe fails with some temporary error. Some sites
+insist on changing this into 250. NOTE: This change turns MX servers
+into backscatter sources when the load is high.  </p>
+
+<p> The unverified_recipient_reject_reason parameter (default:
+empty) specifies fixed text that Postfix will send to remote SMTP
+clients, instead of sending actual address verification details.  </p>
+
 <h2><a name="forged_sender">Sender address verification for mail from frequently forged domains</a></h2>
 
-<p> It is relatively safe to turn on sender address verification for
-specific domains that often appear in forged email. </p>
+<p> Only for very small sites, it is relatively safe to turn on
+sender address verification for specific domains that often appear
+in forged email.  </p>
 
 <blockquote>
 <pre>
 /etc/postfix/main.cf:
     smtpd_sender_restrictions = hash:/etc/postfix/sender_access
     unverified_sender_reject_code = 550
+    # Postfix 2.6 and later.
+    # unverified_sender_defer_code = 250
+
     # Note 1: Be sure to read the "<a href="#caching">Caching</a>" section below!
     # Note 2: Avoid hash files here. Use btree instead.
     address_verify_map = btree:/var/lib/postfix/verify
@@ -312,6 +333,9 @@ you can see what mail would be blocked: </p>
         reject_unknown_sender_domain
         warn_if_reject reject_unverified_sender 
         ...
+    # Postfix 2.6 and later.
+    # unverified_sender_reject_reason = Address verification failed
+
     # Note 1: Be sure to read the "<a href="#caching">Caching</a>" section below!
     # Note 2: Avoid hash files here. Use btree instead.
     address_verify_map = btree:/var/lib/postfix/verify
@@ -345,10 +369,23 @@ non-existent domains. Putting this before "reject_unverified_sender"
 avoids the overhead of generating unnecessary probe messages. </p>
 
 <p> The unverified_sender_reject_code parameter (default 450)
-specifies how Postfix replies when a sender address is known to
+specifies the numerical Postfix server reply code when a sender
+address is known to
 bounce.  Change this setting into 550 when you trust Postfix's
 judgments. </p>
 
+<p> The following features are available in Postfix 2.6 and later.
+</p>
+
+<p> The unverified_sender_defer_code parameter (default 450) specifies
+the numerical Postfix SMTP server reply code when a sender address
+verification probe fails with some temporary error. Specify a valid
+2xx or 4xx code. </p>
+
+<p> The unverified_sender_reject_reason parameter (default:
+empty) specifies fixed text that Postfix will send to remote SMTP
+clients, instead of sending actual addres verification details.  </p>
+
 <h2><a name="caching">Address verification database</a></h2>
 
 <p> NOTE: By default, address verification information is not stored
index 012da4d88446c3c7942b778492b74eddecc58060..91ed3dd34eda55651e870f36c292131631097381 100644 (file)
@@ -157,7 +157,7 @@ is rejected by an access(5) map restriction.
 </p>
 
 <p>
-Do not change this unless you have a complete understanding of RFC 821.
+Do not change this unless you have a complete understanding of RFC 2821.
 </p>
 
 %PARAM address_verify_default_transport $default_transport
@@ -1227,7 +1227,7 @@ client request is rejected by the "defer" restriction.
 </p>
 
 <p>
-Do not change this unless you have a complete understanding of RFC 821.
+Do not change this unless you have a complete understanding of RFC 2821.
 </p>
 
 %PARAM defer_transports 
@@ -1897,7 +1897,7 @@ restriction.
 </p>
 
 <p>
-Do not change this unless you have a complete understanding of RFC 821.
+Do not change this unless you have a complete understanding of RFC 2821.
 </p>
 
 %PARAM ipc_idle version dependent
@@ -2534,7 +2534,7 @@ reject_rhsbl_sender or reject_rhsbl_recipient restriction.
 </p>
 
 <p>
-Do not change this unless you have a complete understanding of RFC 821.
+Do not change this unless you have a complete understanding of RFC 2821.
 </p>
 
 %PARAM masquerade_classes envelope_sender, header_sender, header_recipient
@@ -2741,7 +2741,7 @@ restriction.
 </p>
 
 <p>
-Do not change this unless you have a complete understanding of RFC 821.
+Do not change this unless you have a complete understanding of RFC 2821.
 </p>
 
 <p>
@@ -3360,7 +3360,7 @@ client request is rejected by the "reject" restriction.
 </p>
 
 <p>
-Do not change this unless you have a complete understanding of RFC 821.
+Do not change this unless you have a complete understanding of RFC 2821.
 </p>
 
 %PARAM relay_domains $mydestination
@@ -3400,7 +3400,7 @@ restriction.
 </p>
 
 <p>
-Do not change this unless you have a complete understanding of RFC 821.
+Do not change this unless you have a complete understanding of RFC 2821.
 </p>
 
 %PARAM relay_recipient_maps 
@@ -4124,12 +4124,12 @@ The default time unit is s (seconds).
 
 <p>
 Quote addresses in SMTP MAIL FROM and RCPT TO commands as required
-by RFC 821. This includes putting quotes around an address localpart
+by RFC 2821. This includes putting quotes around an address localpart
 that ends in ".".
 </p>
 
 <p>
-The default is to comply with RFC 821. If you have to send mail to
+The default is to comply with RFC 2821. If you have to send mail to
 a broken SMTP server, configure a special SMTP client in master.cf:
 </p>
 
@@ -5512,9 +5512,10 @@ Address verification information is managed by the verify(8) server;
 see the ADDRESS_VERIFICATION_README file for details.  <br> The
 unverified_recipient_reject_code parameter specifies the response
 when an address is known to bounce (default: 450, change into 550
-when you are confident that it is safe to do so). Postfix replies
-with 450 when an address probe failed due to a temporary problem.
-This feature is available in Postfix 2.1 and later.  </dd>
+when you are confident that it is safe to do so).  The
+unverified_recipient_defer_code parameter specifies the response
+when an address probe failed due to a temporary problem (default:
+450).  This feature is available in Postfix 2.1 and later.  </dd>
 
 </dl>
 
@@ -5874,9 +5875,10 @@ Address verification information is managed by the verify(8) server;
 see the ADDRESS_VERIFICATION_README file for details. <br> The
 unverified_sender_reject_code parameter specifies the response when
 an address is known to bounce (default: 450, change into 550 when
-you are confident that it is safe to do so). Postfix replies with
-450 when an address probe failed due to a temporary problem.  This
-feature is available in Postfix 2.1 and later.  </dd>
+you are confident that it is safe to do so). The
+unverified_sender_defer_code specifies the response when an address
+address probe failed due to a temporary problem (default: 450).
+This feature is available in Postfix 2.1 and later.  </dd>
 
 </dl>
 
@@ -6096,7 +6098,7 @@ always 450 in case of a temporary DNS error.
 </p>
 
 <p>
-Do not change this unless you have a complete understanding of RFC 821.
+Do not change this unless you have a complete understanding of RFC 2821.
 </p>
 
 %PARAM unknown_client_reject_code 450
@@ -6109,7 +6111,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 RFC 821.
+Do not change this unless you have a complete understanding of RFC 2821.
 </p>
 
 %PARAM unknown_hostname_reject_code 450
@@ -6121,7 +6123,7 @@ reject_unknown_helo_hostname restriction.
 </p>
 
 <p>
-Do not change this unless you have a complete understanding of RFC 821.
+Do not change this unless you have a complete understanding of RFC 2821.
 </p>
 
 %PARAM unknown_local_recipient_reject_code 550
@@ -6165,13 +6167,33 @@ accept the address anyway.
 </p>
 
 <p>
-Do not change this unless you have a complete understanding of RFC 821.
+Do not change this unless you have a complete understanding of RFC 2821.
 </p>
 
 <p>
 This feature is available in Postfix 2.1 and later.
 </p>
 
+%PARAM unverified_recipient_defer_code 450
+
+<p>
+The numerical Postfix SMTP server response when a recipient address
+probe fails due to a temporary error condition.
+</p>
+
+<p>
+Unlike elsewhere in Postfix, you can specify 250 in order to
+accept the address anyway.
+</p>
+
+<p>
+Do not change this unless you have a complete understanding of RFC 2821.
+</p>
+
+<p>
+This feature is available in Postfix 2.6 and later.
+</p>
+
 %PARAM unverified_sender_reject_code 450
 
 <p>
@@ -6185,13 +6207,33 @@ accept the address anyway.
 </p>
 
 <p>
-Do not change this unless you have a complete understanding of RFC 821.
+Do not change this unless you have a complete understanding of RFC 2821.
 </p>
 
 <p>
 This feature is available in Postfix 2.1 and later.
 </p>
 
+%PARAM unverified_sender_defer_code 450
+
+<p>
+The numerical Postfix SMTP server response code when a sender address
+probe fails due to a temporary error condition.
+</p>
+
+<p>
+Unlike elsewhere in Postfix, you can specify 250 in order to
+accept the address anyway.
+</p>
+
+<p>
+Do not change this unless you have a complete understanding of RFC 2821.
+</p>
+
+<p>
+This feature is available in Postfix 2.6 and later.
+</p>
+
 %PARAM virtual_alias_domains $virtual_alias_maps
 
 <p> Postfix is final destination for the specified list of virtual
@@ -11527,3 +11569,20 @@ configuration parameter.  See there for details. </p>
 
 <p> This feature is available in Postfix 2.5 and later. </p>
 
+%PARAM unverified_sender_reject_reason
+
+<p> When rejecting mail with reject_unverified_sender, reply with
+this text as the reason, instead of actual address verification
+details.
+
+<p> This feature is available in Postfix 2.6 and later. </p>
+
+%PARAM unverified_recipient_reject_reason
+
+<p> When rejecting mail with reject_unverified_recipient, reply
+with this text as the reason, instead of actual address verification
+details.
+
+<p> This feature is available in Postfix 2.6 and later. </p>
+
+
index 35c187be574e16529e70b5d06f0d00c43c6c071d..86b9a13d55f399a84667c144b3ea2f3202855766 100644 (file)
@@ -1936,14 +1936,30 @@ extern bool var_smtpd_rej_unl_from;
 extern bool var_smtpd_rej_unl_rcpt;
 
 #define REJECT_UNVERIFIED_RECIP "reject_unverified_recipient"
-#define VAR_UNV_RCPT_CODE      "unverified_recipient_reject_code"
-#define DEF_UNV_RCPT_CODE      450
-extern int var_unv_rcpt_code;
+#define VAR_UNV_RCPT_RCODE     "unverified_recipient_reject_code"
+#define DEF_UNV_RCPT_RCODE     450
+extern int var_unv_rcpt_rcode;
 
 #define REJECT_UNVERIFIED_SENDER "reject_unverified_sender"
-#define VAR_UNV_FROM_CODE      "unverified_sender_reject_code"
-#define DEF_UNV_FROM_CODE      450
-extern int var_unv_from_code;
+#define VAR_UNV_FROM_RCODE     "unverified_sender_reject_code"
+#define DEF_UNV_FROM_RCODE     450
+extern int var_unv_from_rcode;
+
+#define VAR_UNV_RCPT_DCODE     "unverified_recipient_defer_code"
+#define DEF_UNV_RCPT_DCODE     450
+extern int var_unv_rcpt_dcode;
+
+#define VAR_UNV_FROM_DCODE     "unverified_sender_defer_code"
+#define DEF_UNV_FROM_DCODE     450
+extern int var_unv_from_dcode;
+
+#define VAR_UNV_RCPT_WHY       "unverified_recipient_reject_reason"
+#define DEF_UNV_RCPT_WHY       ""
+extern char *var_unv_rcpt_why;
+
+#define VAR_UNV_FROM_WHY       "unverified_sender_reject_reason"
+#define DEF_UNV_FROM_WHY       ""
+extern char *var_unv_from_why;
 
 #define REJECT_MUL_RCPT_BOUNCE "reject_multi_recipient_bounce"
 #define VAR_MUL_RCPT_CODE      "multi_recipient_bounce_reject_code"
@@ -2058,7 +2074,11 @@ extern int var_local_rcpt_code;
                                " $" VAR_RCPT_CANON_MAPS \
                                " $" VAR_RELOCATED_MAPS \
                                " $" VAR_TRANSPORT_MAPS \
-                               " $" VAR_MYNETWORKS
+                               " $" VAR_MYNETWORKS \
+                               " $" VAR_SEND_BCC_MAPS \
+                               " $" VAR_RCPT_BCC_MAPS \
+                               " $" VAR_SMTP_GENERIC_MAPS \
+                               " $" VAR_LMTP_GENERIC_MAPS
 extern char *var_proxy_read_maps;
 
 #define VAR_PROXY_WRITE_MAPS   "proxy_write_maps"
index 21523a4d4f641e5d276f5e6c7359aa2784c0d5d6..8da1f6906a322e5a23c39bf096485396554b01a8 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      "20080411"
+#define MAIL_RELEASE_DATE      "20080428"
 #define MAIL_VERSION_NUMBER    "2.6"
 
 #ifdef SNAPSHOT
index 266064a84a1801965052a5c34483780d2a4b5f03..a3b32d79f6b5db902383411e9641e657c958364a 100644 (file)
 /* .IP "\fBunverified_recipient_reject_code (450)\fR"
 /*     The numerical Postfix SMTP server response when a recipient address
 /*     is rejected by the reject_unverified_recipient restriction.
+/* .PP
+/*     Available in Postfix version 2.6 and later:
+/* .IP "\fBunverified_sender_defer_code (450)\fR"
+/*     The numerical Postfix SMTP server response code when a sender address
+/*     probe fails due to a temporary error condition.
+/* .IP "\fBunverified_recipient_defer_code (450)\fR"
+/*     The numerical Postfix SMTP server response when a recipient address
+/*     probe fails due to a temporary error condition.
+/* .IP "\fBunverified_sender_reject_reason (empty)\fR"
+/*     When rejecting mail with reject_unverified_sender, reply with
+/*     this text as the reason, instead of actual address verification
+/*     details.
+/* .IP "\fBunverified_recipient_reject_reason (empty)\fR"
+/*     When rejecting mail with reject_unverified_recipient, reply
+/*     with this text as the reason, instead of actual address verification
+/*     details.
 /* ACCESS CONTROL RESPONSES
 /* .ad
 /* .fi
@@ -1056,8 +1072,12 @@ char   *var_smtpd_null_key;
 int     var_smtpd_hist_thrsh;
 char   *var_smtpd_exp_filter;
 char   *var_def_rbl_reply;
-int     var_unv_from_code;
-int     var_unv_rcpt_code;
+int     var_unv_from_rcode;
+int     var_unv_rcpt_rcode;
+int     var_unv_from_dcode;
+int     var_unv_rcpt_dcode;
+char   *var_unv_from_why;
+char   *var_unv_rcpt_why;
 int     var_mul_rcpt_code;
 char   *var_relay_rcpt_maps;
 char   *var_verify_sender;
@@ -3405,8 +3425,7 @@ static int xclient_cmd(SMTPD_STATE *state, int argc, SMTPD_TOKEN *argv)
        if (state->namaddr)
            myfree(state->namaddr);
        state->namaddr =
-           concatenate(state->name, "[", state->addr, "]:",
-                       state->port, (char *) 0);
+           SMTPD_BUILD_NAMADDRPORT(state->name, state->addr, state->port);
     }
 
     /*
@@ -3671,10 +3690,10 @@ static int xforward_cmd(SMTPD_STATE *state, int argc, SMTPD_TOKEN *argv)
            myfree(state->xforward.namaddr);
        state->xforward.namaddr =
            IS_AVAIL_CLIENT_ADDR(state->xforward.addr) ?
-           concatenate(state->xforward.name, "[",
-                       state->xforward.addr, "]:",
-                       state->xforward.port,
-                       (char *) 0) : mystrdup(state->xforward.name);
+           SMTPD_BUILD_NAMADDRPORT(state->xforward.name,
+                                   state->xforward.addr,
+                                   state->xforward.port) :
+           mystrdup(state->xforward.name);
     }
     smtpd_chat_reply(state, "250 2.0.0 Ok");
     return (0);
@@ -4661,8 +4680,10 @@ int     main(int argc, char **argv)
        VAR_SMTPD_JUNK_CMD, DEF_SMTPD_JUNK_CMD, &var_smtpd_junk_cmd_limit, 1, 0,
        VAR_SMTPD_RCPT_OVERLIM, DEF_SMTPD_RCPT_OVERLIM, &var_smtpd_rcpt_overlim, 1, 0,
        VAR_SMTPD_HIST_THRSH, DEF_SMTPD_HIST_THRSH, &var_smtpd_hist_thrsh, 1, 0,
-       VAR_UNV_FROM_CODE, DEF_UNV_FROM_CODE, &var_unv_from_code, 0, 0,
-       VAR_UNV_RCPT_CODE, DEF_UNV_RCPT_CODE, &var_unv_rcpt_code, 0, 0,
+       VAR_UNV_FROM_RCODE, DEF_UNV_FROM_RCODE, &var_unv_from_rcode, 200, 599,
+       VAR_UNV_RCPT_RCODE, DEF_UNV_RCPT_RCODE, &var_unv_rcpt_rcode, 200, 599,
+       VAR_UNV_FROM_DCODE, DEF_UNV_FROM_DCODE, &var_unv_from_dcode, 200, 499,
+       VAR_UNV_RCPT_DCODE, DEF_UNV_RCPT_DCODE, &var_unv_rcpt_dcode, 200, 499,
        VAR_MUL_RCPT_CODE, DEF_MUL_RCPT_CODE, &var_mul_rcpt_code, 0, 0,
        VAR_LOCAL_RCPT_CODE, DEF_LOCAL_RCPT_CODE, &var_local_rcpt_code, 0, 0,
        VAR_VIRT_ALIAS_CODE, DEF_VIRT_ALIAS_CODE, &var_virt_alias_code, 0, 0,
@@ -4801,6 +4822,8 @@ int     main(int argc, char **argv)
        VAR_MILT_DAEMON_NAME, DEF_MILT_DAEMON_NAME, &var_milt_daemon_name, 1, 0,
        VAR_MILT_V, DEF_MILT_V, &var_milt_v, 1, 0,
        VAR_STRESS, DEF_STRESS, &var_stress, 0, 0,
+       VAR_UNV_FROM_WHY, DEF_UNV_FROM_WHY, &var_unv_from_why, 0, 0,
+       VAR_UNV_RCPT_WHY, DEF_UNV_RCPT_WHY, &var_unv_rcpt_why, 0, 0,
        0,
     };
     static const CONFIG_RAW_TABLE raw_table[] = {
index 899bb70f4e7094f1c0f5393bbfc2545cfafef56f..ac7bb54305e21e74a9d4768f9a6d12d54a554be5 100644 (file)
@@ -180,6 +180,14 @@ typedef struct SMTPD_STATE {
     ssize_t milter_argc;
 } SMTPD_STATE;
 
+ /*
+  * Construct name[addr] or name[addr]:port as appropriate
+  */
+#define SMTPD_BUILD_NAMADDRPORT(name, addr, port) \
+    concatenate((name), "[", (addr), "]", \
+               var_smtpd_client_port_log ? ":" : (char *) 0, \
+               (port), (char *) 0)
+
 #define SMTPD_FLAG_HANGUP      (1<<0)  /* disconnect */
 
 #define SMTPD_STATE_XFORWARD_INIT  (1<<0)      /* xforward preset done */
index 65c34e82dfd34eca244589a0f769264cfa695d0b..d4fadde9562011e0d730240d5d04f1116a0536b7 100644 (file)
@@ -1781,14 +1781,16 @@ static int reject_unknown_address(SMTPD_STATE *state, const char *addr,
 
 static int reject_unverified_address(SMTPD_STATE *state, const char *addr,
                            const char *reply_name, const char *reply_class,
-                                            int unv_addr_code)
+                                    int unv_addr_dcode, int unv_addr_rcode,
+                                            const char *alt_reply)
 {
     const char *myname = "reject_unverified_address";
     VSTRING *why = vstring_alloc(10);
-    int     rqst_status;
+    int     rqst_status = SMTPD_CHECK_DUNNO;
     int     rcpt_status;
     int     verify_status;
     int     count;
+    int     reject_code = 0;
 
     if (msg_verbose)
        msg_info("%s: %s", myname, addr);
@@ -1816,27 +1818,34 @@ static int reject_unverified_address(SMTPD_STATE *state, const char *addr,
        switch (rcpt_status) {
        default:
            msg_warn("unknown address verification status %d", rcpt_status);
-           rqst_status = SMTPD_CHECK_DUNNO;
            break;
        case DEL_RCPT_STAT_TODO:
        case DEL_RCPT_STAT_DEFER:
+           reject_code = unv_addr_dcode;
+           break;
+       case DEL_RCPT_STAT_OK:
+           break;
+       case DEL_RCPT_STAT_BOUNCE:
+           reject_code = unv_addr_rcode;
+           break;
+       }
+       if (reject_code >= 400 && *alt_reply)
+           vstring_strcpy(why, alt_reply);
+       switch (reject_code / 100) {
+       case 2:
+           break;
+       case 4:
            DEFER_IF_PERMIT3(state, MAIL_ERROR_POLICY,
                          450, strcmp(reply_class, SMTPD_NAME_SENDER) == 0 ?
                             SND_DSN : "4.1.1",
                             "<%s>: %s rejected: unverified address: %.250s",
                             reply_name, reply_class, STR(why));
-           rqst_status = SMTPD_CHECK_DUNNO;
-           break;
-       case DEL_RCPT_STAT_OK:
-           rqst_status = SMTPD_CHECK_DUNNO;
            break;
-       case DEL_RCPT_STAT_BOUNCE:
-           if (unv_addr_code / 100 == 2)
-               rqst_status = SMTPD_CHECK_DUNNO;
-           else
+       default:
+           if (reject_code != 0)
                rqst_status =
                    smtpd_check_reject(state, MAIL_ERROR_POLICY,
-                                      unv_addr_code,
+                                      reject_code,
                               strcmp(reply_class, SMTPD_NAME_SENDER) == 0 ?
                                       SND_DSN : "4.1.1",
                             "<%s>: %s rejected: undeliverable address: %s",
@@ -3715,7 +3724,8 @@ static int generic_checks(SMTPD_STATE *state, ARGV *restrictions,
            if (state->sender && *state->sender)
                status = reject_unverified_address(state, state->sender,
                                           state->sender, SMTPD_NAME_SENDER,
-                                                  var_unv_from_code);
+                                    var_unv_from_dcode, var_unv_from_rcode,
+                                                  var_unv_from_why);
        } else if (strcasecmp(name, REJECT_NON_FQDN_SENDER) == 0) {
            if (state->sender && *state->sender)
                status = reject_non_fqdn_address(state, state->sender,
@@ -3845,7 +3855,8 @@ static int generic_checks(SMTPD_STATE *state, ARGV *restrictions,
            if (state->recipient && *state->recipient)
                status = reject_unverified_address(state, state->recipient,
                                     state->recipient, SMTPD_NAME_RECIPIENT,
-                                                  var_unv_rcpt_code);
+                                    var_unv_rcpt_dcode, var_unv_rcpt_rcode,
+                                                  var_unv_rcpt_why);
        }
 
        /*
index 87bc902b333e492b2b7d826bc07e4c6d8b4b7dae..25ca3d30674c52181315b50b37fc5ff67ef834d3 100644 (file)
@@ -373,10 +373,8 @@ void    smtpd_peer_init(SMTPD_STATE *state)
     /*
      * Do the name[addr]:port formatting for pretty reports.
      */
-    state->namaddr =
-       concatenate(state->name, "[", state->addr, "]",
-                   var_smtpd_client_port_log ? ":" : (char *) 0,
-                   state->port, (char *) 0);
+    state->namaddr = SMTPD_BUILD_NAMADDRPORT(state->name, state->addr,
+                                            state->port);
 }
 
 /* smtpd_peer_reset - destroy peer information */
index 2d6d018a20e62d6df55d45caeafd364f30d15bbd..2f1f3906dba06a671d06fba87d4f1bbbeea0255b 100644 (file)
@@ -180,7 +180,7 @@ static int dict_pcre_expand(int type, VSTRING *buf, char *ptr)
            if (ret == PCRE_ERROR_NOSUBSTRING)
                return (MAC_PARSE_UNDEF);
            else
-               msg_fatal("regexp %s, line %d: pcre_get_substring error: %d",
+               msg_fatal("pcre map %s, line %d: pcre_get_substring error: %d",
                        dict_pcre->dict.name, match_rule->rule.lineno, ret);
        }
        if (*pp == 0) {
@@ -671,7 +671,7 @@ static DICT_PCRE_RULE *dict_pcre_parse_rule(const char *mapname, int lineno,
            msg_panic("pcre map %s, line %d: pcre_fullinfo failed",
                      mapname, lineno);
        if (prescan_context.max_sub > actual_sub) {
-           msg_warn("regexp map %s, line %d: out of range replacement index \"%d\": "
+           msg_warn("pcre map %s, line %d: out of range replacement index \"%d\": "
                     "skipping this rule", mapname, lineno,
                     (int) prescan_context.max_sub);
            if (engine.pattern)
@@ -785,7 +785,7 @@ static DICT_PCRE_RULE *dict_pcre_parse_rule(const char *mapname, int lineno,
      * Unrecognized input.
      */
     else {
-       msg_warn("regexp map %s, line %d: ignoring unrecognized request",
+       msg_warn("pcre map %s, line %d: ignoring unrecognized request",
                 mapname, lineno);
        return (0);
     }