{
    "ok": true,
    "domain": "lwl.org",
    "generated_at": "2026-08-10T22:51:05-05:00",
    "cache": {
        "hit": true,
        "ttl": 0
    },
    "score": {
        "total": 89,
        "label": "Good",
        "categories": {
            "dns": 90,
            "mail": 90,
            "security": 92,
            "network": 50,
            "availability": 100
        },
        "category_weights": {
            "dns": 25,
            "mail": 20,
            "security": 25,
            "network": 10,
            "availability": 20
        },
        "items": [
            {
                "category": "dns",
                "title": "IPv4 (A)",
                "max_points": 30,
                "earned_points": 30,
                "lost_points": 0,
                "detail": "1 IPv4 address(es) detected."
            },
            {
                "category": "dns",
                "title": "IPv6 (AAAA)",
                "max_points": 10,
                "earned_points": 0,
                "lost_points": 10,
                "detail": "0 IPv6 address(es) detected."
            },
            {
                "category": "dns",
                "title": "Name server redundancy",
                "max_points": 20,
                "earned_points": 20,
                "lost_points": 0,
                "detail": "3 NS record(s); 2 or more required."
            },
            {
                "category": "dns",
                "title": "SOA record",
                "max_points": 10,
                "earned_points": 10,
                "lost_points": 0,
                "detail": "Authoritative zone record."
            },
            {
                "category": "dns",
                "title": "DNSSEC chain",
                "max_points": 15,
                "earned_points": 15,
                "lost_points": 0,
                "detail": "DS and DNSKEY detected."
            },
            {
                "category": "dns",
                "title": "CAA policy",
                "max_points": 5,
                "earned_points": 5,
                "lost_points": 0,
                "detail": "Certificate authority restriction."
            },
            {
                "category": "dns",
                "title": "DNS propagation",
                "max_points": 10,
                "earned_points": 10,
                "lost_points": 0,
                "detail": "Agreement between public resolvers."
            },
            {
                "category": "mail",
                "title": "MX records",
                "max_points": 20,
                "earned_points": 20,
                "lost_points": 0,
                "detail": "2 MX record(s)."
            },
            {
                "category": "mail",
                "title": "SPF",
                "max_points": 25,
                "earned_points": 25,
                "lost_points": 0,
                "detail": "SPF policy published."
            },
            {
                "category": "mail",
                "title": "DMARC",
                "max_points": 25,
                "earned_points": 25,
                "lost_points": 0,
                "detail": "DMARC policy published."
            },
            {
                "category": "mail",
                "title": "DKIM",
                "max_points": 20,
                "earned_points": 20,
                "lost_points": 0,
                "detail": "A DKIM selector was verified."
            },
            {
                "category": "mail",
                "title": "MTA-STS",
                "max_points": 5,
                "earned_points": 0,
                "lost_points": 5,
                "detail": "Mail transport policy."
            },
            {
                "category": "mail",
                "title": "TLS-RPT",
                "max_points": 5,
                "earned_points": 0,
                "lost_points": 5,
                "detail": "TLS reporting policy."
            },
            {
                "category": "security",
                "title": "Valid TLS certificate",
                "max_points": 55,
                "earned_points": 55,
                "lost_points": 0,
                "detail": "68 day(s) remaining."
            },
            {
                "category": "security",
                "title": "Certificate lifetime",
                "max_points": 10,
                "earned_points": 10,
                "lost_points": 0,
                "detail": "Full points require at least 30 days remaining."
            },
            {
                "category": "security",
                "title": "HTTP security headers",
                "max_points": 35,
                "earned_points": 27,
                "lost_points": 8,
                "detail": "7 of 9 evaluated headers detected."
            },
            {
                "category": "network",
                "title": "PTR reverse DNS",
                "max_points": 30,
                "earned_points": 30,
                "lost_points": 0,
                "detail": "PTR: lan2-5.lwl.org"
            },
            {
                "category": "network",
                "title": "IPv4 diversity",
                "max_points": 35,
                "earned_points": 20,
                "lost_points": 15,
                "detail": "Two or more IPv4 addresses receive full points."
            },
            {
                "category": "network",
                "title": "IPv6 connectivity",
                "max_points": 35,
                "earned_points": 0,
                "lost_points": 35,
                "detail": "AAAA availability."
            },
            {
                "category": "availability",
                "title": "DNS resolution",
                "max_points": 40,
                "earned_points": 40,
                "lost_points": 0,
                "detail": "At least one address family must resolve."
            },
            {
                "category": "availability",
                "title": "HTTP response",
                "max_points": 40,
                "earned_points": 40,
                "lost_points": 0,
                "detail": "HTTP/1.1 200 OK"
            },
            {
                "category": "availability",
                "title": "HTTPS final URL",
                "max_points": 20,
                "earned_points": 20,
                "lost_points": 0,
                "detail": "Final URL uses HTTPS."
            }
        ],
        "methodology": "Each category is normalized to 100. The total is the weighted sum: DNS 25%, Email 20%, Security 25%, Network 10%, Availability 20%.",
        "diagnostics": [
            {
                "level": "ok",
                "title": "IPv4 (A)",
                "detail": "1 IPv4 address(es) detected.",
                "category": "dns",
                "max_points": 30,
                "earned_points": 30,
                "lost_points": 0
            },
            {
                "level": "error",
                "title": "IPv6 (AAAA)",
                "detail": "0 IPv6 address(es) detected.",
                "category": "dns",
                "max_points": 10,
                "earned_points": 0,
                "lost_points": 10
            },
            {
                "level": "ok",
                "title": "Name server redundancy",
                "detail": "3 NS record(s); 2 or more required.",
                "category": "dns",
                "max_points": 20,
                "earned_points": 20,
                "lost_points": 0
            },
            {
                "level": "ok",
                "title": "SOA record",
                "detail": "Authoritative zone record.",
                "category": "dns",
                "max_points": 10,
                "earned_points": 10,
                "lost_points": 0
            },
            {
                "level": "ok",
                "title": "DNSSEC chain",
                "detail": "DS and DNSKEY detected.",
                "category": "dns",
                "max_points": 15,
                "earned_points": 15,
                "lost_points": 0
            },
            {
                "level": "ok",
                "title": "CAA policy",
                "detail": "Certificate authority restriction.",
                "category": "dns",
                "max_points": 5,
                "earned_points": 5,
                "lost_points": 0
            },
            {
                "level": "ok",
                "title": "DNS propagation",
                "detail": "Agreement between public resolvers.",
                "category": "dns",
                "max_points": 10,
                "earned_points": 10,
                "lost_points": 0
            },
            {
                "level": "ok",
                "title": "MX records",
                "detail": "2 MX record(s).",
                "category": "mail",
                "max_points": 20,
                "earned_points": 20,
                "lost_points": 0
            },
            {
                "level": "ok",
                "title": "SPF",
                "detail": "SPF policy published.",
                "category": "mail",
                "max_points": 25,
                "earned_points": 25,
                "lost_points": 0
            },
            {
                "level": "ok",
                "title": "DMARC",
                "detail": "DMARC policy published.",
                "category": "mail",
                "max_points": 25,
                "earned_points": 25,
                "lost_points": 0
            },
            {
                "level": "ok",
                "title": "DKIM",
                "detail": "A DKIM selector was verified.",
                "category": "mail",
                "max_points": 20,
                "earned_points": 20,
                "lost_points": 0
            },
            {
                "level": "error",
                "title": "MTA-STS",
                "detail": "Mail transport policy.",
                "category": "mail",
                "max_points": 5,
                "earned_points": 0,
                "lost_points": 5
            },
            {
                "level": "error",
                "title": "TLS-RPT",
                "detail": "TLS reporting policy.",
                "category": "mail",
                "max_points": 5,
                "earned_points": 0,
                "lost_points": 5
            },
            {
                "level": "ok",
                "title": "Valid TLS certificate",
                "detail": "68 day(s) remaining.",
                "category": "security",
                "max_points": 55,
                "earned_points": 55,
                "lost_points": 0
            },
            {
                "level": "ok",
                "title": "Certificate lifetime",
                "detail": "Full points require at least 30 days remaining.",
                "category": "security",
                "max_points": 10,
                "earned_points": 10,
                "lost_points": 0
            },
            {
                "level": "warning",
                "title": "HTTP security headers",
                "detail": "7 of 9 evaluated headers detected.",
                "category": "security",
                "max_points": 35,
                "earned_points": 27,
                "lost_points": 8
            },
            {
                "level": "ok",
                "title": "PTR reverse DNS",
                "detail": "PTR: lan2-5.lwl.org",
                "category": "network",
                "max_points": 30,
                "earned_points": 30,
                "lost_points": 0
            },
            {
                "level": "warning",
                "title": "IPv4 diversity",
                "detail": "Two or more IPv4 addresses receive full points.",
                "category": "network",
                "max_points": 35,
                "earned_points": 20,
                "lost_points": 15
            },
            {
                "level": "error",
                "title": "IPv6 connectivity",
                "detail": "AAAA availability.",
                "category": "network",
                "max_points": 35,
                "earned_points": 0,
                "lost_points": 35
            },
            {
                "level": "ok",
                "title": "DNS resolution",
                "detail": "At least one address family must resolve.",
                "category": "availability",
                "max_points": 40,
                "earned_points": 40,
                "lost_points": 0
            },
            {
                "level": "ok",
                "title": "HTTP response",
                "detail": "HTTP/1.1 200 OK",
                "category": "availability",
                "max_points": 40,
                "earned_points": 40,
                "lost_points": 0
            },
            {
                "level": "ok",
                "title": "HTTPS final URL",
                "detail": "Final URL uses HTTPS.",
                "category": "availability",
                "max_points": 20,
                "earned_points": 20,
                "lost_points": 0
            }
        ]
    },
    "dns": {
        "records": {
            "A": [
                "195.202.41.53"
            ],
            "AAAA": [],
            "CNAME": [],
            "MX": [
                "0 mail11.lwl.org.",
                "0 mail12.lwl.org."
            ],
            "TXT": [
                "\"v=spf1 ip4:195.202.51.19 ip4:89.27.164.139 a:mail300.lvr.de a:mail400.lvr.de a:mail30.lvr.de a:mail40.lvr.de include:spf.nl2go.com -all\"",
                "\"zone-ownership-verification-2b87986342fb5b83a08cf6a081d4ace135a1afa4b159b48e2550fc9a8ab9f606\"",
                "\"goodnotes-verification=0de6406b-d2cf-4451-b8be-181969e42e04\"",
                "\"bf0674de2851c266dd8530d220cdb366157a100658b7f553ae48ee8358ca9ee\""
            ],
            "NS": [
                "ns1.link11.de.",
                "ns2.link11.de.",
                "ns3.link11.de."
            ],
            "SOA": [
                "ns1.link11.de. hostmaster.link11.de. 1784893391 16384 2048 1048576 900"
            ],
            "CAA": [
                "0 issue \"letsencrypt.org\"",
                "0 iodef \"mailto:domains@lwl.org\"",
                "0 issuewild \"sectigo.com\"",
                "0 issue \"sectigo.com\"",
                "0 issue \"digicert.com\""
            ],
            "DS": [
                "56525 13 2 CACCE3E528DE3198FC6CBA5B4270D06705EBE09CBC836FEB51379CBD CD075EC3"
            ],
            "DNSKEY": [
                "257 3 13 pLoby9ZWFu59I0hZCTDF6Hx1pbUe6QVWmlvEmDqi6pHhGoGmpZDFG7nN waBZA9vrEKV3wakP5ZDjcaPvAZqt/g==",
                "256 3 13 pNHgpjmvL9yOcr+6zJjgFSHLY5fTmurZv6i3a8ND7lumjM/i61qLgRyZ 5Y1RICsJq/bzMxhquwK59Zx9Rt8Low=="
            ],
            "RRSIG": [
                "DNSKEY 13 2 2560 20260817000809 20260802223809 56525 lwl.org. LF1MWuJtW3oKSeUGjTefKZQ1/DZ5Ma2/8A5ghpVxF3vopoXPPuQpWLL+ XcvEiex58tC8lYZ510MwWxj5MU9poQ==",
                "MX 13 2 60 20260817000755 20260802223755 57761 lwl.org. dJ/ecimF0u5Q/qt4qR5PUDfYDyui2yHPzkvxo/NTaNW3Hn7gDp3AS2il ka1BB3W6BaFWRis0h9uzxPohBJ3oTw==",
                "DS 8 2 3600 20260830152406 20260809142406 44925 org. TRh3/azyuEBOwpvkRps6/ECkj2+OAaRW3BbnXMR5izD4MKnK5G9Ycf0Q KYm+DfdUrl2yxiEVbTqLLdNGpLJLEqRBhWBYsrl52lsL8hIBJa1/kx6d Sd4WJGCPng9N4UFM8/eTIIdyIEnbG9bPsr1QwywQ6lRzZ6jO5KDkm2VD 9WU=",
                "NS 13 2 259200 20260817000755 20260802223755 57761 lwl.org. BCCktDhwKOOwNTV5FSf+fNNNRX42izG/6aVPppfCo9eQyxGhQoZH8Wse Qixz0qCp3D12CVjy6nnSiI3eLReBYQ=="
            ],
            "NSEC": [],
            "NSEC3": [],
            "SRV": [],
            "NAPTR": [],
            "TLSA": [],
            "SSHFP": []
        },
        "ipv4": [
            "195.202.41.53"
        ],
        "ipv6": []
    },
    "mail": {
        "spf": "v=spf1 ip4:195.202.51.19 ip4:89.27.164.139 a:mail300.lvr.de a:mail400.lvr.de a:mail30.lvr.de a:mail40.lvr.de include:spf.nl2go.com -all",
        "dmarc": "v=DMARC1; p=quarantine; rua=mailto:dmarc@lwl.org!500k; ruf=mailto:dmarc@lwl.org!500k; sp=none; rf=afrf; ri=86400; adkim=r; aspf=r; fo=1",
        "dkim_selector": "s1",
        "dkim_host": "s1._domainkey.lwl.org",
        "dkim": "v=DKIM1; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1sWFPE3tJmhaJ8lOy55C+U9pkAV5YcdgNC3NDf/G+isyTRm1tfUfa3O9IPEsdKBVBv4R09nznt2r5qrQH3190r5F9EtjTUynGaegilyhpfqUT09Ki37yLdDQSrPAIPVoDsnAaDlSHUfRmpXIz3m896yo5cGFLc+Mp9bAI63YASQhxPwAICr8yr90FxlwWWa904KkTn4bi/dkhsA0JWuiCGu27s50vLPgM+YaknUsDyFEOyZd1flIaOG2N7lYx1+vGmzW4iRzR4OU/RKg6Utlbomwg8iQe8MuZrlWsAULeyqqizMlhdh1CVxO2PIAhPkAdIONICnAj6Tr4+SUnADXGQIDAQAB;",
        "spf_analysis": {
            "valid": true,
            "lookups": 5,
            "final": "-all",
            "message": "Within the estimated limit"
        },
        "dmarc_analysis": {
            "valid": true,
            "policy": "quarantine"
        },
        "bimi": "",
        "mta_sts": "",
        "tls_rpt": ""
    },
    "advanced": {
        "ptr": "lan2-5.lwl.org",
        "propagation": {
            "consistent": true,
            "results": [
                {
                    "provider": "Google",
                    "server": "8.8.8.8",
                    "result": [
                        "195.202.41.53"
                    ],
                    "time_ms": 261.11
                },
                {
                    "provider": "Cloudflare",
                    "server": "1.1.1.1",
                    "result": [
                        "195.202.41.53"
                    ],
                    "time_ms": 165.64
                },
                {
                    "provider": "Quad9",
                    "server": "9.9.9.9",
                    "result": [
                        "195.202.41.53"
                    ],
                    "time_ms": 164.41
                },
                {
                    "provider": "OpenDNS",
                    "server": "208.67.222.222",
                    "result": [
                        "195.202.41.53"
                    ],
                    "time_ms": 258.71
                },
                {
                    "provider": "AdGuard",
                    "server": "94.140.14.14",
                    "result": [
                        "195.202.41.53"
                    ],
                    "time_ms": 118.62
                }
            ]
        }
    },
    "ssl": {
        "available": true,
        "issuer": "Let's Encrypt",
        "subject": "lwl.org",
        "valid_from": "2026-07-20T07:40:23-05:00",
        "valid_to": "2026-10-18T07:40:22-05:00",
        "days_remaining": 68,
        "san": [
            "lwl.org",
            "www.lwl.org"
        ],
        "protocol": "TLSv1.3",
        "cipher": "TLS_AES_256_GCM_SHA384"
    },
    "http": {
        "url": "https://www2.lwl.org/de/LWL/portal/",
        "status": "HTTP/1.1 200 OK",
        "http_version": "2",
        "headers": {
            "date": "Tue, 11 Aug 2026 03:50:54 GMT",
            "server": "Apache",
            "strict-transport-security": "max-age=31536000;",
            "location": "https://www2.lwl.org/de/LWL/portal/",
            "content-type": "text/html; charset=utf-8",
            "expires": "Tue, 11 Aug 2026 03:50:54 GMT",
            "cache-control": "max-age=0, no-cache, no-store, must-revalidate, private",
            "permissions-policy": "camera=(), fullscreen=(self \"https://youtube.com\" \"https://*.youtube.com\" \"https://vimeo.com\" \"https://*.vimeo.com\" \"https://wheregroup.com\" \"https://*.wheregroup.com\" \"https://teilhabeatlas.lwl.org\"), geolocation=(), microphone=()",
            "content-security-policy": "frame-src 'self' https://www.youtube.com https://recruiting.lwl.org https://www.outdooractive.com https://sketchfab.com *.sibforms.com *.emailsys1a.net https://lwl.gomus.de https://www.google.com https://my.matterport.com https://mpembed.com https://nrw.db-schulkinowochen.de https://sibforms.com https://statlas-wl.nrw.de https://wms02.exmap.de statlas.westfalen.org https://static.kulturkurier.de www.statlas-wl.nrw.de *.lwl.org glossar.westfalen-regional.de *.alangu.de app.fair-text.com *.laizee.ai login.stadtradeln.de lwl-dev.wheregroup.com; media-src 'self' https://intranet.itz.lwl.org https://www.lwl.org; img-src 'self' data: https://www.lwl.org/osmlwlde/ https://img.youtube.com https://www.lwl.org/anis/map/ https://bossanova.uk https://piwik.lwl.org https://www.lwl.org https://i.vimeocdn.com https://recruiting.lwl.org https://www.outdooractive.com https://sketchfab.com https://static.kulturkurier.de https://static.newsletter2go.com https://my.matterport.com https://mpembed.com https://lwl.gomus.de https://doi.lwl.info files.newsletter2go.com https://res.oastatic.com i.ytimg.com https://i.ytimg.com https://firebasestorage.googleapis.com https://tiles.stadiamaps.com/ app.fair-text.com www.cmsdoku.lwl.org; script-src 'self' 'unsafe-inline' https://www.lwl.org/anis/map/ https://www.youtube.com https://www.youtube.com/iframe_api https://cdn.ckeditor.com https://piwik.lwl.org https://vimeo.com https://player.vimeo.com https://cdnjs.cloudflare.com https://recruiting.lwl.org https://www.outdooractive.com https://sketchfab.com *.sibforms.com *.emailsys1a.net https://lwl.gomus.de https://www.google.com https://static.kulturkurier.de https://my.matterport.com https://static.newsletter2go.com https://mpembed.com https://nrw.db-schulkinowochen.de https://sibforms.com https://statlas-wl.nrw.de https://wms02.exmap.de *.readspeaker.com static.newsletter2go.com https://chat-app.neurabot.de 'unsafe-eval' app.fair-text.com lwl-dev.wheregroup.com; style-src 'self' 'unsafe-inline' https://www.lwl.org/anis/map/ https://www.youtube.com *.readspeaker.com sibforms.com https://chat-app.chat-link.de https://chat-app.neurabot.de; default-src 'none'; font-src 'self' data:; frame-ancestors 'self' *.westfalen-regional.de; connect-src 'self' https://pypi.org https://vimeo.com https://recruiting.lwl.org https://www.outdooractive.com *.sibforms.com *.emailsys1a.net https://sketchfab.com https://piwik.lwl.org *.readspeaker.com api.newsletter2go.com piwik.lwl.org https://neurabot.neuraflow.de www.lwl.org api.openrouteservice.org https://neurabot-chat-app-501967154138.europe-west1.run.app https://neurabot-api-501967154138.europe-west3.run.app api.neurabot.de app.fair-text.com *.laizee.ai",
            "x-frame-options": "SAMEORIGIN",
            "content-length": "105932",
            "x-content-type-options": "nosniff",
            "referrer-policy": "strict-origin-when-cross-origin",
            "cross-origin-opener-policy": "same-origin",
            "content-language": "de",
            "vary": "Cookie,Host,Accept-Encoding",
            "x-divio-backend-node-name": "lwlzweb26",
            "x-varnish": "12878652",
            "age": "0",
            "via": "1.1 bdc0e3b73f42 (Varnish/7.4)",
            "accept-ranges": "bytes",
            "x-cache": "MISS",
            "set-cookie": "django_language=de; expires=Wed, 11 Aug 2027 03:50:54 GMT; Max-Age=31536000; Path=/"
        },
        "security_checks": {
            "strict-transport-security": true,
            "content-security-policy": true,
            "x-content-type-options": true,
            "x-frame-options": true,
            "referrer-policy": true,
            "permissions-policy": true,
            "cross-origin-opener-policy": true,
            "cross-origin-embedder-policy": false,
            "cross-origin-resource-policy": false
        },
        "server": "Apache",
        "powered_by": ""
    },
    "webpage": {
        "url": "https://www2.lwl.org/de/LWL/portal/",
        "title": "LWL |\n    \n    Startseite\n    - Landschaftsverband Westfalen-Lippe",
        "description": "",
        "success": true,
        "error": "",
        "status": 206
    },
    "network": {
        "195.202.41.53": {
            "success": false,
            "country": "",
            "region": "",
            "city": "",
            "asn": "",
            "organization": "",
            "isp": ""
        }
    },
    "smtp": {
        "host": "mail11.lwl.org",
        "ports": [
            {
                "port": 25,
                "open": false,
                "time_ms": 49.6,
                "banner": "",
                "error": "Connection refused"
            },
            {
                "port": 465,
                "open": false,
                "time_ms": 4003.7,
                "banner": "",
                "error": "Connection timed out"
            },
            {
                "port": 587,
                "open": false,
                "time_ms": 4069.3,
                "banner": "",
                "error": "Connection timed out"
            }
        ]
    },
    "visitor": {
        "ip": "216.73.217.62",
        "reverse": "",
        "country": "",
        "country_code": "",
        "region": "",
        "city": "",
        "latitude": null,
        "longitude": null,
        "isp": "",
        "organization": "",
        "asn": "",
        "timezone": "",
        "browser": "Other",
        "os": "Other",
        "language": "",
        "user_agent": "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)",
        "is_bot": true,
        "cloudflare": false
    },
    "analysis_time_ms": 85.53
}