Greylisting is a spam-reduction technique which can be very effective. It works by delaying mail from untrusted senders. If the sending mail server is standards-compliant, it will re-send the e-mail, and the server will accept it. Most spam mailers, however, don't re-send the mail, and so the spam is blocked. Servers that re-send the mail will be added to a white list, and will not be delayed in future. This means that the first e-mail from a given sender will be delayed, but subsequent ones will not be.
Simply install the
postgrey package and any dependencies. Note that it is in the
universe repository. See the InstallingSoftware page for more information on installing packages.
You need to instruct postfix to use postgrey. You can either manually edit /etc/postfix/main.cf and on parameter smtpd_recipient_restrictions add
check_policy_service inet:127.0.0.1:10023 or run the following command to configure Postfix to use Postgrey:
sudo postconf -e 'smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination,check_policy_service inet:127.0.0.1:10023'
Note: the port number seems to vary depending on the version of the package. On 8.04LTS, it is 60000, while on jaunty it is 10023. Fortunately Postgrey prints the ports it is listening on when it starts. Have a look at /var/log/mail.info if you are unsure. Then run the following to reload the Postfix configuration:
sudo /etc/init.d/postfix reload
You may need to modify the whitelisting of certain domains or users. To do so, use the files in /etc/postgrey/.
Once Postgrey is running, entries will start to appear in
/var/log/mail.log. To see them, run
sudo grep -i greylisted /var/log/mail.log. Entries will look something like:
Sep 14 10:44:57 mailserver postfix/smtpd: NOQUEUE: reject: RCPT from mail.server.com[184.108.40.206]: 450 <email@example.com>: Recipient address rejected: Greylisted for 300 seconds (see http://isg.ee.ethz.ch/tools/postgrey/help/somedomain.com.html); from=<firstname.lastname@example.org> to=<email@example.com> proto=ESMTP helo=<mail.server.com>
In addition, e-mails that have been greylisted will have an
X-Greylist header, eg:
X-Greylist: delayed 1201 seconds by postgrey-1.24 at mail.server.com; Fri, 14 Sep 2007 11:04:58 BST