API

Bir test adresi alın, o adrese mail gönderin, raporu JSON olarak okuyun. Üç istek. Tarayıcıdaki akışın aynısı.

Kimlik doğrulama

Her isteğe X-API-Key başlığını ekleyin. Anahtarı hesap sayfanızdan oluşturursunuz ve size bir kez gösterilir.

X-API-Key: mt_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Anahtar göndermezseniz istek anonim sayılır ve IP başına günlük limit uygulanır.

Adım 1 — test adresi al

curl -X POST https://mailtesterbox.com/generate \
  -H "X-API-Key: $MAILTESTER_KEY"
{
  "address": "test-a1b2c3d4e5f6a7b8c9d0@mailtesterbox.com",
  "expires_at": "2026-07-30T12:30:00+00:00",
  "expires_in": 1800,
  "limits": { "scope": "api_key", "limit": 25, "used": 3, "remaining": 22 }
}

Adres 30 dakika yaşar ve tekrar kullanılabilir. Aynı adrese ikinci bir mail atıp yeniden kontrol ederseniz en yeni raporu alırsınız.

Adım 2 — o adrese mail gönderin

Test etmek istediğiniz sunucudan, normalde nasıl gönderiyorsanız öyle gönderin. Biz gönderen IP'yi, HELO adını, TLS sürümünü ve tüm başlıkları bağlantının kendisinden okuyoruz.

Adım 3 — raporu isteyin

curl "https://mailtesterbox.com/check/test-a1b2c3d4e5f6a7b8c9d0@mailtesterbox.com" \
  -H "X-API-Key: $MAILTESTER_KEY"

Bu uç nokta hem analizi kuyruğa alır hem durumunu döner. Mail gelene kadar birkaç saniye aralıkla tekrar sorun.

status Anlamı
waitingAdres canlı, henüz mail gelmedi
processingMail geldi, analiz sürüyor
analyzedRapor hazır, result alanında
limitGünlük hakkınız doldu
expiredAdresin süresi doldu, yeni adres alın
errorAnaliz sırasında bir sorun oldu

Aynı adrese birden fazla mail atıyorsanız ?after=<event_id> parametresini kullanın. Böylece daha önce gördüğünüz mailler atlanır ve sadece yenisi beklenir.

Uç noktalar

Uç nokta İş
POST /generateYeni test adresi
GET /check/{adres}Analizi kuyruğa al ve durumu sor
GET /result/{adres}En yeni rapor, salt okunur, kotaya dokunmaz
GET /limitsKalan günlük hak
GET /historyGeçmiş raporlarınız
GET /history/{id}Bir geçmiş rapor, tam hâliyle

Şema düzeyinde teknik referans için /docs adresindeki OpenAPI arayüzünü kullanabilirsiniz.

Rapor içeriği

result alanı 10 üzerinden puanı, düşen her kalemi ve tüm kontrolleri taşır.

{
  "status": "analyzed",
  "event_id": "6a6b12a4cc21db9abcd7ee74",
  "result": {
    "score": 9.2,
    "title": "Excellent",
    "issues": [
      { "code": "DMARC_POLICY_NONE", "points": -0.3, "severity": "low",
        "title": "DMARC policy is set to none", "how_to_fix": "..." }
    ],
    "checks": {
      "spf":    { "status": "ok", "result": "pass", "record": ["v=spf1 ip4:... -all"] },
      "dkim":   { "status": "ok", "verified": true, "selector": "default", "signing_domain": "..." },
      "dmarc":  { "status": "ok", "result": "pass", "policy": "none",
                  "spf_aligned": true, "dkim_aligned": true },
      "rdns":   { "success": true, "hostname": "mx.ornek.com", "matches": true },
      "helo":   { "value": "mx.ornek.com", "is_fqdn": true, "matches_rdns": true },
      "blacklists": { "checked": 20, "results": { "zen.spamhaus.org": "not_listed" } },
      "domain_blacklists": { "checked": 8, "listed": [] },
      "content": { "has_plain": true, "has_html": true, "text_ratio": 0.42,
                   "link_hosts": ["ornek.com"], "shortened_links": [] },
      "spamassassin": { "score": 0.1, "threshold": 5.0,
                        "rules": [ { "name": "TO_MALFORMED", "points": 0.1, "description": "..." } ] }
    },
    "connection": { "client_ip": "203.0.113.10", "helo": "mx.ornek.com",
                    "tls": true, "tls_protocol": "TLSv1.3" }
  }
}

issues içindeki points değerleri negatiftir ve toplamı 10'dan düşülür. code alanı sabittir, kendi tarafınızda ona göre dal kurabilirsiniz.

Limitler

Kapsam Günlük analiz İstek hızı
Anonim (IP)510 / dakika
Hesap (tarayıcı)2510 / dakika
API anahtarı25120 / dakika

Günlük hak analiz başladığında düşer, adres alırken değil. Yani adres oluşturmak, dili değiştirmek veya /result okumak bedava. Limit aşımında 429 ve Retry-After başlığı döner.

Kendi sunucunuza kurarsanız bu değerlerin hepsi ortam değişkeni. Proje açık kaynak: github.com/alialinx/mail-tester

Tam örnek

#!/usr/bin/env bash
set -euo pipefail

KEY="$MAILTESTER_KEY"
BASE="https://mailtesterbox.com"

ADDRESS=$(curl -sS -X POST "$BASE/generate" -H "X-API-Key: $KEY" | jq -r .address)
echo "adres: $ADDRESS"

swaks --to "$ADDRESS" --from "test@ornek.com" --server mail.ornek.com

for i in $(seq 1 60); do
  BODY=$(curl -sS "$BASE/check/$ADDRESS" -H "X-API-Key: $KEY")
  STATUS=$(echo "$BODY" | jq -r .status)
  [ "$STATUS" = "analyzed" ] && { echo "$BODY" | jq '.result.score, .result.issues'; break; }
  [ "$STATUS" = "expired" ] || [ "$STATUS" = "limit" ] && { echo "$BODY"; exit 1; }
  sleep 3
done