郵件與網域
檢查 DMARC
涵蓋範圍: 適用於任何國家的網域。我們會像收件伺服器一樣尋找記錄:先找網域本身,如果沒有,再找它的上層網域(最多五層)。報告的收件地址只會顯示其網域。
開啟工具本頁內容
用途
檢查網域的 DMARC 記錄:它的政策(none、quarantine 或 reject)、是否來自上層網域、適用的郵件比例、對齊方式,以及報告寄往何處。
使用要求
任何 NoCall 帳號都可以閱讀這些指南。部分工具需要 Pro,各指南會註明。
DMARC 會告訴收件伺服器,該如何處理自稱來自某個網域、卻未通過其驗證的郵件:照常投遞、送進垃圾郵件,或直接拒收。輸入網域、電子郵件地址或連結,我們會顯示它的 DMARC 政策及其意義。
使用步驟
輸入你要檢查的網域,或貼上電子郵件地址或連結:我們只會使用其中的網域。
按下「檢查 DMARC」。我們會像收件伺服器一樣,在 _dmarc 尋找它的記錄;如果沒有,再到它的上層網域尋找。
看看政策:對 100% 的郵件套用「reject」或「quarantine」,才能保護網域;「none」只是監看。
虛構範例
此範例為虛構內容,並非真實查詢。請勿撥打電話或開啟其中的連結。
v=DMARC1; p=reject; rua=mailto:[email protected]理解結果
這個網域沒有 DMARC: 它沒有要求收件端攔下假冒它的郵件,因此更容易被冒充。
DMARC 記錄有錯誤: 收件端可能會忽略它,讓這個網域如同沒有 DMARC。下方的訊號會說明問題所在。
DMARC 只是監看: 政策是「none」:網域會收到報告,但以它的名義寄出的假郵件仍會被投遞。
DMARC 只保護部分郵件: 政策只套用在部分未通過驗證的郵件上;其餘郵件會像沒有政策一樣照常投遞。
假郵件會被送進垃圾郵件: 政策是「quarantine」:收件端會把未通過驗證的郵件送進垃圾郵件匣。
假郵件會被拒收: 政策是「reject」:收件端會拒收假冒這個網域的郵件。這是最強的保護。
none:僅監看
quarantine:送進垃圾郵件
reject:拒絕投遞
限制
我們讀取的是該網域的公開 DNS 記錄。如果你輸入電子郵件地址或連結,只有其中的網域會離開你的瀏覽器。你查詢的網域不會被儲存。
疑難排解
這看起來不像公開的網域。請試試類似 example.com 的網域。
DNS 沒有及時回應。請過幾秒再試。
你連續做了很多次檢查。請等一分鐘後再試。
透過 API 使用
需要 API 金鑰和點數。每次完成的呼叫扣 1 點,即使沒有資料也一樣。有效的 Pro 帳戶每個 UTC 曆月包含 20 點,由所有 API 路由共用並優先扣用;當月未使用的點數不會累積到下個月。在帳戶頁面購買的點數不需 Pro 即可使用,且永不過期。
錯誤一律不扣點:401 invalid_api_key(缺少金鑰或金鑰無效)、403 pro_required(沒有 Pro 點數,也沒有購買的點數)、422 輸入無效、429 quota_exceeded(點數用完)、rate_limit_exceeded 或 ai_busy(sms-check 的 AI 已達負載上限)、503 tool_warming(資料仍在準備中)或 tool 或供應商無法使用。收到 429 或 503 後,請等 Retry-After 標頭中的秒數過後再重試。
網域的 DMARC 政策(RFC 7489,並依 DMARCbis 逐層向上查找上層網域):記錄、找到記錄的位置、實際生效的政策(none、quarantine 或 reject)、百分比、DKIM 和 SPF 的對齊方式,以及接收報告的網域,絕不傳回完整地址。不儲存任何內容。
將 JSON 主體傳送到該 tool 專屬的路由,或加上 tool 欄位後傳送到 POST /v2/tools。兩種路由回傳的結果相同。
POST https://api.nocall.io/v2/dmarc-check
POST https://api.nocall.io/v2/tools {"tool":"dmarc-check","domain":"example.com"}參數
| 名稱 | 類型 | 必填 | 說明 |
|---|---|---|---|
| domain | string (1–320) | 是 | 網域,或會從中取出網域的電子郵件地址或連結,最多 320 個字元。僅限公開名稱:IP 位址、單一標籤名稱和特殊用途名稱(.local、.internal、.test…)會傳回 422。 |
REQUEST_ID="$(uuidgen)" && [ -n "$REQUEST_ID" ] &&
curl --request POST 'https://api.nocall.io/v2/dmarc-check' \
--header "Authorization: Bearer $NOCALL_API_KEY" \
--header 'Content-Type: application/json' \
--header "Idempotency-Key: $REQUEST_ID" \
--data '{"domain":"example.com"}'import json
import os
import urllib.request
import uuid
api_key = os.environ.get('NOCALL_API_KEY')
if not api_key:
raise SystemExit('Set NOCALL_API_KEY')
request = urllib.request.Request(
'https://api.nocall.io/v2/dmarc-check',
method='POST',
data=json.dumps({'domain': 'example.com'}).encode(),
headers={
'Authorization': 'Bearer ' + api_key,
'Content-Type': 'application/json',
'Idempotency-Key': str(uuid.uuid4()),
},
)
with urllib.request.urlopen(request, timeout=30) as response:
result = json.load(response)
print(result['data']['result'], result['meta']['unitsCharged'])import { randomUUID } from 'node:crypto';
const requestId = randomUUID();
const apiKey = process.env.NOCALL_API_KEY;
if (!apiKey) throw new Error('Set NOCALL_API_KEY');
const response = await fetch('https://api.nocall.io/v2/dmarc-check', {
method: 'POST',
headers: {
Authorization: 'Bearer ' + apiKey,
'Content-Type': 'application/json',
'Idempotency-Key': requestId,
},
body: JSON.stringify({ domain: 'example.com' }),
});
const result = await response.json();
if (!response.ok) throw new Error(result.error?.code ?? 'request_failed');
console.log(result.data.result, result.meta.unitsCharged);回應範例(200)
這是 API 參考文件中的範例。查詢使用虛構號碼,彙總資料和 AI 回答只呈現結果的結構,並非即時資料。
{
"data": {
"tool": "dmarc-check",
"result": {
"domain": "example.com",
"domainAscii": "example.com",
"found": true,
"record": "v=DMARC1; p=none; rua=mailto:[email protected]",
"foundAt": "example.com",
"inherited": false,
"policy": "none",
"subdomainPolicy": null,
"effectivePolicy": "none",
"percentage": 100,
"alignment": {
"dkim": "relaxed",
"spf": "relaxed"
},
"reports": {
"aggregate": [
"example.com"
],
"failure": []
},
"signals": [
"policy_none"
],
"valid": true,
"attention": true
}
},
"meta": {
"requestId": "req_example",
"unitsCharged": 1,
"usage": {
"periodStart": "2026-10-01",
"unitLimit": 20,
"unitsUsed": 3,
"unitsRemaining": 17
}
}
}結果欄位(data.result)
| 欄位 | 類型 | 說明 |
|---|---|---|
| domain | string | Unicode 形式的網域。 |
| domainAscii | string | 同一個網域的 ASCII 形式(punycode),即 DNS 所見的形式。 |
| found | boolean | 是否有 DMARC 記錄適用於該網域(它自己的或上層網域的)。 |
| record | string | null | DMARC 記錄;沒有或不只一筆時為 null。 |
| foundAt | string | null | 所套用之 _dmarc 記錄所屬的網域(本網域或上層網域),以 Unicode 表示。 |
| inherited | boolean | 記錄是否屬於上層網域(DMARCbis 樹狀查找)。 |
| policy | "none" | "quarantine" | "reject" | null | p= 標籤:none、quarantine 或 reject。 |
| subdomainPolicy | "none" | "quarantine" | "reject" | null | sp= 標籤,或 null。 |
| effectivePolicy | "none" | "quarantine" | "reject" | null | 實際套用於本網域的政策:p;記錄為繼承而來時則為 sp。 |
| percentage | integer (0–100) | pct:政策所套用之未通過郵件的比例;未設定時為 100。 |
| alignment | object | DKIM 和 SPF 的對齊方式(adkim 和 aspf):relaxed 或 strict。 |
| reports | object | 接收彙總報告(rua)和失敗報告(ruf)的網域;絕不傳回完整地址。 |
| signals | array<"no_dmarc" | "multiple_records" | "syntax_error" | "policy_none" | "partial_percentage" | "no_aggregate_reports" | "inherited" | "weaker_subdomain_policy"> | no_dmarc、multiple_records、syntax_error、policy_none、partial_percentage、no_aggregate_reports、inherited 或 weaker_subdomain_policy。 |
| valid | boolean | 記錄是否能解析且設有政策。 |
| attention | boolean | 結果是否值得進一步查看:沒有 DMARC、記錄無效、政策為 none,或百分比低於 100。 |
常見問題
什麼是 DMARC?
Domain-based Message Authentication, Reporting and Conformance:一種 DNS 記錄,告訴收件端如何處理在「寄件者」中使用某個網域、但 SPF 和 DKIM 都未通過的郵件。它也會要求寄送報告,讓擁有者看到誰以這個網域的名義寄信。
none、quarantine 和 reject 是什麼意思?
「none」只監看:郵件照常投遞,擁有者會收到報告。「quarantine」會把未通過驗證的郵件送進垃圾郵件。「reject」則直接拒收。網域通常先從「none」開始,閱讀報告後再逐步提高到「reject」。
網域有 DMARC,就代表它的郵件都是真的嗎?
不是。DMARC 讓人很難在「寄件者」中使用那個一模一樣的網域,但詐騙者可以註冊一個相似的網域,並設定它自己的 DMARC。請逐字檢查寄件者的網域,或把郵件標頭貼到「這封郵件是真的嗎?」。
為什麼顯示記錄是繼承來的?
沒有自己記錄的子網域(mail.example.com)會使用上層網域(example.com)的記錄;如果該記錄設有子網域政策(sp),則套用該政策。
