📑 Daftar Isi
- Mengapa Log Bawaan Exim Tidak Cukup?
- Konfigurasi & Aktivasi Verbose Log di WHM
- Struktur & Perintah CLI Exim yang Wajib Dikuasai
- Memahami Pola Notasi di Log Exim
- Bedah Kode Error Mail Exim
- Kode 421 — Service Not Available / Temporarily Not Available
- Kode 450 — Mailbox Unavailable / Access Denied (Temporary)
- Kode 451 — Local Error in Processing (Temporary)
- Kode 452 — Insufficient Storage (Temporary)
- Kode 550 — Mailbox Not Found / Relay Denied (Permanent)
- Kode 553 — Mailbox Name Not Allowed
- Kode 554 — Transaction Failed / Permanent Error
- Integrasi SpamAssassin & SpamBox di cPanel
- Pola Masalah yang Sering Ditemukan di Log Exim
- Pro Tips & Warnings
- Troubleshooting Cepat — Decision Tree
- Kesimpulan
Pernah nggak kamu lagi enak-enak monitor server, tiba-tiba ada client nelpon bilang “email saya nggak masuk” atau “kenapa email saya bounce terus?” Kamu buka log Exim, dan yang kamu lihat cuma baris-baris pendek yang nggak ngasih banyak petunjuk. Saya pernah nge-handle kasus persis seperti ini — client bilang email order dari customer mereka hilang. Saya buka /var/log/exim/mainlog, dan yang muncul cuma beberapa karakter error yang sangat singkat. Saya harus muter-muter dua jam sebelum nemu bahwa sebenarnya log Exim yang aktif itu terlalu minim untuk dijadikan acuan troubleshoot.
Jadi begini — log Exim itu ibarat CCTV di sebuah gedung perkantoran. Kalau CCTV-nya cuma merekam frame per menit, kamu nggak akan bisa tau siapa yang masuk jam berapa, lewat pintu mana, dan bawa apa. Begitu juga Exim. Log bawaannya memang dirancang untuk ringan — tapi untuk kebutuhan troubleshooting yang serius, kamu perlu mengaktifkan verbose logging supaya setiap detail komunikasi email tercatat dengan lengkap.
Artikel ini akan membawa kamu dari nol — mulai dari cara mengaktifkan verbose log, memahami struktur log Exim, mengenal perintah-perintah CLI yang wajib dikuasai NOC engineer, hingga membaca kode-kode error spesifik yang sering muncul di server cPanel. Semuanya berdasarkan pengalaman langsung menangani ratusan server produksi. Kita juga akan membahas bagaimana SpamAssassin dan SpamBox berintegrasi dengan Exim di lingkungan cPanel, karena dua komponen ini sering jadi aktor tersangka saat email masuk ke spam folder secara tidak wajar.
Mengapa Log Bawaan Exim Tidak Cukup?
Sebelum masuk ke teknis, penting untuk memahami kenapa banyak engineer yang frustrasi dengan log Exim bawaan. Dalam kondisi default, Exim hanya mencatat informasi minimal — cukup untuk melihat bahwa email masuk dan keluar, tapi nggak cukup untuk memahami kenapa sebuah email gagal, kenapa routing-nya salah, atau kenapa autentikasi SMTP gagal. Tanpa verbose logging, kamu seperti mencoba memperbaiki mobil cuma dengan dengar suara mesinnya — nggak ada diagnostic code, nggak ada data spesifik.
Dampaknya terhadap troubleshooting sangat signifikan. Ketika client melapor email bounce, kamu harus menebak-nebak penyebabnya alih-alih langsung melihat di log apa yang terjadi. Proses yang seharusnya selesai dalam 10 menit bisa makan waktu satu jam atau lebih. Dalam konteks bisnis, email yang gagal terkirim bisa berarti deal yang hilang, invoice yang nggak sampai, atau komunikasi kritis yang putus di tengah jalan.
Konfigurasi & Aktivasi Verbose Log di WHM
Pertama-tama, kita perlu mengaktifkan verbose logging agar Exim mencatat lebih banyak informasi. Ada dua cara utama: melalui WHM dan melalui file config langsung.
Cara 1: Melalui WHM Advanced Editor
Login ke WHM → Service Configuration → Exim Configuration Manager → tab “Advanced Editor”. Di bagian log_selector, kamu bisa menambahkan parameter-parameter yang dibutuhkan. Ini beberapa parameter paling berguna:
| Parameter | Fungsi | Kapan Dipakai |
|---|---|---|
+all |
Aktifkan semua verbose logging | Debug intensif (jangan di produksi lama) |
+address_rewrite |
Catat setiap proses rewrite alamat email | Masalah forwarding/filtering |
+arguments |
Tampilkan argumen perintah exim | Trace pemanggilan perintah |
+dns_lookup |
Catat setiap lookup DNS | Masalah DNS/MX record |
+host_lookup_failed |
Catat kegagalan DNS lookup | Timeout/resolusi DNS gagal |
+reject |
Catat semua penolakan email | Filter spam/blocked sender |
+smtp_confirmation |
Tampilkan konfirmasi SMTP dari remote server | Debug bounce/penolakan remote |
+smtp_protocol_error |
Catat error protokol SMTP | Komunikasi SMTP gagal |
+smtp_syntax_error |
Catat syntax error dari client/koneksi | Malformed email headers |
+tls_cipher |
Tampilkan info cipher TLS | Debug enkripsi/TLS handshake |
+tls_sni |
Tampilkan SNI (Server Name Indication) | Debug SSL/SNI issues |
Rekomendasi saya: untuk produksi, jangan pakai +all karena log-nya akan jadi sangat besar dan memakan disk I/O. Gunakan kombinasi parameter yang relevan. Contoh konfigurasi yang bagus untuk troubleshoot email delivery issues:
log_selector = +address_rewrite +dns_lookup +host_lookup_failed +reject +smtp_confirmation +smtp_protocol_error
Kalau kamu memang butuh debug total (misalnya lagi investigate masalah serius), pakai +all tapi ingat untuk balik ke konfigurasi yang lebih ringan setelah selesai.
Cara 2: Edit File Konfigurasi Langsung
Buka file /etc/exim.conf dan cari baris log_selector. Kalau belum ada, tambahkan di bagian “Main” configuration:
log_selector = +address_rewrite +dns_lookup +host_lookup_failed +reject +smtp_confirmation
Setelah edit, reload Exim:
systemctl restart exim
atau melalui WHM: Home → Restart Services → Exim Mail Server.

Struktur & Perintah CLI Exim yang Wajib Dikuasai
Setelah verbose logging aktif, kamu perlu menguasai perintah-perintah CLI Exim untuk membaca dan menganalisis log. Berikut adalah perintah-perintah yang saya gunakan hampir setiap hari sebagai NOC engineer:
Perintah Dasar Monitoring
| Perintah | Fungsi | Contoh Penggunaan |
|---|---|---|
exiwhat |
Menampilkan apa yang sedang dilakukan Exim saat ini | Cek apakah ada proses yang stuck |
exim -bpc |
Menghitung jumlah email di queue | Cek apakah queue meluap |
exim -bp |
Menampilkan daftar email di queue | Lihat email mana yang pending |
exim -bp | head -30 |
30 email teratas di queue | Quick check email stuck |
exigrep <pattern> /var/log/exim/mainlog |
Cari pattern spesifik di log | Trace email tertentu |
exim -Mvh <message-id> |
Tampilkan header email | Inspect email tertentu |
exim -Mvb <message-id> |
Tampilkan body email | Cek isi email |
exim -Mvt <message-id> 2>&1 |
Tampilkan envelope data | Cek envelope info |
exim -Mra <message-id> |
Coba kirim ulang email dari queue | Retry delivery |
exim -Mrm <message-id> |
Hapus email dari queue | Hapus spam/stuck (HATI-HATI!) |
Sebelum menjalankan exim -Mrm, pastikan kamu sudah:
- Backup queue list:
exim -bp > /tmp/mailqueue-backup-$(date +%Y%m%d-%H%M).txt - Verifikasi target yang akan dihapus dengan
exim -Mvh <message-id> - Pastikan email yang dihapus benar-benar spam/stuck dan bukan email valid client
Perintah hapus tanpa verifikasi bisa menyebabkan data loss permanen — email penting client bisa hilang.
Perintah Pencarian & Analisis Log
# Cari semua email dari IP tertentu
exigrep "192.0.2.10" /var/log/exim/mainlog
# Cari semua email ke alamat tertentu
exigrep "user@client-a.com" /var/log/exim/mainlog
# Cari semua error dalam 24 jam terakhir
exigrep "== " /var/log/exim/mainlog | grep "$(date +%Y-%m-%d)"
# Cari semua bounce
exigrep "** " /var/log/exim/mainlog | tail -20
# Cari semua penolakan (rejected)
exigrep "rejected" /var/log/exim/mainlog | tail -20
# Cari semua email yang berhasil deliver
exigrep "=> " /var/log/exim/mainlog | tail -30
Memahami Pola Notasi di Log Exim
Ini bagian yang paling penting untuk dipahami. Log Exim menggunakan pola notasi simbol untuk menandai jenis aktivitas. Kalau kamu nggak paham simbol-simbol ini, membaca log Exim akan seperti membaca huruf Cina.
| Simbol | Arti | Warna di Terminal |
|---|---|---|
<= |
Email diterima (received/arrived) | Biasanya hijau |
=> |
Email berhasil dikirim (delivered) | Biasanya hijau |
-> |
Email di-forward atau di-copy | Biasanya kuning |
** |
Email bounce (gagal, dikembalikan ke pengirim) | Biasanya merah |
== |
Email deferred (ditunda pengiriman) | Biasanya kuning/oranye |
Jadi pola pembacaannya: mulai dari simbol paling kiri. <= berarti email masuk, lalu => berarti email keluar, ** berarti bounce, dan == berarti defer. Dari kombinasi simbol-simbol ini, kamu bisa memetakan perjalanan sebuah email dari awal hingga akhir.
Contoh Log Lengkap & Analisis
Mari kita lihat contoh log nyata dan belajar membacanya:
2026-07-20 09:15:33 [45231] <= orders@shop-client.com H=mail.shop-client.com [203.0.113.25] P=ESMTPS X=TLSv1.3 TLS_AES_256_GCM_SHA384 CV=no C="250 OK id=1mN8k2-0003ABC-123" S=4521 I=5 E=none N=8 QT=0.002 DT=0.001
2026-07-20 09:15:34 [45231] => admin@mydomain.com R=virtual_user T=virtual_delivery H=local [127.0.0.1] C="250 OK" QT=0.8 DT=0.799
2026-07-20 09:15:34 [45231] => sales@mydomain.com R=virtual_user T=virtual_delivery H=local [127.0.0.1] C="250 OK" QT=0.8 DT=0.799
2026-07-20 09:16:45 [45232] <= newsletter@marketing-tool.com H=relay.marketing-tool.com [198.51.100.50] P=ESMTPS X=TLSv1.2 TLS_AES_128_GCM_SHA256 CV=no C="250 OK id=2kL9m3-0004DEF-567" S=15234 I=8 E=none N=12 QT=0.003 DT=0.002
2026-07-20 09:16:46 [45232] == user@mydomain.com R=lookuphost T=remote_smtp H=mx1.mydomain.com [203.0.113.10] C="421 4.7.1 Try again later" QT=1.2 DT=1.198
2026-07-20 09:16:46 [45232] == user@mydomain.com R=lookuphost T=remote_smtp H=mx2.mydomain.com [203.0.113.11] C="421 4.7.1 Try again later" QT=1.2 DT=1.198
2026-07-20 09:21:46 [45232] == user@mydomain.com R=lookuphost T=remote_smtp H=mx1.mydomain.com [203.0.113.10] C="421 4.7.1 Try again later" QT=5.0 DT=4.999
2026-07-20 09:31:47 [45232] == user@mydomain.com R=lookuphost T=remote_smtp H=mx1.mydomain.com [203.0.113.10] C="450 4.7.25 IP not in whitelist" QT=10.0 DT=9.998
2026-07-20 09:31:47 [45232] ** user@mydomain.com: H=mx1.mydomain.com [203.0.113.10] C="450 4.7.25 IP not in whitelist — too many connections" QT=10.0 DT=9.998
2026-07-20 09:31:47 [45232] Frozen (delivery error message)
2026-07-20 09:31:47 [45232] <= <> R=double-bounce T=double_bounce S=0 QT=0.001 DT=0.001
Mari kita trace dari awal:
- Baris 1 (
<=): Email masuk dariorders@shop-client.comvia TLS. Message ID adalah45231. Semua normal di sini. - Baris 2-3 (
=>): Email berhasil deliver keadmin@mydomain.comdansales@mydomain.comlokal. OK, dua recipient sudah selesai. - Baris 4 (
<=): Email baru masuk darinewsletter@marketing-tool.com. Message ID45232. - Baris 5-6 (
==): Email keuser@mydomain.comgagal deliver ke MX1 dan MX2 — remote server membalas421 4.7.1 Try again later. Artinya remote server sedang sibuk atau rate limiting. - Baris 7 (
==): Retry pertama setelah 5 menit — masih gagal dengan kode yang sama. - Baris 8 (
==): Retry kedua — sekarang error berubah ke450 4.7.25 IP not in whitelist. IP server kita kena rate limit atau blacklist sementara. - Baris 9 (
**): BOUNCE — email gagal total setelah beberapa retry. Pesan error lengkap ditampilkan. - Baris 10 (
Frozen): Email membeku di queue karena delivery error. - Baris 11 (
<=): Double bounce tercatat — karena bounce-nya juga gagal dikirim.
Dari trace ini, kita bisa simpulkan: masalahnya bukan di server lokal, tapi di remote MX server yang menolak koneksi karena IP kita masuk rate limiting atau whitelist issue. Solusinya: cek apakah IP server masuk di RBL, dan pertimbangkan untuk mengatur retry time atau menghubungi admin remote server.
Bedah Kode Error Mail Exim
Sekarang kita masuk ke bagian yang paling ditunggu — memahami kode-kode error Exim. Kode error Exim mengikuti standar SMTP reply codes, tapi Exim menambahkan detail internal yang sangat membantu untuk troubleshooting.
Kode 421 — Service Not Available / Temporarily Not Available
Error 421 berarti server tujuan belum siap menerima email. Ini sifatnya temporary — Exim akan otomatis retry. Tapi kalau terus-menerus muncul, ada masalah yang perlu diurus.
2026-07-20 10:05:12 [67890] == recipient@external.com R=lookuphost T=remote_smtp H=mx.external.com [203.0.113.50] C="421 4.7.1 Service temporarily overloaded" QT=0.5 DT=0.499
2026-07-20 10:10:13 [67890] == recipient@external.com R=lookuphost T=remote_smtp H=mx.external.com [203.0.113.50] C="421 4.3.2 Not currently accepting mail" QT=5.0 DT=4.998
2026-07-20 10:25:15 [67890] == recipient@external.com R=lookuphost T=remote_smtp H=mx.external.com [203.0.113.50] C="421 4.7.1 Service temporarily overloaded" QT=15.0 DT=14.997
2026-07-20 11:05:16 [67890] => recipient@external.com R=lookuphost T=remote_smtp H=mx.external.com [203.0.113.50] C="250 OK id=3mP7q1-0008GHI-901" QT=40.0 DT=39.995
Di contoh ini, email awalnya ditolak karena server overload. Exim retry beberapa kali, dan akhirnya berhasil deliver di percobaan keempat setelah 40 menit. Kalau kamu lihat pola seperti ini, nggak perlu panik — Exim sedang bekerja sebagaimana mestinya.
Kode 450 — Mailbox Unavailable / Access Denied (Temporary)
450 berarti ada masalah akses yang sifatnya temporary. Penyebab paling umum: rate limiting, IP masuk blacklist sementara, atau autentikasi yang belum selesai.
2026-07-20 14:22:10 [11223] == client@partner.com R=lookuphost T=remote_smtp H=mx.partner.com [198.51.100.15] C="450 4.7.1 IP not in whitelist" QT=0.3 DT=0.298
2026-07-20 14:22:11 [11223] == client@partner.com R=lookuphost T=remote_smtp H=mx.partner.com [198.51.100.15] C="450 4.7.25 Please try again later" QT=0.3 DT=0.298
Dari log ini, IP server kita kemungkinan masuk di daftar whitelist temporary server partner. Cek apakah IP kita masuk di RBL seperti Spamhaus, Barracuda, atau lainnya. Kamu bisa cek dengan:
# Cek IP server di berbagai RBL
dig +short 10.0.0.1.zen.spamhaus.org
dig +short 10.0.0.1.b.barracudacentral.org
dig +short 10.0.0.1.bl.spamcop.net
Kode 451 — Local Error in Processing (Temporary)
451 berarti ada error lokal di server tujuan. Ini juga temporary dan Exim akan retry. Biasanya terkait DNS issues atau server yang sedang restart.
Kode 452 — Insufficient Storage (Temporary)
452 berarti mailbox penuh atau server kehabisan storage. Sering muncul untuk mailbox shared hosting yang sudah melebihi quota.
2026-07-20 16:44:55 [33445] == user@hosting-client.com R=virtual_user T=virtual_delivery H=local [127.0.0.1] C="452 4.2.2 Mailbox quota exceeded" QT=0.001 DT=0.001
2026-07-20 16:44:55 [33445] ** user@hosting-client.com: Remote host said: 452 4.2.2 Mailbox quota exceeded QT=0.001 DT=0.001
Solusinya: login ke cPanel client, cek penggunaan disk di Email Accounts, dan minta client bersihkan mailbox atau upgrade quota.
Kode 550 — Mailbox Not Found / Relay Denied (Permanent)
Ini error permanen — Exim tidak akan retry karena server tujuan menolak secara definitive. 550 punya beberapa sub-variasi:
# 550 User not found — alamat email tidak ada
2026-07-20 17:05:12 [55667] ** nonexistent@client-a.com R=lookuphost T=remote_smtp H=mx.client-a.com [203.0.113.20] C="550 5.1.1 The email account that you tried to reach does not exist" S=189 QT=0.5 DT=0.499
# 550 Relay denied — server menolak relay
2026-07-20 17:10:33 [66778] ** spammer@random-domain.com R=lookuphost T=remote_smtp H=mx.random-domain.com [198.51.100.30] C="550 5.7.1 Relaying denied" S=201 QT=0.3 DT=0.298
# 550 Blocked — sender masuk blacklist
2026-07-20 17:15:44 [77889] ** sender@blacklisted-domain.com R=lookuphost T=remote_smtp H=mx.external.com [203.0.113.40] C="550 5.7.1 Message rejected — see https://www.spamhaus.org/query/bl/" S=312 QT=0.4 DT=0.398
Kode 553 — Mailbox Name Not Allowed
553 biasanya muncul karena alamat email yang dikirim tidak valid secara syntax atau karena server tujuan tidak mengenali domain.
Kode 554 — Transaction Failed / Permanent Error
554 adalah catch-all untuk error permanen yang tidak masuk kategori lain. Sering muncul ketika server tujuan menolak email karena reputasi IP yang buruk atau content filtering.
| Kode | Jenis | Aksi Exim | Penyebab Umum | Solusi |
|---|---|---|---|---|
| 421 | Temporary | Retry otomatis | Server overload, maintenance | Tunggu, cek status remote server |
| 450 | Temporary | Retry otomatis | Rate limit, IP temporary block | Cek RBL, tunggu cooldown |
| 451 | Temporary | Retry otomatis | DNS error, server restart | Verifikasi DNS MX record |
| 452 | Temporary | Retry otomatis | Mailbox penuh, quota exceeded | Bersihkan mailbox / upgrade quota |
| 550 | Permanent | Bounce | User, relay denied, blacklist | Verifikasi alamat, cek IP reputation |
| 553 | Permanent | Bounce | Invalid email syntax, domain salah | Periksa alamat email recipient |
| 554 | Permanent | Bounce | Transaction failed, content filter | Cek email content, IP reputation |
Integrasi SpamAssassin & SpamBox di cPanel
SpamAssassin dan SpamBox adalah dua komponen yang sangat berpengaruh terhadap perilaku email di server cPanel. Kalau kamu nggak paham bagaimana keduanya berintegrasi dengan Exim, kamu akan kesulitan saat email client masuk ke spam folder secara tidak wajar.
SpamAssassin
SpamAssassin bekerja dengan menambahkan header X-Spam-Score ke setiap email yang masuk. Di cPanel, threshold default untuk menandai spam biasanya di score 5.0. Kamu bisa cek score spam di log Exim:
# Lihat semua email yang ditandai sebagai spam
exigrep "X-Spam-Score" /var/log/exim/mainlog | tail -20
# Cari email dengan spam score tertentu
exigrep "X-Spam-Score: [89]" /var/log/exim/mainlog
Jika kamu ingin melihat detail scoring SpamAssassin, cek log di /var/log/exim/mainlog dan cari header X-Spam-Status:
X-Spam-Status: No, score=8.2 required=5.0 tests=RCVD_IN_BL_SPAMHAUS,HTML_IMAGE_RATIO_02,MISSING_HTML_TAG,URIBL_BLACK autolearn=unavailable version=3.4.6
Dari log ini, kamu bisa lihat bahwa email mendapat score 8.2 (di atas threshold 5.0), sehingga ditandai sebagai spam. Test utama penyebabnya: masuk di Spamhaus blacklist (RCVD_IN_BL_SPAMHAUS) dan beberapa test lainnya.
SpamBox
SpamBox menyimpan email spam ke folder .Spam di mailbox user alih-alih langsung memblokirnya. Ini bagus karena user masih bisa cek spam folder mereka. Tapi kadang email legit juga masuk ke sini, dan user nggak sadar.
Path folder SpamBox di cPanel:
/home/username/mail/domain.com/user/.Spam/
Pastikan permission folder ini benar. Saya pernah handle kasus di mana folder .Spam punya permission yang salah (644 bukan 711), sehingga SpamBox tidak bisa menulis email ke folder tersebut dan semua email spam justru bounce balik ke pengirim.
# Cek permission folder mailbox
ls -la /home/username/mail/domain.com/user/
# Permission yang benar untuk folder mailbox
drwx--x--- 3 username username 4096 Jul 20 09:00 .
drwx--x--- 5 username username 4096 Jul 20 09:00 ..
drwx------ 2 username username 4096 Jul 20 09:00 cur
drwx------ 2 username username 4096 Jul 20 09:00 new
drwx------ 2 username username 4096 Jul 20 09:00 tmp
drwx------ 2 username username 4096 Jul 20 09:00 .Spam
Perhatikan bahwa folder mailbox menggunakan drwx--x--- (711 untuk direktori, 700 untuk subfolder). Ini penting untuk keamanan — mencegah user lain di server yang sama bisa membaca isi mailbox.
| Masalah | Gejala di Log | Root Cause | Solusi |
|---|---|---|---|
| Email legit masuk spam | X-Spam-Score > threshold | False positive SpamAssassin | Tambah whitelist di SpamAssassin config |
| SpamBox folder tidak bisa ditulis | Delivery failed to local | Permission folder salah (bukan 711) | Fix permission: chmod 711 .Spam |
| Email bounce tanpa alasan jelas | ** dalam log tanpa detail | DNS PTR record tidak ada atau salah | Setup PTR record untuk IP server |
| Autentikasi SMTP gagal | 535 authentication failed | Plain text auth disabled / password salah | Cek “Require SSL” di email client |
Pola Masalah yang Sering Ditemukan di Log Exim
Berdasarkan pengalaman menangani ratusan server, berikut pola-pola masalah yang paling sering muncul:
1. DNS yang Salah (MX/PTR)
Salah satu penyebab paling umum email bounce. Kalau MX record salah atau PTR record untuk IP server belum diatur, email dari server kamu akan ditolak hampir oleh semua mail server besar.
# Cek MX record domain kamu
dig +short MX yourdomain.com
# Cek PTR record IP server kamu
dig +short -x 203.0.113.10
# Cek apakah PTR match dengan hostname server
hostname -f
PTR record harus resolve ke hostname server, dan hostname server harus resolve balik ke IP yang sama (forward-confirmed reverse DNS). Kalau nggak match, banyak mail server yang akan menolak email dari IP kamu.
2. Autentikasi SMTP Mati
Kadang client mengeluh tidak bisa kirim email dari email client (Outlook, Thunderbird). Di log Exim kamu akan lihat:
2026-07-20 20:15:33 [88990] no IP address found for host client-pc-123.example.net
2026-07-20 20:15:33 [88990] authenticator failed for (client-pc-123): 535 Incorrect authentication data
Penyebabnya bisa bermacam-macam: password salah, plain text authentication disabled di WHM tapi client nggak pakai SSL, atau ada masalah dengan driver autentikasi cPanel (dovecotauth). Cek di WHM → Exim Configuration Manager → tab “Security” dan pastikan SMTP Authentication sudah diaktifkan dengan benar.
3. Queue Meluap (Mail Queue Overflow)
Ketika ada ribuan email stuck di queue, performa server akan menurun drastis. Cek jumlah email di queue:
exim -bpc
Kalau angkanya ratusan atau ribuan, ada masalah serius. Cek email apa yang stuck:
exim -bp | head -50
Untuk flush semua email dari queue (PERINGATAN: ini akan menghapus SEMUA email di queue):
# Backup dulu
exim -bp > /tmp/full-queue-backup-$(date +%Y%m%d-%H%M).txt
# Lihat jumlah email
cat /tmp/full-queue-backup-*.txt | wc -l
# Flush semua email
exim -bpr
Pro Tips & Warnings
- Jangan pernah aktifkan
+alldi produksi untuk waktu lama. Log-nya bisa mencapai gigabyte per hari dan membebani disk I/O. Aktifkan hanya saat troubleshoot, lalu kembali ke konfigurasi ringan. - Selalu cek DNS terlebih dahulu sebelum menyimpulkan ada masalah di sistem lokal. 60% masalah email sebenarnya bermula dari DNS.
- Gunakan
exigrepdengan bijak. Pattern yang terlalu umum (misalnya hanya kata “error”) akan menghasilkan ribuan hasil yang nggak relevan. Selalu sertakan message ID atau IP spesifik. - Backup selalu dilakukan sebelum operasi destruktif. Ini bukan opsi — ini wajib. Satu kesalahan bisa berarti email penting client hilang selamanya.
- Perhatikan timestamp. Ketika investigasi email bounce, mulai dari waktu kejadian dan trace ke depan. Jangan mulai dari baris terakhir log.
- Cek RBL secara berkala. IP server bisa kapan saja masuk blacklist. Setup monitoring untuk auto-check setiap jam. Artikel kami tentang Cara Cek IP Blacklist RBL bisa jadi panduan.
- Struktur direktori mailbox harus tepat. Folder
/home/username/mail/domain/user/harus punya struktur yang benar dengan permission 711 untuk direktori dan 700 untuk subfolder. Lihat juga panduan kami tentang Troubleshooting Email cPanel untuk detail lebih lanjut. - Pahami retry rule Exim. Exim tidak langsung menghapus email yang gagal. Ada mekanisme retry yang menentukan kapan email akan dicoba lagi. Kamu bisa lihat retry configuration di Panduan Konfigurasi Retry Exim.
Troubleshooting Cepat — Decision Tree
Ketika kamu menerima laporan masalah email, ikuti flow ini:
- Cek queue dulu:
exim -bpc— kalau banyak, ada masalah delivery - Cek log untuk message ID spesifik:
exigrep "<message-id>" /var/log/exim/mainlog - Baca simbol:
<=masuk,=>keluar,==defer,**bounce - Cek error code: 4xx temporary (retry), 5xx permanent (bounce)
- Trace dari awal ke akhir: Mulai dari baris pertama, ikuti alurnya
Kesimpulan
Membaca log Exim memang menuntut ketelitian — kamu harus memahami setiap simbol, setiap kode error, dan mampu menelusuri perjalanan email dari awal hingga akhir. Tapi begitu kamu menguasai polanya, troubleshoot email jadi jauh lebih cepat dan akurat. Ingat: selalu verifikasi catatan DNS dan status RBL server sebelum menyimpulkan kerusakan ada di sistem lokal. Dan yang paling penting — backup dulu, baru eksekusi.
Masih punya pertanyaan soal log Exim? Tim NOC kami handle ini setiap hari — hubungi kami kalau kamu butuh bantuan langsung untuk masalah email di server kamu.
Q: Kenapa saya tidak bisa melihat verbose log di Exim meskipun sudah mengubah log_selector di WHM?
Kemungkinan ada beberapa penyebab. Pertama, pastikan kamu sudah melakukan restart Exim setelah mengubah konfigurasi — hanya mengedit file config saja tidak cukup, Exim harus di-reload untuk menerapkan perubahan. Kedua, pastikan syntax yang kamu masukkan benar — satu typo di parameter log_selector bisa membuat seluruh konfigurasi tidak diterapkan. Ketiga, cek apakah ada file override di /etc/exim.conf yang mungkin menimpa konfigurasi WHM. Kamu bisa verifikasi dengan menjalankan exim -bV untuk melihat konfigurasi yang benar-benar aktif.
Q: Email saya stuck di queue dengan status “Frozen” — apa artinya dan bagaimana cara mengatasinya?
Frozen berarti Exim sudah berhenti mencoba mengirim email tersebut karena sudah melebihi batas retry atau mengalami delivery error yang permanent. Untuk mengatasinya, pertama cek kenapa email itu frozen dengan exim -Mvh <message-id> untuk melihat header, lalu exim -Mvb <message-id> untuk melihat body. Kalau kamu yakin email itu valid, coba kirim ulang dengan exim -Mra <message-id>. Kalau email itu spam atau tidak valid, hapus dengan exim -Mrm <message-id> setelah backup queue list.
Q: Berapa lama Exim menyimpan email di queue sebelum menghapusnya?
Secara default, Exim akan menyimpan email di queue selama beberapa hari (tergantung retry configuration yang diatur di WHM). Retry rule default biasanya mencoba pengiriman ulang beberapa kali dalam rentang waktu tertentu sebelum menyerah. Email yang sudah melebihi batas retry akan tetap ada di queue sampai di-flush secara manual atau sampai masa retensi habis. Kamu bisa cek retry configuration di WHM → Exim Configuration Manager → Advanced Editor, cari bagian retry rules. Untuk pengaturan lebih detail, baca panduan kami tentang Konfigurasi Retry Exim.