Kenapa email butuh semua ini?
Ini fakta yang kurang enak soal email: email dirancang di awal tahun 1980-an untuk jaringan kecil berisi orang-orang yang saling percaya. Secara bawaan, siapa pun bisa mengirim email yang mengaku dari [email protected]. Tidak ada apa pun di protokol dasarnya yang bisa mencegah hal itu.
SPF, DKIM, dan DMARC ditambahkan belakangan untuk memperbaikinya. Bersama-sama, ketiganya membantu pihak penerima, seperti Gmail, Outlook, atau Yahoo, menjawab satu pertanyaan: apakah email ini benar-benar berasal dari domain yang diakuinya? Kalau jawabannya tidak, email itu masuk ke spam atau ditolak. Kalau domain kamu sendiri belum memasangnya, email asli kamu bisa diperlakukan seperti email palsu.
Perumpamaan singkat ini bisa membantu:
- SPF adalah daftar tamu: server mana saja yang boleh mengirim email atas nama domain kamu.
- DKIM adalah segel lilin: tanda tangan yang membuktikan email tidak diubah selama perjalanan.
- DMARC adalah instruksi untuk satpam: apa yang harus dilakukan kalau sebuah email gagal dalam pemeriksaan, dan siapa yang perlu diberi tahu.
SPF: daftar tamu
SPF (Sender Policy Framework) adalah satu baris teks yang kamu pasang di DNS domain kamu. Isinya daftar server dan layanan yang boleh mengirim email atas nama kamu. Saat Gmail menerima email dari domain kamu, Gmail akan membuka daftar itu dan mengecek apakah server pengirimnya ada di sana.
Record SPF yang umum terlihat seperti ini:
v=spf1 include:_spf.google.com include:sendgrid.net ~allKita baca dari kiri ke kanan:
v=spf1: "ini adalah record SPF".include:_spf.google.com: Google Workspace boleh mengirim email atas nama saya.include:sendgrid.net: begitu juga SendGrid (misalnya untuk email dari aplikasi saya).~all: selain itu kemungkinan besar bukan saya, jadi perlakukan dengan curiga. (-allartinya "jelas bukan saya, tolak saja".)
Ada juga batas 10 DNS lookup di dalam satu record SPF. Setiap include: dihitung, begitu juga include yang ada di dalamnya. Kalau kamu memakai banyak layanan, kamu bisa melewati batas ini tanpa sadar, dan akibatnya SPF gagal untuk semua email.
DKIM: segel lilin
SPF mengecek dari mana sebuah email berasal. DKIM (DomainKeys Identified Mail) mengecek bahwa isi email itu sendiri tidak diutak-atik. Layanan email kamu menandatangani setiap pesan keluar dengan kunci privat yang hanya diketahui olehnya. Kamu memasang kunci publik pasangannya di DNS. Server penerima memakai kunci publik itu untuk memeriksa tanda tangannya.
Kalau ada yang mengubah email di tengah jalan, bahkan cuma satu kata di isinya, tanda tangannya tidak akan cocok lagi. Mirip segel lilin di surat zaman dulu: kalau segelnya rusak, kamu tahu ada yang sudah membukanya.
Record DKIM dipasang di nama khusus, misalnya google._domainkey.yourdomain.com, dan nilainya kurang lebih seperti ini:
v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAu1...Kabar baiknya: kamu tidak perlu menulisnya sendiri. Penyedia email kamu yang membuatnya, dan kamu tinggal menyalinnya ke DNS. Kata sebelum ._domainkey (di sini google) disebut selector. Fungsinya cuma agar kamu bisa punya beberapa kunci, satu untuk setiap layanan.
DMARC: instruksi untuk satpam
SPF dan DKIM memberi fakta kepada server penerima. DMARC (Domain-based Message Authentication, Reporting and Conformance) memberi tahu apa yang harus dilakukan dengan fakta-fakta itu. DMARC juga menambahkan satu aturan penting bernama alignment: domain yang lolos SPF atau DKIM harus sama dengan domain yang benar-benar dilihat pembaca di baris "Dari". Tanpa aturan ini, penipu bisa lolos SPF dengan domain mereka sendiri sambil menampilkan domain kamu.
Record DMARC berada di _dmarc.yourdomain.com dan bentuknya seperti ini:
v=DMARC1; p=none; rua=mailto:[email protected]p=none: hanya memantau, belum memblokir apa pun. Cocok untuk permulaan.p=quarantine: kirim email yang gagal ke folder spam.p=reject: tolak sepenuhnya email yang gagal. Perlindungan paling kuat.rua=mailto:...: alamat tujuan laporan ringkasan harian dari pihak penerima.
Laporan-laporan itu adalah harta karun yang sering terlewat. Di sana kamu bisa melihat setiap server yang mengirim email memakai domain kamu, termasuk layanan yang kamu lupa pernah dipakai dan siapa pun yang mencoba menyamar sebagai kamu.
Cara memasangnya, langkah demi langkah
Misalnya kamu punya myshop.com, memakai Google Workspace untuk kotak surat, dan layanan seperti SendGrid atau Mailgun untuk konfirmasi pesanan. Begini urutan yang akan saya lakukan:
- Catat semua yang mengirim email atas nama domain kamu: penyedia kotak surat, situs web atau aplikasi, tool newsletter, helpdesk, software faktur. Langkah inilah yang sering dilewati orang, dan justru yang paling banyak menimbulkan masalah di kemudian hari.
- Buat satu record SPF di DNS kamu (record TXT di
myshop.com) yang mencakup semuanya, diakhiri dengan~all. - Aktifkan DKIM di setiap layanan. Masing-masing akan memberimu record untuk disalin ke DNS. Lalu tekan "verify" atau "start authenticating" di layanan tersebut.
- Tambahkan record DMARC dengan
p=nonebeserta alamat untuk laporan, di_dmarc.myshop.com. - Tunggu satu sampai dua minggu lalu baca laporannya. Perbaiki semua pengirim sah yang masih gagal.
- Perketat kebijakannya menjadi
p=quarantine, lalu nantip=reject, setelah kamu yakin semua email asli kamu lolos.
Cara mengeceknya di email mana pun yang kamu terima
Kamu tidak butuh tool apa pun. Aplikasi email kamu sudah menampilkan hasilnya:
- Gmail: buka emailnya, klik ikon titik tiga, lalu Tampilkan asli. Di bagian atas kamu akan melihat baris seperti
SPF: PASS,DKIM: PASS, danDMARC: PASS. - Outlook: buka pesannya, lalu View dan View message details (atau Message source), lalu cari header
Authentication-Results. - Apple Mail: View, lalu Message, lalu All Headers.
Header aslinya kurang lebih terlihat seperti ini:
Authentication-Results: mx.google.com;
dkim=pass header.d=myshop.com;
spf=pass smtp.mailfrom=myshop.com;
dmarc=pass (p=QUARANTINE) header.from=myshop.comTiga kali pass dan domainnya cocok: email itu asli. Kalau kamu melihat fail, atau domainnya tidak cocok dengan pengirim yang terlihat, hati-hati. Itu salah satu tanda bahaya yang saya bahas di cara mengenali email phishing.
Kalau kamu sedang mengatur domain sendiri, cara cepat untuk mengetesnya adalah mengirim email ke kotak masuk sementara dan ke alamat Gmail, lalu cek header di salinan yang masuk ke Gmail. Cuma butuh dua menit, dan kamu bisa melihat persis apa yang dilihat dunia luar.
Masalah umum dan solusi cepatnya
- "SPF: softfail" atau "neutral": server yang mengirim email tidak ada di record SPF kamu. Tambahkan layanannya dengan
include:yang mereka berikan. - "SPF permerror": biasanya karena ada dua record SPF, atau lebih dari 10 lookup. Gabungkan jadi satu record dan hapus layanan yang sudah tidak kamu pakai.
- "DKIM: fail" setelah mengedit template: ada sesuatu yang mengubah email setelah ditandatangani (sebagian layanan penerusan dan footer email melakukan ini). Kirim langsung lalu tes lagi.
- DMARC gagal padahal SPF lolos: masalah alignment. SPF lolos untuk domain milik layanan pengirimmu, bukan domain kamu. Aktifkan DKIM dengan domain kamu sendiri di layanan itu, atau atur domain return-path kustom.
- Email tetap masuk spam padahal semuanya lolos: autentikasi membuktikan siapa kamu, bukan bahwa orang ingin menerima email kamu. Konten, reputasi pengiriman, dan tingkat komplain juga berpengaruh. Saya sudah menulis lebih lanjut soal ini di kenapa email aplikasi masuk ke spam.
Apakah kamu benar-benar butuh ketiganya?
Ya. Sejak 2024, Gmail dan Yahoo mewajibkan SPF, DKIM, dan record DMARC bagi siapa pun yang mengirim email dalam jumlah besar, dan pengirim kecil pun mendapat tingkat keterkiriman yang jauh lebih baik kalau ketiganya terpasang. Yang lebih penting, DMARC dengan p=reject adalah yang mencegah penipu mengirim email palsu atas nama kamu ke pelanggan kamu sendiri.
Pemasangannya cuma butuh satu sore. Setelah itu, ketiganya diam-diam melindungi domain kamu setiap hari. Kalau kamu punya domain dan selama ini terus menunda urusan ini, anggap ini tandanya. Mulai dengan p=none hari ini. Kamu bisa memperketatnya nanti.