Tiga tempat angka limit bisa diatur
Dari WHM sampai Exim: angka itu dibaca di mana
- Saat kamu menyimpan setting di WHM, nilai server-wide masuk ke
/var/cpanel/cpanel.config, sedangkan nilai akun dan override domain masuk ke/var/cpanel/users/<namauser>. - cPanel menjalankan script yang menyusun ulang daftar limit per domain ke
/etc/email_send_limits. Script ini biasanya/usr/local/cpanel/scripts/build_maxemailsconfig. - Konfigurasi Exim versi cPanel punya pengecekan tambahan saat email akan dikirim ke luar. Pengecekan ini mencari domain pengirim di
/etc/email_send_limits, menambah counter untuk jam berjalan, lalu membandingkannya dengan batas.
BASH
# Default server-wide dari Tweak Settings
grep -i 'maxemailsperhour' /var/cpanel/cpanel.config
# Nilai akun dan override per domain (ganti namauser)
grep -i 'MAX_EMAIL_PER_HOUR' /var/cpanel/users/namauser
# Angka final yang dibaca Exim untuk domain tertentu
grep -i 'contohdomain.com' /etc/email_send_limits/etc/email_send_limits berbeda dengan yang kamu harapkan, Exim akan memakai angka di file itu, bukan yang ada di ingatanmu. Kalau domain tidak muncul sama sekali, cek apakah domain itu benar milik akun tersebut dan apakah file baru saja di-generate ulang. Format kolom di file ini bisa sedikit berbeda antar versi cPanel, jadi cocokkan dengan dokumentasi versi yang kamu pakai.
Ada satu hal lagi yang sering terlewat. Limit ini berlaku untuk email yang di-relay Exim ke server lain. Email dari mail() PHP maupun dari SMTP yang login dengan akun email domain itu sama-sama lewat Exim, jadi biasanya ikut dihitung. Pengiriman ke mailbox lokal di server yang sama umumnya tidak dihitung. Kalau ada akun yang mengirim lewat SMTP pihak ketiga, misalnya API email eksternal yang dipanggil dari aplikasi, trafik itu tidak pernah menyentuh Exim. Limit di WHM tidak bisa melihatnya.
Apa yang Exim lakukan saat batas terlewati
Membuktikannya lewat exim_mainlog
/var/log/exim_mainlog. Saat pengecekan limit memutuskan menunda atau menggagalkan email, Exim menulis pesan yang menyebut nama domain, jumlah yang sudah terkirim, batasnya, dan persentasenya.
BASH
grep 'has exceeded the max emails per hour' /var/log/exim_mainlog | tail -n 20
# contoh format output (ilustrasi, bukan log asli):
# ... Domain contohdomain.com has exceeded the max emails per hour (101/100 (101%)) allowed. Message will be reattempted later
# ... Domain contohdomain.com has exceeded the max emails per hour (151/100 (151%)) allowed. Message discarded..gz dengan zgrep. Pola nama file rotasi bisa berbeda tergantung setup logrotate di server.
Perlu diingat juga, pesan teks di atas bisa sedikit berubah antar versi cPanel. Kalau grep frasa lengkap tidak menemukan apa-apa, coba potongan yang lebih pendek seperti max emails per hour.
Melihat email yang tertahan di queue
BASH
# Total email di queue
exim -bpc
# Jumlah email di queue dari pengirim domain tertentu
exiqgrep -c -f '@contohdomain\.com$'
# Lihat header satu email (ganti dengan message ID dari exim -bp)
exim -Mvh MESSAGE_IDexiqgrep menunjukkan banyak email dari domain itu dan log berisi pesan "reattempted later", limit kamu bekerja sesuai desain. Email ditahan, bukan dikirim. Saat mengecek header lewat exim -Mvh, perhatikan juga apakah pengirimnya akun email biasa, user sistem cPanel (biasanya dari skrip PHP), atau sesuatu yang mencurigakan. Ini membantu membedakan newsletter sah yang kebablasan dari akun yang disalahgunakan.
Satu peringatan. Jangan buru-buru memaksa queue dikirim ulang dengan opsi force, dan jangan menghapus email dari queue secara massal sebelum yakin isinya. Memaksa pengiriman tidak melewati limit. Email hanya akan dicek ulang dan ditunda lagi, sementara server membuang waktu memprosesnya. Menghapus email dari queue juga tidak bisa dibatalkan. Kalau isinya spam, bersihkan secara terarah berdasarkan pengirim setelah sumbernya ditutup.
Di meja support, urutan cek yang biasanya paling cepat adalah: lihat pesan limit di exim_mainlog, ambil angka limit dari pesan itu, lalu cocokkan dengan /etc/email_send_limits dan file user. Dengan urutan ini, kamu tidak perlu menebak-nebak setting mana yang aktif.
Intinya, jangan menilai limit dari layar WHM. Nilai yang benar-benar dipakai adalah yang ada di /etc/email_send_limits, dan buktinya ada di angka kedua pada pesan log Exim. Kalau angka itu tidak sesuai harapan, telusuri dari yang paling spesifik dulu: override domain, lalu nilai akun atau package, baru default server. Setelah itu, lihat queue untuk memastikan email yang ditahan memang menunggu, bukan hilang.