Beberapa waktu lalu, ada kebutuhan menarik di salah satu server Carbonio: gimana caranya biar pengiriman email bisa dikontrol lebih ketat, misalnya dibatasi jumlah email per jam per user. Nah, salah satu solusi yang bisa dipakai adalah Postfwd.
Buat yang belum kenal, Postfwd itu policy daemon untuk Postfix. Karena Carbonio menggunakan Postfix sebagai MTA, maka kita bisa integrasikan Postfwd ini untuk bikin aturan lebih fleksibel, seperti rate limiting, throttling, greylisting, bahkan kombinasi rule berdasarkan IP, domain, maupun user.
1. Instalasi Postfwd
Masuk ke server Carbonio sebagai root, lalu install paket Postfwd:
apt update
apt install postfwd -y
2. Konfigurasi Dasar
File konfigurasi utama Postfwd ada di:
/etc/postfwd.cf
Sebagai contoh, kita batasi maksimal 200 email per jam per akun:
id=RULE1
client_address=0.0.0.0/0
sender=/.*/
action=rate(sender/200/3600/450 4.7.1 "Too many mails from sender in 1 hour")
Penjelasan:
sender/200/3600
= maksimal 200 email dalam 3600 detik (1 jam).- Kalau lebih, user akan ditolak dengan pesan error Too many mails….
3. Integrasi dengan Postfix Carbonio
Karena Carbonio generate file Postfix dari template, kita perlu edit file:
/opt/zextras/common/conf/master.cf.in
Tambahkan service Postfwd:
127.0.0.1:10040 inet n - n - - spawn
user=nobody argv=/usr/sbin/postfwd --nodaemon --file=/etc/postfwd.cf
Setelah itu, restart MTA:
su - zextras
zmmtactl stop
zmmtactl start
4. Hubungkan Postfix ke Postfwd
Edit file berikut:
/opt/zextras/common/conf/main.cf
Cari baris smtpd_recipient_restrictions
, lalu tambahkan check_policy_service
:
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination,
check_policy_service inet:127.0.0.1:10040
Catatan: urutannya penting. Letakkan check_policy_service
setelah reject_unauth_destination
.
5. Restart Service
Kalau sudah, restart ulang servicenya:
systemctl restart postfwd
su - zextras -c "zmmtactl restart"
6. Verifikasi Log
Untuk memastikan rule aktif, cek log:
tail -f /var/log/carbonio.log
Kalau rule cocok, biasanya akan muncul log seperti:
postfwd: RULE1 matched
Tips Tambahan
- Pisahkan rule di direktori khusus, misalnya
/etc/postfwd-rules/
, lalu include kepostfwd.cf
. - Postfwd mendukung rule kompleks: per user, per domain, per IP, atau gabungan.
- Kalau trafik besar, bisa pakai Redis backend biar counter lebih efisien.
- Setelah upgrade Carbonio, selalu cek file
master.cf.in
, karena bisa saja tertimpa default.
Dengan setup ini, kalian bisa lebih tenang karena ada kontrol tambahan terhadap jumlah email yang dikirim user. Cocok banget buat mencegah abuse, spam internal, atau sekadar jaga-jaga biar server nggak dibebani trafik berlebihan.