Deconstruksi Masalah: Validasi Identitas Pengirim dan Kebijakan Mailbox Provider
- SPF (RFC 7208): Mekanisme berbasis DNS yang mendefinisikan alamat IP mana saja yang diizinkan mengirim email atas nama suatu domain.
- DKIM (RFC 6376): Tanda tangan digital kriptografis yang disematkan pada header email ('DKIM-Signature'), diverifikasi menggunakan public key di DNS untuk menjamin integritas isi pesan.
- DMARC (RFC 7489): Kerangka kerja kebijakan yang menyatukan SPF dan DKIM, menentukan tindakan bagi email yang gagal otentikasi ('none', 'quarantine', atau 'reject'), serta menyediakan kanal pelaporan balik (RUA dan RUF).
Low-Level Mechanics: Alur Kerja Exim dan DNS Lookup
- Envelope Sender vs Header From: Exim mengevaluasi 'Return-Path' (Envelope From) saat transaksi SMTP MAIL FROM. SPF memeriksa IP server terhadap record DNS domain Return-Path.
- DKIM Signing: Exim memanggil skrip eksternal atau modul internal (seperti Exim DKIM support) untuk membaca private key (biasanya RSA 2048-bit atau Ed25519) dan menghitung hash dari header tertentu serta body pesan, lalu menyisipkannya ke 'DKIM-Signature'.
- DNS Caching & TTL Propagation: Mailbox provider melakukan 'reverse DNS lookup' (PTR record) dan validasi SPF/DKIM secara real-time. Jika TTL (Time to Live) record DNS terlalu tinggi atau propagasi gagal akibat inkonsistensi nameserver, proses verifikasi akan mengalami timeout dan berujung pada penurunan skor reputasi IP/domain.
Implementasi Produksi pada Exim cPanel
1. Verifikasi dan Generate DKIM serta SPF via WHM/CLI
# Memeriksa status konfigurasi domain melalui cPanel API
/usr/local/cpanel/bin/dkim_keys_install --all
# Memastikan zona DNS mencakup SPF yang valid
dig +short TXT example.comv=spf1 +mx +a ip4:192.0.2.10 -all2. Penyesuaian Konfigurasi Exim untuk DKIM Signing yang Ketat
# Bagian transport exim untuk pengiriman jarak jauh (remote_smtp)
remote_smtp:
driver = smtp
dkim_domain = $sender_address_domain
dkim_selector = default
dkim_private_key = /var/cpanel/domain_keys/private/$sender_address_domain
dkim_canon = relaxedchown -R mail:mail /var/cpanel/domain_keys/
chmod 600 /var/cpanel/domain_keys/private/*3. Implementasi Kebijakan DMARC
_dmarc.example.com. 300 IN TXT "v=DMARC1; p=reject; sp=reject; pct=100; rua=mailto:[email protected]; ruf=mailto:[email protected]; adkim=s; aspf=s;"- 'p=reject': Menolak email yang gagal dmarc secara langsung di SMTP time.
- 'adkim=s' dan 'aspf=s': Menuntut keselarasan domain yang ketat ('strict alignment').
- 'rua' dan 'ruf': Alamat email tujuan laporan agregat dan forensik (sebaiknya gunakan layanan aggregator DMARC eksternal karena volume data XML yang sangat besar).
Perbandingan Strategi Kebijakan DMARC
| Parameter Kebijakan | 'p=none' (Monitoring) | 'p=quarantine' (Mitigasi) | 'p=reject' (Enforcement Penuh) |
|---|---|---|---|
| Tindakan Mailbox Provider | Masuk inbox/spam, kirim laporan | Masuk folder spam/karantina | Tolak koneksi SMTP ('57.1') |
| Risiko False Positive | Nihil | Rendah | Tinggi jika SPF/DKIM salah |
| Fase Implementasi | Minggu 1 - 2 | Minggu 3 - 4 | Bulan ke-2 dan seterusnya |
| Tingkat Keamanan Spoofing | Tidak ada proteksi | Sedang | Maksimal |
Gotchas dan Penanganan Kegagalan (Troubleshooting)
- Forwarding Breakage (Masalah Email Forwarder): Ketika email diforward oleh server pihak ketiga (misalnya dari corporate email ke Gmail), header 'From:' tetap asli tetapi Envelope Sender berubah, yang merusak SPF. DKIM menyelamatkan skenario ini karena tanda tangan digital tetap valid selama body dan header utama tidak dimodifikasi. Pastikan ARC (Authenticated Received Chain) diaktifkan pada Exim jika server Anda sering bertindak sebagai mail forwarder.
- DNS Lookup Limit pada SPF: Jika record SPF Anda berisi terlalu banyak 'include' (seperti integrasi Google Workspace, Mailgun, dan cPanel lokal sekaligus), evaluasi SPF akan menghasilkan 'PermError'. Gunakan teknik 'SPF flattening' dengan mendaftarkan IP secara langsung atau membatasi layanan pihak ketiga.
- Mengarahkan Log Exim untuk Audit Gagal DMARC: Gunakan perintah berikut untuk memantau apakah email keluar mengalami penolakan atau masalah antrian akibat kebijakan lokal:
exim -bp
exigrep 'A=dkim_sign' /var/log/exim_mainlog | tail -n 50