Email Spam Tester

Spamellenőrző API: e-mail,
bejövő levelek és domain

Küldjön nekünk egy valódi üzenetet, vagy adjon meg csak egy domaint. Minden válasz JSON formátumú.

Nincs kulcs, nincs fiók.

Kérés

# reserve a single-use address

$ curl -sX POST '.../api/v1/inbox?lang=en'

# send your message to that address, then

$ curl -s '.../api/v1/tests/k7m2x9qplw4tz8vn3b6c/status'

# read the report

$ curl -s '.../api/v1/tests/k7m2x9qplw4tz8vn3b6c'

Válasz

200 OK

{
  "address": "test-k7m2x9qplw4tz8vn3b6c@t.email-spam-tester.com",
  "slug": "k7m2x9qplw4tz8vn3b6c",
  "expires_at": "2026-10-31T13:00:00Z"
}

200 OK

{
  "analysis_status": "checks_ready",
  "ai_status": "running",
  "checks_done": 42,
  "checks_total": 42
}

200 OK

{
  "score_ours": 86.4,
  "score_compat": 9.2,
  "subscores": {"auth": 100.0, "infra_spam": 78.1, "content": 92.0},
  "complete": true,
  "checks": [{"id": "auth.dmarc", "status": "warn"}],
  "fixes": [{"id": "dmarc-enforce", "gain_ours": 4.0}]
}

Kérés

# create a test

$ curl -sX POST '.../api/v1/placement' \ -d '{"public_results_accepted":true}'

# put the marker in the subject, send once to all, then

$ curl -s '.../api/v1/placement/wR3kP9xLq2vT8mZc'

Válasz

201 Created

{
  "marker": "est-3f9a1c7e2b4d6a80c5e1f2d3",
  "status": "waiting",
  "results": [{"provider": "gmail", "placement": "pending"}],
  "fleet": {"status": "observing", "results": [
    {"provider": "yahoo", "placement": "pending"},
    {"provider": "outlook", "placement": "pending"}
  ]}
}

200 OK

{
  "status": "complete",
  "results": [{"provider": "gmail", "placement": "primary"}],
  "fleet": {"status": "finished", "results": [
    {"provider": "yahoo", "placement": "inbox"},
    {"provider": "outlook", "placement": "spam"}
  ]}
}

Kérés

# no email needed, one GET

$ curl -s '.../api/v1/infra/check?domain=example.com'

# compare with your last run

$ curl -s '.../api/v1/infra/check?domain=example.com&diff=true' \ | jq '.diff'

Válasz

200 OK

{
  "domain": "example.com",
  "ok": false,
  "status": "fail",
  "score": 78,
  "coverage": {"answered": 7, "total": 8},
  "sections": {"ptr": {"status": "fail", "core": true}}
}

200 OK

{
  "changed": true,
  "worsened": true,
  "status_from": "pass",
  "score_from": 100,
  "changes": [{"path": "dkim.key.mail.sha256", "kind": "removed",
               "severity": "critical", "effect": "worsened"}]
}
Ezen az oldalon

E-mail-teszt

Egy valódi üzenetet teljes egészében átvizsgálunk: a tartalmát, az aláírását, a fejléceit és az azt küldő szervert. Ön kap egy pontszámot, a javítások listáját és az ezek alapjául szolgáló összes ellenőrzést.

Gyors kezdés

Három hívás. Nincs kulcs, fiók vagy regisztráció. Két kérés és egy e-mail. A harmadik hívásra csak azért van szükség, mert az elemzés néhány másodpercig tart.

  1. Foglaljon le egy címet

    Küldjön POST-kérést a beérkező levelek végpontjára. Válaszként kap egy címet, amely pontosan egy üzenetet fogad, és egy óra múlva lejár, valamint azt a slugot, amely minden további művelet kulcsa.

    Kérés

    # 1. reserve a single-use address
    curl -sX POST 'https://email-spam-tester.com/api/v1/inbox?lang=en'

    Válasz

    {
      "address": "test-<slug>@t.email-spam-tester.com",
      "slug": "<slug>",
      "expires_at": "2026-01-01T12:00:00Z"
    }
  2. Küldje el rá a tényleges üzenetet

    SMTP-n keresztül, arról a platformról, amely a kampányt küldeni fogja. Az ellenőrzések fele a küldőplatform által hozzáadott fejléceket olvassa, ezért egy kézzel összeállított üzenet nem a megfelelő dolgot méri.

    Kérés

    # 2. send your message to that address, from your own platform
    To: test-<slug>@t.email-spam-tester.com
  3. Kérdezze le az állapotot, majd olvassa el a jelentést

    Az állapotvégpont néhány száz bájtos, és megmondja, hogy érdemes-e már lekérni a teljes jelentést. Maga a jelentés több ezer soros.

    Kérés

    # 3. poll
    curl -s 'https://email-spam-tester.com/api/v1/tests/<slug>/status'

    Válasz

    {
      "slug": "<slug>",
      "analysis_status": "checks_ready",
      "ai_status": "running",
      "checks_done": 42,
      "checks_total": 42
    }

    Kérés

    # 4. read the report once analysis_status is checks_ready
    curl -s 'https://email-spam-tester.com/api/v1/tests/<slug>'

    Válasz

    {
      "report_url": "https://email-spam-tester.com/t/<slug>",
      "score_ours": 86.4,
      "score_compat": 9.2,
      "subscores": {"auth": 100.0, "infra_spam": 78.1, "content": 92.0, "compliance": 75.0},
      "complete": true,
      "checks": [
        {
          "id": "auth.dmarc",
          "status": "warn",
          "title": "DMARC result",
          "summary": "DMARC passes, but the policy is p=none.",
          "weight_ours": -4.0,
          "evidence": {"policy": "none", "aligned": "dkim"},
          "citations": {"standards": [{"title": "RFC 9989 §4.7", "quote": "..."}]}
        }
      ],
      "fixes": [
        {"id": "dmarc-enforce", "gain_ours": 4.0, "gain_compat": 0.0,
         "fix": {"title": "Move DMARC to quarantine", "severity": "medium"}}
      ]
    }

Foglaljon le egy címet, küldje el az üzenetet, amelyet éppen el akart küldeni a listájának, majd olvassa el a jelentést. Minden, ami az oldalon látható, megtalálható a JSON-ban, beleértve a pontszámot, mind a 42 ellenőrzést a bizonyítékaikkal együtt, valamint a szabvány azon szakaszát, amelyen az egyes megállapítások alapulnak.

Az első 100 000 jelentés ingyenes, kulcs és fiók nélkül. Ha szkript helyett ügynököt kapcsol be, az MCP-kiszolgáló jobb választás, mint a lekérdezéses ellenőrzés.

Végpontok

Alapcím: https://email-spam-tester.com. Minden válasz JSON.

POST/api/v1/inbox

Lefoglal egy egyszer használatos címet. Mindkét paraméter opcionális.

langAz a nyelv, amelyen a javítási terv és az ellenőrzésenkénti megállapítások készülnek, ISO-kódként megadva. Ezt most kell eldönteni, mert az üzenet percekkel később érkezik meg SMTP-n keresztül, és nem tartalmaz utalást arra, hogy ki vár rá. Ismeretlen kód esetén az alapértelmezett nyelv az angol.
utm_source, utm_medium, utm_campaignTovábbítjuk az analitikai rendszerünknek. Hasznos, ha a saját integrációját méri.

GET/api/v1/tests/{slug}/status

Kis költséggel lekérdezhető. Visszaadja a két állapotmezőt és azt, hogy meddig jutottak az ellenőrzések, mást nem.

Ezt kérdezze le a jelentés helyett. Az analysis_status először a checks_ready értéket éri el, az AI-terv pedig körülbelül egy perccel később jelenik meg az ai_status alatt, így annak a hívónak, amely csak a determinisztikus ellenőrzéseket kéri, nem kell megvárnia a tervet.

GET/api/v1/tests/{slug}

A teljes jelentés. 202-es választ ad, amíg a cím le van foglalva, de még nem érkezett semmi, és 200-as választ, amint megérkezett.

GET/api/v1/tests/{slug}/message

Az üzenet pontosan úgy, ahogy kézbesítették: minden fejléc átviteli sorrendben, mindkét törzs, a mellékletek listája és a nyers forrás. Külön kérhető le, mert a jelentést rendszeresen lekérdezik, ez pedig akár egy megabájt méretű is lehet.

A nyers üzenet a saját ütemezése szerint törlődik, hamarabb, mint a jelentés. Ezután ez a végpont a forrás helyett az okkal válaszol.

PUT/api/v1/tests/{slug}/locale

Módosítja egy még fel nem használt foglalás nyelvét. Olyan ügynök számára, amely azután tudja meg, hogy a felhasználója milyen nyelven olvas, hogy már bekérte a címet. Az üzenet megérkezése után a kérés elutasításra kerül, mert addigra már fut az elemzés.

Beérkezési helyBéta

Küldjön egy üzenetet tesztpostafiókok listájára, és nézze meg, hová került a Gmail, az Outlook, a Yahoo és más szolgáltatók esetében: Beérkezett üzenetek, Promóciók vagy Spam.

Gyors kezdés

  1. Teszt létrehozása

    Küldjön POST kérést az elhelyezési végpontra. Válaszként kap egy jelölőt és a tesztpostafiókokat.

    Kérés

    # 1. create a test
    curl -sX POST 'https://email-spam-tester.com/api/v1/placement' \
      -H 'Content-Type: application/json' \
      -d '{"public_results_accepted":true}'

    Válasz

    {
      "slug": "<slug>",
      "marker": "est-3f9a1c7e2b4d6a80c5e1f2d3",
      "status": "waiting",
      "deadline": "2026-10-31T12:30:00Z",
      "poll_after_seconds": 60,
      "results": [
        {"address": "<seed>", "provider": "gmail", "kind": "Gmail",
         "placement": "pending", "observed_at": null}
      ],
      "fleet": {
        "status": "observing",
        "results": [
          {"address": "<mailbox>", "provider": "yahoo", "available": true,
           "placement": "pending", "coverage": "pending"}
        ]
      }
    }
  2. Egy üzenet küldése minden postafiókba

    Tegye a jelölőt a tárgyba, és küldje el a megszokott platformjáról egyszerre az összes címre.

    Kérés

    # 2. one message to every address, with the marker in the subject
    Subject: October invoice est-3f9a1c7e2b4d6a80c5e1f2d3
    To: <seed>, <mailbox>, ...
  3. Mappák lekérdezése

    Minden címnél megjelenik a szolgáltató és a mappa. Kérdezze le addig, amíg az állapot már nem waiting.

    Kérés

    # 3. poll for the folders
    curl -s 'https://email-spam-tester.com/api/v1/placement/<slug>'

    Válasz

    {
      "status": "complete",
      "received": 2,
      "total": 2,
      "results": [
        {"address": "<seed>", "provider": "gmail", "kind": "Gmail",
         "placement": "primary", "observed_at": "2026-10-31T12:04:11Z"},
        {"address": "<seed>", "provider": "gmail", "kind": "Google Workspace",
         "placement": "promotions", "observed_at": "2026-10-31T12:04:11Z"}
      ],
      "fleet": {
        "status": "finished",
        "results": [
          {"address": "<mailbox>", "provider": "yahoo", "available": true,
           "placement": "inbox", "coverage": "ok"},
          {"address": "<mailbox>", "provider": "outlook", "available": true,
           "placement": "spam", "coverage": "ok"}
        ]
      }
    }

Végpontok

An optional test using public GMass seed inboxes and available project test mailboxes, alone or alongside the email score. Explain to the sender that GMass receives their email and publishes its subject, sender name and placement before creating a test. Use all test mailboxes for non-confidential test messages only.

GET /api/v1/placement/availability

Returns providers: the provider identifiers of currently healthy, admitted project mailboxes. No addresses or credentials are exposed. This read does not create a test or contact GMass. Actual recipients are allocated at creation and may differ as availability or capacity changes.

POST /api/v1/placement

Send JSON {"public_results_accepted":true}. Returns HTTP 201 with slug, marker, results (the seed addresses), deadline and expires_at. Limit: 20 tests per IP per UTC day.

For one-send combined testing, first reserve an email score address and include its score_slug in the placement creation JSON. Repeated creation for that score returns the same placement test. Send the marked email to the score address, every returned seed and every available fleet.results address; keep the main /t/<score_slug> report link. Creating a link after the score address was used or expired returns HTTP 409.

GET /api/v1/placement/by-score/{score_slug}

Read and refresh the placement run attached to the main email test. The response has the same format and polling limits as the standalone endpoint below. HTTP 404 means placement was not included or its stored results have been removed.

GET /api/v1/placement/{slug}

Use poll_after_seconds (normally 60 seconds) while the page is open. Upstream errors trigger a shared cooldown. Add the marker to the subject and send through the sender's normal platform to every seed. Observations are saved for 30 days. Collection ends after 30 minutes or when all seeds have results.

status: waiting, complete or timed_out. Each result has an address, provider, kind, placement and observed_at. Placement is primary, promotions, inbox, updates, social, forums, spam, unknown, pending or not_observed. Missing results do not mean Spam; Promotions is an inbox category. provider_error indicates an upstream outage without discarding saved observations. HTTP 404 means unknown, 410 expired, 429 quota exhausted, and 503 no test inboxes available at creation.

The optional fleet object contains independently collected project mailbox results, with status observing, settling or finished. Refresh every 30 seconds until it finishes, even when Gmail has completed. Each fleet result includes address, provider, available, placement, category and coverage. Exclude unavailable addresses from new sends; retain their saved observations. Category data may be unavailable even when the physical folder is known.

If GMass is unavailable at creation but project mailboxes can be allocated, provider is fleet and the top-level seed results are empty. Use fleet.results; do not interpret an empty Gmail list as successful delivery. Existing runs never gain new recipient addresses silently.

Infrastruktúra-ellenőrzés

Egy GET kérés levélküldés nélkül ellenőrzi egy tartomány levelezési beállításait, megőrzi az eredményt, és jelzi, mi változott az Ön előző futtatása óta. Nincs szükség kulcsra. cron használatakor az alábbi sor nullától eltérő kilépési kóddal tér vissza, ha a tartomány hibás, vagy a beállítása lényeges módon megváltozott.

Gyors kezdés

  1. Végezzen egy GET-kérést

    Adja át a domaint. Az ip hozzáadja a küldési címeit, a selector pedig megadja a beolvasandó DKIM-szelektorokat.

    Kérés

    curl -s 'https://email-spam-tester.com/api/v1/infra/check?domain=example.com&selector=mail&diff=true'
  2. Olvassa ki az eredményt

    Az ok ad választ a szkriptnek, a sections pedig megmutatja, melyik rész nem felelt meg.

    Válasz

    {
      "id": "ir_01JB8Y4T2M6K9QZ7H3V5N1XWDA",
      "domain": "example.com",
      "checked_at": "2026-10-31T12:00:00Z",
      "ok": false,
      "status": "fail",
      "score": 78,
      "coverage": {"answered": 7, "total": 8},
      "ips": [{"ip": "203.0.113.5", "sources": ["mx", "spf"], "managed": false}],
      "sections": {
        "dkim": {"status": "pass", "core": true, "findings": [], "data": {}},
        "ptr": {"status": "fail", "core": true, "findings": [], "data": {}}
      },
      "not_checked": [
        {"check": "dkim_signature", "reason": "needs_a_message"},
        {"check": "alignment", "reason": "needs_a_message"}
      ],
      "diff": {
        "baseline": {"id": "ir_01JB2...", "checked_at": "2026-10-24T12:00:00Z"},
        "first_run": false,
        "changed": true,
        "worsened": true,
        "status_from": "pass",
        "score_from": 100,
        "changes": [
          {"path": "dkim.key.mail.sha256", "section": "dkim", "kind": "removed",
           "severity": "critical", "effect": "worsened", "from": "9f2c...", "to": null}
        ],
        "not_compared": [
          {"path": "blocklist_ip.203.0.113.5.bl.spamcop.net.listed", "reason": "lookup_failed"}
        ]
      }
    }
  3. Tegye be a cronba

    A diff=true használatával minden futás összehasonlításra kerül az előzővel, a jq pedig kilépési kóddá alakítja a választ.

    Kérés

    # exits non-zero if the domain is broken or its setup changed
    curl -s 'https://email-spam-tester.com/api/v1/infra/check?domain=example.com&selector=mail&diff=true' \
      | jq -e '.ok and (.diff.changed | not)'
domainKötelező. Azt fogadja, amit az eszközök: tartományt, URL-t vagy e-mail-címet.
ipAz Ön küldési címe. Több címhez ismételje meg, legfeljebb 6-szor.
selectorEgy DKIM-szelektor. Több szelektorhoz ismételje meg, legfeljebb 10-szer. Minden Ön által megadott szelektornak léteznie kell, különben a dkim sikertelen.
heloA név, amelyet az Ön szervere a HELO parancsban megad, összehasonlítva a PTR rekordjával.
accountAkire a kérés vonatkozik. Kötelező, ha a kulcs több személyt szolgál ki.
checksA futtatandó szakaszok, vesszővel elválasztva. Alapértelmezés szerint mindegyik.
diffA true összehasonlítja ezt a futtatást az Ön domainjének legutóbbi futtatásával.
since7d, 12h vagy egy ISO 8601 szerinti dátum. Összehasonlítja az Ön ehhez az időponthoz 12 órán belül legközelebbi futtatásával, egyébként az ezt megelőző utolsóval. Bekapcsolja a diff funkciót.
baselineAz összehasonlításhoz használni kívánt egyik futtatásának id azonosítója. Bekapcsolja a diff funkciót.
freshA true kihagyja a 60 másodperces gyorsítótárat.

A válasz értelmezése

A befejeződött ellenőrzés 200-as választ ad, az eredmény pedig a törzsben található. A status a kötelező szakaszok közül a legrosszabb: spf, dkim, dmarc, ptr, blocklist_ip, blocklist_domain, mx és smtp. Egy kötelező szakaszban az unknown warn értéknek számít. Az ok értéke true, ha a status pass vagy warn. A score 0 és 100 közötti érték a választ adó kötelező szakaszok alapján, és null, ha az error és unknown eredmények miatt az alkalmazandó súly kevesebb mint fele marad. Az mta_sts, tls_rpt, bimi, dnssec, dane, ns és registration szerepel a jelentésben és az összehasonlításban, de nincs hatással az ok vagy score értékére.

Egy szakasz értéke lehet pass, warn, fail, error (nem tudtuk ellenőrizni), unknown (túl kevés információ áll rendelkezésre) vagy skipped (nem alkalmazható). A skipped nincs hatással az eredményre, az ok pedig a not_checked mezőben található. A dkim_signature és alignment mindig szerepel, mert valódi üzenetre van szükségük.

Mit változtat az ip és a selector

A PTR és a tiltólisták címekre vonatkoznak, ezért egy futtatáshoz szükség van néhányra. A rendszer az Ön által megadott ip értékeket használja. Ha egyet sem ad meg, legfeljebb négyet vesz az Ön MX-kiszolgálóiról, valamint a gyökér SPF-rekord egyetlen címet tartalmazó ip4: és ip6: elemeiből. Az ismert levelezési szolgáltatók címei managed jelölést kapnak, és ellenőrzés nélkül maradnak, ha pedig semmi nem marad, a ptr és blocklist_ip válasza skipped. A selector nem olvasható ki a DNS-ből, ezért a futtatás megpróbálja az Ön által megadottat, a korábbi futtatásokban megtaláltakat, valamint a gyakori neveket tartalmazó listát. Ha semmit nem talál, az semmit nem bizonyít, és a dkim válasza unknown. Ha saját kiszolgálójáról küld, adja meg mindkettőt.

Mi változott

A diff.changes minden bejegyzése tartalmaz egy path, egy kind (added, removed, changed), egy severity (critical, warning, info) és egy effect (worsened, improved, neutral) mezőt. Csak a critical és warning állítja be a diff.changed értékét, ezért egy azonos hosszúságúra cserélt DKIM-kulcs, egy új MX-cím vagy egy megújított tanúsítvány esetén a cron csendben marad. A diff.worsened bármely változás effect értékét követi. Az első futtatásnál nincs mivel összehasonlítani, és ezt a diff.first_run jelzi.

Az alapérték mindig az Ön egyik saját futtatása, ezért ha valaki más ellenőrzi a domaint az Ön két futtatása között, az semmit nem rejt el. Minden, amit ezúttal nem tudtunk beolvasni, a diff.not_compared mezőbe kerül, miközben megmarad az utolsó ismert értéke, ami azt jelenti, hogy egy kiesés közben végrehajtott változás akkor jelenik meg, amikor a lekérdezés ismét működik. Az eltérő ip vagy selector értékkel végzett futtatás ugyanabban a sorozatban marad, és az sem kerül összehasonlításra, amit nem kért le.

Miért használjon kulcsot egy ütemezett ellenőrzés

Kulcs nélkül az Ön előzményei az IP-címe kulcsos hashéhez tartoznak, ezért a cím megváltozásakor megszűnnek, az azonos cím mögötti személyek pedig megosztják őket: egy munkatárs futtatása módosítja az Ön alapértékét. Az Authorization: Bearer fejlécben megadott személyes API-kulccsal az előzmények a kulcsot követik. A kulccsal végzett futtatásokat 365 napig őrizzük meg, és csak azzal a kulccsal nyithatók meg. A kulcs nélkülieket 30 napig őrizzük meg, és bárki megnyithatja őket, aki rendelkezik az id azonosítójukkal.

IP-címenként percenként 6 és naponta 50 kérés, kulcsonként pedig 30 és 500 kérés engedélyezett. E korlátok felett a válasz 429, Retry-After fejléccel. A 60 másodpercen belüli azonos kérés a gyorsítótárból érkezik, cached: true jelölést kap, nem ír futtatást, és nem számít bele a korlátba. A tárolt futtatások olvasása kliensenként percenként 120 kérést engedélyez. Az 503 Retry-After fejléccel azt jelenti, hogy túl sok ellenőrzés fut, vagy a tárolt futtatások olvasásakor azt, hogy a tárhely nem érhető el. A 401 hibás kulcsot jelent. A 422 detail.code értéke lehet: invalid_domain, invalid_ip, invalid_selector, invalid_check, invalid_since, unknown_baseline vagy account_required.

Végpontok

GET/api/v1/infra/check

Futtatja az ellenőrzést. A paraméterek a fenti táblázatban találhatók.

GET/api/v1/infra/runs/{public_id}

Egy teljes tárolt futtatás. 404, ha nem létezik, vagy másik kulcshoz tartozik.

GET/api/v1/infra/domains/{domain}/runs

Egy domainhez tartozó futtatásai, a legújabbal kezdve: azonosító, időpont, állapot, pontszám és a változások száma. A limit (1 és 100 között, alapértelmezés szerint 30) és a before, azaz egy futtatásazonosító paramétereket fogadja.

GET/api/v1/infra/diff

Ugyanaz az összehasonlítás két tárolt futtatás között, ?from=<id>&to=<id>. Mindkettőhöz hozzáféréssel kell rendelkeznie.

GET/api/v1/infra/checks

Minden szakasz a súlyával, a pontszám verziójával és a korlátokkal.

Egyedi ellenőrzések

Minden hívás egy kérdésre válaszol, és nem őriz előzményeket. Minden eszköz önállóan futtatja az infrastruktúra-ellenőrzés egy részét, kivéve a fejlécellenőrző eszközt, amely egy Ön által már megkapott üzenetet olvas be.

Gyors kezdés

  1. Válasszon ellenőrzést

    Válassza ki az eszközt az alábbi listából, és adja meg az általa kért domaint, címet vagy IP-t.

    Kérés

    curl -s 'https://email-spam-tester.com/api/v1/tools/spf?domain=example.com'
  2. Tekintse meg az állapotot és a megállapításokat

    Minden eszköz egy állapottal és a megállapításaival válaszol. Az ezeket követő mezők az eszköztől függenek.

    Válasz

    {
      "tool": "spf",
      "query": {"domain": "example.com"},
      "checked_at": "2026-10-31T12:00:00Z",
      "duration_ms": 412,
      "status": "fail",
      "findings": [
        {"code": "spf.too_many_lookups", "level": "fail",
         "params": {"limit": 10, "count": 12},
         "message": "RFC 7208 §4.6.4 allows at most 10 DNS lookups, and this record needs 12, so receivers return permerror."}
      ],
      "record": "v=spf1 include:_spf.example.net ~all",
      "lookups": {"count": 12, "limit": 10, "void": 0}
    }

Végpontok

Mindegyik 200-as választ ad egy állapottal és a megállapítások listájával, amelyek mindegyikéhez egy kód és annak paraméterei tartoznak. Az állapot pass, warn, fail vagy error, az infrastruktúra-ellenőrzéssel közösen használt eszköz pedig unknown vagy skipped választ is adhat. Az időtúllépés miatt meghiúsult lekérdezés vagy a lekérdezést elutasító lista soha nem számít pass állapotnak. Az eszközökön összesen percenként 30 és naponta 300 kérés engedélyezett IP-címenként; e fölött a válasz 429-es, Retry-After fejléccel.

GET/api/v1/tools/spf

Egy tartomány SPF-rekordja: a szintaxisa, minden követett include és redirect, valamint a teljes fa DNS-lekérdezéseinek száma a tízes korláthoz viszonyítva. Adja át: ?domain=example.com.

GET/api/v1/tools/dmarc

Egy tartomány DMARC-rekordja, vagy ha nincs ilyenje, a szervezeti tartományáé: a címkék, a házirend, valamint hogy minden külső jelentési cím hozzájárult-e a jelentések fogadásához. Adja át: ?domain=example.com.

GET/api/v1/tools/dkim

Egy szelektorhoz közzétett DKIM-kulcs: létezik-e és dekódolható-e, a típusa és mérete, valamint a visszavonási és tesztelési jelzők. Adja át: ?domain=example.com&selector=s1.

GET/api/v1/tools/blocklist

Egy IPv4-cím, egy IPv6-cím vagy egy tartomány ellenőrzése a jelentés által használt DNS-tiltólistákon, az egyes listák válaszával. Adja át: ?target=203.0.113.5.

GET/api/v1/tools/mx

Egy domain MX rekordjai abban a sorrendben, ahogyan a küldők próbálkoznak velük, minden állomás IPv4- és IPv6-címével. Jelentés készül a Null MX-ről, az MX nélküli domainekről, az IP-címként vagy CNAME-ként megadott állomásokról és a fel nem oldható állomásokról, valamint az MTA-STS és TLS-RPT rekordokról is. Adja át a ?domain=example.com paramétert.

GET/api/v1/tools/bimi

Egy domain BIMI-beállítása négy lépésben: a BIMI által megkövetelt DMARC-házirend, a default._bimi helyen található rekord, a Tiny PS profil alapján ellenőrzött SVG-logó, valamint a védjegytanúsítvány a típusával, domainjeivel és lejárati idejével. Adja át a ?domain=example.com paramétert, és a &selector= paramétert a default értéktől eltérő szelektorhoz.

GET/api/v1/tools/ptr

Egy cím PTR rekordjai, valamint az, hogy e nevek bármelyike visszaoldódik-e erre a címre. A sikertelen lekérdezés error; a hiányzó rekord fail. Adja át a ?ip=8.8.8.8 paramétert.

GET/api/v1/tools/mta-sts

Egy tartomány MTA-STS rekordja és az általa hivatkozott házirendfájl: a mód, a felsorolt állomások és minden olyan MX-állomás, amelyet a házirend kihagy. Adja át a ?domain=example.com paramétert.

GET/api/v1/tools/tls-rpt

Egy tartomány TLS-RPT rekordja és a jelentéseket fogadó címek. Adja át a ?domain=example.com paramétert.

GET/api/v1/tools/dnssec

A tartomány zónája aláírt, aláíratlan vagy hibás-e, a DNSKEY és DS rekordjai alapján. A hibás aláírást megkülönböztetjük a feloldó kiesésétől. Adja át a ?domain=example.com paramétert.

GET/api/v1/tools/dane

Az MX-állomások TLSA rekordjai összehasonlítva az állomás által bemutatott tanúsítvánnyal, ha a tanúsítvány beolvasható volt. Adja át a ?domain=example.com paramétert.

GET/api/v1/tools/smtp

STARTTLS és a tanúsítvány az első két MX-állomáson: a TLS verziója, a kibocsátó, a lejárati dátum, valamint az, hogy a lánc és a név érvényes-e. Csak az Ön által megadott tartomány alatti állomásokhoz csatlakozunk, a levelezési szolgáltatókat kihagyjuk, és címenként egy eredményt 6 órán át megosztunk. Nem küldünk levelet. Adja át a ?domain=example.com paramétert.

GET/api/v1/tools/ns

Egy tartomány névszerverei, valamint az, hogy a zónája rendelkezik-e SOA rekorddal. Egyetlen névszerver warn állapotot jelent. Adja át a ?domain=example.com paramétert.

GET/api/v1/tools/registration

Az RDAP alapján az az időpont, amikor egy tartomány regisztrációja lejár. Ha kevesebb mint 30 nap van hátra, az warn állapotot jelent. Az RDAP-szolgáltatás nélküli zóna skipped választ ad. Adja át a ?domain=example.com paramétert.

POST/api/v1/tools/header

Egy fogadott üzenet fejlécei JSON-ként {"headers": "..."} vagy text/plain formátumban elküldve: az útvonal állomásról állomásra, a késleltetésekkel, a TLS adataival és az óraeltéréssel, a fogadó saját Authentication-Results fejlécével, a From, a DKIM d= és a Return-Path domainek illeszkedésével, valamint a DKIM-, ARC-, leiratkozási és spamszűrő-fejlécekkel. Az első üres sor után minden olvasatlanul eldobásra kerül. A fejlécek feldolgozása a memóriában történik, és azokat a rendszer nem tárolja, nem gyorsítótárazza és nem naplózza.

Minden éjjel ellenőrizze a domaint.
Tesztelje az e-mailt, mielőtt elküldi.

Minden termék közös elemei

Hozzáférés, kulcsok, a jelentés formátuma, állapotok, hibák, valamint OpenAPI és llms.txt gépek számára.

Hitelesítés

Nincs. Nem kell kulcsot kérni, fejlécet beállítani vagy fiókot létrehozni. A visszakapott slug maga a hozzáférés: aki birtokolja, elolvashatja a jelentést, más pedig nem tudja kitalálni.

Ez azt is jelenti, hogy a slugot érdemes jelszóként kezelni. A jelentés megmutatja a tárgyat, a feladót, a visszapattanási címet és az üzenet teljes forrását mindenkinek, aki rendelkezik a hivatkozással.

Személyes API-kulcsok

Everything above works without a key. A key is for automation platforms such as Zapier, where every user's calls come from the platform's servers and per-IP limits would be shared by all of them. With a key, limits count per key (50 tests a day, 3 with placement, 5 permanent mailboxes), the key's tests form a history, and the key can keep permanent mailboxes whose reports only it can read. Send the key as Authorization: Bearer est_live_… on any call on this page. The routes below also take account, a short name of your choosing ([A-Za-z0-9_-], up to 64 characters) that keeps separate lists under one key. GET /api/v1/installations/tests requires it; pass the same one on POST /api/v1/inbox so the test shows up there. The Zapier integration uses zapier.

POST /api/v1/keys

Send JSON {"email":"you@example.com"}. Returns HTTP 201 with key and email. The key is shown once; only its hash is kept. Asking again gives a new key and leaves the earlier ones working. Limit: 5 keys per IP per UTC day. The form on /zapier/ calls this.

GET /api/v1/keys/me

Returns email, key_prefix and created_at of the key in the header, or HTTP 401. Use it to check a key.

GET /api/v1/installations/tests

The key's tests, newest first: ?account=…&limit=50 (up to 100), and before=<slug> for the next page. Each item has slug, created_at, analysis_status (waiting or expired before an email arrived), score_ours, score_compat, placement and changes, the checks that moved since the previous test of the same sending domain. Read the full report at /api/v1/tests/{slug}.

POST /api/v1/installations/mailboxes

Send JSON {"domain":"example.com","account":"…"}. Returns the permanent mailbox of that sending domain: id, address, domain, state, daily_cap and created. HTTP 201 when it is new, 200 when it already existed, 409 when the key keeps as many mailboxes as it may. Subscribe the address to a newsletter or a sequence and every email that arrives is checked. GET on the same path with ?account=… lists them, and DELETE /api/v1/installations/mailboxes/{mailbox_id} stops one.

GET /api/v1/installations/mailboxes/{mailbox_id}/letters

The emails that arrived, oldest first, paged with after_id and next_after_id. settled=true ends the page before the first email still being checked, so paging never skips one. newest=true turns the order round, for a quick look at the latest; settled does nothing with it. Each has test_id, slug, received_at, analysis_status, score_ours, score_compat, subject, from_addr and kind.

GET /api/v1/installations/letters/{slug}

The report of one email in a permanent mailbox, the same JSON as /api/v1/tests/{slug} with report_url null: there is no public page for it. HTTP 410 once the report has expired.

A jelentés olvasása

A választ tartalmazó mezők, abban a sorrendben, amelyben valószínűleg szüksége lesz rájuk.

score_ours0-tól 100-ig. A mi modellünk. A hitelesítés és az infrastruktúra adja a súly nagy részét, mert ezek döntik el a kézbesítést, mielőtt egy szűrő egyetlen szót is elolvasna a szövegből.
score_compat0-tól 10-ig. Reprodukálja a SpamAssassin-stílusú számot, amelyet már össze szoktak hasonlítani, így a jelentés összevethető azzal, amit valaki máshol látott.
subscoresUgyanaz a 0-tól 100-ig terjedő skála szakaszonként: auth, infra_spam, content, compliance.
checks[]Mind a 42, mindegyik állapottal, egysoros megállapítással, a döntés alapjául szolgáló bizonyítékkal, valamint azzal, hogy mennyivel módosította a két pontszámot.
checks[].citationsA megállapítás forrása: az RFC szakasza szó szerint idézve, valamint az az oldal, amelyen a Google közli a saját követelményét. Kézzel összeállítva, nem generálva, ezért megbízhatók.
javítások[]Mit kell módosítani, sorrendben, az egyes módosításokért járó pontokkal. A pontnövekedést a jelentés újbóli pontozásával számítjuk ki, nem becsléssel.
teljesHamis, ha egy ellenőrzést nem lehetett lefuttatni. Egy nem ellenőrzött elem soha nem felel meg, ezért a pontszámot tekintse optimistának, amíg ez az érték nem igaz.
jelentés_urlAz ember által olvasható oldal. Ezt adja át egy személynek egy falnyi JSON helyett.

Állapotok

Egy ellenőrzés öt állapot egyikében lehet, és a közülük kettő közötti különbség fontosabb, mint amilyennek látszik.

megfeleltAz ellenőrzés lefutott, és nem talált hibát.
figyelmeztetésÉrdemes javítani. Pontlevonással jár.
nem felelt megRontja a kézbesítést. Több pontba kerül.
kihagyásNem volt alkalmazható. Nincsenek ellenőrizendő mellékletek, nincs értékelendő HTML-rész. Nem számít sikeresnek.
hibaNem tudtuk megállapítani. Kizártuk a pontszámból és megjelöltük, ahelyett, hogy sikeresnek számítottuk volna.

Az analysis_status lehetséges értékei: received, analyzing, checks_ready, failed. Az ai_status lehetséges értékei: pending, running, ready, fallback, error. A determinisztikus jelentés a checks_ready állapotnál végleges; az ai_status csak a tervet adja hozzá.

Milyen válasz érkezhet

202A cím le van foglalva, és még nem érkezett üzenet. A törzs tartalmazza a címet, a lejáratot és a nyelvet, így az a hívó is meg tudja jeleníteni, amely nem hozta létre a foglalást.
404Nincs ilyen slug. Soha nem létezett, vagy a foglalás el lett felejtve.
410A cím lejárt, mielőtt üzenet érkezett volna.
409Megpróbálta módosítani a nyelvet, miután az üzenet már megérkezett.
429Az Ön címére vonatkozó ingyenes tesztelési korlát. Jelenleg nincs személyenkénti korlát ennél a szolgáltatásnál; ha valaha bevezetnek egyet, a törzs jelzi, hogy mikor áll vissza.

Négy fontos tudnivaló

Címenként egy üzenet

A másodikat elutasítjuk. A korábbi jelentése változatlan marad, éppen ez a lényeg.

Egy óra a használatára

A cím lejár; a jelentés nem. A jelentések hivatkozásai állandók, így a jegybe beillesztett hivatkozás továbbra is működik.

Küldés a platformról

Ha egy kampányt személyes fiókból tesztel, azzal azt a fiókot méri. A hitelesítési szakaszban szinte minden a küldési infrastruktúráról szól, nem a szövegről.

Újratesztelés a javítás után

A várható javulást javításonként számítjuk ki, és az értékek nem adódnak össze. A második jelentés mutatja a valós értéket.

Gépi használatra

GET/api/health

Üzemképesség. Nincs hitelesítés, nincsenek mellékhatások.

Először próbáljon ki egyet kézzel

Körülbelül egy percet vesz igénybe, és pontosan megmutatja, mit ír le a JSON.

Tesztcím kérése

Sandbox.

Minden végpont egy gombbal, amely az élő szolgáltatáson futtatja. Itt semmihez sem szükséges kulcs, ezért az erről az oldalról indított kérés valódi: valódi címet foglal le, és beleszámít.

Próbálja ki a sandboxban