Hari ini, saya berkunjung ke salah satu klien yang menggunakan email server berbasis Zextras Carbonio dan mendapatkan informasi bahwa email dari rekanan kerap kali masuk folder junk. Saat mendengar informasi tersebut, saya sempat memberikan opsi alternatif bahwa service Amavis untuk pengecekan spam & virus ini bisa kita bypass atau disable saja namun email sesama lokal / sesama @domain.internal jadi tidak dilakukan pengecekan spam & virus.
Logika saya sederhana saja, “Kiriman sesama user internal harusnya lebih mudah dikontrol dan kita bisa asumsikan aman, jadi tidak ada dobel pengecekan”. Namun klien tidak setuju karena menurut Team IT, pengguna internal tidak bisa 100% dipercaya, khawatir ada satu PC user kena malware terus mengirimkan virus via email ke sesama lokal domain email server.
Benar juga sih, Zero Trust Policy itu emang pahit di awal karena ada potensi false positive, tapi jauh lebih aman buat jangka panjang. Sebagai admin, saya langsung berpikir: “Ah, gampang… tinggal whitelist aja”, hehe
Ternyata whitelist di Carbonio engga gitu aja, terutama kalau kita mau hasil yang rapih. Berikut cerita saya “ngoprek” Amavis (Service ASAV Carbonio) beserta dengan trial & errornya.
Langkah 1: Metode “Quick & Dirty” (Tidak Rekomendasi)
Sebenarnya, kita bisa langsung masukin alamat email di file template konfigurasi Amavis. Rekan-rekan bisa edit file /opt/zextras/conf/amavisd.conf.in lalu cari blok @score_sender_maps dan masukkan baris seperti ini dibawah baris yang berisi contoh format whitelist:
@score_sender_maps = ({ # a by-recipient hash lookup table,
# results from all matching recipient tables are summed
.....
# soft-blacklisting (positive score)
'sender@example.net' => 3.0,
'.example.net' => 1.0,
# custom-whitelist
'raihan@excellent.co.id' => -10.0, #Format whitelist alamat email
'zextras@colamen.id' => -10.0, #Format whitelist alamat email
'aktiva.co.id' => -10.0, #Format whitelist @domain email
Dari contoh diatas, saya melakukan whitelist untuk email-email dibawah ini:
- Email dari raihan@excellent.co.id
- Email dari zextras@colamen.id
- Semua email dari @aktiva.co.id
Mekanisme whitelistnya adalah menggunakan custom score, jadi apabile from-nya dari alamat-alamat email tersebut spamscore akan langsung dikurangi 10. Spam score -10 harusnya sudah cukup sih, tapi kalau rekan-rekan pakai -10 dan masih masuk junk, rekan-rekan boleh sesuaikan spam scorenya jadi lebih rendah lagi, misalnya -99.
Catatan: Metode ini tidak rekomendasi karena tidak rapih dan sulit di maintain. Bayangkan kalau ada 50 atau 100 rekanan baru, file konfigurasi akan jadi panjang sekali, belum lagi risiko salah ketik tanda kutip atau koma yang bisa bikin service Amavis gagal running.
Langkah 2: Metode yang Rapih & Fleksibel (Pakai File Eksternal)
Saya memutuskan memakai metode read_hash jadi whitelist bisa kita kumpulkan di file terpisah. Awalnya, di file /opt/zextras/conf/amavisd.conf.in, saya define konfigurasinya seperti ini:
read_hash("/opt/zextras/conf/whitelist_amavis") => -10.0,
Dan isi file /opt/zextras/conf/whitelist_amavis cuma alamat emailnya saja dengan contoh seperti dibawah ini:
raihan@excellent.co.id zextras@colamen.id aktiva.co.id
Dengan asumsi semua email yang ada di dalam file whitelist_amavis otomatis mendapatkan spam score -10.0, karena nilainya sudah saya define di file konfigurasi Amavis. Simpel, kan? Nah ternyata Amavis tidak bisa membaca konfigurasi tersebut dan malah mengabaikan angka -10.0 yang saya tulis di file /opt/zextras/conf/amavisd.conf.in karena format read_hash yang benar seharusnya skornya ada di dalam file itu sendiri. Efeknya? Skor di header email malah muncul AM.WBL=1. Bukannya mengurangi spam score malah dapat spam score tambahan wkwkwk.
Akhirnya saya mencari-cari di forum, spam score custom-nya harus masuk juga ke dalam file hash, jadi isi file /opt/zextras/conf/amavisd.conf.in cukup seperti ini:
@score_sender_maps = ({ # a by-recipient hash lookup table,
# results from all matching recipient tables are summed
'.' => [ # the _first_ matching sender determines the score boost
read_hash("/opt/zextras/conf/whitelist_amavis"),
Lalu, edit file /opt/zextras/conf/whitelist_amavis denga format seperti dibawah ini:
raihan@excellent.co.id -10 zextras@colamen.id -10 aktiva.co.id -10
Langkah 3: Restart Service Amavis & Zmconfigd
Supaya konfigurasi diatas bisa reflect, kita perlu melakukan restart service amavis & zmconfigd. Sebenarnya awalnya saya restart service Amavis aja, tapi setiap saya restart kok service zmconfigd malah stopped, jadi yaudah sekalian aja wkwk. Berikut perintah untuk restart service yang dimaksud:
# su - zextras # zmamavisdctl restart&&zmconfigdctl restart
Walaupun proses restart tidak sampai 5 menit, tapi kalau bisa proses penambahan serta restart service dilakukan diluar office hour, khawatir muncul error saat user menggunakan email server.
Langkah Terakhir: Uji Coba Kirim dari Email Whitelist
Kalau rekan-rekan sempat testing & cek full header sebelum email dilakukan whitelist, nanti email headernya akan seperti ini:
Return-Path: <raihan@excellent.co.id> Received: from carbonio-mta.domain.com (LHLO carbonio-mta.domain.com) (10.100.11.124) by carbonio-mailbox01.domain.com with LMTP; Tue, 6 Jan 2026 18:37:34 +0700 (WIB) Received: from localhost (localhost [127.0.0.1]) Received: from localhost (localhost [127.0.0.1]) by carbonio-mta.domain.com (Postfix) with ESMTP id B71CB3852EC for <zextras@domain.com>; Tue, 6 Jan 2026 18:37:34 +0700 (WIB) X-Virus-Scanned: amavis at domain.com X-Spam-Flag: YES X-Spam-Score: 4.419 X-Spam-Level: **** X-Spam-Status: Yes, score=4.419 required=3.2 tests=[BAYES_99=3.5, BAYES_999=0.2, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_SOFTFAIL=0.665] autolearn=no autolearn_force=no
Lalu lakukan uji coba setelah kita whitelist email, pastikan langsung masuk ke inbox dan jika dicek email headernya akan muncul scoring AM.WBL:
Return-Path: <raihan@excellent.co.id> Received: from carbonio-mta.domain.com (LHLO carbonio-mta.domain.com) (10.100.11.124) by carbonio-mailbox01.domain.com with LMTP; Tue, 6 Jan 2026 18:42:32 +0700 (WIB) Received: from localhost (localhost [127.0.0.1]) by carbonio-mta.domain.com (Postfix) with ESMTP id 6AC023830BF for <zextras@domain.com>; Tue, 6 Jan 2026 18:42:32 +0700 (WIB) X-Virus-Scanned: amavis at domain.com X-Spam-Flag: NO X-Spam-Score: -5.579 X-Spam-Level: X-Spam-Status: No, score=-5.579 required=3.2 tests=[AM.WBL=-10, BAYES_99=3.5, BAYES_999=0.2, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_SOFTFAIL=0.665] autolearn=no autolearn_force=no
Selanjutnya, apabila rekan-rekan hendak whitelist email dari pengecekan Amavis (ASAV), bisa langsung ditambahkan ke file /opt/zextras/conf/whitelist_amavis. Selain itu, langkah-langkah yang saya sebutkan diatas sepertinya juga bisa dilakukan di email server Zimbra, rekan-rekan cukup cari saja file amavisd.conf.in dan lakukan konfigurasi yang sama.
Catatan: Apabila rekan-rekan melakukan upgrade ataupun patching Carbonio, maka kemungkinan besar rekan-rekan perlu melakukan pengecekan bahkan konfigurasi ulang karena pada beberapa proses patch, konfigurasi Amavis dikembalikan menjadi default. Saran saya, sebelum melakukan patching, baiknya melakukan backup file /opt/zextras/conf/amavisd.conf.in & /opt/zextras/conf/whitelist_amavis
Namun apabila rekan-rekan ragu untuk melakukannya, sister company Excellent, yaitu Aktiva juga menyediakan layanan implementasi & maintenance email server Carbonio dan sudah mencakup konfigurasi improvement tersebut. Bagi rekan-rekan yang berminat untuk jasa layanan tersebut bisa langsung kontak & tanya-tanya ke email sales@aktiva.co.id