{
    "domain": "fortext.com",
    "whois": {
        "error": null,
        "domain": "fortext.com",
        "checks": [
            {
                "key": "whois",
                "label": "WHOIS",
                "status": "ok",
                "statusLabel": "Geçerli",
                "detail": "TurnCommerce, Inc. DBA NameBright.com · bitiş 02.12.2026 (43 gün)",
                "findings": [],
                "data": {
                    "found": true,
                    "days": 43,
                    "locked": true,
                    "reason": null,
                    "name": "fortext.com",
                    "registrar": "TurnCommerce, Inc. DBA NameBright.com",
                    "status": [
                        "client transfer prohibited"
                    ],
                    "registered": "2000-12-02",
                    "expires": "2026-12-02",
                    "changed": "2025-11-20",
                    "nameservers": [
                        "ns1.brandbucket.com",
                        "ns2.brandbucket.com"
                    ],
                    "dnssec": false
                }
            }
        ],
        "findings": [],
        "found": true,
        "registrar": "TurnCommerce, Inc. DBA NameBright.com",
        "registered": "2000-12-02",
        "expires": "2026-12-02",
        "changed": "2025-11-20",
        "days": 43,
        "domainStatus": [
            "client transfer prohibited"
        ],
        "nameservers": [
            "ns1.brandbucket.com",
            "ns2.brandbucket.com"
        ],
        "dnssecSigned": false,
        "status": "ok",
        "statusLabel": "Geçerli",
        "detail": "TurnCommerce, Inc. DBA NameBright.com · bitiş 02.12.2026 (43 gün)",
        "ms": 529
    },
    "records": {
        "error": null,
        "rows": [
            {
                "type": "A",
                "name": "@",
                "value": "13.56.33.8",
                "ttl": 3600
            },
            {
                "type": "NS",
                "name": "@",
                "value": "ns1.brandbucket.com.",
                "ttl": 3600
            },
            {
                "type": "NS",
                "name": "@",
                "value": "ns2.brandbucket.com.",
                "ttl": 3600
            },
            {
                "type": "SOA",
                "name": "@",
                "value": "ns1.brandbucket.com. mail.fortext.com. 2024030502 10800 3600 604800 3600",
                "ttl": 3600
            },
            {
                "type": "TXT",
                "name": "@",
                "value": "27aab5373841b85aab94982ee19ab62f96481ed6",
                "ttl": 3600
            },
            {
                "type": "TXT",
                "name": "@",
                "value": "afternic-verification-cvgUQU8SkLxsjXcPBSk2CM",
                "ttl": 3600
            },
            {
                "type": "TXT",
                "name": "@",
                "value": "v=spf1 -all",
                "ttl": 3600
            },
            {
                "type": "A",
                "name": "www",
                "value": "13.56.33.8",
                "ttl": 3600
            }
        ],
        "server": "54.241.53.41",
        "partial": false,
        "ms": 513
    },
    "mail": {
        "error": null,
        "checks": [
            {
                "key": "spf",
                "label": "SPF",
                "status": "ok",
                "statusLabel": "Geçerli",
                "detail": "v=spf1 -all · 0/10 DNS araması",
                "findings": [],
                "data": {
                    "record": "v=spf1 -all",
                    "lookups": 0,
                    "all": "-all",
                    "chain": []
                }
            },
            {
                "key": "dkim",
                "label": "DKIM",
                "status": "warn",
                "statusLabel": "Bulunamadı",
                "detail": "12 yaygın selector denendi",
                "findings": [
                    {
                        "level": "warn",
                        "code": "dkim-missing",
                        "title": "Yaygın selector'larda DKIM kaydı bulunamadı",
                        "text": "E-posta sağlayıcınız farklı bir selector kullanıyor olabilir. DKIM yoksa gönderdiğiniz e-postalar imzasız gider ve DMARC daha kolay başarısız olur.",
                        "fix": null
                    }
                ],
                "data": {
                    "selectors": [
                        "default",
                        "google",
                        "selector1",
                        "selector2",
                        "k1",
                        "k2",
                        "mail",
                        "dkim",
                        "s1",
                        "s2",
                        "smtp",
                        "mx"
                    ]
                }
            },
            {
                "key": "dmarc",
                "label": "DMARC",
                "status": "err",
                "statusLabel": "Yok",
                "detail": "DMARC kaydı bulunamadı",
                "findings": [
                    {
                        "level": "err",
                        "code": "dmarc-missing",
                        "title": "DMARC kaydı yok",
                        "text": "SPF/DKIM başarısız olan sahte e-postalar için alıcılara ne yapacakları söylenmiyor. _dmarc TXT kaydı ekleyin.",
                        "fix": "_dmarc.fortext.com TXT \"v=DMARC1; p=quarantine; rua=mailto:dmarc@fortext.com\""
                    }
                ],
                "data": []
            },
            {
                "key": "mta-sts",
                "label": "MTA-STS",
                "status": "neutral",
                "statusLabel": "Yok",
                "detail": "Kayıt yok (isteğe bağlı; SMTP şifrelemesini zorunlu kılar)",
                "findings": [
                    {
                        "level": "info",
                        "code": "mtasts-missing",
                        "title": "MTA-STS yok",
                        "text": "Gelen e-postalarda TLS zorunlu değil; ortadaki adam saldırısına açık. İsteğe bağlı ama önerilir.",
                        "fix": "_mta-sts.fortext.com TXT \"v=STSv1; id=202610191246\""
                    }
                ],
                "data": []
            },
            {
                "key": "bimi",
                "label": "BIMI",
                "status": "neutral",
                "statusLabel": "Yok",
                "detail": "Kayıt yok (isteğe bağlı; gelen kutusunda logo gösterir)",
                "findings": [],
                "data": []
            }
        ],
        "findings": [
            {
                "level": "warn",
                "code": "dkim-missing",
                "title": "Yaygın selector'larda DKIM kaydı bulunamadı",
                "text": "E-posta sağlayıcınız farklı bir selector kullanıyor olabilir. DKIM yoksa gönderdiğiniz e-postalar imzasız gider ve DMARC daha kolay başarısız olur.",
                "fix": null
            },
            {
                "level": "err",
                "code": "dmarc-missing",
                "title": "DMARC kaydı yok",
                "text": "SPF/DKIM başarısız olan sahte e-postalar için alıcılara ne yapacakları söylenmiyor. _dmarc TXT kaydı ekleyin.",
                "fix": "_dmarc.fortext.com TXT \"v=DMARC1; p=quarantine; rua=mailto:dmarc@fortext.com\""
            },
            {
                "level": "info",
                "code": "mtasts-missing",
                "title": "MTA-STS yok",
                "text": "Gelen e-postalarda TLS zorunlu değil; ortadaki adam saldırısına açık. İsteğe bağlı ama önerilir.",
                "fix": "_mta-sts.fortext.com TXT \"v=STSv1; id=202610191246\""
            }
        ],
        "ms": 929
    },
    "dnssec": {
        "error": null,
        "checks": [
            {
                "key": "dnssec",
                "label": "DNSSEC",
                "status": "warn",
                "statusLabel": "İmzasız",
                "detail": "DS kaydı yok · bölge imzalanmamış",
                "findings": [
                    {
                        "level": "warn",
                        "code": "dnssec-unsigned",
                        "title": "DNSSEC etkin değil",
                        "text": "Kayıtlar imzalı değil; sahte DNS yanıtları (önbellek zehirleme) tespit edilemez. DNS sağlayıcınızda DNSSEC'i açıp DS kaydını alan adı kayıt firmanıza girin.",
                        "fix": null
                    }
                ],
                "data": {
                    "steps": [
                        {
                            "zone": ". (kök)",
                            "keys": "KSK 20326, 38696 · imzalar geçerli",
                            "status": "ok",
                            "label": "Güven kökü"
                        },
                        {
                            "zone": "com",
                            "keys": "DS → DNSKEY 19718 · imzalar geçerli",
                            "status": "ok",
                            "label": "Doğrulandı"
                        },
                        {
                            "zone": "fortext.com",
                            "keys": "DS yok",
                            "status": "unsigned",
                            "label": "İmzasız"
                        }
                    ],
                    "algorithm": null,
                    "expires": null,
                    "secure": false
                }
            }
        ],
        "findings": [
            {
                "level": "warn",
                "code": "dnssec-unsigned",
                "title": "DNSSEC etkin değil",
                "text": "Kayıtlar imzalı değil; sahte DNS yanıtları (önbellek zehirleme) tespit edilemez. DNS sağlayıcınızda DNSSEC'i açıp DS kaydını alan adı kayıt firmanıza girin.",
                "fix": null
            }
        ],
        "ms": 311,
        "steps": [
            {
                "zone": ". (kök)",
                "keys": "KSK 20326, 38696 · imzalar geçerli",
                "status": "ok",
                "label": "Güven kökü"
            },
            {
                "zone": "com",
                "keys": "DS → DNSKEY 19718 · imzalar geçerli",
                "status": "ok",
                "label": "Doğrulandı"
            },
            {
                "zone": "fortext.com",
                "keys": "DS yok",
                "status": "unsigned",
                "label": "İmzasız"
            }
        ],
        "algorithm": null,
        "expires": null,
        "secure": false,
        "status": "warn",
        "statusLabel": "İmzasız",
        "detail": "DS kaydı yok · bölge imzalanmamış"
    },
    "nameservers": {
        "error": null,
        "zone": "fortext.com",
        "check": {
            "key": "ns",
            "label": "Nameserver",
            "status": "warn",
            "statusLabel": "Tek ağ",
            "detail": "2 sunucu · 1 farklı ağ (ASN) · seri numaraları eşleşiyor",
            "findings": [
                {
                    "level": "warn",
                    "code": "ns-single-asn",
                    "title": "Tüm nameserver'lar aynı ağda (AS16509)",
                    "text": "O ağda kesinti olursa alan adı erişilemez. Farklı bir sağlayıcıda ikincil nameserver ekleyin.",
                    "fix": null
                }
            ],
            "data": {
                "servers": [
                    {
                        "host": "ns1.brandbucket.com",
                        "ip": "54.241.53.41",
                        "asn": 16509,
                        "holder": "AMAZON-02 - Amazon.com, Inc.",
                        "loc": "San Jose, US",
                        "ms": 186.1,
                        "serial": 2024030502,
                        "status": "ok",
                        "statusLabel": "Yetkili",
                        "w": 100
                    },
                    {
                        "host": "ns2.brandbucket.com",
                        "ip": "18.221.52.246",
                        "asn": 16509,
                        "holder": "AMAZON-02 - Amazon.com, Inc.",
                        "loc": "Columbus, US",
                        "ms": 142.9,
                        "serial": 2024030502,
                        "status": "ok",
                        "statusLabel": "Yetkili",
                        "w": 77
                    }
                ],
                "asns": [
                    16509
                ]
            }
        },
        "servers": [
            {
                "host": "ns1.brandbucket.com",
                "ip": "54.241.53.41",
                "asn": 16509,
                "holder": "AMAZON-02 - Amazon.com, Inc.",
                "loc": "San Jose, US",
                "ms": 186.1,
                "serial": 2024030502,
                "status": "ok",
                "statusLabel": "Yetkili",
                "w": 100
            },
            {
                "host": "ns2.brandbucket.com",
                "ip": "18.221.52.246",
                "asn": 16509,
                "holder": "AMAZON-02 - Amazon.com, Inc.",
                "loc": "Columbus, US",
                "ms": 142.9,
                "serial": 2024030502,
                "status": "ok",
                "statusLabel": "Yetkili",
                "w": 77
            }
        ],
        "findings": [
            {
                "level": "warn",
                "code": "ns-single-asn",
                "title": "Tüm nameserver'lar aynı ağda (AS16509)",
                "text": "O ağda kesinti olursa alan adı erişilemez. Farklı bir sağlayıcıda ikincil nameserver ekleyin.",
                "fix": null
            }
        ],
        "ms": 491
    },
    "extra": {
        "error": null,
        "checks": [
            {
                "key": "mx",
                "label": "MX",
                "status": "info",
                "statusLabel": "Yok",
                "detail": "MX kaydı yok; e-posta A kaydına düşer ya da alınmaz",
                "findings": [
                    {
                        "level": "info",
                        "code": "mx-missing",
                        "title": "MX kaydı yok",
                        "text": "Bu alan adına e-posta gönderilirse alıcılar A kaydını dener. E-posta kullanmıyorsanız \"0 .\" (null MX) ekleyin.",
                        "fix": "fortext.com MX 0 ."
                    }
                ],
                "data": []
            },
            {
                "key": "caa",
                "label": "CAA",
                "status": "warn",
                "statusLabel": "Yok",
                "detail": "Her sertifika otoritesi bu alan adı için sertifika verebilir",
                "findings": [
                    {
                        "level": "warn",
                        "code": "caa-missing",
                        "title": "CAA kaydı yok",
                        "text": "Her sertifika otoritesi bu alan adı için SSL sertifikası verebilir. Kullandığınız CA'yı belirtin.",
                        "fix": "fortext.com CAA 0 issue \"letsencrypt.org\""
                    }
                ],
                "data": []
            },
            {
                "key": "soa",
                "label": "SOA",
                "status": "ok",
                "statusLabel": "Geçerli",
                "detail": "seri 2024030502 · refresh 10800 · retry 3600 · expire 604800 · minimum 3600",
                "findings": [],
                "data": {
                    "mname": "ns1.brandbucket.com",
                    "rname": "mail.fortext.com",
                    "serial": 2024030502,
                    "refresh": 10800,
                    "retry": 3600,
                    "expire": 604800,
                    "minimum": 3600
                }
            }
        ],
        "findings": [
            {
                "level": "info",
                "code": "mx-missing",
                "title": "MX kaydı yok",
                "text": "Bu alan adına e-posta gönderilirse alıcılar A kaydını dener. E-posta kullanmıyorsanız \"0 .\" (null MX) ekleyin.",
                "fix": "fortext.com MX 0 ."
            },
            {
                "level": "warn",
                "code": "caa-missing",
                "title": "CAA kaydı yok",
                "text": "Her sertifika otoritesi bu alan adı için SSL sertifikası verebilir. Kullandığınız CA'yı belirtin.",
                "fix": "fortext.com CAA 0 issue \"letsencrypt.org\""
            }
        ],
        "ms": 557
    },
    "ssl": {
        "error": null,
        "checks": [
            {
                "key": "ssl",
                "label": "SSL/HTTP",
                "status": "warn",
                "statusLabel": "Uyarı",
                "detail": "Let's Encrypt · 88 gün · TLSv1.3 · HTTP/3",
                "findings": [
                    {
                        "level": "warn",
                        "code": "http-hsts",
                        "title": "HSTS başlığı yok",
                        "text": "Tarayıcı sonraki ziyaretlerde HTTPS'i zorunlu kılamaz (SSL stripping). Başlığı ekleyin.",
                        "fix": "Strict-Transport-Security: max-age=31536000; includeSubDomains"
                    }
                ],
                "data": {
                    "ip": "13.56.33.8",
                    "issuer": "Let's Encrypt",
                    "subject": "fortext.com",
                    "sans": 1,
                    "chain": 4,
                    "validTo": "15.01.2027",
                    "days": 88,
                    "verified": true,
                    "protocol": "TLSv1.3",
                    "cipher": "TLS_AES_256_GCM_SHA384",
                    "httpVersion": "HTTP/3",
                    "h3": "var",
                    "redirect": true,
                    "httpStatus": 301,
                    "httpsStatus": 403,
                    "server": "cloudflare",
                    "headers": [
                        {
                            "key": "strict-transport-security",
                            "label": "HSTS",
                            "present": false,
                            "value": null
                        },
                        {
                            "key": "content-security-policy",
                            "label": "CSP",
                            "present": true,
                            "value": "default-src 'none'; script-src 'nonce-qz1GoWSwod9ZU8L6C6NXZW' 'unsafe-eval' https://challenges.cloudflare.com; script-src-attr 'none'; style-src 'unsafe-inline'; img-src 'self' https://challenges.cloudflare.com; connect-src 'self' https://challenges.cloudflare.com; frame-src 'self' https://challenges.cloudflare.com blob:; child-src 'self' https://challenges.cloudflare.com blob:; worker-src blob:; form-action http: https:; base-uri 'self'"
                        },
                        {
                            "key": "x-content-type-options",
                            "label": "X-Content-Type-Options",
                            "present": true,
                            "value": "nosniff"
                        },
                        {
                            "key": "x-frame-options",
                            "label": "X-Frame-Options",
                            "present": true,
                            "value": "SAMEORIGIN"
                        },
                        {
                            "key": "referrer-policy",
                            "label": "Referrer-Policy",
                            "present": true,
                            "value": "same-origin"
                        },
                        {
                            "key": "permissions-policy",
                            "label": "Permissions-Policy",
                            "present": true,
                            "value": "accelerometer=(),camera=(),clipboard-read=(),clipboard-write=(),geolocation=(),gyroscope=(),hid=(),magnetometer=(),microphone=(),payment=(),publickey-credentials-get=(),screen-wake-lock=(),serial=(),sync-xhr=(),usb=(),xr-spatial-tracking=*"
                        }
                    ],
                    "tlsOk": true
                }
            }
        ],
        "findings": [
            {
                "level": "warn",
                "code": "http-hsts",
                "title": "HSTS başlığı yok",
                "text": "Tarayıcı sonraki ziyaretlerde HTTPS'i zorunlu kılamaz (SSL stripping). Başlığı ekleyin.",
                "fix": "Strict-Transport-Security: max-age=31536000; includeSubDomains"
            }
        ],
        "ms": 1682,
        "ip": "13.56.33.8",
        "issuer": "Let's Encrypt",
        "subject": "fortext.com",
        "sans": 1,
        "chain": 4,
        "validTo": "15.01.2027",
        "days": 88,
        "verified": true,
        "protocol": "TLSv1.3",
        "cipher": "TLS_AES_256_GCM_SHA384",
        "httpVersion": "HTTP/3",
        "h3": "var",
        "redirect": true,
        "httpStatus": 301,
        "httpsStatus": 403,
        "server": "cloudflare",
        "headers": [
            {
                "key": "strict-transport-security",
                "label": "HSTS",
                "present": false,
                "value": null
            },
            {
                "key": "content-security-policy",
                "label": "CSP",
                "present": true,
                "value": "default-src 'none'; script-src 'nonce-qz1GoWSwod9ZU8L6C6NXZW' 'unsafe-eval' https://challenges.cloudflare.com; script-src-attr 'none'; style-src 'unsafe-inline'; img-src 'self' https://challenges.cloudflare.com; connect-src 'self' https://challenges.cloudflare.com; frame-src 'self' https://challenges.cloudflare.com blob:; child-src 'self' https://challenges.cloudflare.com blob:; worker-src blob:; form-action http: https:; base-uri 'self'"
            },
            {
                "key": "x-content-type-options",
                "label": "X-Content-Type-Options",
                "present": true,
                "value": "nosniff"
            },
            {
                "key": "x-frame-options",
                "label": "X-Frame-Options",
                "present": true,
                "value": "SAMEORIGIN"
            },
            {
                "key": "referrer-policy",
                "label": "Referrer-Policy",
                "present": true,
                "value": "same-origin"
            },
            {
                "key": "permissions-policy",
                "label": "Permissions-Policy",
                "present": true,
                "value": "accelerometer=(),camera=(),clipboard-read=(),clipboard-write=(),geolocation=(),gyroscope=(),hid=(),magnetometer=(),microphone=(),payment=(),publickey-credentials-get=(),screen-wake-lock=(),serial=(),sync-xhr=(),usb=(),xr-spatial-tracking=*"
            }
        ],
        "tlsOk": true,
        "status": "warn",
        "statusLabel": "Uyarı",
        "detail": "Let's Encrypt · 88 gün · TLSv1.3 · HTTP/3"
    },
    "propagation": {
        "error": null,
        "ttl": 3600,
        "type": "A",
        "expected": [
            "13.56.33.8"
        ],
        "rows": [
            {
                "name": "Google",
                "ip": "8.8.8.8",
                "loc": "Global",
                "ms": 152.4,
                "status": "fresh",
                "label": "Güncel",
                "answer": "13.56.33.8"
            },
            {
                "name": "Cloudflare",
                "ip": "1.1.1.1",
                "loc": "Global",
                "ms": 2.8,
                "status": "fresh",
                "label": "Güncel",
                "answer": "13.56.33.8"
            },
            {
                "name": "Quad9",
                "ip": "9.9.9.9",
                "loc": "Global",
                "ms": 190.4,
                "status": "fresh",
                "label": "Güncel",
                "answer": "13.56.33.8"
            },
            {
                "name": "OpenDNS",
                "ip": "208.67.222.222",
                "loc": "Global",
                "ms": 441.4,
                "status": "fresh",
                "label": "Güncel",
                "answer": "13.56.33.8"
            },
            {
                "name": "Türk Telekom",
                "ip": "195.175.39.39",
                "loc": "Türkiye",
                "ms": 272.9,
                "status": "fresh",
                "label": "Güncel",
                "answer": "13.56.33.8"
            },
            {
                "name": "AdGuard",
                "ip": "94.140.14.14",
                "loc": "Global",
                "ms": 471.7,
                "status": "fresh",
                "label": "Güncel",
                "answer": "13.56.33.8"
            },
            {
                "name": "Control D",
                "ip": "76.76.2.0",
                "loc": "Global",
                "ms": 171.3,
                "status": "fresh",
                "label": "Güncel",
                "answer": "13.56.33.8"
            },
            {
                "name": "Hurricane Electric",
                "ip": "74.82.42.42",
                "loc": "ABD",
                "ms": 264.1,
                "status": "fresh",
                "label": "Güncel",
                "answer": "13.56.33.8"
            },
            {
                "name": "CleanBrowsing",
                "ip": "185.228.168.9",
                "loc": "Global",
                "ms": 161.6,
                "status": "fresh",
                "label": "Güncel",
                "answer": "13.56.33.8"
            },
            {
                "name": "Yandex",
                "ip": "77.88.8.8",
                "loc": "Rusya",
                "ms": 318.4,
                "status": "fresh",
                "label": "Güncel",
                "answer": "13.56.33.8"
            },
            {
                "name": "Level3",
                "ip": "4.2.2.1",
                "loc": "ABD",
                "ms": 187.3,
                "status": "fresh",
                "label": "Güncel",
                "answer": "13.56.33.8"
            },
            {
                "name": "Neustar UltraDNS",
                "ip": "64.6.64.6",
                "loc": "ABD",
                "ms": 138.6,
                "status": "fresh",
                "label": "Güncel",
                "answer": "13.56.33.8"
            }
        ],
        "counts": {
            "fresh": 12,
            "stale": 0,
            "empty": 0,
            "timeout": 0
        },
        "responding": 12,
        "pct": 100,
        "ms": 473
    },
    "summary": {
        "error": null,
        "checks": [
            {
                "key": "whois",
                "label": "WHOIS",
                "status": "ok",
                "statusLabel": "Geçerli",
                "detail": "TurnCommerce, Inc. DBA NameBright.com · bitiş 02.12.2026 (43 gün)",
                "findings": [],
                "data": {
                    "found": true,
                    "days": 43,
                    "locked": true,
                    "reason": null,
                    "name": "fortext.com",
                    "registrar": "TurnCommerce, Inc. DBA NameBright.com",
                    "status": [
                        "client transfer prohibited"
                    ],
                    "registered": "2000-12-02",
                    "expires": "2026-12-02",
                    "changed": "2025-11-20",
                    "nameservers": [
                        "ns1.brandbucket.com",
                        "ns2.brandbucket.com"
                    ],
                    "dnssec": false
                }
            },
            {
                "key": "spf",
                "label": "SPF",
                "status": "ok",
                "statusLabel": "Geçerli",
                "detail": "v=spf1 -all · 0/10 DNS araması",
                "findings": [],
                "data": {
                    "record": "v=spf1 -all",
                    "lookups": 0,
                    "all": "-all",
                    "chain": []
                }
            },
            {
                "key": "dkim",
                "label": "DKIM",
                "status": "warn",
                "statusLabel": "Bulunamadı",
                "detail": "12 yaygın selector denendi",
                "findings": [
                    {
                        "level": "warn",
                        "code": "dkim-missing",
                        "title": "Yaygın selector'larda DKIM kaydı bulunamadı",
                        "text": "E-posta sağlayıcınız farklı bir selector kullanıyor olabilir. DKIM yoksa gönderdiğiniz e-postalar imzasız gider ve DMARC daha kolay başarısız olur.",
                        "fix": null
                    }
                ],
                "data": {
                    "selectors": [
                        "default",
                        "google",
                        "selector1",
                        "selector2",
                        "k1",
                        "k2",
                        "mail",
                        "dkim",
                        "s1",
                        "s2",
                        "smtp",
                        "mx"
                    ]
                }
            },
            {
                "key": "dmarc",
                "label": "DMARC",
                "status": "err",
                "statusLabel": "Yok",
                "detail": "DMARC kaydı bulunamadı",
                "findings": [
                    {
                        "level": "err",
                        "code": "dmarc-missing",
                        "title": "DMARC kaydı yok",
                        "text": "SPF/DKIM başarısız olan sahte e-postalar için alıcılara ne yapacakları söylenmiyor. _dmarc TXT kaydı ekleyin.",
                        "fix": "_dmarc.fortext.com TXT \"v=DMARC1; p=quarantine; rua=mailto:dmarc@fortext.com\""
                    }
                ],
                "data": []
            },
            {
                "key": "mta-sts",
                "label": "MTA-STS",
                "status": "neutral",
                "statusLabel": "Yok",
                "detail": "Kayıt yok (isteğe bağlı; SMTP şifrelemesini zorunlu kılar)",
                "findings": [
                    {
                        "level": "info",
                        "code": "mtasts-missing",
                        "title": "MTA-STS yok",
                        "text": "Gelen e-postalarda TLS zorunlu değil; ortadaki adam saldırısına açık. İsteğe bağlı ama önerilir.",
                        "fix": "_mta-sts.fortext.com TXT \"v=STSv1; id=202610191246\""
                    }
                ],
                "data": []
            },
            {
                "key": "bimi",
                "label": "BIMI",
                "status": "neutral",
                "statusLabel": "Yok",
                "detail": "Kayıt yok (isteğe bağlı; gelen kutusunda logo gösterir)",
                "findings": [],
                "data": []
            },
            {
                "key": "dnssec",
                "label": "DNSSEC",
                "status": "warn",
                "statusLabel": "İmzasız",
                "detail": "DS kaydı yok · bölge imzalanmamış",
                "findings": [
                    {
                        "level": "warn",
                        "code": "dnssec-unsigned",
                        "title": "DNSSEC etkin değil",
                        "text": "Kayıtlar imzalı değil; sahte DNS yanıtları (önbellek zehirleme) tespit edilemez. DNS sağlayıcınızda DNSSEC'i açıp DS kaydını alan adı kayıt firmanıza girin.",
                        "fix": null
                    }
                ],
                "data": {
                    "steps": [
                        {
                            "zone": ". (kök)",
                            "keys": "KSK 20326, 38696 · imzalar geçerli",
                            "status": "ok",
                            "label": "Güven kökü"
                        },
                        {
                            "zone": "com",
                            "keys": "DS → DNSKEY 19718 · imzalar geçerli",
                            "status": "ok",
                            "label": "Doğrulandı"
                        },
                        {
                            "zone": "fortext.com",
                            "keys": "DS yok",
                            "status": "unsigned",
                            "label": "İmzasız"
                        }
                    ],
                    "algorithm": null,
                    "expires": null,
                    "secure": false
                }
            },
            {
                "key": "ns",
                "label": "Nameserver",
                "status": "warn",
                "statusLabel": "Tek ağ",
                "detail": "2 sunucu · 1 farklı ağ (ASN) · seri numaraları eşleşiyor",
                "findings": [
                    {
                        "level": "warn",
                        "code": "ns-single-asn",
                        "title": "Tüm nameserver'lar aynı ağda (AS16509)",
                        "text": "O ağda kesinti olursa alan adı erişilemez. Farklı bir sağlayıcıda ikincil nameserver ekleyin.",
                        "fix": null
                    }
                ],
                "data": {
                    "servers": [
                        {
                            "host": "ns1.brandbucket.com",
                            "ip": "54.241.53.41",
                            "asn": 16509,
                            "holder": "AMAZON-02 - Amazon.com, Inc.",
                            "loc": "San Jose, US",
                            "ms": 186.1,
                            "serial": 2024030502,
                            "status": "ok",
                            "statusLabel": "Yetkili",
                            "w": 100
                        },
                        {
                            "host": "ns2.brandbucket.com",
                            "ip": "18.221.52.246",
                            "asn": 16509,
                            "holder": "AMAZON-02 - Amazon.com, Inc.",
                            "loc": "Columbus, US",
                            "ms": 142.9,
                            "serial": 2024030502,
                            "status": "ok",
                            "statusLabel": "Yetkili",
                            "w": 77
                        }
                    ],
                    "asns": [
                        16509
                    ]
                }
            },
            {
                "key": "mx",
                "label": "MX",
                "status": "info",
                "statusLabel": "Yok",
                "detail": "MX kaydı yok; e-posta A kaydına düşer ya da alınmaz",
                "findings": [
                    {
                        "level": "info",
                        "code": "mx-missing",
                        "title": "MX kaydı yok",
                        "text": "Bu alan adına e-posta gönderilirse alıcılar A kaydını dener. E-posta kullanmıyorsanız \"0 .\" (null MX) ekleyin.",
                        "fix": "fortext.com MX 0 ."
                    }
                ],
                "data": []
            },
            {
                "key": "caa",
                "label": "CAA",
                "status": "warn",
                "statusLabel": "Yok",
                "detail": "Her sertifika otoritesi bu alan adı için sertifika verebilir",
                "findings": [
                    {
                        "level": "warn",
                        "code": "caa-missing",
                        "title": "CAA kaydı yok",
                        "text": "Her sertifika otoritesi bu alan adı için SSL sertifikası verebilir. Kullandığınız CA'yı belirtin.",
                        "fix": "fortext.com CAA 0 issue \"letsencrypt.org\""
                    }
                ],
                "data": []
            },
            {
                "key": "soa",
                "label": "SOA",
                "status": "ok",
                "statusLabel": "Geçerli",
                "detail": "seri 2024030502 · refresh 10800 · retry 3600 · expire 604800 · minimum 3600",
                "findings": [],
                "data": {
                    "mname": "ns1.brandbucket.com",
                    "rname": "mail.fortext.com",
                    "serial": 2024030502,
                    "refresh": 10800,
                    "retry": 3600,
                    "expire": 604800,
                    "minimum": 3600
                }
            },
            {
                "key": "ssl",
                "label": "SSL/HTTP",
                "status": "warn",
                "statusLabel": "Uyarı",
                "detail": "Let's Encrypt · 88 gün · TLSv1.3 · HTTP/3",
                "findings": [
                    {
                        "level": "warn",
                        "code": "http-hsts",
                        "title": "HSTS başlığı yok",
                        "text": "Tarayıcı sonraki ziyaretlerde HTTPS'i zorunlu kılamaz (SSL stripping). Başlığı ekleyin.",
                        "fix": "Strict-Transport-Security: max-age=31536000; includeSubDomains"
                    }
                ],
                "data": {
                    "ip": "13.56.33.8",
                    "issuer": "Let's Encrypt",
                    "subject": "fortext.com",
                    "sans": 1,
                    "chain": 4,
                    "validTo": "15.01.2027",
                    "days": 88,
                    "verified": true,
                    "protocol": "TLSv1.3",
                    "cipher": "TLS_AES_256_GCM_SHA384",
                    "httpVersion": "HTTP/3",
                    "h3": "var",
                    "redirect": true,
                    "httpStatus": 301,
                    "httpsStatus": 403,
                    "server": "cloudflare",
                    "headers": [
                        {
                            "key": "strict-transport-security",
                            "label": "HSTS",
                            "present": false,
                            "value": null
                        },
                        {
                            "key": "content-security-policy",
                            "label": "CSP",
                            "present": true,
                            "value": "default-src 'none'; script-src 'nonce-qz1GoWSwod9ZU8L6C6NXZW' 'unsafe-eval' https://challenges.cloudflare.com; script-src-attr 'none'; style-src 'unsafe-inline'; img-src 'self' https://challenges.cloudflare.com; connect-src 'self' https://challenges.cloudflare.com; frame-src 'self' https://challenges.cloudflare.com blob:; child-src 'self' https://challenges.cloudflare.com blob:; worker-src blob:; form-action http: https:; base-uri 'self'"
                        },
                        {
                            "key": "x-content-type-options",
                            "label": "X-Content-Type-Options",
                            "present": true,
                            "value": "nosniff"
                        },
                        {
                            "key": "x-frame-options",
                            "label": "X-Frame-Options",
                            "present": true,
                            "value": "SAMEORIGIN"
                        },
                        {
                            "key": "referrer-policy",
                            "label": "Referrer-Policy",
                            "present": true,
                            "value": "same-origin"
                        },
                        {
                            "key": "permissions-policy",
                            "label": "Permissions-Policy",
                            "present": true,
                            "value": "accelerometer=(),camera=(),clipboard-read=(),clipboard-write=(),geolocation=(),gyroscope=(),hid=(),magnetometer=(),microphone=(),payment=(),publickey-credentials-get=(),screen-wake-lock=(),serial=(),sync-xhr=(),usb=(),xr-spatial-tracking=*"
                        }
                    ],
                    "tlsOk": true
                }
            }
        ],
        "findings": [
            {
                "level": "err",
                "code": "dmarc-missing",
                "title": "DMARC kaydı yok",
                "text": "SPF/DKIM başarısız olan sahte e-postalar için alıcılara ne yapacakları söylenmiyor. _dmarc TXT kaydı ekleyin.",
                "fix": "_dmarc.fortext.com TXT \"v=DMARC1; p=quarantine; rua=mailto:dmarc@fortext.com\""
            },
            {
                "level": "warn",
                "code": "dkim-missing",
                "title": "Yaygın selector'larda DKIM kaydı bulunamadı",
                "text": "E-posta sağlayıcınız farklı bir selector kullanıyor olabilir. DKIM yoksa gönderdiğiniz e-postalar imzasız gider ve DMARC daha kolay başarısız olur.",
                "fix": null
            },
            {
                "level": "warn",
                "code": "dnssec-unsigned",
                "title": "DNSSEC etkin değil",
                "text": "Kayıtlar imzalı değil; sahte DNS yanıtları (önbellek zehirleme) tespit edilemez. DNS sağlayıcınızda DNSSEC'i açıp DS kaydını alan adı kayıt firmanıza girin.",
                "fix": null
            },
            {
                "level": "warn",
                "code": "ns-single-asn",
                "title": "Tüm nameserver'lar aynı ağda (AS16509)",
                "text": "O ağda kesinti olursa alan adı erişilemez. Farklı bir sağlayıcıda ikincil nameserver ekleyin.",
                "fix": null
            },
            {
                "level": "warn",
                "code": "caa-missing",
                "title": "CAA kaydı yok",
                "text": "Her sertifika otoritesi bu alan adı için SSL sertifikası verebilir. Kullandığınız CA'yı belirtin.",
                "fix": "fortext.com CAA 0 issue \"letsencrypt.org\""
            },
            {
                "level": "warn",
                "code": "http-hsts",
                "title": "HSTS başlığı yok",
                "text": "Tarayıcı sonraki ziyaretlerde HTTPS'i zorunlu kılamaz (SSL stripping). Başlığı ekleyin.",
                "fix": "Strict-Transport-Security: max-age=31536000; includeSubDomains"
            },
            {
                "level": "info",
                "code": "mtasts-missing",
                "title": "MTA-STS yok",
                "text": "Gelen e-postalarda TLS zorunlu değil; ortadaki adam saldırısına açık. İsteğe bağlı ama önerilir.",
                "fix": "_mta-sts.fortext.com TXT \"v=STSv1; id=202610191246\""
            },
            {
                "level": "info",
                "code": "mx-missing",
                "title": "MX kaydı yok",
                "text": "Bu alan adına e-posta gönderilirse alıcılar A kaydını dener. E-posta kullanmıyorsanız \"0 .\" (null MX) ekleyin.",
                "fix": "fortext.com MX 0 ."
            }
        ],
        "counts": {
            "ok": 6,
            "warn": 5,
            "err": 1,
            "fail": 0
        },
        "score": {
            "score": 64,
            "grade": "C",
            "word": "Orta",
            "tone": "warn",
            "unchecked": []
        },
        "providers": {
            "web": "Amazon.com, Inc.",
            "mail": null,
            "dns": "brandbucket.com"
        },
        "totalMs": 5012,
        "at": "19.10.2026 12:47",
        "ms": 264
    }
}
