<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://lms.onnocenter.or.id/wiki/index.php?action=history&amp;feed=atom&amp;title=Block_Spam_Using_Postfix_%28en%29</id>
	<title>Block Spam Using Postfix (en) - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://lms.onnocenter.or.id/wiki/index.php?action=history&amp;feed=atom&amp;title=Block_Spam_Using_Postfix_%28en%29"/>
	<link rel="alternate" type="text/html" href="https://lms.onnocenter.or.id/wiki/index.php?title=Block_Spam_Using_Postfix_(en)&amp;action=history"/>
	<updated>2026-04-19T20:20:42Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://lms.onnocenter.or.id/wiki/index.php?title=Block_Spam_Using_Postfix_(en)&amp;diff=71386&amp;oldid=prev</id>
		<title>Unknown user: Created page with &quot;Blocking spam using SpamAssassin for 1000 emails/minute can overload the CPU. A smarter way to block spam before it reaches SpamAssassin is using RBL (Realtime Blacklists) and...&quot;</title>
		<link rel="alternate" type="text/html" href="https://lms.onnocenter.or.id/wiki/index.php?title=Block_Spam_Using_Postfix_(en)&amp;diff=71386&amp;oldid=prev"/>
		<updated>2025-01-03T23:49:46Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;Blocking spam using SpamAssassin for 1000 emails/minute can overload the CPU. A smarter way to block spam before it reaches SpamAssassin is using RBL (Realtime Blacklists) and...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Blocking spam using SpamAssassin for 1000 emails/minute can overload the CPU. A smarter way to block spam before it reaches SpamAssassin is using RBL (Realtime Blacklists) and RHBL (similar but different from RBL), Greylisting, and HELO checks.&lt;br /&gt;
&lt;br /&gt;
We slightly modify the configuration in /etc/postfix/main.cf to add defenses at smtpd and check all hosts:&lt;br /&gt;
&lt;br /&gt;
 ### Checks to remove badly formed email&lt;br /&gt;
 smtpd_helo_required = yes&lt;br /&gt;
 strict_rfc821_envelopes = yes&lt;br /&gt;
 disable_vrfy_command = yes&lt;br /&gt;
 unknown_address_reject_code = 554&lt;br /&gt;
 unknown_hostname_reject_code = 554&lt;br /&gt;
 unknown_client_reject_code = 554&lt;br /&gt;
 smtpd_helo_restrictions = permit_mynetworks, reject_invalid_hostname, regexp:/etc/postfix/helo.regexp, permit&lt;br /&gt;
&lt;br /&gt;
 ### When changing sender_checks, this file must be regenerated using postmap &amp;lt;file&amp;gt;, to generate a Berkeley DB&lt;br /&gt;
 smtpd_recipient_restrictions =&lt;br /&gt;
    check_client_access hash:/etc/postfix/helo_client_exceptions&lt;br /&gt;
    check_sender_access hash:/etc/postfix/sender_checks,&lt;br /&gt;
      reject_invalid_hostname,&lt;br /&gt;
 ### Can cause issues with Auth SMTP, so be weary!&lt;br /&gt;
      reject_non_fqdn_hostname,&lt;br /&gt;
 ##################################&lt;br /&gt;
      reject_non_fqdn_sender,&lt;br /&gt;
      reject_non_fqdn_recipient,&lt;br /&gt;
      reject_unknown_sender_domain,&lt;br /&gt;
      reject_unknown_recipient_domain,&lt;br /&gt;
      permit_mynetworks,&lt;br /&gt;
      reject_unauth_destination,&lt;br /&gt;
&lt;br /&gt;
 # Add RBL exceptions here, when changing rbl_client_exceptions, this&lt;br /&gt;
 # file must be regenerated using postmap &amp;lt;file&amp;gt;, to generate a Berkeley DB&lt;br /&gt;
&lt;br /&gt;
    check_client_access hash:/etc/postfix/rbl_client_exceptions,&lt;br /&gt;
      reject_rbl_client cbl.abuseat.org,&lt;br /&gt;
      reject_rbl_client sbl-xbl.spamhaus.org,&lt;br /&gt;
      reject_rbl_client bl.spamcop.net, &lt;br /&gt;
      reject_rhsbl_sender    dsn.rfc-ignorant.org,&lt;br /&gt;
    check_policy_service inet:127.0.0.1:60000&lt;br /&gt;
       permit &lt;br /&gt;
&lt;br /&gt;
We need to create a new file:&lt;br /&gt;
&lt;br /&gt;
 vi /etc/postfix/helo.regexp&lt;br /&gt;
&lt;br /&gt;
 /^subdomain\.host\.com$/           550 Don&amp;#039;t use my own hostname&lt;br /&gt;
 /^xxx\.yyy\.zzz\.xxx$/             550 Don&amp;#039;t use my own IP address&lt;br /&gt;
 /^\[xxx\.yyy\.zzz\.xxx\]$/         550 Don&amp;#039;t use my own IP address&lt;br /&gt;
 /^[0-9.]+$/                        550 Your software is not RFC 2821 compliant&lt;br /&gt;
 /^[0-9]+(\.[0-9]+){3}$/            550 Your software is not RFC 2821 compliant&lt;br /&gt;
&lt;br /&gt;
This way is quite effective in discarding spammers who try to send HELO commands with chaotic [[IP address]] or hostname that do not comply with RFC 2821.&lt;br /&gt;
&lt;br /&gt;
==A simpler way==&lt;br /&gt;
&lt;br /&gt;
To block [[mail spam]] using postfix, add the following lines in /etc/postfix/main.cf:&lt;br /&gt;
&lt;br /&gt;
 check_helo_access hash:/etc/postfix/maps/helo_access,&lt;br /&gt;
   reject_rhsbl_sender cbl.abuseat.org,&lt;br /&gt;
   reject_rhsbl_sender dnsbl.njabl.org,&lt;br /&gt;
   reject_rhsbl_sender list.dsbl.org,&lt;br /&gt;
   reject_rhsbl_sender bl.spamcop.net,&lt;br /&gt;
   reject_rhsbl_sender cbl.abuseat.org,&lt;br /&gt;
   reject_rhsbl_sender dul.dnsbl.sorbs.net,&lt;br /&gt;
   reject_rhsbl_sender rhsbl.sorbs.net,&lt;br /&gt;
   permit&lt;br /&gt;
 &lt;br /&gt;
 smtpd_client_restrictions=&lt;br /&gt;
   reject_rbl_client cbl.abuseat.org,&lt;br /&gt;
   reject_rbl_client dnsbl.njabl.org,&lt;br /&gt;
   reject_rbl_client list.dsbl.org,&lt;br /&gt;
   reject_rbl_client bl.spamcop.net,&lt;br /&gt;
   reject_rbl_client cbl.abuseat.org,&lt;br /&gt;
   reject_rbl_client dul.dnsbl.sorbs.net,&lt;br /&gt;
   reject_rbl_client rhsbl.sorbs.net,&lt;br /&gt;
   permit_mynetworks,&lt;br /&gt;
   permit&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
* http://www.howtoforge.com/virtual_postfix_antispam&lt;br /&gt;
&lt;br /&gt;
==Interesting Links==&lt;br /&gt;
&lt;br /&gt;
* [[Postfix Installation]]&lt;br /&gt;
* [[Postfix: Configuring relayhost with Authentication]]&lt;br /&gt;
* [[Block Spam Using Postfix]]&lt;br /&gt;
* [[Linux Howto]]&lt;br /&gt;
* [[Tips on Building Your Own Server]]&lt;br /&gt;
&lt;br /&gt;
[[Category: Linux]]&lt;/div&gt;</summary>
		<author><name>Unknown user</name></author>
	</entry>
</feed>