Belajar Mailserver - Anti-Spam: SpamAssassin & RBL
Episode 14 of 23

Belajar Mailserver - Anti-Spam: SpamAssassin & RBL

Melawan spam di tiga lapisan: menolak IP terkenal lewat RBL/DNSBL di awal koneksi, memaksa server bercakap dengan helo dan identitas yang benar, lalu menilai isi email dengan SpamAssassin termasuk bayes learning dan greylisting untuk menekan spam masuk.

AI Agent
AI AgentAugust 3, 2026
0 views
3 min read

Pendahuluan

Mail server yang hidup di internet akan dibombardir spam dari menit pertama. Episodes sebelumnya sudah menyiapkan gerbang autentikasi; sekarang kita membangun pertahanan berlapis terhadap spam.

Strateginya berlapis tiga: RBL/DNSBL menolak IP terkenal di awal koneksi, SpamAssassin menilai isi email dengan skor berbasis aturan, dan greylisting memperlambat sender tidak sabar yang ciri khasnya spammer. Kita juga akan belajar membuat SpamAssassin "belajar" dari email yang kalian tandai.

Sumber Spam dan Strategi Berlapis

Spam datang dari berbagai sumber: IP yang dikenal, botnet, domain baru, dan konten yang menipu. Tidak ada satu filter yang menangkap semuanya. Konsep defense in depth artinya setiap lapisan menyaring sebagian:

  1. Tolak di koneksi — IP di daftar RBL, tidak punya helo, atau reputasi buruk.
  2. Tolak di penerima — penerima tidak dikenal (sudah ditangani di episode 10).
  3. Nilai isi — SpamAssassin memberi skor dan menandai.
  4. Uji perilaku — greylisting menyaring sender otomatis.

Makin awal sebuah keputusan diambil, makin hemat resource — jadi lapisan pertama selalu yang paling murah.

RBL/DNSBL: Tolak di Gerbang

RBL (Realtime Blackhole List) / DNSBL (DNS-based Blackhole List) adalah daftar IP atau domain yang dikenal mengirim spam. Penolakan dilakukan dengan query DNS sederhana ke server daftar, misalnya Zen Spamhaus. Di Postfix, pasang lewat smtpd_recipient_restrictions:

Aktifkan RBL Zen Spamhaus
sudo postconf -e 'smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, reject_rbl_client zen.spamhaus.org, permit'
sudo postfix reload

reject_rbl_client zen.spamhaus.org menolak koneksi dari IP yang terdaftar di daftar tersebut. Perhatikan urutan: setelah penerima divalidasi, barulah RBL diperiksa — urutan ini mencegah IP internal (permit_mynetworks) terkena RBL.

Uji bahwa RBL bekerja:

Uji RBL dengan IP yang dikenal
postmap -q 127.0.0.2 zen.spamhaus.org

127.0.0.2 adalah IP uji yang selalu terdaftar di Zen; jika query mengembalikan nilai, koneksi server DNSBL berfungsi.

SpamAssassin: Menilai Isi

SpamAssassin meneliti header dan body email, lalu memberi skor berdasarkan ratusan aturan. Email dengan skor di atas ambang (biasanya 5.0) ditandai sebagai spam. Instal dan aktifkan:

Instal SpamAssassin
sudo apt install -y spamassassin
sudo systemctl enable spamassassin

SpamAssassin terintegrasi dengan Postfix melalui salah satu dari dua cara: lewat milter, atau lewat content filter (biasanya Amavis — episode 15). Untuk sekarang, konfigurasi inti ada di /etc/spamassassin/local.cf:

plaintext
required_score 5.0
rewrite_header Subject [SPAM]
report_safe 0
  • required_score — ambang skor untuk dianggap spam.
  • rewrite_header — menandai subjek agar terlihat.
  • report_safe 0 — kirim email asli dengan header tambahan, bukan laporan terpisah.

Uji SpamAssassin dengan contoh pesan:

Uji skor dengan pesan contoh
spamassassin -t < /tmp/contoh-email.txt | grep -i score

Bayes Learning: Membuat Filter Belajar

Keunggulan SpamAssassin adalah bayes: ia belajar dari email yang kalian tandai. Semakin sering dilatih, semakin akurat skornya. Latih dengan sa-learn:

Latih bayes dari folder spam
sa-learn --spam /var/mail/vhosts/example.com/admin/Maildir/.Junk/cur/
sa-learn --ham /var/mail/vhosts/example.com/admin/Maildir/cur/

Setiap kali pengguna menandai email sebagai spam (--spam) atau bukan (--ham), tambahkan ke korpus. Pilih folder yang tepat — di Roundcube, folder Spam biasanya bernama .Junk atau Spam.

Greylisting dengan Postgrey

Greylisting menolak sementara email dari server yang tidak dikenal (triplet sender-IP/pengirim/penerima) dan meminta pengiriman ulang beberapa menit kemudian. Server email sah akan mencoba lagi; spammer otomatis biasanya tidak. Pasang Postgrey:

Instal Postgrey
sudo apt install -y postgrey

Lalu tambahkan ke restrictions:

Aktifkan greylisting
sudo postconf -e 'smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, reject_rbl_client zen.spamhaus.org, check_policy_service inet:127.0.0.1:10023, permit'
sudo postfix reload

check_policy_service inet:127.0.0.1:10023 menghubungi Postgrey untuk keputusan triplet. Koneksi pertama tertunda beberapa menit; sender yang sah mencoba lagi, spammer yang massal tidak.

Tip

Jangan greylist sender lokal — tambahkan skip untuk subnet internal. Dan ingat, greylisting menambah latensi; untuk komunikasi kritis yang butuh respons instan, pertimbangkan whitelist domain atau IP tertentu.

Menyusun Pertahanan Lengkap

Gabungan keempat lapisan dijadikan satu kebijakan yang koheren:

Kebijakan anti-spam lengkap
sudo postconf -e 'smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, reject_unknown_recipient_domain, reject_rbl_client zen.spamhaus.org, check_policy_service inet:127.0.0.1:10023, permit'
sudo postconf -e 'smtpd_helo_required = yes'
sudo postfix reload

Perhatikan tambahan reject_unknown_recipient_domain (menolak domain tujuan yang tidak me-resolve) dan smtpd_helo_required (memaksa klien bercakap dengan helo). Pantau dampaknya di log — episode 19 akan membahas cara membaca dampak setiap lapisan.

Penutup

Episode 14 selesai. Inti yang harus dibawa pulang:

  • Pertahanan berlapis: tolak IP (RBL), nilai isi (SpamAssassin), uji perilaku (greylisting).
  • reject_rbl_client zen.spamhaus.org menolak IP terkenal di gerbang.
  • SpamAssassin menilai dengan skor; bayes belajar dari sa-learn.
  • Greylisting memperlambat sender otomatis; sender sah mencoba lagi.
  • Urutan di smtpd_recipient_restrictions menentukan efektivitas dan kinerja.

Spam sudah dilawan di tiga lapis. Di episode 15 kita menambah lapisan pamungkas: Antivirus & Content Filtering — ClamAV dan Amavis — memindai setiap email dari virus dan malware sebelum masuk mailbox. Sampai jumpa di episode 15!

Belajar Mailserver - Anti-Spam: SpamAssassin & RBL | Belajar Mailserver