Home | History | Annotate | Line # | Download | only in html
      1 <!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN"
      2         "https://www.w3.org/TR/html4/loose.dtd">
      3 
      4 <html>
      5 
      6 <head>
      7 
      8 <title>Postfix Backwards-Compatibility Safety Net</title>
      9 
     10 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
     11 <link rel='stylesheet' type='text/css' href='postfix-doc.css'>
     12 
     13 </head>
     14 
     15 <body>
     16 
     17 <h1><img src="postfix-logo.jpg" width="203" height="98" ALT="">Postfix
     18 Backwards-Compatibility Safety Net</h1>
     19 
     20 <hr>
     21 
     22 <h2>Purpose of this document </h2>
     23 
     24 <p> Postfix 3.0 introduces a safety net that runs Postfix programs
     25 with backwards-compatible default settings after an upgrade. The
     26 safety net will log a warning whenever a "new" default setting could
     27 have an negative effect on your mail flow. </p>
     28 
     29 <p>This document provides information on the following topics: </p>
     30 
     31 <ul>
     32 
     33 <li> <p> <a href="#overview">Detailed descriptions</a> of Postfix
     34 backwards-compatibility warnings.
     35 
     36 <li> <p> What backwards-compatible settings you may have to make
     37 permanent in <a href="postconf.5.html">main.cf</a> or <a href="master.5.html">master.cf</a>.  </p>
     38 
     39 <li> <p> <a href="#turnoff">How to turn off</a> Postfix
     40 backwards-compatibility warnings. </p>
     41 
     42 </ul>
     43 
     44 <h2> <a name="overview"> Overview </a> </h2>
     45 
     46 <p>  With backwards compatibility turned on, Postfix logs a message
     47 whenever a backwards-compatible default setting may be required for
     48 continuity of service.  Based on this logging the system administrator
     49 can decide if any backwards-compatible settings need to be made
     50 permanent in main.cf or master.cf, before <a href="#turnoff">turning
     51 off the backwards-compatibility safety net</a> as described at the
     52 end of this document. </p>
     53 
     54 <p> Logged with <a href="postconf.5.html#compatibility_level">compatibility_level</a> &lt; 1: </p>
     55 
     56 <ul>
     57 
     58 <li> <p> <a href="#append_dot_mydomain"> Using backwards-compatible
     59 default setting append_dot_mydomain=yes </a> </p>
     60 
     61 <li> <p> <a href="#chroot"> Using backwards-compatible default setting
     62 chroot=y</a> </p>
     63 
     64 <li><p> <a href="#relay_restrictions"> Using backwards-compatible
     65 default setting "smtpd_relay_restrictions = (empty)"</a> </p>
     66 
     67 <li> <p> <a href="#smtputf8_enable"> Using backwards-compatible
     68 default setting smtputf8_enable=no</a> </p>
     69 
     70 </ul>
     71 
     72 <p> Logged with <a href="postconf.5.html#compatibility_level">compatibility_level</a> &lt; 2: </p>
     73 
     74 <ul>
     75 
     76 <li> <p> <a href="#mynetworks_style"> Using backwards-compatible
     77 default setting mynetworks_style=subnet </a> </p>
     78 
     79 <li> <p> <a href="#relay_domains"> Using backwards-compatible default
     80 setting relay_domains=$mydestination </a> </p>
     81 
     82 </ul>
     83 
     84 <p> Logged with <a href="postconf.5.html#compatibility_level">compatibility_level</a> &lt; 3.6: </p>
     85 
     86 <ul>
     87 
     88 <li> <p> <a href="#smtpd_digest"> Using backwards-compatible
     89 default setting smtpd_tls_fingerprint_digest=md5</a> </p>
     90 
     91 <li> <p> <a href="#smtp_digest"> Using backwards-compatible
     92 default setting smtp_tls_fingerprint_digest=md5</a> </p>
     93 
     94 <li> <p> <a href="#smtp_digest"> Using backwards-compatible
     95 default setting lmtp_tls_fingerprint_digest=md5</a> </p>
     96 
     97 <li> <p> <a href="#relay_before_rcpt"> Using backwards-compatible
     98 default setting smtpd_relay_before_recipient_restrictions=no</a> </p>
     99 
    100 <li> <p> <a href="#respectful_logging"> Using backwards-compatible
    101 default setting respectful_logging=no</a> </p>
    102 
    103 </ul>
    104 
    105 <p> Logged with <a href="postconf.5.html#compatibility_level">compatibility_level</a> &lt; 3.11: </p>
    106 
    107 <ul>
    108 
    109 <li> <p> <a href="#tlsrpt_reused"> using backwards-compatible default
    110 setting smtp_tlsrpt_skip_reused_handshakes=yes</a> </p>
    111 
    112 <li> <p> <a href="#xxx_tls_level"> using backwards-compatible default
    113 setting <i>xxx</i>_security_level=(empty)</a> </p>
    114 
    115 </ul>
    116 
    117 <p>
    118 
    119 <p> If such a message is logged in the context of a legitimate
    120 request, the system administrator should make the backwards-compatible
    121 setting permanent in <a href="postconf.5.html">main.cf</a> or <a href="master.5.html">master.cf</a>, as detailed in the
    122 sections that follow. </p>
    123 
    124 <p> When no more backwards-compatible settings need to be made
    125 permanent, the system administrator should <a href="#turnoff">turn
    126 off the backwards-compatibility safety net</a> as described at the
    127 end of this document. </p>
    128 
    129 <h2> <a name="append_dot_mydomain"> Using backwards-compatible default
    130 setting append_dot_mydomain=yes</a> </h2>
    131 
    132 <p> The <a href="postconf.5.html#append_dot_mydomain">append_dot_mydomain</a> default value has changed from "yes"
    133 to "no". This could result in unexpected non-delivery of email after
    134 Postfix is updated from an older version. The backwards-compatibility
    135 safety net is designed to prevent such surprises. </p>
    136 
    137 <p> As long as the <a href="postconf.5.html#append_dot_mydomain">append_dot_mydomain</a> parameter is left unspecified
    138 at
    139 its implicit default value, and the <a href="postconf.5.html#compatibility_level">compatibility_level</a> setting is
    140 less than 1, Postfix may log one of the following messages:</p>
    141 
    142 <ul>
    143 
    144 <li> <p> Messages about missing "localhost" in <a href="postconf.5.html#mydestination">mydestination</a> or
    145 other address class: </p>
    146 
    147 <blockquote>
    148 <pre>
    149 postfix/trivial-rewrite[14777]: using backwards-compatible
    150     default setting <a href="postconf.5.html#append_dot_mydomain">append_dot_mydomain</a>=yes to rewrite
    151     "localhost" to "localhost.example.com"; please add
    152     "localhost" to <a href="postconf.5.html#mydestination">mydestination</a> or other address class
    153 </pre>
    154 </blockquote>
    155 
    156 <p> If Postfix logs the above message, add "localhost" to
    157 <a href="postconf.5.html#mydestination">mydestination</a> (or <a href="postconf.5.html#virtual_alias_domains">virtual_alias_domains</a>, <a href="postconf.5.html#virtual_mailbox_domains">virtual_mailbox_domains</a>,
    158 or <a href="postconf.5.html#relay_domains">relay_domains</a>) and execute the command "<b>postfix reload</b>".
    159 
    160 <li> <p> Messages about incomplete domains in email addresses: </p>
    161 
    162 <blockquote>
    163 <pre>
    164 postfix/trivial-rewrite[25835]: using backwards-compatible
    165     default setting <a href="postconf.5.html#append_dot_mydomain">append_dot_mydomain</a>=yes to rewrite "foo" to
    166     "foo.example.com"
    167 </pre>
    168 </blockquote>
    169 
    170 <p> If Postfix logs the above message for domains different from
    171 "localhost", and the sender cannot be changed to use complete domain
    172 names in email addresses, then the system administrator should make
    173 the backwards-compatible setting "<a href="postconf.5.html#append_dot_mydomain">append_dot_mydomain</a> = yes" permanent
    174 in <a href="postconf.5.html">main.cf</a>: </p>
    175 
    176 <blockquote>
    177 <pre>
    178 # <b>postconf <a href="postconf.5.html#append_dot_mydomain">append_dot_mydomain</a>=yes</b>
    179 # <b>postfix reload</b>
    180 </pre>
    181 </blockquote>
    182 
    183 </ul>
    184 
    185 <h2> <a name="chroot"> Using backwards-compatible default
    186 setting chroot=y</a> </h2>
    187 
    188 <p> The <a href="master.5.html">master.cf</a> chroot default value has changed from "y" (yes)
    189 to "n" (no). The new default avoids the need for copies of system
    190 files under the Postfix queue directory. However, sites with strict
    191 security requirements may want to keep the chroot feature enabled
    192 after updating Postfix from an older version. The backwards-compatibility
    193 safety net is designed allow the administrator to choose if they
    194 want to keep the old behavior. </p>
    195 
    196 <p> As long as a <a href="master.5.html">master.cf</a> chroot field is left unspecified at its
    197 implicit default value, and the <a href="postconf.5.html#compatibility_level">compatibility_level</a> setting
    198 is less than 1, Postfix may log the following message while it
    199 reads the <a href="master.5.html">master.cf</a> file: </p>
    200 
    201 <blockquote>
    202 <pre>
    203 postfix/master[27664]: /etc/postfix/<a href="master.5.html">master.cf</a>: line 72: using
    204     backwards-compatible default setting chroot=y
    205 </pre>
    206 </blockquote>
    207 
    208 <p> If this service should remain chrooted, then the system
    209 administrator should make the backwards-compatible setting "chroot
    210 = y" permanent in <a href="master.5.html">master.cf</a>.  For example, to update the chroot
    211 setting for the "smtp inet" service: </p>
    212 
    213 <blockquote>
    214 <pre>
    215 # <b>postconf -F smtp/inet/chroot=y</b>
    216 # <b>postfix reload</b>
    217 </pre>
    218 </blockquote>
    219 
    220 <h2> <a name="relay_restrictions"> Using backwards-compatible default
    221 setting smtpd_relay_restrictions = (empty)</a> </h2>
    222 
    223 <p> The <a href="postconf.5.html#smtpd_relay_restrictions">smtpd_relay_restrictions</a> feature was introduced with Postfix
    224 version 2.10, as a safety mechanism for configuration errors in
    225 <a href="postconf.5.html#smtpd_recipient_restrictions">smtpd_recipient_restrictions</a> that could make Postfix an open relay.
    226 </p>
    227 
    228 <p> The <a href="postconf.5.html#smtpd_relay_restrictions">smtpd_relay_restrictions</a> implicit default setting forbids
    229 mail to remote destinations from clients that don't match
    230 <a href="postconf.5.html#permit_mynetworks">permit_mynetworks</a> or <a href="postconf.5.html#permit_sasl_authenticated">permit_sasl_authenticated</a>. This could result
    231 in unexpected 'Relay access denied' errors after Postfix is updated
    232 from an older Postfix version. The backwards-compatibility safety
    233 net is designed to prevent such surprises. </p>
    234 
    235 <p> When the <a href="postconf.5.html#compatibility_level">compatibility_level</a> less than 1, and the
    236 <a href="postconf.5.html#smtpd_relay_restrictions">smtpd_relay_restrictions</a> parameter is left unspecified at its
    237 implicit default
    238 setting, Postfix may log the following message: </p>
    239 
    240 <blockquote>
    241 <pre>
    242 postfix/smtpd[38463]: using backwards-compatible default setting
    243     "<a href="postconf.5.html#smtpd_relay_restrictions">smtpd_relay_restrictions</a> = (empty)" to avoid "Relay access
    244     denied" error for recipient "user (a] example.com" from client
    245     "host.example.net[10.0.0.2]"
    246 </pre>
    247 </blockquote>
    248 
    249 <p> If this request should not be blocked, then the system
    250 administrator should make the backwards-compatible setting
    251 "<a href="postconf.5.html#smtpd_relay_restrictions">smtpd_relay_restrictions</a>=" (i.e. empty) permanent in <a href="postconf.5.html">main.cf</a>:
    252 
    253 <blockquote>
    254 <pre>
    255 # <b>postconf <a href="postconf.5.html#smtpd_relay_restrictions">smtpd_relay_restrictions</a>=</b>
    256 # <b>postfix reload</b>
    257 </pre>
    258 </blockquote>
    259 
    260 <h2> <a name="smtputf8_enable"> Using backwards-compatible default
    261 setting smtputf8_enable=no</a> </h2>
    262 
    263 <p> The <a href="postconf.5.html#smtputf8_enable">smtputf8_enable</a> default value has changed from "no" to "yes".
    264 With the new "yes" setting, the Postfix SMTP server rejects non-ASCII
    265 addresses from clients that don't request SMTPUTF8 support, after
    266 Postfix is updated from an older version. The backwards-compatibility
    267 safety net is designed to prevent such surprises. </p>
    268 
    269 <p> As long as the <a href="postconf.5.html#smtputf8_enable">smtputf8_enable</a> parameter is left unspecified
    270 at its implicit
    271 default value, and the <a href="postconf.5.html#compatibility_level">compatibility_level</a> setting is
    272 less than 1, Postfix logs a warning each time an SMTP command uses a
    273 non-ASCII address localpart without requesting SMTPUTF8 support: </p>
    274 
    275 <blockquote>
    276 <pre>
    277 postfix/smtpd[27560]: using backwards-compatible default setting
    278     <a href="postconf.5.html#smtputf8_enable">smtputf8_enable</a>=no to accept non-ASCII sender address
    279     "??@example.org" from localhost[127.0.0.1]
    280 </pre>
    281 </blockquote>
    282 
    283 <blockquote>
    284 <pre>
    285 postfix/smtpd[27560]: using backwards-compatible default setting
    286     <a href="postconf.5.html#smtputf8_enable">smtputf8_enable</a>=no to accept non-ASCII recipient address
    287     "??@example.com" from localhost[127.0.0.1]
    288 </pre>
    289 </blockquote>
    290 
    291 <p> If the address should not be rejected, and the client cannot
    292 be updated to use SMTPUTF8, then the system administrator should
    293 make the backwards-compatible setting "<a href="postconf.5.html#smtputf8_enable">smtputf8_enable</a> = no" permanent
    294 in <a href="postconf.5.html">main.cf</a>:
    295 
    296 <blockquote>
    297 <pre>
    298 # <b>postconf <a href="postconf.5.html#smtputf8_enable">smtputf8_enable</a>=no</b>
    299 # <b>postfix reload</b>
    300 </pre>
    301 </blockquote>
    302 
    303 <h2> <a name="mynetworks_style"> Using backwards-compatible default
    304 setting mynetworks_style=subnet</a> </h2>
    305 
    306 <p> The <a href="postconf.5.html#mynetworks_style">mynetworks_style</a> default value has changed from "subnet"
    307 to "host". This parameter is used to implement the "<a href="postconf.5.html#permit_mynetworks">permit_mynetworks</a>"
    308 feature. The change could cause unexpected 'access denied' errors after
    309 Postfix is updated from an older version. The backwards-compatibility
    310 safety net is designed to prevent such surprises. </p>
    311 
    312 <p> As long as the <a href="postconf.5.html#mynetworks">mynetworks</a> and <a href="postconf.5.html#mynetworks_style">mynetworks_style</a> parameters are
    313 left unspecified at their implicit default values, and the
    314 <a href="postconf.5.html#compatibility_level">compatibility_level</a>
    315 setting is less than 2, the Postfix SMTP server may log one of the
    316 following messages: </p>
    317 
    318 <blockquote>
    319 <pre>
    320 postfix/smtpd[17375]: using backwards-compatible default setting
    321     <a href="postconf.5.html#mynetworks_style">mynetworks_style</a>=subnet to permit request from client
    322     "foo.example.com[10.1.1.1]"
    323 </pre>
    324 </blockquote>
    325 
    326 <blockquote>
    327 <pre>
    328 postfix/postscreen[24982]: using backwards-compatible default
    329     setting <a href="postconf.5.html#mynetworks_style">mynetworks_style</a>=subnet to permit request from client
    330     "10.1.1.1"
    331 </pre>
    332 </blockquote>
    333 
    334 <p> If the client request should not be rejected, then the system
    335 administrator should make the backwards-compatible setting
    336 "<a href="postconf.5.html#mynetworks_style">mynetworks_style</a> = subnet" permanent in <a href="postconf.5.html">main.cf</a>: </p>
    337 
    338 <blockquote>
    339 <pre>
    340 # <b>postconf <a href="postconf.5.html#mynetworks_style">mynetworks_style</a>=subnet</b>
    341 # <b>postfix reload</b>
    342 </pre>
    343 </blockquote>
    344 
    345 <h2><a name="relay_domains"> Using backwards-compatible default
    346 setting relay_domains=$mydestination </a> </h2>
    347 
    348 <p> The <a href="postconf.5.html#relay_domains">relay_domains</a> default value has changed from "$<a href="postconf.5.html#mydestination">mydestination</a>"
    349 to the empty value. This could result in unexpected 'Relay access
    350 denied' errors or ETRN errors after Postfix is updated from an older
    351 version. The backwards-compatibility safety net is designed to
    352 prevent such surprises. </p>
    353 
    354 <p> As long as the <a href="postconf.5.html#relay_domains">relay_domains</a> parameter is left unspecified at
    355 its implicit
    356 default value, and the <a href="postconf.5.html#compatibility_level">compatibility_level</a> setting is less than 2,
    357 Postfix may log one of the following messages.  </p>
    358 
    359 <ul>
    360 
    361 <li> <p> Messages about accepting mail for a remote domain:</p>
    362 
    363 <blockquote>
    364 <pre>
    365 postfix/smtpd[19052]: using backwards-compatible default setting
    366     <a href="postconf.5.html#relay_domains">relay_domains</a>=$<a href="postconf.5.html#mydestination">mydestination</a> to accept mail for domain
    367     "foo.example.com"
    368 </pre>
    369 </blockquote>
    370 
    371 <blockquote>
    372 <pre>
    373 postfix/smtpd[19052]: using backwards-compatible default setting
    374     <a href="postconf.5.html#relay_domains">relay_domains</a>=$<a href="postconf.5.html#mydestination">mydestination</a> to accept mail for address
    375     "user (a] foo.example.com"
    376 </pre>
    377 </blockquote>
    378 
    379 <li> <p> Messages about providing ETRN service for a remote domain:</p>
    380 
    381 <blockquote>
    382 <pre>
    383 postfix/smtpd[19138]: using backwards-compatible default setting
    384     <a href="postconf.5.html#relay_domains">relay_domains</a>=$<a href="postconf.5.html#mydestination">mydestination</a> to flush mail for domain
    385     "bar.example.com"
    386 </pre>
    387 </blockquote>
    388 
    389 <blockquote>
    390 <pre>
    391 postfix/smtp[13945]: using backwards-compatible default setting
    392     <a href="postconf.5.html#relay_domains">relay_domains</a>=$<a href="postconf.5.html#mydestination">mydestination</a> to update fast-flush logfile for
    393     domain "bar.example.com"
    394 </pre>
    395 </blockquote>
    396 
    397 </ul>
    398 
    399 <p> If Postfix should continue to accept mail for that domain or
    400 continue to provide ETRN service for that domain, then the system
    401 administrator should make the backwards-compatible setting
    402 "<a href="postconf.5.html#relay_domains">relay_domains</a> = $<a href="postconf.5.html#mydestination">mydestination</a>" permanent in <a href="postconf.5.html">main.cf</a>: </p>
    403 
    404 <blockquote>
    405 <pre>
    406 # <b>postconf '<a href="postconf.5.html#relay_domains">relay_domains</a>=$<a href="postconf.5.html#mydestination">mydestination</a>'</b>
    407 # <b>postfix reload</b>
    408 </pre>
    409 </blockquote>
    410 
    411 <p> Note: quotes are required as indicated above. </p>
    412 
    413 <p> Instead of $<a href="postconf.5.html#mydestination">mydestination</a>, it may be better to specify an
    414 explicit list of domain names. </p>
    415 
    416 <h2> <a name="smtpd_digest"> Using backwards-compatible
    417 default setting smtpd_tls_fingerprint_digest=md5</a> </h2>
    418 
    419 <p> The <a href="postconf.5.html#smtpd_tls_fingerprint_digest">smtpd_tls_fingerprint_digest</a> default value has changed from
    420 "md5" to "sha256".  With the new "sha256" setting, the Postfix SMTP
    421 server avoids using the deprecated "md5" algorithm and computes a more
    422 secure digest of the client certificate.  </p>
    423 
    424 <p> If you're using the default "md5" setting, or even an explicit
    425 "sha1" (also deprecated) setting, you should consider switching to
    426 "sha256".  This will require updating any associated lookup table keys
    427 with the "sha256" digests of the expected client certificate or public
    428 key.  </p>
    429 
    430 <p> As long as the <a href="postconf.5.html#smtpd_tls_fingerprint_digest">smtpd_tls_fingerprint_digest</a> parameter is left
    431 unspecified at its
    432 implicit default value, and the <a href="postconf.5.html#compatibility_level">compatibility_level</a> setting is less than
    433 3.6, Postfix logs a warning each time a client certificate or public key
    434 fingerprint is (potentially) used for access control: </p>
    435 
    436 <blockquote>
    437 <pre>
    438 postfix/smtpd[27560]: using backwards-compatible default setting
    439     <a href="postconf.5.html#smtpd_tls_fingerprint_digest">smtpd_tls_fingerprint_digest</a>=md5 to compute certificate fingerprints
    440 </pre>
    441 </blockquote>
    442 
    443 <p> Since any client certificate fingerprints are passed in policy service
    444 lookups, and Postfix doesn't know whether the fingerprint will be used, the
    445 warning may also be logged when policy lookups are performed for connections
    446 that used a client certificate, even if the policy service does not in fact
    447 examine the client certificate.  To reduce the noise somewhat, such warnings
    448 are issued at most once per <a href="smtpd.8.html">smtpd(8)</a> process instance.  </p>
    449 
    450 <p> If you prefer to stick with "md5", you can suppress the warnings by
    451 making that setting explicit.  After addressing any other compatibility
    452 warnings, you can <a href="#turnoff">update</a> your compatibility level.
    453 </p>
    454 
    455 <blockquote>
    456 <pre>
    457 # <b>postconf <a href="postconf.5.html#smtpd_tls_fingerprint_digest">smtpd_tls_fingerprint_digest</a>=md5</b>
    458 # <b>postfix reload</b>
    459 </pre>
    460 </blockquote>
    461 
    462 <h2> <a name="smtp_digest"> Using backwards-compatible
    463 default setting smtp_tls_fingerprint_digest=md5</a> </h2>
    464 
    465 <p> The <a href="postconf.5.html#smtp_tls_fingerprint_digest">smtp_tls_fingerprint_digest</a> and <a href="postconf.5.html#lmtp_tls_fingerprint_digest">lmtp_tls_fingerprint_digest</a>
    466 default values have changed from "md5" to "sha256".  With the new
    467 "sha256" setting, the Postfix SMTP and LMTP client avoids using the
    468 deprecated "md5" algorithm and computes a more secure digest of the
    469 server certificate.  </p>
    470 
    471 <p> If you're using the default "md5" setting, or even an explicit
    472 "sha1" (also deprecated) setting, you should consider switching to
    473 "sha256".  This will require updating any "fingerprint" security level
    474 policies in the TLS policy table to specify matching "sha256" digests of
    475 the expected server certificates or public keys.  </p>
    476 
    477 <p> As long as the <a href="postconf.5.html#smtp_tls_fingerprint_digest">smtp_tls_fingerprint_digest</a> (or LMTP equivalent)
    478 parameter is left unspecified at its implicit default value, and
    479 the
    480 <a href="postconf.5.html#compatibility_level">compatibility_level</a> setting is less than 3.6, Postfix logs a warning each
    481 time the "fingerprint" security level is used to specify matching "md5"
    482 digests of trusted server certificates or public keys: </p>
    483 
    484 <blockquote>
    485 <pre>
    486 postfix/smtp[27560]: using backwards-compatible default setting
    487     <a href="postconf.5.html#smtp_tls_fingerprint_digest">smtp_tls_fingerprint_digest</a>=md5 to compute certificate fingerprints
    488 </pre>
    489 </blockquote>
    490 
    491 <p> If you prefer to stick with "md5", you can suppress the warnings by
    492 making that setting explicit.  After addressing any other compatibility
    493 warnings, you can <a href="#turnoff">update</a> your compatibility level.
    494 </p>
    495 
    496 <blockquote>
    497 <pre>
    498 # <b>postconf '<a href="postconf.5.html#smtp_tls_fingerprint_digest">smtp_tls_fingerprint_digest</a> = md5' \
    499     '<a href="postconf.5.html#lmtp_tls_fingerprint_digest">lmtp_tls_fingerprint_digest</a> = md5' </b>
    500 # <b>postfix reload</b>
    501 </pre>
    502 </blockquote>
    503 
    504 <h2> <a name="relay_before_rcpt"> Using backwards-compatible
    505 default setting smtpd_relay_before_recipient_restrictions=no</a> </h2>
    506 
    507 <p> The <a href="postconf.5.html#smtpd_relay_before_recipient_restrictions">smtpd_relay_before_recipient_restrictions</a> feature was
    508 introduced in Postfix version 3.6, to evaluate <a href="postconf.5.html#smtpd_relay_restrictions">smtpd_relay_restrictions</a>
    509 before <a href="postconf.5.html#smtpd_recipient_restrictions">smtpd_recipient_restrictions</a>. Historically, <a href="postconf.5.html#smtpd_relay_restrictions">smtpd_relay_restrictions</a>
    510 was evaluated after <a href="postconf.5.html#smtpd_recipient_restrictions">smtpd_recipient_restrictions</a>, contradicting
    511 documented behavior. </p>
    512 
    513 <blockquote> <p> Background: <a href="postconf.5.html#smtpd_relay_restrictions">smtpd_relay_restrictions</a> is
    514 primarily designed to enforce a mail relaying policy, while
    515 <a href="postconf.5.html#smtpd_recipient_restrictions">smtpd_recipient_restrictions</a> is primarily designed to enforce spam
    516 blocking policy. Both are evaluated while replying to the RCPT TO
    517 command, and both support the same features. </p> </blockquote>
    518 
    519 <p> To maintain compatibility with earlier versions, Postfix will
    520 keep evaluating <a href="postconf.5.html#smtpd_recipient_restrictions">smtpd_recipient_restrictions</a> before
    521 <a href="postconf.5.html#smtpd_relay_restrictions">smtpd_relay_restrictions</a>, as long as the <a href="postconf.5.html#compatibility_level">compatibility_level</a> is
    522 less than 3.6, and the <a href="postconf.5.html#smtpd_relay_before_recipient_restrictions">smtpd_relay_before_recipient_restrictions</a>
    523 parameter is left unspecified at its implicit default setting. As
    524 a reminder,
    525 Postfix may log the following message: </p>
    526 
    527 <blockquote>
    528 <pre>
    529 postfix/smtpd[54696]: using backwards-compatible default setting
    530     <a href="postconf.5.html#smtpd_relay_before_recipient_restrictions">smtpd_relay_before_recipient_restrictions</a>=no to reject recipient
    531     "user (a] example.com" from client "host.example.net[10.0.0.2]"
    532 </pre>
    533 </blockquote>
    534 
    535 <p> If Postfix should keep evaluating <a href="postconf.5.html#smtpd_recipient_restrictions">smtpd_recipient_restrictions</a>
    536 before <a href="postconf.5.html#smtpd_relay_restrictions">smtpd_relay_restrictions</a>, then the system
    537 administrator should make the backwards-compatible setting
    538 "<a href="postconf.5.html#smtpd_relay_before_recipient_restrictions">smtpd_relay_before_recipient_restrictions</a>=no" permanent in <a href="postconf.5.html">main.cf</a>: </p>
    539 
    540 <blockquote>
    541 <pre>
    542 # <b> postconf <a href="postconf.5.html#smtpd_relay_before_recipient_restrictions">smtpd_relay_before_recipient_restrictions</a>=no </b>
    543 # <b> postfix reload </b>
    544 </pre>
    545 </blockquote>
    546 
    547 <h2> <a name="respectful_logging"> Using backwards-compatible
    548 default setting respectful_logging=no</a> </h2>
    549 
    550 <p> Postfix version 3.6 deprecates configuration parameter names and
    551 logging that suggest white is better than black. Instead it prefers
    552 'allowlist, 'denylist', and variations of those words. While the renamed
    553 configuration parameters have backwards-compatible default values,
    554 the changes in logging could affect logfile analysis tools. </p>
    555 
    556 <p> To avoid breaking existing logfile analysis tools, Postfix will keep
    557 logging the deprecated form, as long as the <a href="postconf.5.html#respectful_logging">respectful_logging</a> parameter
    558 is left unspecified at its implicit default value, and the
    559 <a href="postconf.5.html#compatibility_level">compatibility_level</a>
    560 setting is less than 3.6. As a reminder, Postfix may log the following
    561 when a remote SMTP client is allowlisted or denylisted: </p>
    562 
    563 <blockquote>
    564 <pre>
    565 postfix/postscreen[22642]: Using backwards-compatible default setting
    566     <a href="postconf.5.html#respectful_logging">respectful_logging</a>=no for client [<i>address</i>]:<i>port</i>
    567 </pre>
    568 </blockquote>
    569 
    570 <p> If Postfix should keep logging the deprecated form, then the
    571 system administrator should make the backwards-compatible setting
    572 "<a href="postconf.5.html#respectful_logging">respectful_logging</a> = no" permanent in <a href="postconf.5.html">main.cf</a>.
    573 
    574 <blockquote>
    575 <pre>
    576 # <b>postconf "<a href="postconf.5.html#respectful_logging">respectful_logging</a> = no"</b>
    577 # <b>postfix reload</b>
    578 </pre>
    579 </blockquote>
    580 
    581 <h2> <a name="tlsrpt_reused"> Using backwards-compatible
    582 default setting smtp_tlsrpt_skip_reused_handshakes=yes</a> </h2>
    583 
    584 <p> Postfix version 3.11 changes the default value for
    585 <a href="postconf.5.html#smtp_tlsrpt_skip_reused_handshakes">smtp_tlsrpt_skip_reused_handshakes</a> from "yes" to "no". The
    586 backwards-compatibility safety net is designed to prevent an
    587 unexpected change in reporting behavior when Postfix is updated
    588 from an older version. </p>
    589 
    590 <p> As long as the <a href="postconf.5.html#smtp_tlsrpt_skip_reused_handshakes">smtp_tlsrpt_skip_reused_handshakes</a> parameter is
    591 left unspecified at its implicit default value, and the <a href="postconf.5.html#compatibility_level">compatibility_level</a>
    592 setting is less than 3.11, Postfix will log a reminder that it is
    593 using the backwards-compatible default: </p>
    594 
    595 <blockquote>
    596 <pre>
    597 postfix/smtp[388157] using backwards-compatible default setting
    598     <a href="postconf.5.html#smtp_tlsrpt_skip_reused_handshakes">smtp_tlsrpt_skip_reused_handshakes</a>=yes
    599 </pre>
    600 </blockquote>
    601 
    602 <p> To keep the old default setting, the system administrator should
    603 make the backwards-compatible setting "<a href="postconf.5.html#smtp_tlsrpt_skip_reused_handshakes">smtp_tlsrpt_skip_reused_handshakes</a>
    604 = yes" permanent in <a href="postconf.5.html">main.cf</a>:
    605 
    606 <blockquote>
    607 <pre>
    608 # <b>postconf <a href="postconf.5.html#smtp_tlsrpt_skip_reused_handshakes">smtp_tlsrpt_skip_reused_handshakes</a>=yes</b>
    609 # <b>postfix reload</b>
    610 </pre>
    611 </blockquote>
    612 
    613 <h2> <a name="xxx_tls_level"> Using backwards-compatible
    614 default setting <i>xxx</i>_security_level=(empty)</a> </h2>
    615 
    616 <p> When built with TLS support, Postfix version 3.11 changes the
    617 default SMTP client TLS
    618 security level from "empty" to "may". The backwards-compatibility
    619 safety net is designed to prevent an unexpected change in mail
    620 sending behavior when Postfix is updated from an older version.
    621 </p>
    622 
    623 <p> There is no equivalent change for Postfix server TLS security
    624 levels, because changing the level alone is not sufficient. Server-side
    625 TLS requires that at least one private key and one public-key
    626 certificate chain are configured. </p>
    627 
    628 <p> As long as a TLS security level parameter is left unspecified
    629 at its implicit default value, and the <a href="postconf.5.html#compatibility_level">compatibility_level</a> setting
    630 is less than 3.11, Postfix will log one of the following reminders
    631 that it is using the backwards-compatible default: </p>
    632 
    633 <blockquote>
    634 <pre>
    635 postfix/smtp[...] using backwards-compatible default setting
    636     <a href="postconf.5.html#smtp_tls_security_level">smtp_tls_security_level</a>=(empty)
    637 </pre>
    638 </blockquote>
    639 
    640 <blockquote>
    641 <pre>
    642 postfix/tlsproxy[...] using backwards-compatible default setting
    643     <a href="postconf.5.html#tlsproxy_client_security_level">tlsproxy_client_security_level</a>=(empty)
    644 </pre>
    645 </blockquote>
    646 
    647 <p> To keep the old default setting, the system administrator should
    648 make the backwards-compatible empty setting permanent in <a href="postconf.5.html">main.cf</a>: </p>
    649 
    650 <blockquote>
    651 <pre>
    652 # <b>postconf <i>xxx</i>_security_level=</b>
    653 # <b>postfix reload</b>
    654 </pre>
    655 </blockquote>
    656 
    657 <p> where <i>xxx</i> is taken from the above compatibility message. </p>
    658 
    659 <h2> <a name="turnoff">Turning off the backwards-compatibility safety net</a> </h2>
    660 
    661 <p> Backwards compatibility is turned off by updating the
    662 <a href="postconf.5.html#compatibility_level">compatibility_level</a> setting in <a href="postconf.5.html">main.cf</a>. </p>
    663 
    664 <blockquote>
    665 <pre>
    666 # <b>postconf <a href="postconf.5.html#compatibility_level">compatibility_level</a>=<i>N</i></b>
    667 # <b>postfix reload</b>
    668 </pre>
    669 </blockquote>
    670 
    671 <p> For <i>N</i> specify the number that is logged in your <a href="postfix.1.html">postfix(1)</a>
    672 warning message: </p>
    673 
    674 <blockquote>
    675 <pre>
    676 warning: To disable backwards compatibility use "postconf <a href="postconf.5.html#compatibility_level">compatibility_level</a>=<i>N</i>" and "postfix reload"
    677 </pre>
    678 </blockquote>
    679 
    680 <p> Sites that don't care about backwards compatibility may set
    681 "<a href="postconf.5.html#compatibility_level">compatibility_level</a> = 9999" at their own risk. </p>
    682 
    683 <p> Starting with Postfix version 3.6, the compatibility level in
    684 the above warning message is the Postfix version that introduced
    685 the last incompatible change. The level is formatted as
    686 <i>major.minor.patch</i>, where <i>patch</i> is usually omitted and
    687 defaults to zero. Earlier compatibility levels are 0, 1 and 2. </p>
    688 
    689 <p> NOTE: Postfix 3.6 also introduces support for the "&lt;level",
    690 "&lt;=level", and other operators to compare compatibility levels.
    691 With the standard operators "&lt;", "&lt;=", etc., compatibility
    692 level "3.10" would be smaller than "3.9" which is undesirable. </p>
    693 
    694 </body>
    695 
    696 </html>
    697