HEX
Server: LiteSpeed
System: Linux houston.panomity.com 6.8.0-100-generic #100-Ubuntu SMP PREEMPT_DYNAMIC Tue Jan 13 16:40:06 UTC 2026 x86_64
User: nudepix (1011)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //proc/self/root/tmp/ezdns-check-https___ezdns_support_dmarc_record_generator
<!doctype html>
<html lang="de">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>DMARC Record Generator: TXT für p=none, quarantine, reject | ezdns.support</title>
<meta name="description" content="DMARC Record Generator für Domains: TXT-Record erstellen, Policy-Risiko prüfen und vor p=reject einen Priority Audit ab 49 € buchen oder als qualifizierte Anfrage speichern." />
<link rel="canonical" href="https://ezdns.support/dmarc-record-generator" />
<link rel="icon" href="/app/logo.svg" type="image/svg+xml" />
<link rel="preconnect" href="https://rsms.me/" />
<link rel="stylesheet" href="https://rsms.me/inter/inter.css" />
<style>
:root{color-scheme:dark;--bg:#07111f;--panel:#0d1d2c;--line:#29445e;--text:#f8fafc;--muted:#c3d1df;--soft:#8fa5bb;--green:#16a34a;--blue:#2563eb;--amber:#f59e0b;--red:#ef4444;--radius:16px}*{box-sizing:border-box}body{margin:0;background:linear-gradient(180deg,#07111f,#050b13);color:var(--text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}a{color:inherit;text-decoration:none}.wrap{width:min(1120px,calc(100% - 32px));margin:auto}.top{display:flex;justify-content:space-between;align-items:center;gap:18px;padding:22px 0}.brand{display:flex;align-items:center;gap:10px;font-weight:900}.brand img{height:34px}.nav{display:flex;gap:14px;flex-wrap:wrap;color:#d6e4f0;font-size:14px}.hero{display:grid;grid-template-columns:1fr .92fr;gap:22px;align-items:center;padding:34px 0 20px}.hero h1{font-size:clamp(38px,5vw,66px);line-height:1.02;letter-spacing:0;margin:0}.hero p{font-size:18px;line-height:1.62;color:var(--muted);margin:18px 0 0}.panel,.tool,.card,.faq,.quote{border:1px solid rgba(148,163,184,.26);background:linear-gradient(180deg,rgba(13,29,44,.96),rgba(8,18,30,.96));border-radius:var(--radius);box-shadow:0 18px 52px rgba(0,0,0,.24)}.visual{overflow:hidden}.visual img{width:100%;aspect-ratio:16/9;object-fit:cover;background:#06111d}.visual figcaption{display:flex;justify-content:space-between;padding:14px 16px;border-top:1px solid rgba(148,163,184,.22);color:var(--muted)}.dot{width:10px;height:10px;border-radius:999px;background:#22c55e;box-shadow:0 0 0 5px rgba(34,197,94,.14)}.tool,.quote{display:grid;grid-template-columns:.95fr 1.05fr;gap:18px;padding:22px;margin:20px 0}.tool h2,.quote h2{font-size:clamp(28px,3vw,44px);line-height:1.08;margin:0 0 12px}.form,.quoteForm{display:grid;grid-template-columns:1fr 1fr;gap:10px}.form label,.quoteForm label{display:grid;gap:6px;font-size:13px;font-weight:850;color:#dbeafe}.form input,.form select,.quoteForm input,.quoteForm textarea{width:100%;border:1px solid #36516a;border-radius:10px;background:#06111d;color:white;padding:12px;font:inherit}.quoteForm textarea{min-height:112px;resize:vertical}.form button,.btn,.quoteForm button{border:0;border-radius:10px;background:var(--green);color:white;font-weight:950;padding:13px 15px;font:inherit;display:inline-flex;align-items:center;justify-content:center;min-height:46px}.wide{grid-column:1/-1}.result{display:grid;gap:12px}.recordBox{border:1px solid #36516a;background:#06111d;border-radius:12px;padding:14px}.recordBox small{display:block;color:#93c5fd;font-weight:900}.recordBox code{display:block;margin-top:8px;color:#fff;white-space:pre-wrap;word-break:break-word;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.risk{border-radius:12px;padding:13px;border:1px solid rgba(245,158,11,.5);background:rgba(245,158,11,.1);color:#fde68a;line-height:1.5}.actions{display:flex;gap:10px;flex-wrap:wrap}.secondary{background:var(--blue)}.ghost{background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.14)}.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:20px 0}.card{padding:18px}.card b{display:block;font-size:18px}.card p,.faq p,.quote p{color:var(--muted);line-height:1.58}.faq{padding:22px;margin:20px 0}.faq h2{margin:0 0 10px}.faq details{border-top:1px solid rgba(148,163,184,.24);padding:13px 0}.faq summary{font-weight:900;cursor:pointer}.quoteStatus{grid-column:1/-1;margin:0;color:#93c5fd;font-size:13px;min-height:18px}.footer{padding:28px 0 44px;color:#95a8bb;text-align:center;font-size:14px}.footer a{color:#93c5fd}@media(max-width:900px){.hero,.tool,.quote,.grid{grid-template-columns:1fr}.form,.quoteForm{grid-template-columns:1fr}.top{align-items:flex-start;flex-direction:column}.actions .btn,.actions button{width:100%}.wrap{width:min(100% - 24px,1120px)}}
</style>
<script type="application/ld+json">{"@context":"https://schema.org","@graph":[{"@type":"WebApplication","@id":"https://ezdns.support/dmarc-record-generator#app","name":"DMARC Record Generator","applicationCategory":"SecurityApplication","operatingSystem":"Any","url":"https://ezdns.support/dmarc-record-generator","description":"Clientseitiger DMARC TXT Record Generator mit Policy-Risiko, qualifizierter Anfrage und bezahlbarem Priority Audit."},{"@type":"FAQPage","@id":"https://ezdns.support/dmarc-record-generator#faq","mainEntity":[{"@type":"Question","name":"Welche DMARC Policy soll ich wählen?","acceptedAnswer":{"@type":"Answer","text":"p=none ist ein Monitoring-Startpunkt. quarantine oder reject sollten erst gesetzt werden, wenn legitime Sender mit SPF oder DKIM aligned sind."}},{"@type":"Question","name":"Warum vor p=reject prüfen lassen?","acceptedAnswer":{"@type":"Answer","text":"Weil p=reject ein starkes Enforcement-Signal ist und legitime Shop-, CRM- oder Newsletter-Mails blockiert werden können, wenn Sender nicht vorbereitet sind."}}]}]}</script>
</head>
<body>
<div class="wrap">
<header class="top"><a class="brand" href="/"><img src="/app/logo.svg" alt="ezdns.support" /><span>ezdns.support</span></a><nav class="nav"><a href="/">Scan</a><a href="/pricing">Preise</a><a href="/dmarc-checker">DMARC Checker</a><a href="/dmarc-p-reject-einrichten">p=reject</a><a href="/dns-priority-audit">Audit</a></nav></header>
<main>
<section class="hero"><div><h1>DMARC Record Generator für kaufbereite Domains.</h1><p>Erstelle einen DMARC TXT-Record, erkenne das Risiko der gewählten Policy und öffne direkt den Priority Audit, wenn p=quarantine oder p=reject ohne Senderinventar zu riskant wäre.</p><div class="actions"><a class="btn" href="#generator">Record erstellen</a><a class="btn secondary" data-service-lead="priority_audit" href="https://support.panomity.com/cart/priority-support/DNS-Priority-Audit/&step=0">Audit für 49 € starten</a><a class="btn ghost" href="#qualified-request">Audit anfragen</a></div></div><figure class="panel visual"><img src="/app/assets/ezdns-diagnostics-panels.webp" width="1600" height="900" alt="ezDNS Diagnosepanel für SPF, DKIM, DMARC und DNSSEC" loading="eager" /><figcaption><span><strong>DMARC Setup</strong><br />Policy, Reporting und Alignment vor dem Kauf prüfen.</span><i class="dot" aria-hidden="true"></i></figcaption></figure></section>
<section id="generator" class="tool"><div><h2>TXT-Record erzeugen.</h2><p>Die Ausgabe ist clientseitig und speichert nichts, bis du einen Audit oder eine Anfrage auslöst. Für produktive Domains mit mehreren Sendern ist vor p=reject eine Abnahme sinnvoll.</p><form id="dmarcGeneratorForm" class="form"><label><span>Domain</span><input name="domain" placeholder="example.com" autocomplete="url" required /></label><label><span>Policy</span><select name="policy"><option value="none">p=none</option><option value="quarantine">p=quarantine</option><option value="reject">p=reject</option></select></label><label class="wide"><span>Report-E-Mail optional</span><input name="rua" placeholder="dmarc@example.com" autocomplete="email" /></label><label class="wide"><span>Kontakt-E-Mail für Audit optional</span><input name="contactEmail" placeholder="admin@example.com" autocomplete="email" /></label><button type="submit">DMARC Record erstellen</button><button type="button" class="ghost" id="copyRecord">Record kopieren</button></form></div><div class="result"><div class="recordBox"><small>Host / Name</small><code id="recordHost">_dmarc.example.com</code></div><div class="recordBox"><small>TXT value</small><code id="recordValue">v=DMARC1; p=none; rua=mailto:dmarc@example.com; adkim=s; aspf=s</code></div><div class="risk" id="riskBox">p=none ist ein sicherer Monitoring-Start. Für quarantine oder reject vorher legitime Sender, SPF und DKIM prüfen.</div><div class="actions"><a class="btn" id="auditCta" data-ezdns-upsell="priority-audit" data-service-lead="priority_audit" href="https://support.panomity.com/cart/priority-support/DNS-Priority-Audit/&step=0">Audit für 49 € starten</a><a class="btn secondary" href="/dmarc-p-reject-einrichten">p=reject sicher umstellen</a><a class="btn ghost" href="/dmarc-rfc-9989-audit">RFC 9989 Audit</a></div></div></section>
<section class="grid"><div class="card"><b>Für Suchtraffic gebaut</b><p>Generator statt reiner Textseite: Nutzer bekommen sofort einen Record und einen Grund, den Audit zu buchen.</p></div><div class="card"><b>Policy-Risiko sichtbar</b><p>quarantine und reject verweisen auf Senderinventar, SPF/DKIM Alignment und Abnahme.</p></div><div class="card"><b>Messbarer Checkout</b><p>Audit-Klicks senden Domain, Policy, Kontakt und Record-Kontext an Lead-Tracking und HostBill Hidden Fields.</p></div></section>
<section id="qualified-request" class="quote"><div><h2>Record vor Veröffentlichung prüfen lassen.</h2><p>Wenn du noch nicht direkt in den Checkout willst, speichere eine qualifizierte Anfrage mit Domain, Kontakt und dem erzeugten DMARC-Record. So bleibt der Lead im Revenue-Report sichtbar und kann sauber nachverfolgt werden.</p></div><form class="quoteForm" data-qualified-form><label><span>Domain</span><input name="domain" placeholder="example.com" autocomplete="url" required /></label><label><span>Kontakt-E-Mail</span><input name="contact_email" type="email" placeholder="admin@example.com" autocomplete="email" required /></label><label class="wide"><span>Problem / Kontext</span><textarea name="message" placeholder="Wir wollen DMARC scharf stellen, haben aber mehrere legitime Sender und möchten keinen Mail-Ausfall riskieren." required></textarea></label><button type="submit">Qualifizierte Anfrage speichern</button><p class="quoteStatus" aria-live="polite"></p></form></section>
<section class="faq"><h2>Kurz geklärt</h2><details><summary>Kann ich den Record direkt veröffentlichen?</summary><p>Für p=none meistens ja. Für quarantine oder reject solltest du zuerst legitime Sender und Alignment prüfen, damit Geschäfts-Mails nicht ausfallen.</p></details><details><summary>Welche HostBill-Leistung passt?</summary><p>Der Priority Audit für 49 € ist der Einstieg, wenn du einen generierten Record vor Veröffentlichung prüfen lassen möchtest.</p></details><details><summary>Was wird bei der qualifizierten Anfrage gespeichert?</summary><p>Domain, Kontakt-E-Mail, Problemtext und der generierte Record-Kontext. Damit ist der Lead vom bloßen Tool-Klick trennbar.</p></details></section>
</main><footer class="footer"><a href="/pricing">Preise</a> · <a href="/app/imprint.html">Impressum</a> · <a href="/app/privacy.html">Datenschutz</a></footer>
</div>
<script>
const ORDER_POSTS={priority_audit:{action:'https://support.panomity.com/cart/priority-support/DNS-Priority-Audit/&step=0',id:'879',cycle:'Once'}};
let currentContext={domain:'',policy:'none',record:'v=DMARC1; p=none; adkim=s; aspf=s',contact_email:''};
function normalizeDomain(value){return String(value||'').trim().toLowerCase().replace(/^https?:\/\//,'').replace(/^www\./,'').split('/')[0].replace(/\.$/,'')}
function sanitizeEmail(value){const email=String(value||'').trim().toLowerCase();return email.includes('@')&&!email.includes(' ')?email:''}
function isReservedDemoDomain(value){const domain=normalizeDomain(value);if(!domain)return false;return ['example.com','example.net','example.org','localhost','localhost.localdomain'].includes(domain)||['.example','.invalid','.localhost','.test'].some((suffix)=>domain.endsWith(suffix))}
function isReservedDemoEmail(value){const email=sanitizeEmail(value);if(!email)return false;return isReservedDemoDomain(email.split('@')[1]||'')}
function sanitizeLeadContext(extra={}){const context=Object.assign({},extra);context.domain=isReservedDemoDomain(context.domain)?'':normalizeDomain(context.domain);context.contact_email=isReservedDemoEmail(context.contact_email)?'':sanitizeEmail(context.contact_email);return context}
function generatorMessage(context){return 'DMARC Record Generator: policy='+context.policy+'; record='+context.record}
function syncQualifiedForm(context){const form=document.querySelector('[data-qualified-form]');if(!form)return;const domain=form.querySelector('[name="domain"]');const email=form.querySelector('[name="contact_email"]');const message=form.querySelector('[name="message"]');if(domain&&!domain.value.trim()&&context.domain&&!isReservedDemoDomain(context.domain))domain.value=context.domain;if(email&&!email.value.trim()&&context.contact_email&&!isReservedDemoEmail(context.contact_email))email.value=context.contact_email;if(message&&!message.value.trim()&&context.domain&&!isReservedDemoDomain(context.domain))message.value='Wir wollen für '+context.domain+' DMARC '+context.policy+' einrichten und den generierten Record vor der Veröffentlichung prüfen lassen.\n\nRecord: '+context.record}
function buildRecord(track=true){const form=document.querySelector('#dmarcGeneratorForm');const data=new FormData(form);const domain=normalizeDomain(data.get('domain'));const previewDomain=domain||'example.com';const policy=String(data.get('policy')||'none');const rua=String(data.get('rua')||'').trim();const contactEmail=sanitizeEmail(data.get('contactEmail'));let record='v=DMARC1; p='+policy+'; adkim=s; aspf=s';if(rua)record+='; rua=mailto:'+rua;currentContext={domain,policy,record,contact_email:contactEmail,problem_area:'DMARC Record Generator: p='+policy,message:generatorMessage({domain:previewDomain,policy,record})};document.querySelector('#recordHost').textContent='_dmarc.'+previewDomain;document.querySelector('#recordValue').textContent=record;const risk=document.querySelector('#riskBox');if(policy==='none')risk.textContent='p=none sammelt Reports und ist ein sicherer Start. Schutz entsteht erst mit quarantine oder reject nach Senderprüfung.';if(policy==='quarantine')risk.textContent='p=quarantine kann verdächtige Mails in Spam verschieben. Vorher alle legitimen Sender und SPF/DKIM Alignment prüfen.';if(policy==='reject')risk.textContent='p=reject ist das stärkste Enforcement-Signal. Ohne Senderinventar können Shop-, CRM- oder Newsletter-Mails ausfallen.';syncQualifiedForm(currentContext);if(track)recordLead('dmarc_record_generated',currentContext)}
function appendHidden(form,name,value){const input=document.createElement('input');input.type='hidden';input.name=name;input.value=value;form.appendChild(input)}
function submitHostBillOrder(plan,extra={}){const cfg=ORDER_POSTS[plan];if(!cfg)return false;const safe=sanitizeLeadContext(extra);const form=document.createElement('form');form.method='post';form.action=cfg.action;const fields={action:'add',id:cfg.id,cycle:cfg.cycle,ezdns_domain:safe.domain||'',ezdns_problem_area:extra.problem_area||'DMARC Record Generator',ezdns_contact_email:safe.contact_email||'',ezdns_generated_record:extra.record||''};for(const[name,value]of Object.entries(fields))appendHidden(form,name,value);for(const[key,value]of Object.entries(fields)){appendHidden(form,'custom['+key+']',value);appendHidden(form,'customfield['+key+']',value);appendHidden(form,'config['+key+']',value);appendHidden(form,'fields['+key+']',value)}document.body.appendChild(form);form.submit();return true}
async function recordLead(intent,extra={}){const payload=sanitizeLeadContext(extra);try{await fetch('/v1/leads',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify(Object.assign({source:'tool_page',intent,plan:'priority_audit',domain:payload.domain||'',contact_email:payload.contact_email||'',page:window.location.pathname},payload))})}catch(e){}}
document.querySelector('#dmarcGeneratorForm').addEventListener('submit',event=>{event.preventDefault();buildRecord()});
document.querySelector('#copyRecord').addEventListener('click',async()=>{await navigator.clipboard.writeText(document.querySelector('#recordValue').textContent);recordLead('dmarc_record_copied',currentContext)});
document.querySelector('[data-qualified-form]').addEventListener('submit',async(event)=>{event.preventDefault();buildRecord(false);const form=event.currentTarget;const data=new FormData(form);const status=form.querySelector('.quoteStatus');const payload=sanitizeLeadContext({domain:normalizeDomain(data.get('domain')),contact_email:sanitizeEmail(data.get('contact_email')),message:String(data.get('message')||'').trim()+'\n\nGenerated record: '+currentContext.record,intent:'qualified_fix_request',problem_area:'DMARC Record Generator: p='+currentContext.policy,record:currentContext.record,policy:currentContext.policy,page:window.location.pathname+'#qualified-request'});if(!payload.domain||!payload.contact_email){if(status)status.textContent='Bitte eine echte Domain und Kontakt-E-Mail statt Beispielwerten eintragen.';return}if(status)status.textContent='Anfrage wird gespeichert…';await recordLead('qualified_fix_request',payload);if(status)status.textContent='Gespeichert. Die Anfrage erscheint im Revenue-Report.'});
document.addEventListener('click',async(event)=>{const cta=event.target.closest('[data-service-lead]');if(!cta)return;event.preventDefault();buildRecord(false);const checkoutContext=sanitizeLeadContext(currentContext);await recordLead('tool_checkout',checkoutContext);if(submitHostBillOrder('priority_audit',checkoutContext))return;window.location.href=cta.href});
buildRecord(false);
</script>
</body>
</html>