郵件與網域
檢查 DKIM
涵蓋範圍: 適用於任何國家的網域。沒有選取器時,我們會試試各大供應商的預設選取器(Google、Microsoft 365、Zoho、Proton、Fastmail、Mailchimp 等)和常見的通用名稱,共 33 個。我們會像收件伺服器一樣讀取金鑰(RFC 6376):支援 RSA 和 Ed25519。
開啟工具本頁內容
用途
檢查網域的 DKIM 金鑰:輸入選取器,或讓我們試試最常見的選取器,並查看每把金鑰的類型、位元長度,以及是否處於測試中或已停用。
使用要求
任何 NoCall 帳號都可以閱讀這些指南。部分工具需要 Pro,各指南會註明。
DKIM 讓網域能用發布在 DNS 中的金鑰簽署郵件,收件端便能確認郵件確實來自該網域,且未遭竄改。每把金鑰都位於一個稱為「選取器」的名稱之下。請輸入網域;如果知道選取器,也一併輸入。沒有選取器時,我們會試試 33 個常見的選取器。
使用步驟
打開該網域寄出的郵件,顯示原始郵件或郵件標頭(在 Gmail 中:點選三個點圖示,再選「顯示原始郵件」)。
找到「DKIM-Signature」標頭:「d=」是網域,「s=」是選取器,例如 s=selector1。
輸入網域和選取器,然後按下「檢查 DKIM」。沒有選取器時,我們會試試 33 個常見的選取器,例如 default、google、selector1 或 k1。
虛構範例
此範例為虛構內容,並非真實查詢。請勿撥打電話或開啟其中的連結。
selector1._domainkey.example.com理解結果
這個網域使用 DKIM 簽署郵件: 我們找到了它的公開金鑰:收件端可以確認它的郵件來自這個網域,且在傳送途中未遭竄改。
有 DKIM 金鑰,但有警告: 我們找到至少一把金鑰,但有些已停用、處於測試中或強度太弱。詳細資訊列在每把金鑰下方。
常見的選取器中沒有 DKIM 金鑰: 這不代表該網域沒有 DKIM:它可能使用其他選取器。你可以在它寄給你的郵件中,從「DKIM-Signature: s=」標頭找到選取器。請在「選取器」中輸入,再檢查一次。
這個選取器沒有 DKIM 金鑰: 請檢查拼寫:選取器是「DKIM-Signature」標頭的「s=」值,網域則是它的「d=」值。
金鑰是空白的(p=):這個選取器已停用,不再用來簽署郵件。
金鑰處於測試模式(t=y):網域要求收件端在簽章驗證失敗時不要採取行動。
RSA 金鑰短於 1024 位元:可能被破解,許多收件端也不接受。
RSA 金鑰為 1024 位元:仍可接受,但建議使用 2048 位元。
金鑰只允許 SHA-1,這種舊演算法已不再被視為安全。
金鑰記錄有錯誤,無法讀取。
金鑰類型不是 RSA 或 Ed25519,因此收件端無法使用。
限制
這不代表該網域沒有 DKIM:它可能使用其他選取器。你可以在它寄給你的郵件中,從「DKIM-Signature: s=」標頭找到選取器。請在「選取器」中輸入,再檢查一次。
我們讀取的是該網域的公開 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 標頭中的秒數過後再重試。
網域在某個選取器下的 DKIM 金鑰;未提供選取器時,則查詢約 33 個常見選取器:每把金鑰的類型(rsa 或 ed25519)、位元長度,以及是否處於測試中或已撤銷。none_found 不能證明網域沒有 DKIM:它可能使用其他選取器。不儲存任何內容。
將 JSON 主體傳送到該 tool 專屬的路由,或加上 tool 欄位後傳送到 POST /v2/tools。兩種路由回傳的結果相同。
POST https://api.nocall.io/v2/dkim-check
POST https://api.nocall.io/v2/tools {"tool":"dkim-check","domain":"example.com","selector":"s1"}參數
| 名稱 | 類型 | 必填 | 說明 |
|---|---|---|---|
| domain | string (1–320) | 是 | 網域,或會從中取出網域的電子郵件地址或連結,最多 320 個字元。僅限公開名稱:IP 位址、單一標籤名稱和特殊用途名稱(.local、.internal、.test…)會傳回 422。 |
| selector | string (1–120) | 否 | 選取器:DKIM-Signature 標頭中的 s= 標籤,最多 120 個字元。未提供時,會嘗試約 33 個常見選取器。 |
REQUEST_ID="$(uuidgen)" && [ -n "$REQUEST_ID" ] &&
curl --request POST 'https://api.nocall.io/v2/dkim-check' \
--header "Authorization: Bearer $NOCALL_API_KEY" \
--header 'Content-Type: application/json' \
--header "Idempotency-Key: $REQUEST_ID" \
--data '{"domain":"example.com","selector":"s1"}'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/dkim-check',
method='POST',
data=json.dumps({'domain': 'example.com', 'selector': 's1'}).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/dkim-check', {
method: 'POST',
headers: {
Authorization: 'Bearer ' + apiKey,
'Content-Type': 'application/json',
'Idempotency-Key': requestId,
},
body: JSON.stringify({ domain: 'example.com', selector: 's1' }),
});
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": "dkim-check",
"result": {
"domain": "example.com",
"domainAscii": "example.com",
"selectorGiven": true,
"selectorsTried": 1,
"keys": [
{
"selector": "s1",
"keyType": "rsa",
"keyBits": 2048,
"testing": false,
"revoked": false,
"valid": true,
"signals": []
}
],
"signals": [],
"attention": false
}
},
"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 所見的形式。 |
| selectorGiven | boolean | 是否提供了選取器;若未提供,則改為嘗試常見選取器。 |
| selectorsTried | integer | 查詢過的選取器數量。 |
| keys | array<object> | 每個發布金鑰的選取器:selector、keyType(rsa 或 ed25519)、keyBits(ed25519 為 256)、testing(t=y)、revoked(空白的 p=)、valid,以及它的訊號(revoked_key、testing_mode、weak_key、short_key、sha1_only、syntax_error 或 unknown_key_type)。 |
| signals | array<"none_found"> | none_found:在提供的選取器或任何常見選取器中都沒有金鑰(仍可能在使用其他選取器)。 |
| attention | boolean | 結果是否值得進一步查看:找不到金鑰,或有金鑰無效、已撤銷、處於測試中或強度太弱。 |
常見問題
什麼是 DKIM?
DomainKeys Identified Mail:寄件伺服器用私密金鑰簽署每封郵件,網域則在 DNS 中發布公開金鑰。收件伺服器會驗證簽章:如果相符,就表示郵件來自該網域,且在傳送途中未遭更改。
什麼是選取器?
金鑰發布時所用的名稱,位置在 selector._domainkey.example.com。一個網域可以有好幾個,例如每個供應商一個,或每次更換金鑰時各一個。它會以「s=」出現在每封郵件的「DKIM-Signature」標頭中。
網域明明使用 DKIM,為什麼找不到金鑰?
選取器可以取任何名稱,而 DNS 無法列出它們。我們會試試 33 個常見的選取器;如果網域使用其他選取器,請在「選取器」中輸入。所以「找不到」並不能證明沒有 DKIM。
1024 和 2048 位元是什麼意思?
這是 RSA 金鑰的長度:越長就越難破解。1024 位元仍可接受,但建議使用 2048 位元。低於 1024 位元時,許多收件端會忽略簽章。
