diff --git a/postfix/HISTORY b/postfix/HISTORY index 486df5dcc..0bbda4290 100644 --- a/postfix/HISTORY +++ b/postfix/HISTORY @@ -25398,3 +25398,21 @@ Apologies for any names omitted. Documentation: added a jq example to the postsuper(1) manpage. File: postsuper/postsuper.c. + +20210216 + + Documentation: replaced white/blacklist with allow/denylist, + except in parameter names and lopging. Those will need a + compatibilty safety net to avoid breaking log analysis tools. + proto/ADDRESS_VERIFICATION_README.html, proto/cidr_table, + proto/OVERVIEW.html, proto/postconf.proto, + proto/POSTSCREEN_README.html, proto/SMTPD_ACCESS_README.html, + proto/SMTPD_POLICY_README.html, proto/STRESS_README.html, + dns/dns_lookup.c, dnsblog/dnsblog.c, global/server_acl.c, + postfix/postfix.c, postscreen/postscreen.c, + postscreen/postscreen_dnsbl.c, postscreen/postscreen_early.c, + postscreen/postscreen.h, postscreen/postscreen_misc.c, + postscreen/postscreen_smtpd.c, postscreen/postscreen_tests.c, + proxymap/proxymap.c, smtpd/smtpd.c, smtpd/smtpd_check.c, + smtpd/smtpd_dnswl.in, smtpd/smtpd_dnswl.ref, tlsproxy/tlsproxy.c, + verify/verify.c. diff --git a/postfix/README_FILES/ADDRESS_VERIFICATION_README b/postfix/README_FILES/ADDRESS_VERIFICATION_README index f21058c61..12b785d73 100644 --- a/postfix/README_FILES/ADDRESS_VERIFICATION_README +++ b/postfix/README_FILES/ADDRESS_VERIFICATION_README @@ -6,7 +6,7 @@ WWAARRNNIINNGG Recipient address verification may cause an increased load on down-stream servers in the case of a dictionary attack or a flood of backscatter bounces. -Sender address verification may cause your site to be blacklisted by some +Sender address verification may cause your site to be denylisted by some providers. See also the "Limitations" section below for more. WWhhaatt PPoossttffiixx aaddddrreessss vveerriiffiiccaattiioonn ccaann ddoo ffoorr yyoouu @@ -89,11 +89,11 @@ LLiimmiittaattiioonnss ooff aaddddrreessss vveerriiffi mail for a remote address can bounce AFTER a preferred MTA accepts the recipient address, or AFTER a preferred MTA accepts the message content. - * Some sites may blacklist you when you are probing them too often (a probe - is an SMTP session that does not deliver mail), or when you are probing - them too often for a non-existent address. This is one reason why you - should use sender address verification sparingly, if at all, when your site - receives lots of email. + * Some sites may denylist you when you are probing them too often (a probe is + an SMTP session that does not deliver mail), or when you are probing them + too often for a non-existent address. This is one reason why you should use + sender address verification sparingly, if at all, when your site receives + lots of email. * Normally, address verification probe messages follow the same path as regular mail. However, some sites send mail to the Internet via an @@ -260,11 +260,11 @@ be blocked: This is also a good way to populate your cache with address verification results before you start to actually reject mail. -The sender_access restriction is needed to whitelist domains or addresses that +The sender_access restriction is needed to allowlist domains or addresses that are known to be OK. Although Postfix will not mark a known-to-be-good address as bad after a probe fails, it is better to be safe than sorry. -NOTE: You will have to whitelist sites such as securityfocus.com and other +NOTE: You will have to allowlist sites such as securityfocus.com and other sites that operate mailing lists that use a different sender address for each posting (VERP). Such addresses pollute the address verification cache quickly, and generate unnecessary sender verification probes. diff --git a/postfix/README_FILES/OVERVIEW b/postfix/README_FILES/OVERVIEW index 87f3ea7ae..e4344a116 100644 --- a/postfix/README_FILES/OVERVIEW +++ b/postfix/README_FILES/OVERVIEW @@ -367,12 +367,12 @@ queues. While postscreen(8) keeps the zombies away, more smtpd(8) processes remain available for legitimate clients. - postscreen(8) maintains a temporary whitelist for clients that pass its - tests; by allowing whitelisted clients to skip tests, postscreen(8) + postscreen(8) maintains a temporary allowlist for clients that pass its + tests; by allowing allowlisted clients to skip tests, postscreen(8) minimizes its impact on legitimate email traffic. The postscreen(8) server is available with Postfix 2.8 and later. To keep - the implementation simple, postscreen(8) delegates DNS white/blacklist + the implementation simple, postscreen(8) delegates DNS allow/denylist lookups to dnsblog(8) server processes, and delegates TLS encryption/ decryption to tlsproxy(8) server processes. This delegation is invisible to the remote SMTP client, and is not shown in the diagram below. diff --git a/postfix/README_FILES/POSTSCREEN_README b/postfix/README_FILES/POSTSCREEN_README index 78da5dd88..7ad4d087e 100644 --- a/postfix/README_FILES/POSTSCREEN_README +++ b/postfix/README_FILES/POSTSCREEN_README @@ -20,8 +20,8 @@ port 587 which requires client authentication. Alternatively, a site could set up a dedicated, non-postscreen, "port 25" server that provides submission service and client authentication, but no MX service. -postscreen(8) maintains a temporary whitelist for clients that pass its tests; -by allowing whitelisted clients to skip tests, postscreen(8) minimizes its +postscreen(8) maintains a temporary allowlist for clients that pass its tests; +by allowing allowlisted clients to skip tests, postscreen(8) minimizes its impact on legitimate email traffic. postscreen(8) is part of a multi-layer defense. @@ -70,17 +70,17 @@ not receiving email. The main challenge for postscreen(8) is to make an is-a-zombie decision based on a single measurement. This is necessary because many zombies try to fly under the radar and avoid spamming the same site repeatedly. Once postscreen(8) -decides that a client is not-a-zombie, it whitelists the client temporarily to +decides that a client is not-a-zombie, it allowlists the client temporarily to avoid further delays for legitimate mail. Zombies have challenges too: they have only a limited amount of time to deliver -spam before their IP address becomes blacklisted. To speed up spam deliveries, +spam before their IP address becomes denylisted. To speed up spam deliveries, zombies make compromises in their SMTP protocol implementation. For example, they speak before their turn, or they ignore responses from SMTP servers and continue sending mail even when the server tells them to go away. postscreen(8) uses a variety of measurements to recognize zombies. First, -postscreen(8) determines if the remote SMTP client IP address is blacklisted. +postscreen(8) determines if the remote SMTP client IP address is denylisted. Second, postscreen(8) looks for protocol compromises that are made to speed up delivery. These are good indicators for making is-a-zombie decisions based on single measurements. @@ -95,8 +95,8 @@ GGeenneerraall ooppeerraattiioonn For each connection from an SMTP client, postscreen(8) performs a number of tests in the order as described below. Some tests introduce a delay of a few -seconds. postscreen(8) maintains a temporary whitelist for clients that pass -its tests; by allowing whitelisted clients to skip tests, postscreen(8) +seconds. postscreen(8) maintains a temporary allowlist for clients that pass +its tests; by allowing allowlisted clients to skip tests, postscreen(8) minimizes its impact on legitimate email traffic. By default, postscreen(8) hands off all connections to a Postfix SMTP server @@ -114,18 +114,18 @@ clients. QQuuiicckk tteessttss bbeeffoorree eevveerryytthhiinngg eellssee Before engaging in SMTP-level tests. postscreen(8) queries a number of local -black and whitelists. These tests speed up the handling of known clients. +deny and allowlists. These tests speed up the handling of known clients. - * Permanent white/blacklist test - * Temporary whitelist test + * Permanent allow/denylist test + * Temporary allowlist test * MX Policy test -PPeerrmmaanneenntt wwhhiittee//bbllaacckklliisstt tteesstt +PPeerrmmaanneenntt aallllooww//ddeennyylliisstt tteesstt The postscreen_access_list parameter (default: permit_mynetworks) specifies a permanent access list for SMTP client IP addresses. Typically one would specify -something that whitelists local networks, followed by a CIDR table for -selective white- and blacklisting. +something that allowlists local networks, followed by a CIDR table for +selective allow- and denylisting. Example: @@ -135,7 +135,7 @@ Example: /etc/postfix/postscreen_access.cidr: # Rules are evaluated in the order as specified. - # Blacklist 192.168.* except 192.168.0.1. + # Denylist 192.168.* except 192.168.0.1. 192.168.0.1 permit 192.168.0.0/16 reject @@ -146,7 +146,7 @@ with the client address and port number as: WWHHIITTEELLIISSTTEEDD [address]:port -The whitelist action is not configurable: immediately hand off the connection +The allowlist action is not configurable: immediately hand off the connection to a Postfix SMTP server process. When the SMTP client address matches a "reject" action, postscreen(8) logs this @@ -157,36 +157,36 @@ with the client address and port number as: The postscreen_blacklist_action parameter specifies the action that is taken next. See "When tests fail before the 220 SMTP server greeting" below. -TTeemmppoorraarryy wwhhiitteelliisstt tteesstt +TTeemmppoorraarryy aalllloowwlliisstt tteesstt -The postscreen(8) daemon maintains a temporary whitelist for SMTP client IP +The postscreen(8) daemon maintains a temporary allowlist for SMTP client IP addresses that have passed all the tests described below. The postscreen_cache_map parameter specifies the location of the temporary -whitelist. The temporary whitelist is not used for SMTP client addresses that +allowlist. The temporary allowlist is not used for SMTP client addresses that appear on the permanent access list. -By default the temporary whitelist is not shared with other postscreen(8) -daemons. See Sharing the temporary whitelist below for alternatives. +By default the temporary allowlist is not shared with other postscreen(8) +daemons. See Sharing the temporary allowlist below for alternatives. -When the SMTP client address appears on the temporary whitelist, postscreen(8) +When the SMTP client address appears on the temporary allowlist, postscreen(8) logs this with the client address and port number as: PPAASSSS OOLLDD [address]:port The action is not configurable: immediately hand off the connection to a Postfix SMTP server process. The client is excluded from further tests until -its temporary whitelist entry expires, as controlled with the postscreen_*_ttl +its temporary allowlist entry expires, as controlled with the postscreen_*_ttl parameters. Expired entries are silently renewed if possible. MMXX PPoolliiccyy tteesstt When the remote SMTP client is not on the static access list or temporary -whitelist, postscreen(8) can implement a number of whitelist tests, before it -grants the client a temporary whitelist status that allows it to talk to a +allowlist, postscreen(8) can implement a number of allowlist tests, before it +grants the client a temporary allowlist status that allows it to talk to a Postfix SMTP server process. When postscreen(8) is configured to monitor all primary and backup MX -addresses, it can refuse to whitelist clients that connect to a backup MX +addresses, it can refuse to allowlist clients that connect to a backup MX address only (an old spammer trick to take advantage of backup MX hosts with weaker anti-spam policies than primary MX hosts). @@ -202,24 +202,24 @@ weaker anti-spam policies than primary MX hosts). Second, configure Postfix to listen on the new IP address (this step is needed when you have specified inet_interfaces in main.cf). - * Then, configure postscreen(8) to deny the temporary whitelist status on the + * Then, configure postscreen(8) to deny the temporary allowlist status on the backup MX address(es). An example for Wietse's server is: /etc/postfix/main.cf: postscreen_whitelist_interfaces = !168.100.189.8 static:all - Translation: allow clients to obtain the temporary whitelist status on all + Translation: allow clients to obtain the temporary allowlist status on all server IP addresses except 168.100.189.8, which is a backup MX address. -When a non-whitelisted client connects the backup MX address, postscreen(8) +When a non-allowlisted client connects the backup MX address, postscreen(8) logs this with the client address and port number as: CCOONNNNEECCTT ffrroomm [address]:port ttoo [[116688..110000..118899..88]]::2255 WWHHIITTEELLIISSTT VVEETTOO [address]:port Translation: the client at [address]:port connected to the backup MX address -168.100.189.8 while it was not whitelisted. The client will not be granted the -temporary whitelist status, even if passes all the whitelist tests described +168.100.189.8 while it was not allowlisted. The client will not be granted the +temporary allowlist status, even if passes all the allowlist tests described below. TTeessttss bbeeffoorree tthhee 222200 SSMMTTPP sseerrvveerr ggrreeeettiinngg @@ -229,13 +229,13 @@ The postscreen_greet_wait parameter specifies a short time interval before the parallel. When a good client passes these tests, and no "deep protocol tests" are -configured, postscreen(8) adds the client to the temporary whitelist and hands +configured, postscreen(8) adds the client to the temporary allowlist and hands off the "live" connection to a Postfix SMTP server process. The client can then continue as if postscreen(8) never even existed (except of course for the short postscreen_greet_wait delay). * Pregreet test - * DNS White/blacklist test + * DNS Allow/denylist test * When tests fail before the 220 SMTP server greeting PPrreeggrreeeett tteesstt @@ -256,8 +256,8 @@ network testing tools, either exclude them from all tests with the postscreen_access_list feature or else specify an empty teaser banner: /etc/postfix/main.cf: - # Exclude broken clients by whitelisting. Clients in mynetworks - # should always be whitelisted. + # Exclude broken clients by allowlisting. Clients in mynetworks + # should always be allowlisted. postscreen_access_list = permit_mynetworks, cidr:/etc/postfix/postscreen_access.cidr @@ -265,7 +265,7 @@ postscreen_access_list feature or else specify an empty teaser banner: 192.168.254.0/24 permit /etc/postfix/main.cf: - # Disable the teaser banner (try whitelisting first if you can). + # Disable the teaser banner (try allowlisting first if you can). postscreen_greet_banner = When an SMTP client sends a command before the postscreen_greet_wait time has @@ -282,11 +282,11 @@ return and \n for newline). The postscreen_greet_action parameter specifies the action that is taken next. See "When tests fail before the 220 SMTP server greeting" below. -DDNNSS WWhhiittee//bbllaacckklliisstt tteesstt +DDNNSS AAllllooww//ddeennyylliisstt tteesstt The postscreen_dnsbl_sites parameter (default: empty) specifies a list of DNS blocklist servers with optional filters and weight factors (positive weights -for blacklisting, negative for whitelisting). These servers will be queried in +for denylisting, negative for allowlisting). These servers will be queried in parallel with the reverse client IP address. This test is disabled by default. CAUTION: when postscreen rejects mail, its SMTP reply contains the DNSBL @@ -308,7 +308,7 @@ tests fail before the 220 SMTP server greeting" below. WWhheenn tteessttss ffaaiill bbeeffoorree tthhee 222200 SSMMTTPP sseerrvveerr ggrreeeettiinngg -When the client address matches the permanent blacklist, or when the client +When the client address matches the permanent denylist, or when the client fails the pregreet or DNSBL tests, the action is specified with postscreen_blacklist_action, postscreen_greet_action, or postscreen_dnsbl_action, respectively. @@ -526,14 +526,14 @@ control these limits. WWhheenn aallll tteessttss ssuucccceeeedd -When a new SMTP client passes all tests (i.e. it is not whitelisted via some +When a new SMTP client passes all tests (i.e. it is not allowlisted via some mechanism), postscreen(8) logs this as: PPAASSSS NNEEWW [address]:port Where [address]:port are the client IP address and port. Then, postscreen(8) -creates a temporary whitelist entry that excludes the client IP address from -further tests until the temporary whitelist entry expires, as controlled with +creates a temporary allowlist entry that excludes the client IP address from +further tests until the temporary allowlist entry expires, as controlled with the postscreen_*_ttl parameters. When no "deep protocol tests" are configured, postscreen(8) hands off the @@ -558,7 +558,7 @@ systems. * postscreen(8) TLS configuration * Blocking mail with postscreen(8) * Turning off postscreen(8) - * Sharing the temporary whitelist + * Sharing the temporary allowlist TTuurrnniinngg oonn ppoossttssccrreeeenn((88)) wwiitthhoouutt bblloocckkiinngg mmaaiill @@ -572,8 +572,8 @@ mail: broken SMTP implementations): /etc/postfix/main.cf: - # Exclude broken clients by whitelisting. Clients in mynetworks - # should always be whitelisted. + # Exclude broken clients by allowlisting. Clients in mynetworks + # should always be allowlisted. postscreen_access_list = permit_mynetworks, cidr:/etc/postfix/postscreen_access.cidr @@ -655,7 +655,7 @@ Notes: ppoossttssccrreeeenn((88)) TTLLSS ccoonnffiigguurraattiioonn postscreen(8) TLS support is available for remote SMTP clients that aren't -whitelisted, including clients that need to renew their temporary whitelist +allowlisted, including clients that need to renew their temporary allowlist status. When a remote SMTP client requests TLS service, postscreen(8) invisibly hands off the connection to a tlsproxy(8) process. Then, tlsproxy(8) encrypts and decrypts the traffic between postscreen(8) and the remote SMTP client. One @@ -697,13 +697,13 @@ more of: their turn, and to log the helo/sender/recipient information. This stops over half of all known-to-be illegitimate connections to Wietse's mail server. It is backup protection for zombies that haven't yet been - blacklisted. + denylisted. * You can also enable "deep protocol tests", but these are more intrusive than the pregreet or DNSBL tests. When a good client passes the "deep protocol tests", postscreen(8) adds the - client to the temporary whitelist but it cannot hand off the "live" + client to the temporary allowlist but it cannot hand off the "live" connection to a Postfix SMTP server process in the middle of the session. Instead, postscreen(8) defers mail delivery attempts with a 4XX status, logs the helo/sender/recipient information, and waits for the client to @@ -719,10 +719,10 @@ more of: after all. Unfortunately, some senders will retry requests from different IP - addresses, and may never get whitelisted. For this reason, Wietse stopped + addresses, and may never get allowlisted. For this reason, Wietse stopped using "deep protocol tests" on his own internet-facing mail server. - * There is also support for permanent blacklisting and whitelisting; see the + * There is also support for permanent denylisting and allowlisting; see the description of the postscreen_access_list parameter for details. TTuurrnniinngg ooffff ppoossttssccrreeeenn((88)) @@ -765,18 +765,18 @@ processes: 6. Read the new configuration with "postfix reload". -SShhaarriinngg tthhee tteemmppoorraarryy wwhhiitteelliisstt +SShhaarriinngg tthhee tteemmppoorraarryy aalllloowwlliisstt -By default, the temporary whitelist is not shared between multiple postscreen +By default, the temporary allowlist is not shared between multiple postscreen (8) daemons. To enable sharing, choose one of the following options: - * A non-persistent memcache: temporary whitelist can be shared between + * A non-persistent memcache: temporary allowlist can be shared between postscreen(8) daemons on the same host or different hosts. Disable cache cleanup (postscreen_cache_cleanup_interval = 0) in all postscreen(8) daemons because memcache: has no first-next API (but see example 4 below for memcache: with persistent backup). This requires Postfix 2.9 or later. - # Example 1: non-persistent memcache: whitelist. + # Example 1: non-persistent memcache: allowlist. /etc/postfix/main.cf: postscreen_cache_map = memcache:/etc/postfix/postscreen_cache postscreen_cache_cleanup_interval = 0 @@ -785,32 +785,32 @@ By default, the temporary whitelist is not shared between multiple postscreen memcache = inet:127.0.0.1:11211 key_format = postscreen:%s - * A persistent lmdb: temporary whitelist can be shared between postscreen(8) + * A persistent lmdb: temporary allowlist can be shared between postscreen(8) daemons that run under the same master(8) daemon, or under different master (8) daemons on the same host. Disable cache cleanup (postscreen_cache_cleanup_interval = 0) in all postscreen(8) daemons except one that is responsible for cache cleanup. This requires Postfix 2.11 or later. - # Example 2: persistent lmdb: whitelist. + # Example 2: persistent lmdb: allowlist. /etc/postfix/main.cf: postscreen_cache_map = lmdb:$data_directory/postscreen_cache # See note 1 below. # postscreen_cache_cleanup_interval = 0 - * Other kinds of persistent temporary whitelist can be shared only between + * Other kinds of persistent temporary allowlist can be shared only between postscreen(8) daemons that run under the same master(8) daemon. In this - case, temporary whitelist access must be shared through the proxymap(8) + case, temporary allowlist access must be shared through the proxymap(8) daemon. This requires Postfix 2.9 or later. - # Example 3: proxied btree: whitelist. + # Example 3: proxied btree: allowlist. /etc/postfix/main.cf: postscreen_cache_map = proxy:btree:/var/lib/postfix/postscreen_cache # See note 1 below. # postscreen_cache_cleanup_interval = 0 - # Example 4: proxied btree: whitelist with memcache: accelerator. + # Example 4: proxied btree: allowlist with memcache: accelerator. /etc/postfix/main.cf: postscreen_cache_map = memcache:/etc/postfix/postscreen_cache proxy_write_maps = diff --git a/postfix/README_FILES/SMTPD_ACCESS_README b/postfix/README_FILES/SMTPD_ACCESS_README index 230204a7f..a4d7c208a 100644 --- a/postfix/README_FILES/SMTPD_ACCESS_README +++ b/postfix/README_FILES/SMTPD_ACCESS_README @@ -23,7 +23,7 @@ RReellaayy ccoonnttrrooll,, jjuunnkk mmaaiill ccoonnttr In a distant past, the Internet was a friendly environment. Mail servers happily forwarded mail on behalf of anyone towards any destination. On today's Internet, spammers abuse servers that forward mail from arbitrary systems, and -abused systems end up on anti-spammer blacklists. See, for example, the +abused systems end up on anti-spammer denylists. See, for example, the information on http://www.mail-abuse.org/ and other websites. By default, Postfix has a moderately restrictive approach to mail relaying. @@ -50,11 +50,11 @@ email. Protocol-oriented access controls become less useful over time as spammers and worm writers learn to read RFC documents. - * Blacklist oriented: some SMTP server access controls query blacklists with + * Denylist oriented: some SMTP server access controls query denylists with known to be bad sites such as open mail relays, open web proxies, and home computers that have been compromised and that are under remote control by - criminals. The effectiveness of these blacklists depends on how complete - and how up to date they are. + criminals. The effectiveness of these denylists depends on how complete and + how up to date they are. * Threshold oriented: some SMTP server access controls attempt to raise the bar by either making the client do more work (greylisting) or by asking for @@ -160,7 +160,7 @@ Each restriction list is evaluated from left to right until some restriction produces a result of PERMIT, REJECT or DEFER (try again later). The end of each list is equivalent to a PERMIT result. By placing a PERMIT restriction before a REJECT restriction you can make exceptions for specific clients or users. This -is called whitelisting; the fourth example above allows mail from local +is called allowlisting; the fourth example above allows mail from local networks but otherwise rejects mail to arbitrary destinations. The table below summarizes the purpose of each SMTP access restriction list. @@ -248,7 +248,7 @@ Benefits of delayed restriction evaluation, and of restriction mixing: logging only the client hostname and IP address and not knowing whose mail was being blocked. - * Mixing is needed for complex whitelisting policies. For example, in order + * Mixing is needed for complex allowlisting policies. For example, in order to reject local sender addresses in mail from non-local clients, you need to be able to mix restrictions on client information with restrictions on sender information in the same restriction list. Without this ability, many diff --git a/postfix/README_FILES/SMTPD_POLICY_README b/postfix/README_FILES/SMTPD_POLICY_README index 0c96c760a..6386b0ec5 100644 --- a/postfix/README_FILES/SMTPD_POLICY_README +++ b/postfix/README_FILES/SMTPD_POLICY_README @@ -516,7 +516,7 @@ If you turn on greylisting for all mail you may want to make exceptions for mailing lists that use one-time sender addresses, because each message will be delayed due to greylisting, and the one-time sender addresses can pollute your greylist database relatively quickly. Instead of making exceptions, you can -automatically whitelist clients that survive greylisting repeatedly; this +automatically allowlist clients that survive greylisting repeatedly; this avoids most of the delays and most of the database pollution problem. 1 /etc/postfix/main.cf: @@ -578,11 +578,11 @@ $database_name="/var/mta/greylist.db"; $greylist_delay=60; # -# Auto-whitelist threshold. Specify 0 to disable, or the number of +# Auto-allowlist threshold. Specify 0 to disable, or the number of # successful "come backs" after which a client is no longer subject # to greylisting. # -$auto_whitelist_threshold = 10; +$auto_allowlist_threshold = 10; # # Demo SMTPD access policy routine. The result is an action just like @@ -595,10 +595,10 @@ sub smtpd_access_policy { # Open the database on the fly. open_database() unless $database_obj; - # Search the auto-whitelist. - if ($auto_whitelist_threshold > 0) { + # Search the auto-allowlist. + if ($auto_allowlist_threshold > 0) { $count = read_database($attr{"client_address"}); - if ($count > $auto_whitelist_threshold) { + if ($count > $auto_allowlist_threshold) { return "dunno"; } } @@ -627,8 +627,8 @@ sub smtpd_access_policy { # syslog $syslog_priority, "request age %d", $now - $time_stamp if $verbose; if ($now - $time_stamp > $greylist_delay) { - # Update the auto-whitelist. - if ($auto_whitelist_threshold > 0) { + # Update the auto-allowlist. + if ($auto_allowlist_threshold > 0) { update_database($attr{"client_address"}, $count + 1); } return "dunno"; diff --git a/postfix/README_FILES/STRESS_README b/postfix/README_FILES/STRESS_README index bae6ad172..79d113a55 100644 --- a/postfix/README_FILES/STRESS_README +++ b/postfix/README_FILES/STRESS_README @@ -259,7 +259,7 @@ to Postfix. maps. The Postfix SMTP server will reject mail and disconnect without waiting for the remote SMTP client to send a QUIT command. - * To hang up connections from blacklisted zombies, you can set specific + * To hang up connections from denylisted zombies, you can set specific Postfix SMTP server reject codes for specific RBLs, and for individual responses from specific RBLs. We'll use zen.spamhaus.org as an example; by the time you read this document, details may have changed. Right now, their diff --git a/postfix/html/ADDRESS_VERIFICATION_README.html b/postfix/html/ADDRESS_VERIFICATION_README.html index f64439ab8..25c6a2b59 100644 --- a/postfix/html/ADDRESS_VERIFICATION_README.html +++ b/postfix/html/ADDRESS_VERIFICATION_README.html @@ -22,7 +22,7 @@
Recipient address verification may cause an increased load on down-stream servers in the case of a dictionary attack or a flood of backscatter bounces. Sender address verification may cause your -site to be blacklisted by some providers. See also the "Limitations" section below for more.
Some sites may blacklist you when you are probing them +
Some sites may denylist you when you are probing them too often (a probe is an SMTP session that does not deliver mail), or when you are probing them too often for a non-existent address. This is one reason why you should use sender address verification @@ -413,12 +413,12 @@ you can see what mail would be blocked:
This is also a good way to populate your cache with address verification results before you start to actually reject mail.
-The sender_access restriction is needed to whitelist domains +
The sender_access restriction is needed to allowlist domains or addresses that are known to be OK. Although Postfix will not mark a known-to-be-good address as bad after a probe fails, it is better to be safe than sorry.
-NOTE: You will have to whitelist sites such as securityfocus.com +
NOTE: You will have to allowlist sites such as securityfocus.com and other sites that operate mailing lists that use a different sender address for each posting (VERP). Such addresses pollute the address verification cache quickly, and generate unnecessary diff --git a/postfix/html/OVERVIEW.html b/postfix/html/OVERVIEW.html index 0319e8af8..ba25fdc7b 100644 --- a/postfix/html/OVERVIEW.html +++ b/postfix/html/OVERVIEW.html @@ -737,14 +737,14 @@ those numbers were 92% and 95%, respectively. While smtpd(8) processes remain available for legitimate clients.
-postscreen(8) maintains a temporary whitelist for clients that -pass its tests; by allowing whitelisted clients to skip tests, +
postscreen(8) maintains a temporary allowlist for clients that +pass its tests; by allowing allowlisted clients to skip tests, postscreen(8) minimizes its impact on legitimate email traffic.
The postscreen(8) server is available with Postfix 2.8 and later. To keep the implementation simple, postscreen(8) delegates -DNS white/blacklist lookups to dnsblog(8) server processes, and +DNS allow/denylist lookups to dnsblog(8) server processes, and delegates TLS encryption/decryption to tlsproxy(8) server processes. This delegation is invisible to the remote SMTP client, and is not shown in the diagram below.
diff --git a/postfix/html/POSTSCREEN_README.html b/postfix/html/POSTSCREEN_README.html index 18ec8eda6..b169740b2 100644 --- a/postfix/html/POSTSCREEN_README.html +++ b/postfix/html/POSTSCREEN_README.html @@ -36,8 +36,8 @@ requires client authentication. Alternatively, a site could set up a dedicated, non-postscreen, "port 25" server that provides submission service and client authentication, but no MX service. -postscreen(8) maintains a temporary whitelist for clients that -pass its tests; by allowing whitelisted clients to skip tests, +
postscreen(8) maintains a temporary allowlist for clients that +pass its tests; by allowing allowlisted clients to skip tests, postscreen(8) minimizes its impact on legitimate email traffic.
@@ -110,11 +110,11 @@ spending most of its resources not receiving email. decision based on a single measurement. This is necessary because many zombies try to fly under the radar and avoid spamming the same site repeatedly. Once postscreen(8) decides that a client is -not-a-zombie, it whitelists the client temporarily to avoid further +not-a-zombie, it allowlists the client temporarily to avoid further delays for legitimate mail.Zombies have challenges too: they have only a limited amount -of time to deliver spam before their IP address becomes blacklisted. +of time to deliver spam before their IP address becomes denylisted. To speed up spam deliveries, zombies make compromises in their SMTP protocol implementation. For example, they speak before their turn, or they ignore responses from SMTP servers and continue sending @@ -122,7 +122,7 @@ mail even when the server tells them to go away.
postscreen(8) uses a variety of measurements to recognize zombies. First, postscreen(8) determines if the remote SMTP client -IP address is blacklisted. Second, postscreen(8) looks for protocol +IP address is denylisted. Second, postscreen(8) looks for protocol compromises that are made to speed up delivery. These are good indicators for making is-a-zombie decisions based on single measurements.
@@ -138,8 +138,8 @@ and that is the problem that postscreen(8) is foFor each connection from an SMTP client, postscreen(8) performs a number of tests in the order as described below. Some tests introduce a delay of -a few seconds. postscreen(8) maintains a temporary whitelist for -clients that pass its tests; by allowing whitelisted clients to +a few seconds. postscreen(8) maintains a temporary allowlist for +clients that pass its tests; by allowing allowlisted clients to skip tests, postscreen(8) minimizes its impact on legitimate email traffic.
@@ -158,25 +158,25 @@ overhead for legitimate clients.Before engaging in SMTP-level tests. postscreen(8) queries a -number of local black and whitelists. These tests speed up the +number of local deny and allowlists. These tests speed up the handling of known clients.
The postscreen_access_list parameter (default: permit_mynetworks) specifies a permanent access list for SMTP client IP addresses. Typically -one would specify something that whitelists local networks, followed -by a CIDR table for selective white- and blacklisting.
+one would specify something that allowlists local networks, followed +by a CIDR table for selective allow- and denylisting.Example:
@@ -187,7 +187,7 @@ by a CIDR table for selective white- and blacklisting. /etc/postfix/postscreen_access.cidr: # Rules are evaluated in the order as specified. - # Blacklist 192.168.* except 192.168.0.1. + # Denylist 192.168.* except 192.168.0.1. 192.168.0.1 permit 192.168.0.0/16 reject @@ -203,7 +203,7 @@ details. WHITELISTED [address]:port -The whitelist action is not configurable: immediately hand off the +
The allowlist action is not configurable: immediately hand off the connection to a Postfix SMTP server process.
When the SMTP client address matches a "reject" action, @@ -218,21 +218,21 @@ connection to a Postfix SMTP server process.
that is taken next. See "When tests fail before the 220 SMTP server greeting" below. -The postscreen(8) daemon maintains a temporary -whitelist for SMTP client IP addresses that have passed all +allowlist for SMTP client IP addresses that have passed all the tests described below. The postscreen_cache_map parameter -specifies the location of the temporary whitelist. The -temporary whitelist is not used for SMTP client addresses +specifies the location of the temporary allowlist. The +temporary allowlist is not used for SMTP client addresses that appear on the permanent access list.
-By default the temporary whitelist is not shared with other +
By default the temporary allowlist is not shared with other postscreen(8) daemons. See Sharing -the temporary whitelist below for alternatives.
+the temporary allowlist below for alternatives.When the SMTP client address appears on the temporary -whitelist, postscreen(8) logs this with the client address and port +allowlist, postscreen(8) logs this with the client address and port number as:
@@ -241,19 +241,19 @@ number as:The action is not configurable: immediately hand off the connection to a Postfix SMTP server process. The client is -excluded from further tests until its temporary whitelist +excluded from further tests until its temporary allowlist entry expires, as controlled with the postscreen_*_ttl parameters. Expired entries are silently renewed if possible.
MX Policy test
When the remote SMTP client is not on the static access list -or temporary whitelist, postscreen(8) can implement a number of -whitelist tests, before it grants the client a temporary whitelist +or temporary allowlist, postscreen(8) can implement a number of +allowlist tests, before it grants the client a temporary allowlist status that allows it to talk to a Postfix SMTP server process.
When postscreen(8) is configured to monitor all primary and -backup MX addresses, it can refuse to whitelist clients that connect +backup MX addresses, it can refuse to allowlist clients that connect to a backup MX address only (an old spammer trick to take advantage of backup MX hosts with weaker anti-spam policies than primary MX hosts).
@@ -274,7 +274,7 @@ files and "refresh" the network protocol stack. (this step is needed when you have specified inet_interfaces in main.cf). -
Then, configure postscreen(8) to deny the temporary whitelist +
Then, configure postscreen(8) to deny the temporary allowlist status on the backup MX address(es). An example for Wietse's server is:
@@ -283,13 +283,13 @@ server is: postscreen_whitelist_interfaces = !168.100.189.8 static:all -Translation: allow clients to obtain the temporary whitelist +
Translation: allow clients to obtain the temporary allowlist status on all server IP addresses except 168.100.189.8, which is a backup MX address.
-When a non-whitelisted client connects the backup MX address, +
When a non-allowlisted client connects the backup MX address, postscreen(8) logs this with the client address and port number as:
@@ -299,9 +299,9 @@ backup MX address.Translation: the client at [address]:port connected to -the backup MX address 168.100.189.8 while it was not whitelisted. -The client will not be granted the temporary whitelist status, even -if passes all the whitelist tests described below.
+the backup MX address 168.100.189.8 while it was not allowlisted. +The client will not be granted the temporary allowlist status, even +if passes all the allowlist tests described below.When a good client passes these tests, and no "deep protocol tests" are configured, postscreen(8) -adds the client to the temporary whitelist and hands off the "live" +adds the client to the temporary allowlist and hands off the "live" connection to a Postfix SMTP server process. The client can then continue as if postscreen(8) never even existed (except of course for the short postscreen_greet_wait delay).
@@ -320,7 +320,7 @@ for the short postscreen_greet_w/etc/postfix/main.cf: - # Exclude broken clients by whitelisting. Clients in mynetworks - # should always be whitelisted. + # Exclude broken clients by allowlisting. Clients in mynetworks + # should always be allowlisted. postscreen_access_list = permit_mynetworks, cidr:/etc/postfix/postscreen_access.cidr @@ -359,7 +359,7 @@ an empty teaser banner:/etc/postfix/main.cf: - # Disable the teaser banner (try whitelisting first if you can). + # Disable the teaser banner (try allowlisting first if you can). postscreen_greet_banner =@@ -382,11 +382,11 @@ and \n for newline). is taken next. See "When tests fail before the 220 SMTP server greeting" below. -DNS White/blacklist test
+DNS Allow/denylist test
The postscreen_dnsbl_sites parameter (default: empty) specifies a list of DNS blocklist servers with optional filters and weight -factors (positive weights for blacklisting, negative for whitelisting). +factors (positive weights for denylisting, negative for allowlisting). These servers will be queried in parallel with the reverse client IP address. This test is disabled by default.
@@ -416,7 +416,7 @@ before the 220 SMTP server greeting
When the client address matches the permanent blacklist, or +
When the client address matches the permanent denylist, or when the client fails the pregreet or DNSBL tests, the action is specified with postscreen_blacklist_action, postscreen_greet_action, or postscreen_dnsbl_action, respectively.
@@ -736,7 +736,7 @@ parameters control these limits.When a new SMTP client passes all tests (i.e. it is not whitelisted +
When a new SMTP client passes all tests (i.e. it is not allowlisted via some mechanism), postscreen(8) logs this as:
@@ -745,8 +745,8 @@ via some mechanism), postscreen(8) logs this as:Where [address]:port are the client IP address and port. Then, postscreen(8) -creates a temporary whitelist entry that excludes the client IP -address from further tests until the temporary whitelist entry +creates a temporary allowlist entry that excludes the client IP +address from further tests until the temporary allowlist entry expires, as controlled with the postscreen_*_ttl parameters.
When no "deep protocol tests" are @@ -783,7 +783,7 @@ mail
/etc/postfix/main.cf: - # Exclude broken clients by whitelisting. Clients in mynetworks - # should always be whitelisted. + # Exclude broken clients by allowlisting. Clients in mynetworks + # should always be allowlisted. postscreen_access_list = permit_mynetworks, cidr:/etc/postfix/postscreen_access.cidr @@ -921,8 +921,8 @@ work reliably on all systems.postscreen(8) TLS configuration
postscreen(8) TLS support is available for remote SMTP clients -that aren't whitelisted, including clients that need to renew their -temporary whitelist status. When a remote SMTP client requests TLS +that aren't allowlisted, including clients that need to renew their +temporary allowlist status. When a remote SMTP client requests TLS service, postscreen(8) invisibly hands off the connection to a tlsproxy(8) process. Then, tlsproxy(8) encrypts and decrypts the traffic between postscreen(8) and the remote SMTP client. One @@ -976,7 +976,7 @@ Postfix SMTP servers dramatically.
clients that talk before their turn, and to log the helo/sender/recipient information. This stops over half of all known-to-be illegitimate connections to Wietse's mail server. It is backup protection for -zombies that haven't yet been blacklisted. +zombies that haven't yet been denylisted.
You can also enable "deep protocol tests", but these are more intrusive than the pregreet or DNSBL @@ -984,7 +984,7 @@ tests.
When a good client passes the "deep protocol tests", postscreen(8) adds the client to the temporary -whitelist but it cannot hand off the "live" connection to a Postfix +allowlist but it cannot hand off the "live" connection to a Postfix SMTP server process in the middle of the session. Instead, postscreen(8) defers mail delivery attempts with a 4XX status, logs the helo/sender/recipient information, and waits for the client to @@ -1000,12 +1000,12 @@ tests
Unfortunately, some senders will retry requests from different -IP addresses, and may never get whitelisted. For this reason, +IP addresses, and may never get allowlisted. For this reason, Wietse stopped using "deep protocol tests" on his own internet-facing mail server.
-There is also support for permanent blacklisting and -whitelisting; see the description of the postscreen_access_list +
There is also support for permanent denylisting and +allowlisting; see the description of the postscreen_access_list parameter for details.
@@ -1070,15 +1070,15 @@ may follow. -By default, the temporary whitelist is not shared between +
By default, the temporary allowlist is not shared between multiple postscreen(8) daemons. To enable sharing, choose one of the following options:
A non-persistent memcache: temporary whitelist can be shared +
A non-persistent memcache: temporary allowlist can be shared between postscreen(8) daemons on the same host or different hosts. Disable cache cleanup (postscreen_cache_cleanup_interval = 0) in all postscreen(8) daemons because memcache: has no @@ -1086,7 +1086,7 @@ of the following options:
persistent backup). This requires Postfix 2.9 or later.- # Example 1: non-persistent memcache: whitelist. + # Example 1: non-persistent memcache: allowlist. /etc/postfix/main.cf: postscreen_cache_map = memcache:/etc/postfix/postscreen_cache postscreen_cache_cleanup_interval = 0 @@ -1097,7 +1097,7 @@ of the following options:
- A persistent lmdb: temporary whitelist can be shared between + A persistent lmdb: temporary allowlist can be shared between postscreen(8) daemons that run under the same master(8) daemon, or under different master(8) daemons on the same host. Disable cache cleanup (postscreen_cache_cleanup_interval = 0) in all @@ -1105,28 +1105,28 @@ of the following options:
cleanup. This requires Postfix 2.11 or later.- # Example 2: persistent lmdb: whitelist. + # Example 2: persistent lmdb: allowlist. /etc/postfix/main.cf: postscreen_cache_map = lmdb:$data_directory/postscreen_cache # See note 1 below. # postscreen_cache_cleanup_interval = 0-
Other kinds of persistent temporary whitelist can be shared +
Other kinds of persistent temporary allowlist can be shared only between postscreen(8) daemons that run under the same - master(8) daemon. In this case, temporary whitelist access must + master(8) daemon. In this case, temporary allowlist access must be shared through the proxymap(8) daemon. This requires Postfix 2.9 or later.
- # Example 3: proxied btree: whitelist. + # Example 3: proxied btree: allowlist. /etc/postfix/main.cf: postscreen_cache_map = proxy:btree:/var/lib/postfix/postscreen_cache # See note 1 below. # postscreen_cache_cleanup_interval = 0 - # Example 4: proxied btree: whitelist with memcache: accelerator. + # Example 4: proxied btree: allowlist with memcache: accelerator. /etc/postfix/main.cf: postscreen_cache_map = memcache:/etc/postfix/postscreen_cache proxy_write_maps = @@ -1189,4 +1189,3 @@ POP, IMAP, NNTP, and FTP over TLS.