Cara Efektif Menghindari Spam dengan Membatasi Pengiriman Email Menggunakan Policyd-Rate-Limit

Posted by

Email spam adalah masalah klasik yang sering dihadapi oleh administrator email server. Baik mengelola server dalam skala kecil atau organisasi besar. Masalah spam bisa menjadi mimpi buruk yang merusak reputasi domain dan menyebabkan banyak email masuk ke folder spam penerima.

Policyd-Rate-Limit adalah solusi yang memungkinkan untuk membatasi jumlah email yang dapat dikirim oleh user atau server dalam periode waktu tertentu. Dengan menerapkan rule ini, tidak hanya dapat menghindari penyalahgunaan sistem email oleh spammers, tetapi juga menjaga kinerja server tetap optimal.

Jika biasanya menggunakan CBPolicyd untuk membatasi pengiriman email, maka pada panduan ini akan menggunakan tools lain dengan nama policyd-rate-limit.

Tahap awal, siapkan usernya terlebih dahulu

adduser --home /run/policyd-rate-limit --no-create-home policyd-rate-limit

Intall aplikasi

sudo pip3 install policyd-rate-limit

Jika pip3 belum tersedia, silakan install terlebih dahulu paket python3-pip

Edit konfigurasi policyd-rate-limit sesuai dengan kebutuhan

vi /etc/policyd-rate-limit.yaml

Sesuaikan baris-baris berikut

SOCKET: ["127.0.0.1", 8552]
limits:
    - [100, 3600] # limit to 100 mails by hours
limit_by_sasl: True
limit_by_sender: True

Start service

systemctl enable policyd-rate-limit
systemctl restart policyd-rate-limit
systemctl status policyd-rate-limit

# Integrasi dengan email server

Di sini saya menggunakan Zimbra sebagai email servernya. Silakan sesuaikan dengan email server yang digunakan

Cek isi dari konfigurasi zimbraMtaSmtpdDataRestrictions

su - zimbra
zmprov gs $(zmhostname) zimbraMtaSmtpdDataRestrictions

Isinya biasanya seperti berikut:

[zimbra@mail ~]$ zmprov gs $(zmhostname) zimbraMtaSmtpdDataRestrictions
# name mail.imanudin.web.id
zimbraMtaSmtpdDataRestrictions: reject_unauth_pipelining

Tambahkan konfigurasi policyd-rate-limit pada konfigurasi zimbraMtaSmtpdDataRestrictions

zmprov ms $(zmhostname) zimbraMtaSmtpdDataRestrictions "reject_unauth_pipelining,check_policy_service inet:127.0.0.1:8552"

Tunggu beberapa menit hingga konfigurasi ter-apply.

Setelah batas maksimal sudah tercapai, maka kiriman email akan ter-reject/defer. Berikut sample lognya

Aug 28 17:16:57 mail postfix/smtpd[5571]: D5C5C10EB5: reject: DATA from mail.imanudin.web.id[192.168.1.123]: 450 4.7.1 : Data command rejected: Rate limit reach, retry later; from=<admin@imanudin.web.id> to=<admin@imanudin.web.id> proto=ESMTP helo=

Silakan dicoba dan semoga bermanfaat 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.