前言:信寄得出去只是開始
把自訂網域接上 Microsoft 365,並把 DNS 放在 Cloudflare,是很多中小企業與個人站長的標準組合。但「信寄得出去」只是第一步;沒設好 SPF、DKIM、DMARC,信會被 Gmail 丟進垃圾郵件,也擋不住別人冒用你的網域。
這篇文章針對 沒有前置郵件閘道 的環境(沒有 SEG / SPAM Gateway):MX 直接指向 Exchange Online,所有防垃圾、防釣魚、防惡意程式都由內建的 Exchange Online Protection (EOP)負責。這時 EOP 就是唯一防線,不能只停在預設值。
讀完你會完成:
- Cloudflare 上的 MX、Autodiscover、SPF、DKIM、DMARC 記錄
- DMARC 從 p=none 分階段收緊到 p=reject
- 用 EOP 做好反垃圾、反釣魚、反惡意軟體與外寄限制
- MFA、停用 SMTP AUTH、稽核與告警
- 一份可以直接拿去用的上線驗收清單
事前準備
這篇的設定只需要 Microsoft 365 內建的 EOP,不必加購 Defender。動手前先確認下列條件:
| 項目 | 需求 |
|---|---|
| 授權 | Exchange Online Plan 1,或 Microsoft 365 Business Basic / Standard(皆內含 EOP) |
| DNS | 網域已託管在 Cloudflare,且有編輯 DNS 的權限 |
| 管理權限 | M365 全域管理員,或 Exchange 系統管理員 + 安全性管理員 |
| 工具 | Exchange Online PowerShell 模組(先執行 Connect-ExchangeOnline) |
| 備份 | 從 Cloudflare(DNS > Records > Export)匯出現有記錄 |
Safe Links、Safe Attachments、冒名防護(Impersonation)屬於 Defender for Office 365,需要 Business Premium 或加購,本文不涵蓋。文中的 yourdomain.com 請換成你自己的網域。
步驟一:在 Cloudflare 設定 MX 與 Autodiscover
所有郵件相關記錄都必須是 僅 DNS(灰色雲朵) 。這是整篇最重要的一句話。
| 類型 | 名稱 | 目標 | Proxy |
|---|---|---|---|
| MX | @ | yourdomain-com.mail.protection.outlook.com(以 M365 後台顯示為準) | 僅 DNS(灰雲) |
| CNAME | autodiscover | autodiscover.outlook.com | 僅 DNS(灰雲) |
- MX 不能開橘雲 :開了 Proxy,Cloudflare 不會替你轉送 SMTP,外部來信會完全送不到微軟。
- MX 主機名稱與優先級一律從「M365 系統管理中心 > 設定 > 網域 > DNS 記錄」複製,不要手打;部分新租戶的格式不同。
- 少了 Autodiscover,Outlook 桌面版與手機 App 新增帳號時常卡在「正在搜尋伺服器設定」。
nslookup -type=mx yourdomain.com
nslookup -type=cname autodiscover.yourdomain.com
步驟二:SPF、DKIM、DMARC 郵件身分驗證
這三筆記錄決定 Gmail、Yahoo 是否信任你的信,也是阻止別人冒用網域的關鍵。
SPF:宣告誰可以替你寄信
新增一筆 TXT,名稱 @:
v=spf1 include:spf.protection.outlook.com -all
- 一個網域 只能有一筆 SPF 。若還有其他寄信服務,合併在同一筆,例如
v=spf1 include:spf.protection.outlook.com include:_spf.google.com -all。 - 上線前先盤點所有用你網域寄信的來源:網站表單、ERP / POS、事務機掃描、電子報平台。不確定時先用
~all,盤點完再收緊為-all。 - SPF 總 DNS 查詢次數上限為 10 次,
include不要無限加。
DKIM:替每封信加上數位簽章
到 Microsoft Defender(security.microsoft.com/dkimv2)選你的網域,取得兩筆專屬 CNAME,在 Cloudflare 新增:
| 類型 | 名稱 | 目標(範例格式,以後台為準) |
|---|---|---|
| CNAME | selector1._domainkey | selector1-yourdomain-com._domainkey.<租戶名稱>.…dkim.mail.microsoft |
| CNAME | selector2._domainkey | selector2-yourdomain-com._domainkey.<租戶名稱>.…dkim.mail.microsoft |
- 兩筆 CNAME 同樣維持灰雲,否則微軟解析不到金鑰。
- 用
nslookup -type=cname selector1._domainkey.yourdomain.com確認回傳微軟的目標。 - 回到 Defender 把 DKIM 切換為「已啟用」。
DMARC:告訴收件方驗證失敗該怎麼處理
新增一筆 TXT,名稱 _dmarc,上線當天先用觀察模式:
v=DMARC1; p=none; pct=100; rua=mailto:[email protected]
同一網域只能有一筆 DMARC,舊的要先刪掉。p=none 對冒用信沒有任何阻擋效果,所以一定要加 rua 收報告,再分階段收緊:
| 階段 | DMARC 內容 | 什麼時候進入 |
|---|---|---|
| 1 觀察 | p=none; rua=mailto:… | 上線當天,觀察 2–4 週 |
| 2 隔離 | p=quarantine; pct=100; rua=mailto:… | 報告中合法來源皆通過 SPF / DKIM 對齊 |
| 3 拒收 | p=reject; rua=mailto:… | 隔離階段穩定 1 個月以上 |
- 報告是 XML,建議另建共用信箱,或使用 Cloudflare 的 Email Security > DMARC Management 彙整。
- 收緊後若有合法信件被擋,立刻改回上一階段,TTL 過後即恢復。
常見錯誤:Proxy address is already being used
替使用者指派自訂網域地址時,可能跳出:
Error executing request. The proxy address "SMTP:[email protected]" is already being used by the proxy addresses or LegacyExchangeDN.
這通常是租戶建立時的初始管理員帳號還掛著那個地址。就算拿掉了它的郵件授權,Exchange Online 內部的 Proxy 地址仍然存在。
- M365 系統管理中心 > 作用中的使用者 > 點選該管理員帳號 > 郵件。
- 「管理電子郵件別名」,刪除或更換衝突的自訂網域地址。
- 該帳號仍可用 .onmicrosoft.com 登入管理,權限不受影響;釋出的地址即可指派給新信箱。
步驟三:把 Exchange Online Protection(EOP)設定到位
不必加購 Defender,把 Plan 1 內建的 EOP 設定好,就能擋掉大部分釣魚與勒索軟體信件。設定入口:Microsoft Defender(security.microsoft.com)> 郵件與協作 > 原則與規則 > 威脅原則。
優先套用「預設安全性原則」
最省事的做法,是對全體使用者套用 Standard protection 。微軟會依建議值設好反垃圾、反釣魚、反惡意軟體,且日後自動跟進新的建議值。
- 路徑:威脅原則 > 預設安全性原則 > Standard protection > 管理保護設定 > 套用至所有收件者。
- 高風險帳號(老闆、會計、出納)可改套 Strict protection,攔截更嚴但誤判也較多。
- 優先順序:Strict > Standard > 自訂原則 > Default。套了預設原則的使用者,自訂原則的同類設定會被忽略,所以下方數值主要是 Default 原則的後備與參考。
反惡意軟體與隔離原則
- 啟用 通用附件篩選器 ,封鎖 .exe、.bat、.vbs、.iso 等常見勒索軟體載體。
- 保持 ZAP(零時差自動清除) 開啟:信送達後若特徵更新發現危害,系統會自動追回隔離。
- 惡意軟體、高信賴度釣魚用
AdminOnlyAccessPolicy(只有管理員能放行)。 - 一般垃圾信、大量郵件用
DefaultFullAccessWithNotificationPolicy,讓使用者自己預覽放行,可以大幅減少「我的信不見了」的問題。
反垃圾郵件原則(Default 建議值)
| 判定結果 | 動作 | 隔離原則 |
|---|---|---|
| 垃圾郵件 | 移至垃圾郵件資料夾 | — |
| 高信賴度垃圾郵件 | 隔離 | DefaultFullAccessWithNotificationPolicy |
| 網路釣魚 | 隔離 | AdminOnlyAccessPolicy |
| 高信賴度網路釣魚 | 隔離 | AdminOnlyAccessPolicy |
| 大量郵件(BCL 門檻 6) | 移至垃圾郵件資料夾 | — |
隔離保留 30 天。允許清單原則上不填,必要時改用「租用戶允許/封鎖清單」並設到期日;絕不要把自家網域或 gmail.com 加進允許清單。
反網路釣魚原則(EOP 版)
- 開啟詐騙情報(Spoof intelligence)與「遵循寄件者的 DMARC 原則」。
- 開啟未驗證寄件者指標(? 與 via 標記)。
- 開啟首次聯絡安全提示,這是防範變臉詐騙(BEC:假冒廠商要求改匯款帳號)的低成本手段。
- EOP 版沒有冒名防護,偵測不到
yourdomaln.com這類相似網域;大額匯款請用電話二次確認補強。
外寄限制與關閉自動轉寄
帳號被盜後,攻擊者最常做兩件事:大量寄送釣魚信,以及設規則把信轉寄到外部。輸出垃圾郵件原則就是最後一道防線。
Set-HostedOutboundSpamFilterPolicy -Identity Default `
-RecipientLimitExternalPerHour 500 -RecipientLimitInternalPerHour 1000 `
-RecipientLimitPerDay 1000 -ActionWhenThresholdReached BlockUser `
-AutoForwardingMode Off
- 確實需要轉寄的人,另建一條只套用在該使用者的原則,不要打開 Default。
- 被限制寄信的帳號,在 Defender > 檢閱 > 受限制的實體解除;解除前先重設密碼、撤銷工作階段、檢查收件規則。
外部寄件者標記
讓 Outlook 對外部來信顯示「外部」標籤,假冒同事的信一眼就看得出來:
Set-ExternalInOutlook -Enabled $true
Get-ExternalInOutlook # Enabled = True
步驟四:身分安全、稽核與告警
郵件防護再完整,帳密被盜就全部失效。以下是上線必備項目。
啟用 MFA
- Business Basic / Standard:啟用 安全性預設值 (Entra 系統管理中心 > 身分識別 > 概觀 > 屬性),強制全員註冊 MFA 並封鎖舊式驗證。
- Business Premium:改用條件式存取,兩者不能同時啟用。
管理員帳號規劃
- 建立一個 .onmicrosoft.com 的 緊急存取帳號 (Break-glass),不指派授權、長密碼離線保存。
- 每位管理人員用自己的獨立帳號,不共用。
- 全域管理員保持 2–4 個,日常用 Exchange 系統管理員、使用者管理員等較低權限角色。
停用 SMTP AUTH
舊式 SMTP 驗證不支援 MFA,是密碼噴灑攻擊的常見入口。組織層級停用,再個別開放給需要的設備:
Set-TransportConfig -SmtpClientAuthenticationDisabled $true
# 個別例外(例如事務機掃描寄信)
Set-CASMailbox -Identity [email protected] -SmtpClientAuthenticationDisabled $false
停用前務必確認事務機、ERP、監控設備有沒有用 SMTP AUTH 寄信,否則它們會無聲失敗。
稽核記錄與告警原則
Get-AdminAuditLogConfig | fl UnifiedAuditLogIngestionEnabled # 應為 True
Get-OrganizationConfig | fl AuditDisabled # 應為 False
在 Defender > 告警原則確認以下預設告警已開啟,通知寄到管理員信箱:
- 使用者被限制寄送電子郵件
- 建立轉寄/重新導向收件規則
- 可疑的電子郵件傳送模式
- 使用者回報的網路釣魚與 ZAP 相關告警
上線驗收清單
逐項確認並截圖留存,之後出問題時就有基準可以比對。
| # | 檢查項目 | 驗證方式 | 預期結果 |
|---|---|---|---|
| 1 | MX / Autodiscover | nslookup -type=mx / -type=cname | 指向微軟、灰雲 |
| 2 | SPF | nslookup -type=txt yourdomain.com | 僅一筆 v=spf1 |
| 3 | DKIM | Defender > DKIM 頁面 | 已啟用 |
| 4 | DMARC | nslookup -type=txt _dmarc.yourdomain.com | 僅一筆,含 rua |
| 5 | 外寄驗證 | 寄信到 Gmail,查看「顯示原始郵件」 | SPF / DKIM / DMARC 皆 PASS |
| 6 | 外收測試 | 從 Gmail 寄入 | 正常收件、顯示「外部」標籤 |
| 7 | 預設安全性原則 | Defender > 預設安全性原則 | Standard 已套用全體 |
| 8 | 自動轉寄 | 設外部轉寄規則後寄測試信 | 轉寄被擋、產生 NDR |
| 9 | MFA | 一般使用者登入 | 要求註冊 Authenticator |
| 10 | SMTP AUTH | Get-TransportConfig | Disabled = True,例外已列管 |
| 11 | 稽核記錄 | Get-AdminAuditLogConfig | Ingestion = True |
| 12 | 管理員帳號 | M365 系統管理中心 > 角色 | 緊急存取帳號已建立、管理員各自獨立 |
變更前先備份:DNS 從 Cloudflare 匯出,EOP 原則用 Get-HostedContentFilterPolicy、Get-HostedOutboundSpamFilterPolicy、Get-AntiPhishPolicy 匯出原值,需要時就能還原。
常見問題 FAQ
Cloudflare 的 MX 記錄可以開 Proxy(橘色雲朵)嗎?
不行。Cloudflare Proxy 只處理 HTTP/HTTPS,開了會讓外部郵件送不到 Exchange Online。MX、Autodiscover、DKIM CNAME 都要維持灰雲。
信還是被 Gmail 丟進垃圾郵件,該先查什麼?
在 Gmail 開「顯示原始郵件」,看 SPF、DKIM、DMARC 哪一項不是 PASS。最常見的原因是有兩筆 SPF,或 DKIM 還沒在 Defender 啟用。
DMARC 可以直接設 p=reject 嗎?
不建議。沒先從報告確認所有合法寄信來源,事務機或網站表單的信可能會被直接拒收。先 p=none 觀察 2–4 週,再逐步收緊。
只有 Exchange Online Plan 1,資安夠吗?
對大多數小型環境來說,EOP + 預設安全性原則 + MFA 已經能擋掉絕大部分威脅。主要缺口是冒名防護與 Safe Links,有大額匯款流程的組織可評估 Business Premium。
結語
DNS 記錄設對讓信送得到,SPF、DKIM、DMARC 讓信被信任,EOP 與身分安全讓帳號被盜時損害可控。照著這篇做完並跑過驗收清單,就是一套不必加購就能上線的郵件環境。
微軟 Defender 介面更新頻繁,實作時請以官方文件與後台實際畫面為準。