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 🙂