Home | History | Annotate | Line # | Download | only in proto
      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 Replacements for Deprecated Features </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 Replacements for Deprecated Features</h1>
     19 
     20 <hr>
     21 
     22 <h2>Purpose of this document </h2>
     23 
     24 <p> This document describes Postfix features that are deprecated
     25 (will be removed) or that have already been removed. It also has
     26 tips for making an existing Postfix configuration more future-proof.
     27 </p>
     28 
     29 <p> Overview: </p>
     30 
     31 <ul>
     32 
     33 <li> <a href="#why"> Why deprecate? </a> 
     34 
     35 <li> <a href="#process"> Deprecation process </a> 
     36 
     37 <li> <a href="#features"> Deprecated features </a> 
     38 
     39 </ul>
     40 
     41 <h2> <a name="why"> Why deprecate? </a> </h2>
     42 
     43 <p> Sometimes, a Postfix feature needs to be replaced with a different
     44 one. To give an example: </p>
     45 
     46 <ul>
     47 
     48 <li> <p> The initial Postfix TLS implementation used multiple boolean
     49 parameters: one parameter to enable opportunistic TLS (for example, 
     50 "smtp_enforce_tls = yes") and one parameter to enable mandatory TLS
     51 (for example, "smtp_require_tls = yes"). </p>
     52 
     53 <li> <p> As we added support more features such as fingerprint,
     54 dane, and so on, we decided not to add more boolean parameters.
     55 Instead we introduced one configuration parameter to select from
     56 multiple deployment models (for example, smtp_tls_security_level =
     57 may | encrypt | dane, etc...). </p>
     58 
     59 </ul>
     60 
     61 <!--
     62 
     63 <p> Over time it has become clear that 'level' is too rigid, so this may
     64 have to change again. Wietse and Viktor have been discussing a way to
     65 specify a range with minimum properties that are required (e.g., encrypt)
     66 and nice-to-have properties if they are available (dane or mta-sts). </p>
     67 
     68 -->
     69 
     70 <p> Having both the "old" and "new" way to configure Postfix is
     71 convenient for existing Postfix installations, because their
     72 configuration does not break after an upgrade to a new version.
     73 Unfortunately, there are also disadvantages. Having multiple ways
     74 to do similar things is not only confusing for newcomers, it also
     75 makes Postfix harder to change. </p>
     76 
     77 <h2> <a name="process"> Deprecation process </a> </h2>
     78 
     79 <p> The basic process steps are: </p>
     80 
     81 <ol>
     82 
     83 <li> <p> Inform humans that a feature will be removed, and suggest
     84 replacements, in logging and documentation. </p>
     85 
     86 <li> <p> Remove the feature, and update logging and documentation.  </p>
     87 
     88 </ol>
     89 
     90 <p> Disclaimer: it has taken 20 years for some features to be
     91 removed. This past is not a guarantee for the future. </p>
     92 
     93 <h2> <a name="features"> Deprecated features </a> </h2>
     94 
     95 <p> The table summarizes removed or deprecated features and
     96 replacements. Click on the "obsolete feature" name for a more
     97 detailed description. </p>
     98 
     99 <blockquote>
    100 
    101 <table border="1">
    102 
    103 <tr> <th> Obsolete feature name </th> <th> Warning as <br> of version
    104 </th> <th> Removed <br> in version </th> <th> Replacement </th>
    105 </tr>
    106 
    107 <tr> <td> <a href="#renamed"> authorized_verp_clients </a> </td>
    108 <td align="center"> 3.11 </td> <td align="center"> - </td> <td>
    109 smtpd_authorized_verp_clients </td> </tr>
    110 
    111 <tr> <td> <a href="#renamed"> fallback_relay </a> </td> <td
    112 align="center"> 3.11 </td> <td align="center"> - </td> <td>
    113 smtp_fallback_relay </td> </tr>
    114 
    115 <tr> <td> <a href="#renamed"> lmtp_per_record_deadline </a> </td>
    116 <td align="center"> 3.11 </td> <td align="center"> - </td> <td>
    117 lmtp_per_request_deadline </td> </tr>
    118 
    119 <tr> <td> <a href="#renamed"> postscreen_blacklist_action </a> </td>
    120 <td align="center"> 3.11 </td> <td align="center"> - </td> <td>
    121 postscreen_denylist_action </td> </tr>
    122 
    123 <tr> <td> <a href="#renamed"> postscreen_dnsbl_ttl </a> </td> <td
    124 align="center"> 3.11 </td> <td align="center"> - </td> <td>
    125 postscreen_dnsbl_max_ttl </td> </tr>
    126 
    127 <tr> <td> <a href="#renamed"> postscreen_dnsbl_whitelist_threshold
    128 </a> </td> <td align="center"> 3.11 </td> <td align="center"> -
    129 </td> <td> 
    130 postscreen_dnsbl_allowlist_threshold </td> </tr>
    131 
    132 <tr> <td> <a href="#renamed"> postscreen_whitelist_interfaces </a>
    133 </td> <td align="center"> 3.11 </td> <td align="center"> - </td>
    134 <td> postscreen_allowlist_interfaces </td> </tr>
    135 
    136 <tr> <td> <a href="#renamed"> smtpd_client_connection_limit_exceptions
    137 </a> </td> <td align="center"> 3.11 </td> <td align="center"> -
    138 </td> <td>
    139 smtpd_client_event_limit_exceptions </td> </tr>
    140 
    141 <tr> <td> <a href="#renamed"> smtpd_per_record_deadline </a> </td>
    142 <td align="center"> 3.11 </td> <td align="center"> - </td> <td>
    143 smtpd_per_request_deadline </td> </tr>
    144 
    145 <tr> <td> <a href="#renamed"> smtp_per_record_deadline </a> </td>
    146 <td align="center"> 3.11 </td> <td align="center"> - </td> <td>
    147 smtp_per_request_deadline </td> </tr>
    148 
    149 <tr> <td> <a href="#renamed"> tlsproxy_client_level </a> </td> <td
    150 align="center"> 3.11 </td> <td align="center"> - </td> <td>
    151 tlsproxy_client_security_level </td> </tr>
    152 
    153 <tr> <td> <a href="#renamed"> tlsproxy_client_policy </a> </td> <td
    154 align="center"> 3.11 </td> <td align="center"> - </td> <td>
    155 tlsproxy_client_policy_maps </td> </tr>
    156 
    157 <tr> <td> <a href="#renamed"> virtual_maps </a> </td> <td align="center">
    158 3.11 </td> <td align="center"> - </td> <td> virtual_alias_maps </td>
    159 </tr>
    160 
    161 <!--
    162 
    163 <tr> <td> <a href="#tls_xdhx_auto">
    164 tls_eecdh_auto_curves </a> </td> <td align="center"> 3.11
    165 </td> <td align="center"> - </td> <td> do not specify with OpenSSL 3.5 or later
    166 </td> </tr>
    167 
    168 <tr> <td> <a href="#tls_xdhx_auto">
    169 tls_ffdhe_auto_groups </a> </td> <td align="center"> 3.11
    170 </td> <td align="center"> - </td> <td> do not specify with OpenSSL 3.5 or later
    171 </td> </tr>
    172 
    173 -->
    174 
    175 <tr> <td> <a href="#cname_overrides_servername">
    176 smtp_cname_overrides_servername </a> </td> <td align="center"> 3.11
    177 </td> <td align="center"> - </td> <td> do not specify (leave at default)
    178 </td> </tr>
    179 
    180 <tr> <td> <a href="#cname_overrides_servername">
    181 lmtp_cname_overrides_servername </a> </td> <td align="center"> 3.11
    182 </td> <td align="center"> - </td> <td> do not specify (leave at default)
    183 </td> </tr>
    184 
    185 <tr> <td> <a href="#xxx_tls_enforce_peername">
    186 <i>xxx</i>_tls_enforce_peername </a> </td> <td align="center"> 3.11
    187 </td> <td align="center"> - </td> <td> <i>xxx</i>_tls_security_level
    188 </td> </tr>
    189 
    190 <tr> <td> <a href="#disable_dns_lookups"> disable_dns_lookups </a>
    191 </td> <td align="center"> 3.9 </td> <td align="center"> - </td>
    192 <td> smtp_dns_support_level </td> </tr>
    193 
    194 <tr> <td> <a href="#xxx_use_tls"> <i>xxx</i>_use_tls </a> </td>
    195 <td align="center"> 3.9 </td> <td align="center"> - </td> <td>
    196 <i>xxx</i>_tls_security_level </td> </tr>
    197 
    198 <tr> <td> <a href="#xxx_enforce_tls"> <i>xxx</i>_enforce_tls </a>
    199 </td> <td align="center"> 3.9 </td> <td align="center"> - </td>
    200 <td> <i>xxx</i>_tls_security_level </td> </tr>
    201 
    202 <tr> <td> <a href="#xxx_per_site"> <i>xxx</i>_per_site </a> </td>
    203 <td align="center"> 3.9 </td> <td align="center"> - </td> <td>
    204 <i>xxx</i>_policy_maps </td> </tr>
    205 
    206 <tr> <td> <a href="#smtpd_tls_dh1024_param_file">
    207 smtpd_tls_dh1024_param_file </a> </td> <td align="center"> 3.9 </td>
    208 <td align="center"> - </td> <td> do not specify (leave at default)
    209 </td> </tr>
    210 
    211 <tr> <td> <a href="#smtpd_tls_eecdh_grade"> smtpd_tls_eecdh_grade
    212 </a> </td> <td align="center"> 3.9 </td> <td align="center"> - </td>
    213 <td> do not specify (leave at default) </td> </tr>
    214 
    215 <tr> <td> <a href="#permit_mx_backup"> permit_mx_backup </a> </td>
    216 <td align="center"> 3.9 </td> <td align="center"> - </td> <td>
    217 relay_domains </td> </tr>
    218 
    219 <tr> <td> <a href="#check_relay_domains"> check_relay_domains </a>
    220 </td> <td align="center"> 2.2 </td> <td align="center"> 3.9 </td>
    221 <td> permit_mynetworks, reject_unauth_destination </td> </tr>
    222 
    223 <tr> <td> <a href="#reject_maps_rbl"> reject_maps_rbl </a> </td>
    224 <td align="center"> 2.1 </td> <td align="center"> 3.9 </td> <td>
    225 reject_rbl_client </td> </tr>
    226 
    227 <tr> <td> <a href="#permit_naked_ip_address"> permit_naked_ip_address
    228 </a> </td> <td align="center"> 2.0 </td> <td align="center"> 3.9
    229 </td> <td> permit_mynetworks, permit_sasl_authenticated </td> </tr>
    230 
    231 </table>
    232 
    233 </blockquote>
    234 
    235 <h3> <a name="renamed"> Parameters that have been renamed for
    236 consistency </a> </h3>
    237 
    238 <p> The postconf(1) command logs one or more of the following: </p>
    239 
    240 <ul>
    241 
    242 <li> support for parameter "authorized_verp_clients" will be removed;
    243 instead, specify "smtpd_authorized_verp_clients" </li>
    244 
    245 <li> support for parameter "fallback_relay" will be removed; instead,
    246 specify "smtp_fallback_relay" </li>
    247 
    248 <li> support for parameter "lmtp_per_record_deadline" will be
    249 removed; instead, specify "lmtp_per_request_deadline" </li>
    250 
    251 <li> support for parameter "postscreen_blacklist_action" will be
    252 removed; instead, specify "postscreen_denylist_action" </li>
    253 
    254 <li> support for parameter "postscreen_dnsbl_ttl" will be removed;
    255 instead, specify "postscreen_dnsbl_max_ttl" </li>
    256 
    257 <li> support for parameter "postscreen_dnsbl_whitelist_threshold"
    258 will be removed; instead, specify "postscreen_dnsbl_allowlist_threshold"
    259 </li>
    260 
    261 <li> support for parameter "postscreen_whitelist_interfaces" will
    262 be removed; instead, specify "postscreen_allowlist_interfaces" </li>
    263 
    264 <li> support for parameter "smtpd_client_connection_limit_exceptions"
    265 will be removed; instead, specify "smtpd_client_event_limit_exceptions"
    266 </li>
    267 
    268 <li> support for parameter "smtp_per_record_deadline" will be
    269 removed; instead, specify "smtp_per_request_deadline" </li>
    270 
    271 <li> support for parameter "tlsproxy_client_level" will be removed;
    272 instead, specify "tlsproxy_client_security_level" </li>
    273 
    274 <li> support for parameter "tlsproxy_client_policy" will be removed;
    275 instead, specify "tlsproxy_client_policy_maps" </li>
    276 
    277 <li> support for parameter "virtual_maps" will be removed; instead,
    278 specify "virtual_alias_maps" </li>
    279 
    280 </ul>
    281 
    282 <p> The above parameters have been renamed for consistency with other
    283 parameters. For backwards compatibility, the old parameter values are
    284 used as the default value for the new parameters, but they will
    285 eventually be removed to eliminate clutter and confusion  </p>
    286 
    287 <p> To silence these warning messages, edit main.cf or master.cf,
    288 and replace each obsolete parameter name with its replacement. </p>
    289 
    290 <!--
    291 
    292 <h3> <a name="tls_xdhx_auto"> Obsolete auto group/curve configuration
    293 </a> </h3>
    294 
    295 <p> The postconf(1) command logs one of the following: </p>
    296 
    297 <ul>
    298 
    299 <li> support for parameter "tls_eecdh_auto_curves" will be removed;
    300 instead, do not specify with OpenSSL 3.5 or later
    301 
    302 <li> support for parameter "tls_ffdhe_auto_groups" will be removed;
    303 instead, do not specify with OpenSSL 3.5 or later
    304 
    305 </ul>
    306 
    307 <p> The empty value is the default setting for both as of Postfix
    308 3.11, when compiled with OpenSSL 3.5 or later. See tls_config_file
    309 for a configuration example </p>
    310 
    311 -->
    312 
    313 <h3> <a name="cname_overrides_servername"> Obsolete CNAME override
    314 for peer name configuration </a> </h3>
    315 
    316 <p> The postconf(1) command logs one of the following: </p>
    317 
    318 <ul>
    319 
    320 <li> support for parameter "smtp_cname_overrides_servername" will be
    321 removed; instead, do not specify
    322 
    323 <li> support for parameter "lmtp_cname_overrides_servername" will be
    324 removed; instead, do not specify
    325 
    326 </ul>
    327 
    328 <p> These features control whether a DNS CNAME record can override
    329 the server peer name that Postfix will use for policy lookup or for
    330 certificate verification. This behavior is disabled by default as of
    331 Postfix 2.11, because it no longer solves a real problem. </p>
    332 
    333 <h3> <a name="xxx_tls_enforce_peername"> Obsolete TLS peer name
    334 match configuration </a> </h3>
    335 
    336 <p> The postconf(1) command logs one of the following: </p>
    337 
    338 <ul>
    339 
    340 <li> support for parameter "lmtp_tls_enforce_peername" will be
    341 removed; instead, specify "lmtp_tls_security_level"
    342 
    343 <li> support for parameter "smtp_tls_enforce_peername" will be
    344 removed; instead, specify "smtp_tls_security_level"
    345 
    346 </ul>
    347 
    348 <p> There are similarly-named parameters and warnings for postscreen(8)
    349 and tlsproxy(8), but those parameters should rarely be specified
    350 by hand. </p>
    351 
    352 <p> Replace obsolete configuration with its replacement: </p>
    353 
    354 <blockquote>
    355 
    356 <table border="1">
    357 
    358 <tr> <th width="33%"> Goal </th> <th width="33%"> Obsolete configuration </th> <th> Replacement configuration </th> </tr>
    359 
    360 <tr> <td> Enforce peer name match with server certificate </td>
    361 <td> <i>xxx</i>_enforce_peername = yes </td> <td> <i>xxx</i>_security_level
    362 = verify <br> <i>xxx</i>_security_level = secure </td> </tr>
    363 
    364 <tr> <td> Disable peer name match with server certificate </td>
    365 <td> <i>xxx</i>_enforce_peername = no </td> <td> <i>xxx</i>_security_level
    366 = may <br> <i>xxx</i>_security_level = encrypt </td> </tr>
    367 
    368 </table>
    369 
    370 </blockquote>
    371 
    372 <h3> <a name="disable_dns_lookups"> Obsolete DNS on/off configuration
    373 </a> </h3>
    374 
    375 <p> The postconf(1) command logs the following: </p>
    376 
    377 <ul>
    378 
    379 <li> support for parameter "disable_dns_lookups" will be removed; instead, specify "smtp_dns_support_level"
    380 
    381 </ul>
    382 
    383 <p> Replace obsolete configuration with its replacement: </p>
    384 
    385 <blockquote>
    386 
    387 <table border="1">
    388 
    389 <tr> <th width="33%"> Goal </th> <th width="33%"> Obsolete configuration
    390 </th> <th> Replacement configuration </th> </tr>
    391 
    392 <tr> <td> To disable DNS lookups in the Postfix SMTP/LMTP client
    393 </td> <td> disable_dns_lookups = yes </td> <td> smtp_dns_support_level
    394 = disabled </td> </tr>
    395 
    396 <tr> <td> To enable DNS lookups in the Postfix SMTP/LMTP client </td> <td> 
    397 disable_dns_lookups = no </td> <td> 
    398 Leave smtp_dns_support_level at the implicit default which is empty, unless
    399 you need a higher support level such as DNSSEC. </td> </tr>
    400 
    401 </table>
    402 
    403 </blockquote>
    404 
    405 <h3> <a name="xxx_use_tls"> Obsolete opportunistic TLS configuration
    406 </a> </h3>
    407 
    408 <p> The postconf(1) command logs one of the following: </p>
    409 
    410 <ul>
    411 
    412 <li> support for parameter "lmtp_use_tls" will be removed; instead, specify "lmtp_tls_security_level"
    413 
    414 <li> support for parameter "smtp_use_tls" will be removed; instead, specify "smtp_tls_security_level"
    415 
    416 <li> support for parameter "smtpd_use_tls" will be removed; instead, specify "smtpd_tls_security_level"
    417 
    418 </ul>
    419 
    420 <p> There are similarly-named parameters and warnings for postscreen(8)
    421 and tlsproxy(8), but those parameters should rarely be specified
    422 by hand. </p>
    423 
    424 <p> Replace obsolete configuration with its replacement: </p>
    425 
    426 <blockquote>
    427 
    428 <table border="1">
    429 
    430 <tr> <th width="33%"> Goal </th> <th width="33%"> Obsolete configuration </th> <th> Replacement configuration </th> </tr>
    431 
    432 <tr> <td> To turn off TLS </td> <td> <i>xxx</i>_use_tls = no </td>
    433 <td> <i>xxx</i>_security_level = none </td> </tr>
    434 
    435 <tr> <td> To turn on opportunistic TLS </td> <td> <i>xxx</i>_use_tls
    436 = yes </td> <td> <i>xxx</i>_security_level = may </td> </tr>
    437 
    438 </table>
    439 
    440 </blockquote>
    441 
    442 <h3> <a name="xxx_enforce_tls"> Obsolete mandatory TLS configuration
    443 </a> </h3>
    444 
    445 <p> The postconf(1) command logs one of the following: </p>
    446 
    447 <ul>
    448 
    449 <li> support for parameter "lmtp_enforce_tls" will be removed; instead, specify "lmtp_tls_security_level"
    450 
    451 <li> support for parameter "smtp_enforce_tls" will be removed; instead, specify "smtp_tls_security_level"
    452 
    453 <li> support for parameter "smtpd_enforce_tls" will be removed; instead, specify "smtpd_tls_security_level"
    454 
    455 </ul>
    456 
    457 <p> There are similarly-named parameters and warnings for postscreen(8)
    458 and tlsproxy(8), but those parameters should rarely be specified
    459 by hand. </p>
    460 
    461 <p> Replace obsolete configuration with its replacement: </p>
    462 
    463 <blockquote>
    464 
    465 <table border="1">
    466 
    467 <tr> <th width="33%"> Goal </th> <th width="33%"> Obsolete configuration </th> <th> Replacement configuration </th> </tr>
    468 
    469 <tr> <td> To turn off mandatory TLS </td> <td> <i>xxx</i>_enforce_tls
    470 = no </td> <td> <i>xxx</i>_security_level = may </td> </tr>
    471 
    472 <tr> <td> To turn on mandatory TLS </td> <td> <i>xxx</i>_enforce_tls
    473 = yes </td> <td> <i>xxx</i>_security_level = encrypt </td> </tr>
    474 
    475 </table>
    476 
    477 </blockquote>
    478 
    479 <h3> <a name="xxx_per_site"> Obsolete TLS policy table configuration
    480 </a> </h3>
    481 
    482 <p> The postconf(1) command logs one of the following: </p>
    483 
    484 <ul>
    485 
    486 <li> support for parameter "lmtp_tls_per_site" will be removed;
    487 instead, specify "lmtp_tls_policy_maps"
    488 
    489 <li> support for parameter "smtp_tls_per_site" will be removed;
    490 instead, specify "smtp_tls_policy_maps"
    491 
    492 </ul>
    493 
    494 <p> There is similarly-named parameter and warning for tlsproxy(8),
    495 but that parameter should rarely be specified by hand. </p>
    496 
    497 <p> Unfortunately, this is more than a name change: the table format
    498 has changed too, as has the table search process. There is no simple
    499 conversion of the obsolete form to its replacement. </p>
    500 
    501 <h3> <a name="check_relay_domains"> check_relay_domains </a> </h3>
    502 
    503 <p> Depending on the Postfix version, the Postfix SMTP daemon logs
    504 following warning: </p>
    505 
    506 <ul>
    507 
    508 <li> support for restriction "check_relay_domains" has been removed
    509 in Postfix 3.9"; instead, specify "reject_unauth_destination"
    510 
    511 <li> support for restriction "check_relay_domains" will be removed
    512 from Postfix; use "reject_unauth_destination" instead
    513 
    514 </ul>
    515 
    516 <p> This feature was removed because it would relay based on the
    517 client domain name, which is not robust. </p>
    518 
    519 <p> Recommended configuration to prevent an "open relay" problem
    520 with the SMTP service on port 25:
    521 </p>
    522 
    523 <blockquote>
    524 <pre>
    525 main.cf:
    526     smtpd_recipient_restrictions = 
    527 	permit_mynetworks, 
    528 	permit_sasl_authenticated, 
    529 	reject_unauth_destination
    530 	...other restrictions...
    531 </pre>
    532 </blockquote>
    533 
    534 <p> Or equivalent in smtpd_relay_restrictions. </p>
    535 
    536 <h3> <a name="permit_mx_backup"> permit_mx_backup</a> </h3>
    537 
    538 <p> The Postfix version 3.9 and later SMTP daemon logs the following
    539 warning: </p>
    540 
    541 <ul>
    542 
    543 <li> support for restriction "permit_mx_backup" will be removed
    544 from Postfix; instead, specify "relay_domains"
    545 
    546 </ul>
    547 
    548 <p> This feature will be removed because it is too difficult to
    549 configure recipient address validation, making Postfix a source of
    550 backscatter bounces. </p>
    551 
    552 <p> To specify the domains that Postfix will provide MX backup
    553 service for, see <a href="STANDARD_CONFIGURATION_README.html#backup">
    554 Configuring Postfix as primary or backup MX host for a remote
    555 site</a>. </p>
    556 
    557 <h3> <a name="reject_maps_rbl"> reject_maps_rbl</a> </h3>
    558 
    559 <p> Depending on the Postfix version, the SMTP daemon logs one of
    560 the following warnings: </p>
    561 
    562 <ul>
    563 
    564 <li> support for restriction "reject_maps_rbl" has been removed in
    565 Postfix 3.9"; instead, specify "reject_rbl_client domain-name"
    566 
    567 <li> support for restriction "reject_maps_rbl" will be removed from
    568 Postfix; use "reject_rbl_client domain-name" instead
    569 
    570 </ul>
    571 
    572 <p> This feature was replaced because "MAPS RBL" is the name of a
    573 specific reputation service. The reject_rbl_client feature provides
    574 a superset of the reject_maps_rbl functionality. </p>
    575 
    576 <p> Recommended configuration: </p>
    577 
    578 <blockquote>
    579 <pre>
    580 main.cf:
    581     smtpd_recipient_restrictions =
    582         permit_mynetworks,
    583         permit_sasl_authenticated,
    584         reject_unauth_destination
    585 	reject_rbl_client <i>domain-name</i>
    586 	...other restrictions...
    587 </pre>
    588 </blockquote>
    589 
    590 <p> Where <i>domain-name</i> is the domain name of a DNS reputation service. </p>
    591 
    592 <h3> <a name="permit_naked_ip_address"> permit_naked_ip_address</a> </h3>
    593 
    594 <p> Depending on the Postfix version, the SMTP daemon logs one of
    595 the following warnings: </p>
    596 
    597 <ul>
    598 
    599 <li> support for restriction "permit_naked_ip_address" has been
    600 removed in Postfix 3.9"; instead, specify "permit_mynetworks" or
    601 "permit_sasl_authenticated"
    602 
    603 <li> restriction permit_naked_ip_address is deprecated. Use
    604 permit_mynetworks or permit_sasl_authenticated instead
    605 
    606 </ul>
    607 
    608 <p> This feature was removed because it was easy to get a false
    609 match when smtpd_recipient_restrictions was intended to match a
    610 remote SMTP client IP address. </p>
    611 
    612 <p> Recommended configuration: </p>
    613 
    614 <blockquote>
    615 <pre>
    616 main.cf:
    617     smtpd_recipient_restrictions =
    618         permit_mynetworks,
    619         permit_sasl_authenticated,
    620         reject_unauth_destination
    621         reject_rbl_client <i>domain-name</i>
    622         ...other restrictions...
    623 </pre>
    624 </blockquote>
    625 
    626 <p> That is, no restriction on HELO or EHLO syntax. Such restrictions
    627 ar rarely useful nowadays.
    628 
    629 </body>
    630 
    631 </html>
    632