{
"domain": "github.com",
"cached": false,
"checkedAt": "2026-10-21T14:09:42.267Z",
"grade": "D",
"score": 68,
"summary": {
"errors": 0,
"warnings": 3,
"infos": 2
},
"spf": {
"record": "v=spf1 ip4:192.30.252.0/22 include:spf.protection.outlook.com include:_netblocks.google.com include:_netblocks2.google.com include:mail.zendesk.com include:_spf.salesforce.com include:servers.mcsv.net include:mktomail.com include:sendgrid.net ip4:62.253.227.114 ip4:166.78.69.169 ip4:166.78.69.170 ip4:166.78.71.131 ~all",
"qualifierAll": "~",
"mechanisms": 14,
"dnsLookups": 10,
"lookupLimit": 10,
"includes": [
"spf.protection.outlook.com",
"_netblocks.google.com",
"_netblocks2.google.com",
"mail.zendesk.com",
"_spf.salesforce.com",
"servers.mcsv.net",
"mktomail.com",
"sendgrid.net"
],
"redirect": null,
"resolvedTree": [
{
"domain": "spf.protection.outlook.com",
"via": "include",
"depth": 1
},
{
"domain": "_netblocks.google.com",
"via": "include",
"depth": 1
},
{
"domain": "_netblocks2.google.com",
"via": "include",
"depth": 1
},
{
"domain": "mail.zendesk.com",
"via": "include",
"depth": 1
},
{
"domain": "_spf.salesforce.com",
"via": "include",
"depth": 1
},
{
"domain": "servers.mcsv.net",
"via": "include",
"depth": 1
},
{
"domain": "mktomail.com",
"via": "include",
"depth": 1
},
{
"domain": "sendgrid.net",
"via": "include",
"depth": 1
},
{
"domain": "ab.sendgrid.net",
"via": "include",
"depth": 2
}
]
},
"dmarc": {
"record": "v=DMARC1; p=quarantine; sp=reject; pct=100; rua=mailto:[email protected]; ruf=mailto:[email protected]; fo=1",
"policy": "quarantine",
"subdomainPolicy": "reject",
"effectivePolicyForQueriedDomain": "quarantine",
"pct": 100,
"rua": [
"mailto:[email protected]"
],
"alignment": {
"dkim": "r",
"spf": "r"
},
"inheritedFrom": null
},
"dkim": {
"selectorsChecked": [
"google",
"selector1",
"selector2",
"k1",
"k2",
"default",
"s1",
"s2",
"mail",
"dkim"
],
"selectorsProvided": false,
"keys": [
{
"selector": "google",
"found": true,
"record": "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAj6T5sl/RwdSqGoYWaWaFbS2UAeyPrEmd0gogocmRfS441qwR8/0KB81Hw89P0l4YiFRrXYk7NVIGfyCRHAYYZUzCkGeOysI2EjgzLFhd/NEsbRzOEc/kWkK/RO6JFq/5lOn6M9AZw/ap9tds4JG9ApgNNdSpPxp9DmvpsOSgNMVflRxQFrk3kdS4RNAPKu/OPoA7dlR/A/pECryjRoYgENtDXzdnK70HgCekems6UDzxDj61cjyoKoXtEMF/QsaHEQ1Gjfv014rDJBsubk/kT5VqHkWHa/ia68Z5r228Ety/wFfQNjXTx/J7KGZ9GkZlKED659eiJcLnWcKDSi…",
"keyType": "rsa",
"keyBits": 2048,
"revoked": false,
"testing": false
},
{
"selector": "selector1",
"found": true,
"record": "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCxZC/z2cK+2s1f/ktzSDSeFzkfIHrjwtGFsfKMAYvKaXjPVNzKykpbXBkX5nB7dVUTFttda7aROr2iSrIseQ27Ui+4rUZVzgFanE8RaXhYM9n5wPKNv8GtLJk7JgcsYZ7ErgID4uW2sEYyV/dnRYw6rDzOaeRKkKELTUfJI5ebLQIDAQAB;",
"keyType": "rsa",
"keyBits": 1024,
"revoked": false,
"testing": false
},
{
"selector": "k1",
"found": true,
"record": "k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDbNrX2cY/GUKIFx2G/1I00ftdAj713WP9AQ1xir85i89sA2guU0ta4UX1Xzm06XIU6iBP41VwmPwBGRNofhBVR+e6WHUoNyIR4Bn84LVcfZE20rmDeXQblIupNWBqLXM1Q+VieI/eZu/7k9/vOkLSaQQdml4Cv8lb3PcnluMVIhQIDAQAB;",
"keyType": "rsa",
"keyBits": 1024,
"revoked": false,
"testing": false
},
{
"selector": "k2",
"found": true,
"record": "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAv2aC2KjGKLOwTweBY5A9RpjsxaBXR9r7OAU6U8/zn92ivImI75naUujWbItRI/QmL1jy5PWGqLwoUA0b90ObWaLDc+i9MtTNmGeWO009hr20fIxhGg6XBT2kjZ1DTThopSe1nAndsupmcBwlQ5Q6LJ+ZAxLcujnPIxM0ZBLmgpkv8u6RfY4eFP8OLvdAW3oSuB0DyLDigQX4Sj8wBO4YIdQH6AAmBeOsidsKAFNFUCpc3vCxtBDR12U+cBg724l3sBkMQ8evnz6idnqxq9QAVYh8k4kJ+RP+6cqTdy7LjIm8xY/bQNpQIpGUAuDo2DjLcCDun9DAI4Q/3z+Q0o…",
"keyType": "rsa",
"keyBits": 2048,
"revoked": false,
"testing": false
},
{
"selector": "s1",
"found": true,
"record": "k=rsa; t=s; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyn3fMCVpb7ryIRKOGXhXVGYmsWUitNlSckqGHOwNFZgFadplOrD+Qzf1XQkP7MH/VB/97DsAAJGtEXW1Uq71Hjnfr/DuBN/YfjF/gU70qEFb7q1sdIiNtjFL2TkOpoW+X/bhhPNheW/fYwyFb6ZHFM6LTgXyuimWRHTOUP3VjZzhNVda79nt+2WZYbS4l8HdMgWpTNHjpVw5PtXESA9KBg/evSRk5fIaXIX5eRXW3baoV9yVzD8O29/IL/DiSk+yNvaO0EHL5c4yGuZJhGzvpiznb2IDVdemJK4Dqzdy5FTN/SGYZhAEr7MguG3Z314hMS2scgMsOMgB64uj/6+6Uw…",
"keyType": "rsa",
"keyBits": 2048,
"revoked": false,
"testing": false
},
{
"selector": "s2",
"found": true,
"record": "k=rsa; t=s; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnNt2/H6bKs99C6DAaokPp62KN9mKaD20D1PBakkObejkJvzM6Un/fKHPeI2/qXdvFFBPQE3mxMNoe+hwBVDgMgCuZEn8J6gZYI4amITure9/ny6+GaNVRoH2m6xAtWwKINkKxMayGiehkWlRVb7D23F0U8y+VDHKQFz1bnXA5jDpcDiMXy8i2lV5vEys+qt+1WGhDKCAwamT8c3xkZz8aXMJaXYCiN2HMgHDU81+mVCk4+u6mY+a98APVfFhsQ0KCq/mVZXaXTV06QrG9M5PtBHUFW7VtwXKp+AFrAut0KW1NnwaA5IGA5sc+n9dma7bSqdfGS+ixdSmJ69NwmYSHw…",
"keyType": "rsa",
"keyBits": 2048,
"revoked": false,
"testing": false
}
]
},
"mx": {
"records": [
{
"priority": 0,
"host": "github-com.mail.protection.outlook.com"
}
],
"nullMx": false,
"hasMail": true
},
"mtaSts": null,
"tlsRpt": null,
"bimi": null,
"issues": [
{
"severity": "warning",
"code": "spf_lookups_near_limit",
"message": "The SPF evaluation uses 10 of the 10 allowed DNS-querying terms; adding another include may break SPF."
},
{
"severity": "warning",
"code": "dkim_key_1024",
"message": "selector1._domainkey: the RSA key is 1024 bits; 2048 bits is the current recommendation."
},
{
"severity": "warning",
"code": "dkim_key_1024",
"message": "k1._domainkey: the RSA key is 1024 bits; 2048 bits is the current recommendation."
},
{
"severity": "info",
"code": "mta_sts_missing",
"message": "No MTA-STS record (_mta-sts TXT). MTA-STS lets receiving domains require TLS for inbound mail; it matters mainly for domains that receive mail."
},
{
"severity": "info",
"code": "tls_rpt_missing",
"message": "No TLS-RPT record (_smtp._tls TXT), so no reports about failed encrypted deliveries are received."
}
],
"note": "Reads public DNS records through DNS-over-HTTPS and judges the published records against RFC 7208 (SPF), RFC 7489 (DMARC), RFC 6376 (DKIM), RFC 8461 (MTA-STS), RFC 8460 (TLS-RPT) and the BIMI draft. The grade is a heuristic score of those records, not proof that mail authenticates. It does not send mail, verify message signatures, test deliverability, fetch the MTA-STS policy file or expand a/mx/exists targets in SPF. Without selector= only common DKIM selectors are tried. The DMARC organizational domain is approximated."
}
curl --location --request GET 'https://zylalabs.com/api/14333/email+authentication+check+api/35927/check+a+domain+spf+dmarc+dkim+and+bimi+records?domain=github.com' --header 'Authorization: Bearer YOUR_API_KEY'
{
"grade": "A",
"score": 90,
"summary": {
"errors": 0,
"warnings": 1,
"infos": 0
},
"spf": {
"record": "v=spf1 include:_spf.google.com ~all",
"qualifierAll": "~",
"mechanisms": 2,
"dnsLookups": 1,
"lookupLimit": 10,
"includes": [
"_spf.google.com"
],
"redirect": null
},
"dmarc": {
"record": "v=DMARC1; p=none; rua=mailto:[email protected]",
"policy": "none",
"subdomainPolicy": null,
"effectivePolicyForQueriedDomain": "none",
"pct": 100,
"rua": [
"mailto:[email protected]"
],
"alignment": {
"dkim": "r",
"spf": "r"
},
"inheritedFrom": null
},
"issues": [
{
"severity": "warning",
"code": "dmarc_policy_none",
"message": "p=none is monitoring only; spoofed mail is still delivered. Move to quarantine or reject once reports look clean."
}
],
"assumptions": {
"note": "Validated offline: no DNS queries were made, so include chains are not followed and the SPF lookup count only covers terms in the text you sent."
},
"checkedAt": "2026-10-21T14:09:46.208Z"
}
curl --location --request POST 'https://zylalabs.com/api/14333/email+authentication+check+api/35928/validate+spf+dmarc+and+dkim+record+text+you+send+in' --header 'Authorization: Bearer YOUR_API_KEY'
--data-raw '{"spf":"v=spf1 include:_spf.google.com ~all","dmarc":"v=DMARC1; p=none; rua=mailto:[email protected]"}'
注册后,每个开发者都会被分配一个个人 API 访问密钥,这是一个唯一的字母和数字组合,用于访问我们的 API 端点。要使用 邮件认证检查 API 进行身份验证,只需在 Authorization 标头中包含您的 bearer token。
| 标头 | 描述 |
|---|---|
授权
|
必需
应为 Bearer access_key. 订阅后,请查看上方的"您的 API 访问密钥"。
|
域名的SPF、DMARC和DKIM记录, plus MTA-STS、TLS-RPT、BIMI和MX存在。它返回解析的记录、编码的问题、一个等级和一个分数
它仅读取公共DNS记录 不发送测试电子邮件 不获取MTA-STS策略文件 也无法证明DKIM密钥不存在 因为选择器可能只是未知
传递一个或多个用逗号分隔的名称,最多5个,如google或selector1,selector2。如果没有提供,会尝试一个常见选择器的短列表
它检查您在请求正文中发送的SPF DMARC或DKIM记录文本 它是离线的 不进行DNS查询 并且对您尚未发布的记录很有用
是的 结果缓存15分钟 添加新参数集为1以绕过缓存 例如在您更改DNS记录后立即使用