Cara Setting SPF, DKIM & DMARC Microsoft 365

Untuk domain kustom di Microsoft 365 (Exchange Online/Outlook), autentikasi email membutuhkan tiga hal: SPF v=spf1 include:spf.protection.outlook.com -all di host @, dua record CNA...

Cara Setting SPF, DKIM & DMARC Microsoft 365
Iklan

Untuk domain kustom di Microsoft 365 (Exchange Online/Outlook), autentikasi email membutuhkan tiga hal: SPF v=spf1 include:spf.protection.outlook.com -all di host @, dua record CNAME DKIM (selector1._domainkey dan selector2._domainkey) yang nilainya diambil dari Microsoft Defender portal lalu diaktifkan di sana, serta record TXT DMARC di _dmarc. Microsoft tidak menyediakan pengaturan SPF dan DMARC untuk domain kustom di portalnya; semuanya dibuat di penyedia DNS Anda.

Langkah-langkah di bawah mengikuti dokumentasi Microsoft Learn (Microsoft Defender for Office 365) terbaru, termasuk format CNAME DKIM baru yang berlaku untuk domain kustom yang ditambahkan sejak Mei 2025. Bila Anda memakai Google Workspace, panduannya ada di setting SPF, DKIM & DMARC Google Workspace.

Gambaran: apa yang sudah otomatis, apa yang belum

DomainSPFDKIMDMARC
namaanda.onmicrosoft.com (domain awal)Sudah diatur MicrosoftOtomatis ditandatanganiHarus Anda tambahkan di Microsoft 365 admin center
contoh.com (domain kustom)Anda buat di DNSAnda buat 2 CNAME + aktifkanAnda buat di DNS

Satu hal yang sering terlewat: sebelum DKIM domain kustom diaktifkan, email dari anda@contoh.com ditandatangani dengan domain *.onmicrosoft.com. Tanda tangannya valid, tetapi tidak selaras dengan contoh.com, sehingga tidak membantu DMARC. Konsep alignment ini dijelaskan di apa itu DMARC.

Iklan

Langkah 1: SPF untuk Microsoft 365

Proses penambahan domain di Microsoft 365 biasanya sudah meminta Anda membuat record SPF. Periksa kembali nilainya:

Type : TXT
Host : @
Value: v=spf1 include:spf.protection.outlook.com -all
TTL  : 3600

Microsoft merekomendasikan -all (hard fail), dengan alasan DKIM dan DMARC juga dipasang sehingga DMARC yang menentukan nasib email gagal. Microsoft juga menyarankan TTL minimal 3600 detik.

Untuk cloud khusus, nilai include-nya berbeda:

# Microsoft 365 GCC High dan DoD
v=spf1 include:spf.protection.office365.us -all

# Microsoft 365 yang dioperasikan 21Vianet (Tiongkok)
v=spf1 include:spf.protection.partner.outlook.cn -all

Ada server atau layanan lain?

Tetap satu record, gabungkan semua sumber:

Iklan
# Microsoft 365 + server aplikasi/on-premises dengan IP tetap
v=spf1 ip4:203.0.113.10 include:spf.protection.outlook.com -all

Untuk layanan email massal yang tidak Anda kendalikan, Microsoft menyarankan memakai subdomain (misalnya marketing.contoh.com) dengan SPF sendiri, agar reputasi domain utama tidak terdampak dan anggaran 10 DNS lookup tidak habis. Satu catatan dari Microsoft: jangan "meratakan" (flatten) include:spf.protection.outlook.com menjadi daftar IP, karena IP Microsoft berubah dinamis. Validasi hasilnya dengan SPF Checker; jika lookup melewati 10, lihat solusi SPF PermError.

Langkah 2: DKIM dengan selector1 dan selector2

Microsoft 365 membuat dua pasangan kunci per domain. Hanya satu selector yang aktif; yang lain disiapkan untuk rotasi berikutnya. Karena itu Anda harus membuat kedua CNAME, walaupun hanya satu yang dipakai saat ini.

Format CNAME

Host-nya selalu sama untuk semua organisasi: selector1._domainkey dan selector2._domainkey. Tujuannya bergantung pada kapan domain ditambahkan:

# Format baru (domain kustom yang ditambahkan sejak Mei 2025)
selector1._domainkey  CNAME  selector1-contoh-com._domainkey.namaanda.n-v1.dkim.mail.microsoft
selector2._domainkey  CNAME  selector2-contoh-com._domainkey.namaanda.n-v1.dkim.mail.microsoft

# Format lama (domain kustom yang lebih lama)
selector1._domainkey  CNAME  selector1-contoh-com._domainkey.namaanda.onmicrosoft.com
selector2._domainkey  CNAME  selector2-contoh-com._domainkey.namaanda.onmicrosoft.com

Penjelasan bagiannya: contoh-com adalah domain kustom dengan titik diganti tanda hubung, namaanda adalah awalan domain .onmicrosoft.com Anda, dan huruf sebelum -v1 (misalnya n atau r) adalah karakter partisi yang ditetapkan Microsoft dan tidak bisa ditebak. Contoh di atas hanya ilustrasi. Selalu salin nilai persis dari portal atau PowerShell; format lama dan baru tidak bisa dicampur untuk selector yang sama.

Iklan

2a. Ambil nilai CNAME dari Defender portal

  1. Buka Microsoft Defender portal di https://security.microsoft.com.
  2. Masuk ke Email & collaboration โ†’ Policies & rules โ†’ Threat policies โ†’ Email authentication settings (atau langsung https://security.microsoft.com/authentication).
  3. Pilih tab DKIM. Domain kustom yang belum punya kunci berstatus NoDKIMKeys dengan toggle Disabled.
  4. Geser toggle domain tersebut ke Enabled. Akan muncul dialog Client error yang berisi nilai CNAME; klik OK. Ini perilaku normal.
  5. Status berubah menjadi CnameMissing. Klik baris domain (bukan toggle-nya) untuk membuka panel detail, lalu salin nilai di bagian Publish CNAMEs.

2b. Atau ambil lewat PowerShell

Connect-ExchangeOnline

# Tampilkan nilai CNAME untuk domain
Get-DkimSigningConfig -Identity contoh.com | Format-List Name,Enabled,Status,Selector1CNAME,Selector2CNAME

# Jika domain belum muncul, buat konfigurasinya dulu (2048 bit)
New-DkimSigningConfig -DomainName contoh.com -Enabled $false -KeySize 2048

Perlu dicatat, parameter -KeySize pada New-DkimSigningConfig default-nya 1024 menurut dokumentasi Microsoft; tambahkan -KeySize 2048 bila ingin kunci yang lebih kuat sejak awal.

2c. Buat dua CNAME di DNS

Type : CNAME
Host : selector1._domainkey
Value: (Selector1CNAME dari portal)
TTL  : 3600

Type : CNAME
Host : selector2._domainkey
Value: (Selector2CNAME dari portal)
TTL  : 3600

Perhatikan:

  • Isi kolom host hanya selector1._domainkey. Beberapa panel (Microsoft mencontohkan GoDaddy) otomatis menambahkan nama domain, sehingga mengetik nama lengkap menghasilkan host ganda.
  • Jenis record harus CNAME, bukan TXT berisi kunci. Microsoft mengelola dan merotasi kuncinya lewat CNAME tersebut.
  • Di Cloudflare, set record ke DNS only (awan abu-abu).

Setelah tersebar, cek dengan dig +short CNAME selector1._domainkey.contoh.com atau DKIM Checker dengan selector selector1.

2d. Aktifkan penandatanganan

Kembali ke panel detail domain di tab DKIM, lalu aktifkan Sign messages for this domain with DKIM signatures. Bila CNAME terdeteksi, status berubah menjadi Signing DKIM signatures for this domain dan tombol Rotate DKIM keys menjadi aktif. Microsoft menyebut deteksi CNAME bisa butuh beberapa menit atau lebih. Lewat PowerShell:

Iklan
Set-DkimSigningConfig -Identity contoh.com -Enabled $true

Rotasi kunci dan upgrade ke 2048 bit

Rotate-DkimSigningConfig -Identity contoh.com -KeySize 2048

Rotasi tidak instan. Menurut Microsoft, butuh empat hari (96 jam) sebelum kunci baru mulai menandatangani, dan selama itu Anda tidak bisa memulai rotasi lain. Perubahan ukuran kunci berlaku pada selector yang menjadi aktif berikutnya.

Langkah 3: DMARC untuk domain kustom

Microsoft menyarankan SPF dan DKIM sudah beres untuk semua domain dan subdomain pengirim sebelum DMARC dipasang. Mulailah dari pemantauan:

Type : TXT
Host : _dmarc
Value: v=DMARC1; p=none; rua=mailto:dmarc@contoh.com
TTL  : 3600

Rencana bertahap ala Microsoft:

  1. p=none dan pantau laporan agregat.
  2. p=quarantine, naikkan pct bertahap (Microsoft mencontohkan 10, 25, 50, 75, 100).
  3. p=reject, juga bisa bertahap dengan pct.
  4. Mulai dari subdomain bervolume rendah, sisakan domain induk terakhir.
v=DMARC1; p=quarantine; pct=25; rua=mailto:dmarc@contoh.com
v=DMARC1; p=reject; pct=100; rua=mailto:dmarc@contoh.com

Gunakan DMARC Generator untuk menyusun record dan DMARC Checker untuk memvalidasinya. Satu konsekuensi yang disebut Microsoft: email keluar dari Microsoft 365 yang gagal DMARC di penerima, untuk domain dengan kebijakan quarantine atau reject, dikirim lewat high-risk delivery pool. Ini alasan tambahan untuk memastikan alignment beres sebelum menaikkan kebijakan.

Iklan
Dapatkan Update Terbaru

Berlangganan gratis. Artikel & tutorial coding terbaru langsung ke email kamu. Tanpa spam.

DMARC untuk domain onmicrosoft.com

Domain *.onmicrosoft.com tidak bisa diatur di DNS Anda. Tambahkan lewat Microsoft 365 admin center:

  1. Buka https://admin.microsoft.com โ†’ Show all โ†’ Settings โ†’ Domains.
  2. Klik domain *.onmicrosoft.com, buka tab DNS records, pilih Add record.
  3. Type TXT, TXT name _dmarc, TXT value v=DMARC1; p=reject bila domain itu tidak dipakai mengirim email. TTL 1 jam, lalu Save.

Domain parkir

Untuk domain yang tidak pernah mengirim email, Microsoft menyarankan v=spf1 -all dan v=DMARC1; p=reject;. CNAME DKIM tidak disarankan untuk domain parkir.

Langkah 4: Verifikasi

Kirim email dari Outlook ke akun Gmail atau Outlook.com, lalu buka header. Hasil yang diharapkan:

Authentication-Results: spf=pass (sender IP is 40.107.x.x)
 smtp.mailfrom=contoh.com; dkim=pass (signature was verified)
 header.d=contoh.com; dmarc=pass action=none header.from=contoh.com;

Pastikan header.d adalah domain Anda, bukan onmicrosoft.com, dan selector di header DKIM-Signature berbentuk s=selector1-contoh-com atau selector2-....

Iklan

Layanan pengirim selain Microsoft 365

Konfigurasi di Defender portal hanya berlaku untuk email yang keluar lewat Exchange Online. Bila ada layanan lain yang mengirim atas nama domain Anda, misalnya platform newsletter, aplikasi web yang memakai penyedia SMTP transaksional, atau sistem tiket, masing-masing perlu diatur sendiri. Aktifkan fitur custom DKIM atau domain authentication di layanan itu agar tanda tangannya memakai d= domain Anda, dan bila tersedia, atur Return-Path ke subdomain milik Anda supaya SPF juga selaras. Selector milik layanan tersebut tidak akan bentrok dengan selector1 dan selector2 Microsoft.

Laporan DMARC tahap p=none adalah cara paling andal untuk menemukan layanan yang terlupa: setiap IP yang muncul dengan volume berarti tetapi gagal alignment adalah kandidat untuk diperiksa sebelum Anda menaikkan kebijakan.

Catatan tentang laporan DMARC

Microsoft 365 mengirim laporan agregat (rua) ke domain lain selama MX domain penerima mengarah langsung ke Microsoft 365, tetapi tidak mengirim laporan kegagalan (ruf). Jadi jangan heran bila ruf Anda sepi dari Microsoft.

Kesalahan umum di Microsoft 365

  • Hanya membuat selector1; rotasi kunci nantinya gagal.
  • Membuat TXT berisi kunci alih-alih CNAME, status tetap CnameMissing.
  • Host ganda akibat panel DNS menambahkan domain otomatis.
  • Menyalin contoh dari artikel, bukan nilai asli tenant Anda (karakter partisi berbeda).
  • Lupa menyalakan toggle setelah CNAME dibuat, sehingga email tetap ditandatangani onmicrosoft.com.
  • Lupa DMARC di domain onmicrosoft.com yang tidak dipakai.

Checklist Microsoft 365

  • SPF satu record dengan include:spf.protection.outlook.com, diakhiri -all.
  • CNAME selector1._domainkey dan selector2._domainkey sesuai nilai portal.
  • DKIM toggle aktif, status Signing; pertimbangkan rotasi ke 2048 bit.
  • DMARC p=none + rua, naik bertahap ke reject.
  • DMARC untuk *.onmicrosoft.com dan domain parkir.
  • Header tes menunjukkan SPF, DKIM (domain sendiri), dan DMARC pass.

FAQ

Kenapa muncul "Client error" saat mengaktifkan DKIM?

Itu perilaku normal ketika CNAME belum ada. Dialog tersebut justru berisi nilai CNAME yang harus Anda buat. Klik OK, buat record-nya, lalu aktifkan lagi.

Iklan

Apakah selector2 wajib dibuat?

Ya. Microsoft mewajibkan kedua CNAME karena selector2 dipakai saat rotasi kunci. Tanpanya rotasi tidak bisa dilakukan.

Berapa lama sampai DKIM aktif?

Deteksi CNAME biasanya beberapa menit, tetapi bisa lebih lama tergantung propagasi DNS. Rotasi kunci butuh empat hari.

Pakai -all atau ~all untuk Microsoft 365?

Microsoft merekomendasikan -all, dengan catatan DKIM dan DMARC juga dikonfigurasi. Bila Anda belum yakin semua pengirim terdata, ~all sementara masih bisa dipakai.

Apakah domain onmicrosoft.com perlu SPF dan DKIM?

Tidak; keduanya sudah diatur Microsoft. Yang perlu Anda tambahkan hanya DMARC lewat admin center.

Iklan
setting dkim microsoft 365 spf microsoft 365 dmarc office 365 selector1 _domainkey spf.protection.outlook.com dkim outlook domain kustom
Rekomendasi

Hosting Cepat untuk Website & Laravel

Butuh hosting yang ngebut dan stabil untuk deploy website atau aplikasi Laravel-mu? Ini rekomendasi yang saya pakai.

Lihat Rekomendasi Hosting
Yudhi
Ditulis oleh

Yudhi

Web Developer

Web developer yang sehari-hari berkutat dengan PHP, Laravel, JavaScript, dan MySQL. Terbiasa membangun aplikasi web dari nol โ€” merancang database, menulis fitur, memburu bug, hingga deploy ke server โ€” lalu menuangkan solusi dan tutorialnya di DhieCoderWeb agar lebih mudah diikuti developer lain.

Bagikan artikel
Kembali

Komentar (0)

Punya pertanyaan atau tambahan? Tulis di bawah โ€” tak perlu login.

Membalas komentarโ€ฆ batal

Belum ada komentar. Jadilah yang pertama!

๐Ÿš€ Partner Recommendation

Butuh Source Code & Aplikasi Premium?

Download aplikasi Laravel, POS, Sekolah, Klinik, ERP, dan source code siap pakai di GudangCode.

GudangCode
  • โœ” Source Code Premium
  • โœ” Sistem Siap Pakai
  • โœ” Lifetime Update
  • โœ” Membership Lifetime
  • โœ” Update Aplikasi Harian
Daftar Membership โ†’
Iklan
Iklan