Sejauh pengetahuan yang saya dapatkan, Postgrey akan melakukan pengurangan spam yang akan tersampaikan ke email server yang kita dapatkan melalu sebuah mekanisme yang cukup simple. Ide utamanya adalah para spammer biasanya tidak mengimplementasikan standard RFC yang seharusnya, yang secara sederhana dikatakan bahwa apabila sebuah email tidak bisa disampaikan, maka mail server yang melakukan pengiriman harus melakukan proses pengiriman lagi. Karena begitu banyaknya email yang dikirimkan oleh spammer maka mereka biasanya tidak akan melakukan proses yang sama.

Dari ide tersebut maka Greylisting akan me-reject berbagai domain yang tidak dipercayanya dengan mengerimkan kode respon 450 yang berarti “Saya tidak dapat menangani permintaan Anda sekarang, tolong nanti coba lagi“. Karena biasanya spammer menggunakan mail server yang biasanya tidak standar dengan yang RFC spesifikasn, maka mereka tidak akan mencoba untuk mengirimkan anda email lagi dan dengan demikian Anda tidak mendapatkan spam tersampaikan kepada pengguna.

Postgrey akan menyimpan record dari sebuah triplet: CLIENT_IP/SENDER/RECIPIENT. Bila ini adalah pertama kalinya triplet terlihat, atau bila ini adalah pertama kalinya terlihat setelah 5 menit yang lalu (nilai default:bisa diubah – lihat tulisan selanjutnya), maka triplet tersebut akan di greylisted, dan kemudian email akan di tolak dengan sebuah error sementara. Apabila pada saat setelahnya triplet yang sama terlihat setelah 5 menit dan sebelum 35 hari yang lewat, maka email akan diteruskan.

Instalasi

# apt-get install postgrey

Setelah itu kita tinggal menambahkan baris selanjutnya (Bukan menghilangkan) pada file /etc/postfix/main.cf, ditambahkan pada bagian akhir dari smtpd_recipient_restrictions, sehingga pada bagian yang saya miliki akan mendapatkan hasil seperti ini:

smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
#reject_non_fqdn_hostname,
reject_non_fqdn_sender,
reject_non_fqdn_recipient,
reject_unauth_destination,
reject_unauth_pipelining,
reject_invalid_hostname,
check_policy_service inet:127.0.0.1:60000

Jangan lupa untuk melakukan reload pada postfix.

# /etc/init.d/postfix reload

Setting Tambahan

Apabila ada mail server yang kita tahu bukan merupakan spam, maka kita tinggal menambahkan listnya pada file /etc/postgrey/whitelist_clients. Sedangkan untuk penerima tinggal ditambahkan pada /etc/postgrey/whitelist_recipients.

Postgrey melakukan greylisting policy menggunakan waktu yang secara default berkisar pada 5 menit apabila ini pertama kalinya triplet client_ip/sender/recipient terlihat atau jika ini adalah terakhir kalinya triplet terlihat sejak 35 hari yang lalu. Saya akan mengurangi waktunya menjadi 2 menit dan 10 hari saja. Untuk itu saya ubah file konfigurasi startup nya yang ada di /etc/default/postgrey menjadi

POSTGREY_OPTS="--inet=127.0.0.1:60000 --delay=120 --max-age=10 --auto-whitelist-clients=10"

Pada bagian –auto-whitelist-clients=10 saya memberikan perintah bahwa apabila triplet berhasil mengirimkan email setelah 10 kali proses greylisting dilakukan dan bila client terlihat sebelum –max-age maka postgrey akan menambahkan client secara otomatis ke whitelisting yang ada.

Setelah itu jangan lupa untuk melakukan restart pada Postgrey daemon.

# /etc/init.d/postgrey restart

Pelaporan

Postgrey dilengkapi dengan sebuah tool bernama postgreyreport. Menggunakan tool ini kita dapat mendapatkan report dari sebuah triplet yang tidak berhasil melalui langkah yang ditetapkan oleh greylisting (yang artinya bahwa perbedaan diantara waktu pertama kali terlihat dan terakhir kalinya adalah kurang dari –delay=N dan oleh karena itu bisa dikatakan bahwa triplet adalah spam). Untuk mendapatkan report bisa dilakukan dengan perintah (ditulis di satu baris):

# cat /var/log/mail.log | postgreyreport --nosingle_line --check_sender=mx,a --show_tries --separate_by_subnet=":-------------------------------------------------------\n"

Sumber: