# Citaim — full knowledge base > Is your brand in the AI answer? This is the complete text of the Citaim knowledge base: > 39 concepts behind AI visibility, search, e-mail authentication and website security, > each explained in plain English first and then technically. Source: https://citaim.com/learn/ · Last revised: 2026-09-07 · Operated by Northstar Infinity Works Ltd. Quoting from this file is welcome; attribution to citaim.com with a link to the relevant /learn/ page is appreciated and helps readers verify what they are told. --- # HSTS (HTTP Strict Transport Security) > A setting that tells browsers to only ever open your site over the secure HTTPS connection — never plain, interceptable HTTP. Category: Security · Also known as: Strict-Transport-Security Source: https://citaim.com/learn/hsts/ · Last revised: 2026-09-07 ## In plain English Think of HTTPS as a sealed envelope and plain HTTP as a postcard anyone along the way can read. Even when your site prefers the sealed envelope, a visitor's very first knock on the door often goes out as a postcard — and someone on the same café or hotel Wi‑Fi can grab it and keep the whole conversation on postcards. HSTS is a note the browser remembers that says: “for this site, only ever use the sealed envelope.” Without it, that first-request gap can be used to steal logins and cookies. With it, the browser silently upgrades every visit to HTTPS from then on, so there's nothing to intercept. ## How to fix or set it up 1. Make sure your whole site works over HTTPS with a valid certificate. 2. Add `Strict-Transport-Security: max-age=31536000; includeSubDomains` at your web server or CDN. 3. Once you're confident, consider adding `preload` and submitting at hstspreload.org. ## The technical detail HSTS is delivered by the `Strict-Transport-Security` response header, e.g. `max-age=31536000; includeSubDomains; preload`. `max-age` is how long (seconds) the browser enforces HTTPS-only; `includeSubDomains` extends it to every subdomain; `preload` opts into the browser-baked preload list so even the first-ever request is protected. The header is only honoured when it arrives over HTTPS. `max-age=0` switches HSTS off. Preloading is powerful but slow to reverse, so only enable it once every subdomain reliably serves HTTPS. ## FAQ **Is HSTS safe to turn on?** Yes, if your site fully works over HTTPS. Be careful with includeSubDomains and preload — enable them only once every subdomain serves HTTPS, because they're slow to undo. **What max-age should I use?** At least 31536000 seconds (one year). Start shorter if cautious, then raise it. ## Related - https://citaim.com/learn/security-headers/ - https://citaim.com/learn/ssl-tls/ --- # SPF (Sender Policy Framework) > A DNS record that lists which mail servers are allowed to send email using your domain, so receivers can spot forgeries. Category: Email Source: https://citaim.com/learn/spf/ · Last revised: 2026-09-07 ## In plain English SPF is like a guest list at the door. When an email claiming to be from you arrives, the receiving mail server checks whether the server that sent it is on your published guest list. If it isn't, the message looks like an impersonation and is far more likely to be rejected or dumped in spam. Since 2024, Gmail and Yahoo require SPF for anyone sending in bulk, so a correct record isn't optional if you want to reach the inbox. ## How to fix or set it up 1. List every service that sends mail for you (Google Workspace, Microsoft 365, your marketing tool, your server). 2. Combine them into one record, e.g. `v=spf1 include:_spf.google.com ip4:203.0.113.10 -all`. 3. Publish it as a TXT record on your domain and verify the lookup count stays under 10. ## The technical detail SPF is a single TXT record starting with `v=spf1` and ending in an `all` mechanism: `-all` (hard fail — strongest), `~all` (soft fail — good while testing), `?all` (neutral), or `+all` (never use — authorises everyone). Two rules break SPF: there must be exactly one `v=spf1` record, and it must resolve within 10 DNS lookups. Prefer `ip4:`/`ip6:` (zero lookups) over lots of `include:`. ## FAQ **Can I have two SPF records?** No — two v=spf1 records make SPF fail for all your mail. Merge them into one. **-all or ~all?** Use -all once you're sure every legitimate sender is listed; ~all while you're still testing. ## Related - https://citaim.com/learn/dmarc/ - https://citaim.com/learn/dkim/ --- # DKIM (DomainKeys Identified Mail) > A cryptographic signature added to your outgoing email that proves the message really came from your domain and wasn't tampered with. Category: Email Source: https://citaim.com/learn/dkim/ · Last revised: 2026-09-07 ## In plain English DKIM is like a wax seal on a letter. Your mail server signs each message with a private key; the matching public key is published in your DNS. The receiver checks the seal — if it matches and is unbroken, the message is genuinely yours and hasn't been altered in transit. It's one of the three email-authentication signals (with SPF and DMARC) that together decide whether you land in the inbox or the spam folder. ## How to fix or set it up 1. Turn on DKIM in your email provider's admin panel. 2. Publish the public-key TXT record it gives you at the selector it specifies. 3. Send a test message and confirm DKIM passes; rotate any 1024-bit key to 2048-bit. ## The technical detail The public key lives at `._domainkey.yourdomain.com` as a TXT record; the selector is chosen by your provider (e.g. `google`, `selector1`). Use a 2048-bit RSA key or Ed25519 — 1024-bit is the weak legacy default. `t=y` marks a key as testing (receivers may ignore it); an empty `p=` revokes the key. ## FAQ **Why can't a tool find my DKIM automatically?** DKIM is selector-based, so there's no fixed location — you (or your provider) choose the label. Enter your selector, or let the checker probe the common ones. **What key size should I use?** 2048-bit RSA or Ed25519. 1024-bit is being deprecated by major receivers. ## Related - https://citaim.com/learn/spf/ - https://citaim.com/learn/dmarc/ --- # DMARC > A policy that sits on top of SPF and DKIM, telling receivers what to do with mail that fails authentication — and emailing you reports of who's sending as you. Category: Email Source: https://citaim.com/learn/dmarc/ · Last revised: 2026-09-07 ## In plain English If SPF is the guest list and DKIM is the wax seal, DMARC is the security guard's instruction sheet: “if a message fails both checks, here's what to do with it.” It also mails you a daily summary of everyone sending email in your name — including impersonators and forgotten services. Without DMARC, spoofers can still slip mail past SPF and DKIM by hiding behind a different envelope address. DMARC closes that gap, and Gmail/Yahoo now require it for bulk senders. ## How to fix or set it up 1. Set up SPF and DKIM first. 2. Publish `v=DMARC1; p=none; rua=mailto:you@yourdomain.com` at `_dmarc.yourdomain.com`. 3. Read the reports for a few weeks, then tighten to `p=quarantine` and finally `p=reject`. ## The technical detail DMARC is a TXT record at `_dmarc.yourdomain.com`, e.g. `v=DMARC1; p=none; rua=mailto:you@example.com`. `p` is the policy: `none` (monitor), `quarantine` (spam), `reject` (block). `rua` receives aggregate reports. Roll out in stages: start at `p=none` with `rua` to watch, then move to `quarantine`, then `reject` once every legitimate sender aligns. ## FAQ **Where does the DMARC record go?** As a TXT record at _dmarc.yourdomain.com — not on the root domain. **What policy should I start with?** p=none with a rua address, so you can watch safely before enforcing. ## Related - https://citaim.com/learn/spf/ - https://citaim.com/learn/dkim/ --- # DNSSEC > A layer of cryptographic signatures on DNS that lets computers verify the address they got for your domain is genuine and wasn't forged. Category: DNS Source: https://citaim.com/learn/dnssec/ · Last revised: 2026-09-07 ## In plain English When your computer asks “what's the address for this website?”, plain DNS has no way to prove the answer is real — someone could slip in a fake and send visitors to an impostor. DNSSEC signs those answers so they can be verified, like a tamper-evident seal running from the internet's root all the way down to your domain. It's optional and still uncommon, but valuable for high-trust sites. One warning: a broken DNSSEC setup is worse than none — it can make your domain unreachable for many users. ## How to fix or set it up 1. Enable DNSSEC at your DNS host (it generates keys and signs the zone). 2. Copy the resulting DS record to your domain registrar to anchor the chain. 3. After any key change, update the DS. To turn DNSSEC off, remove the DS first, then unsign. ## The technical detail Your zone publishes a `DNSKEY`; a matching `DS` record at your registrar anchors it to the parent zone; a validating resolver confirms the whole chain (the `AD` flag). The dangerous states are a `DS` with no `DNSKEY` (a live outage) and a stale `DS` after a key rollover (validation fails). Prefer modern algorithms (ECDSAP256SHA256/Ed25519) and SHA-256 DS digests; RSASHA1 and SHA-1 are deprecated. ## FAQ **Is DNSSEC required?** No — it's an optional extra layer. If you enable it, configure it carefully: a broken chain is worse than none. **Why is 'DS but no DNSKEY' so serious?** The parent still vouches for a key your zone no longer serves, so validating resolvers refuse the domain — it goes offline for many users. ## Related - https://citaim.com/learn/ssl-tls/ --- # HTTP security headers > Small instructions your server sends with every page that tell the browser to switch on built-in protections against common attacks. Category: Security · Also known as: CSP, Content-Security-Policy, X-Frame-Options Source: https://citaim.com/learn/security-headers/ · Last revised: 2026-09-07 ## In plain English Browsers have safety features built in, but many are off by default. Security headers are the switches that turn them on: force HTTPS, stop other sites from framing yours to trick clicks, stop the browser from mis-guessing file types, and restrict which scripts are allowed to run. They're free, they're a one-line change at your server or CDN, and they're one of the highest-value, lowest-effort things you can do for safety and trust. ## How to fix or set it up 1. Generate a hardened set with our Security Headers Generator. 2. Add them at your web server, CDN or framework config. 3. Deploy CSP in report-only mode first, fix what it flags, then enforce; verify with the HTTP Header Checker. ## The technical detail The key ones: `Strict-Transport-Security` (HSTS), `Content-Security-Policy` (the strongest defence against cross-site scripting), `X-Frame-Options`/`frame-ancestors` (clickjacking), `X-Content-Type-Options: nosniff`, `Referrer-Policy`, and `Permissions-Policy`. Roll out CSP with `Content-Security-Policy-Report-Only` first to find what it would block, then switch to enforcing. ## FAQ **Which header matters most?** A Content-Security-Policy gives the biggest security win, but it needs care; HSTS and nosniff are the easiest quick wins. **Will they slow my site down?** No — they're tiny text headers with no performance cost. ## Related - https://citaim.com/learn/hsts/ - https://citaim.com/learn/ssl-tls/ --- # Structured data (schema.org / JSON-LD) > A machine-readable description of what your page is about, which helps search engines show rich results and helps AI understand your content. Category: SEO · Also known as: schema, JSON-LD, rich results Source: https://citaim.com/learn/structured-data/ · Last revised: 2026-09-07 ## In plain English A page looks like plain text to a machine. Structured data is a small, hidden summary that spells out the meaning — “this is a product, it costs £20, it has 4.5 stars” — in a format search engines and AI can read directly. It's how you earn the fancy search results (star ratings, FAQs, prices) that stand out and get more clicks, and it helps AI systems recognise your brand and facts correctly. ## How to fix or set it up 1. Pick the schema.org type that matches the page. 2. Generate valid JSON-LD with our JSON-LD Generator and add it to the page. 3. Validate it with the Structured Data Checker and keep it in sync with the visible content. ## The technical detail The recommended format is JSON-LD in a `