promo.example.com, notifikasi order dari notif.example.com, dan email kantor tetap di example.com. Masing-masing kira-kira 2.000 sampai 3.000 email per hari ke Gmail, jadi pemilik domain merasa aman karena tidak ada satu pun yang menyentuh angka sekitar 5.000. Masalahnya, Gmail dan Yahoo tidak menghitung per subdomain. Volume dari semua stream dan semua subdomain dijumlahkan ke domain utama.
Pemisahan subdomain itu sendiri tidak salah. Hanya saja, tujuannya sering keliru. Supaya jelas kenapa penghitungannya digabung, kita perlu melihat dulu domain apa saja yang sebenarnya dibawa oleh satu email.
Satu email membawa beberapa identitas domain
- Envelope sender (
MAIL FROMdi sesi SMTP, yang nanti muncul sebagaiReturn-Path). Domain ini dipakai untuk cek SPF. - Header
From:, yaitu alamat yang dilihat penerima di aplikasi email. Domain ini jadi patokan DMARC. - Nilai
d=di signature DKIM, yaitu domain yang menyatakan dirinya menandatangani pesan.
From: [email protected], Return-Path di domain bounce milik ESP, dan DKIM d=promo.example.com. Notifikasi dari server aplikasi bisa memakai notif.example.com di ketiganya.
Di atas semua identitas itu ada konsep yang dipakai DMARC: organizational domain, atau domain organisasi. Ini adalah domain yang benar-benar didaftarkan di registrar, ditentukan berdasarkan Public Suffix List (daftar akhiran publik seperti .com, .co.id, .web.id). Untuk promo.example.com, notif.example.com, dan example.com, domain organisasinya sama, yaitu example.com. Karena itu DMARC dengan mode relaxed alignment menganggap From: promo.example.com selaras dengan DKIM d=example.com. Keduanya dianggap satu keluarga.
Bagaimana pesan dari subdomain akhirnya kembali ke domain utama
- Server pengirim membuka koneksi SMTP ke MX Gmail, lalu mengirim
EHLO,MAIL FROM,RCPT TO, danDATA. - Server penerima mengecek SPF untuk domain envelope sender dengan membaca record TXT di DNS domain tersebut.
- Setelah header dan body diterima, signature DKIM diverifikasi dengan mengambil public key dari
selector._domainkey.<domain d=>. - Untuk DMARC, penerima mengambil domain di header
From:dan mencari record di_dmarc.<domain From>. Kalau di subdomain tidak ada record, pencarian turun ke_dmarc.<domain organisasi>. - Hasilnya dicatat bersama sinyal lain seperti keluhan spam dan engagement, lalu diakumulasi sebagai reputasi.
promo, 2.000 dari notif, dan 1.000 dari email kantor (angka ilustrasi) berarti sekitar 5.500 per hari untuk example.com. Domain itu sudah masuk wilayah bulk sender.
Ada satu detail lagi yang sering terlewat. Menurut aturan yang berlaku, begitu domain melewati ambang, status bulk sender tidak kedaluwarsa. Kalau volume turun lagi bulan depan, domain tetap diharapkan memenuhi semua persyaratan bulk sender. Satu kampanye besar saat promo akhir tahun sudah cukup untuk mengubah status domain secara permanen.
Lalu apa gunanya memisah stream ke subdomain
example-mail.com. Secara teknis itu memang domain organisasi yang berbeda. Tapi definisi bulk sender juga menyebut organisasi, bukan hanya domain. Ditambah lagi, domain baru tanpa riwayat biasanya punya reputasi nol dan penerima akan lebih curiga. Kalau tujuannya cuma menghindari aturan, hasilnya cenderung lebih buruk daripada sekadar memenuhi persyaratan.
Soal kebijakan DMARC di domain induk yang ikut berlaku ke subdomain, ada efek samping lain yang dibahas di artikel tentang root DMARC yang memblokir mail subdomain.
Memperkirakan volume harian ke Gmail dari log
=>. Perintah di bawah ini read-only dan menghitung pengiriman ke gmail.com dan googlemail.com per tanggal. Path log tergantung setup: /var/log/exim_mainlog umum di cPanel, sedangkan Debian/Ubuntu biasanya memakai /var/log/exim4/mainlog.
BASH
grep -E ' => [^ ]*@(gmail|googlemail)[.]com' /var/log/exim_mainlog | awk '{print $1}' | sort | uniq -cstatus=sent dengan penerima Gmail. Lokasi log umumnya /var/log/mail.log atau /var/log/maillog, tergantung distro. Kolom tanggal di format syslog klasik terdiri dari dua kolom (bulan dan tanggal), jadi awk-nya sedikit berbeda.
BASH
grep 'status=sent' /var/log/mail.log | grep -E 'to=<[^>]*@(gmail|googlemail)[.]com>' | awk '{print 1,2}' | sort | uniq -cKalau ternyata sudah bulk sender
p=none, dan domain di From: selaras dengan domain SPF atau DKIM. Record DMARC di apex bisa dicek seperti ini:
BASH
dig +short TXT _dmarc.example.com