Domain hinzufügen und verifizieren
Um von hello@acme.com zu senden, belegst du durch das Veröffentlichen von DNS-Einträgen, dass dir acme.com gehört. Die Verifizierung richtet die DKIM-Signierung ein (damit Empfänger wissen, dass die E-Mail wirklich von dir stammt) und einen eigenen Return-Path (damit SPF und DMARC mit deiner Domain übereinstimmen).
-
Domain hinzufügen
add-domain.ts import { SpacePost } from "@spacepost/node";const spacepost = new SpacePost(process.env.SPACEPOST_API_KEY);const { data: domain, error } = await spacepost.domains.create({ name: "acme.com" });if (error) throw new Error(`${error.name}: ${error.message}`);console.log(domain.id, domain.status); // "not_started" or "pending"for (const r of domain.records ?? []) {console.log(`${r.type.padEnd(5)} ${r.name} -> ${r.value}${r.priority ? ` (priority ${r.priority})` : ""}`);}Terminal-Fenster curl -X POST https://api.spacepost.dev/domains \-H "Authorization: Bearer $SPACEPOST_API_KEY" \-H "Content-Type: application/json" \-d '{ "name": "acme.com" }'r = requests.post("https://api.spacepost.dev/domains",headers={"Authorization": f"Bearer {os.environ['SPACEPOST_API_KEY']}"},json={"name": "acme.com"},)for rec in r.json()["records"]:print(rec["type"], rec["name"], rec["value"])Du kannst auch das Dashboard oder
spacepost domains add acme.comverwenden. -
DNS-Einträge anlegen
Die Antwort enthält ein Array
recordsund ein Arrayrecommended_records(DMARC):Response (abridged) {"object": "domain","id": "0192e1c4-0000-7000-8000-000000000001","name": "acme.com","status": "not_started","region": "eu-central-1","open_tracking": false,"click_tracking": false,"records": [{ "record": "DKIM", "name": "a1b2c3d4e5f6._domainkey", "type": "CNAME", "ttl": "Auto", "status": "not_started", "value": "a1b2c3d4e5f6.dkim.amazonses.com" },{ "record": "DKIM", "name": "g7h8i9j0k1l2._domainkey", "type": "CNAME", "ttl": "Auto", "status": "not_started", "value": "g7h8i9j0k1l2.dkim.amazonses.com" },{ "record": "DKIM", "name": "m3n4o5p6q7r8._domainkey", "type": "CNAME", "ttl": "Auto", "status": "not_started", "value": "m3n4o5p6q7r8.dkim.amazonses.com" },{ "record": "SPF", "name": "send", "type": "MX", "ttl": "Auto", "status": "not_started", "value": "feedback-smtp.eu-central-1.amazonses.com", "priority": 10 },{ "record": "SPF", "name": "send", "type": "TXT", "ttl": "Auto", "status": "not_started", "value": "\"v=spf1 include:amazonses.com ~all\"" }],"recommended_records": [{ "record": "DMARC", "name": "_dmarc", "type": "TXT", "ttl": "Auto", "status": "not_started", "value": "\"v=DMARC1; p=none;\"" }]}Lege sie bei deinem DNS-Anbieter an. Siehe unten die Einträge erklärt und die Anleitungen nach Anbieter.
-
Verifizieren
DNS-Änderungen können einige Minuten dauern (selten Stunden). SpacePost prüft ausstehende Domains automatisch erneut, und du kannst jederzeit selbst eine Prüfung auslösen:
verify-domain.ts import { SpacePost } from "@spacepost/node";const spacepost = new SpacePost(process.env.SPACEPOST_API_KEY);const id = "0192e1c4-0000-7000-8000-000000000001";const { error } = await spacepost.domains.verify(id); // asks SpacePost to re-check DNS nowif (error) throw new Error(error.message);const { data: domain } = await spacepost.domains.get(id);console.log(domain?.status); // "verified" once DKIM is confirmedTerminal-Fenster curl -X POST https://api.spacepost.dev/domains/$DOMAIN_ID/verify -H "Authorization: Bearer $SPACEPOST_API_KEY"curl https://api.spacepost.dev/domains/$DOMAIN_ID -H "Authorization: Bearer $SPACEPOST_API_KEY"Terminal-Fenster spacepost domains verify acme.comspacepost domains doctor acme.com # looks up each record live and tells you what is missing or wrong
Die Einträge erklärt
Abschnitt betitelt „Die Einträge erklärt“Eintragsnamen in der API sind relativ zu deiner Domain (send, _dmarc, a1b2c3d4e5f6._domainkey). Manche DNS-Anbieter verlangen den vollständigen Namen (send.acme.com); die Anleitungen nach Anbieter sagen, welche.
| Eintrag | Typ | Name | Wert | Zweck |
|---|---|---|---|---|
| DKIM (x3) | CNAME | <token>._domainkey |
<token>.dkim.amazonses.com |
Veröffentlicht die öffentlichen Schlüssel, die Amazon SES für dich rotiert (“Easy DKIM”). Empfänger prüfen damit, dass jede Nachricht von deiner Domain signiert und nicht verändert wurde. Erforderlich: Die Verifizierung hängt von allen dreien ab. |
| Return-Path | MX | send |
feedback-smtp.<region>.amazonses.com, Priorität 10 |
Empfängt Bounce- und Beschwerde-Benachrichtigungen, die an send.acme.com adressiert sind. Zusammen mit dem TXT-Eintrag darunter bildet er eine eigene MAIL-FROM-Domain. |
| Return-Path | TXT | send |
v=spf1 include:amazonses.com ~all |
SPF für die Return-Path-Subdomain. Da der Envelope-Absender auf deiner Domain liegt, stimmt SPF mit deiner From-Adresse überein, was DMARC voraussetzt. |
| DMARC (empfohlen) | TXT | _dmarc |
v=DMARC1; p=none; |
Teilt Empfängern mit, was mit E-Mails geschehen soll, die die Authentifizierung nicht bestehen, und ist für Massenversender bei Gmail und Yahoo vorgeschrieben. Siehe DMARC. |
| Status | Bedeutung |
|---|---|
not_started |
Domain hinzugefügt, DNS noch nicht gesehen. |
pending |
SpacePost prüft das DNS. |
verified |
DKIM ist bestätigt. Du kannst von dieser Domain senden. |
temporary_failure |
Eine Abfrage ist vorübergehend fehlgeschlagen. Sie wird automatisch wiederholt. |
failed |
Das DNS wurde innerhalb von 72 Stunden nicht gefunden, oder ein Eintrag ist falsch. Korrigiere die Einträge und rufe verify erneut auf. |
Die Domain ist verified, sobald DKIM besteht. Fehlen nur die Return-Path-Einträge, werden E-Mails weiterhin gesendet, aber die SPF-Übereinstimmung fällt auf die Domain von Amazon zurück, was die DMARC-Übereinstimmung schwächt. Behebe das für die beste Zustellbarkeit.
Jeder Eintrag in records hat einen eigenen status mit denselben Werten, sodass du genau siehst, welcher fehlt.
Von Subdomains senden
Abschnitt betitelt „Von Subdomains senden“Ist acme.com verifiziert, kannst du von jeder Subdomain senden (news@mail.acme.com). Die Subdomain selbst (mail.acme.com) zu verifizieren, ist für Marketing-E-Mails die bessere Praxis, weil die Reputation so von deiner Domain für Transaktions-E-Mails getrennt bleibt.
| Plan | Domains |
|---|---|
| Free | 3 |
| Pro | 10 |
| Scale | 1.000 |
Wenn du eine Domain hinzufügst, die ein anderes Team bereits registriert hat, erhältst du 422 validation_error (“Domain already registered”).
Anleitungen nach DNS-Anbieter
Abschnitt betitelt „Anleitungen nach DNS-Anbieter“Kommst du nicht weiter? Siehe Fehlerbehebung.