Prüfen Sie zuerst den Sandbox-Status, denn davon hängt ab, ob dies überhaupt funktioniert. Ein neues SES-Konto startet in jeder Region in der Sandbox. Solange es sich dort befindet, stellt SES E-Mails nur an verifizierte Adressen, verifizierte Domains und den eigenen Postfachsimulator zu. Zusätzlich gelten Limits von 200 Nachrichten innerhalb von 24 Stunden und einer Nachricht pro Sekunde.
Die Verifizierung einer Adresse von Email Spam Tester umgeht diese Einschränkung nicht. SES verifiziert einen Empfänger, indem es ihm eine E-Mail mit einem Link sendet. Da unsere Adressen genau eine Nachricht annehmen und danach geschlossen werden, würde bereits die Verifizierungs-E-Mail die Adresse verbrauchen. In der Praxis benötigen Sie daher Produktionszugriff in der Region, aus der Sie senden. AWS sagt eine erste Antwort auf diesen Antrag innerhalb von 96 Stunden zu.
Da der Sandbox-Status für jede Region separat gilt, kann sich ein Konto in eu-west-1 im Produktionsbetrieb befinden und in us-east-1 trotzdem noch in der Sandbox sein. Identitäten gelten ebenfalls jeweils nur für eine Region und haben dort eigene DKIM-Einträge.
Adresse abrufen, eine Nachricht senden
Öffnen Sie email-spam-tester.com und kopieren Sie die dort angezeigte Adresse. Dafür benötigen Sie weder ein Konto noch einen API-Schlüssel. Die Adresse besteht aus test-, gefolgt von zwanzig Zeichen, und endet mit t.email-spam-tester.com. Sie haben eine Stunde und können eine Nachricht senden. Erstellen Sie daher den Sendebefehl, bevor Sie die Adresse abrufen.
Die einfachste Versandmethode ist die CLI. Der Befehl basiert auf dem AWS-Beispiel auf der Seite zu SES-Mandanten, jedoch ohne die Flags für Mandant und Konfigurationssatz:
aws sesv2 send-email \
--from-email-address "sender@yourdomain.com" \
--destination "ToAddresses=test-xxxxxxxxxxxxxxxxxxxx@t.email-spam-tester.com" \
--content "Simple={Subject={Data='Test Subject',Charset=utf-8},Body={Text={Data='Test email body',Charset=utf-8}}}"
Die From-Adresse muss auch im Produktivbetrieb eine verifizierte Identität sein. Ein reiner Textteil wie dieser reicht aus, um die Authentifizierung und die IP zu testen, sagt aber fast nichts über den Inhalt aus. Für ein aussagekräftiges Ergebnis senden Sie die Nachricht, die Ihre Anwendung tatsächlich versendet, einschließlich HTML-Teil und Headern. Verwenden Sie außerdem denselben Codepfad, unabhängig davon, ob dies boto3s send_email, eine SMTP-Bibliothek oder etwas anderes ist. Wenn der Versand im Produktivbetrieb einen Konfigurationssatz verwendet, fügen Sie hier auch --configuration-set-name hinzu, damit der Test mit denselben Einstellungen ausgeführt wird.
Der Postfachtest lässt sich in denselben Befehl integrieren. Fügen Sie die Postfächer der Anbieter neben der Testadresse zu ToAddresses und die Markierung des Tests zu den Subject-Daten hinzu. Ein Aufruf füllt dann zwei Berichte. Der zweite zeigt an, in welchem Ordner die Nachricht bei Gmail, Outlook, Yahoo und anderen Anbietern gelandet ist. Auch diese Postfächer sind nicht verifiziert, daher ist hierfür ebenfalls Produktionszugriff erforderlich.
Alternativ können Sie die Konsole verwenden. Öffnen Sie Configuration > Identities, klicken Sie auf die Identität und wählen Sie Send test email. Wählen Sie Raw, wenn Sie eine vollständige MIME-Nachricht mit eigenen Headern einfügen möchten. AWS beschreibt die Konsole als ein Werkzeug, das Sie normalerweise nur für Test-E-Mails verwenden. Die Dokumentation nennt weder ein Testpräfix noch eine andere Änderung an der Nachricht. In der Sandbox muss das Feld Custom recipient eine verifizierte Adresse enthalten, womit Sie wieder beim oben beschriebenen Problem sind.
So sieht eine neue SES-Identität im Bericht aus
Aus dem Bericht · Authentifizierung
- SPFbestandennicht abgeglichenMAIL FROM ist eine Subdomain von amazonses.com, nicht von Ihrer Domain.
- DKIMbestandenabgeglichenEasy DKIM signiert jede Nachricht mit einem 2048-Bit-Schlüssel für Ihre Domain.
- DMARCbestandenDie Prüfung wird über die ausgerichtete DKIM-Signatur bestanden, sobald Sie einen DMARC-Eintrag veröffentlichen.
Eine standardmäßige SES-Identität: SPF besteht, aber für amazonses.com. Mit einer benutzerdefinierten MAIL FROM richten Sie SPF an Ihrer Domain aus.
DKIM. Easy DKIM ist die Standardeinstellung für Domainidentitäten und signiert jede Nachricht mit einem 2048-Bit-Schlüssel. Die Einrichtung besteht aus drei CNAME-Einträgen namens token._domainkey.yourdomain.com, die auf token.dkim.<region>.amazonses.com verweisen. Wenn die DKIM-Prüfung fehlschlägt, prüfen Sie zuerst zwei Dinge: ob die DNS-Änderungen bereits übernommen wurden (AWS gibt dafür bis zu 72 Stunden an) und ob Ihr DNS-Anbieter die Domain an den Namen angehängt und dadurch token._domainkey.yourdomain.com.yourdomain.com erstellt hat. Bei BYODKIM veröffentlichen Sie stattdessen einen TXT-Eintrag unter Ihrem eigenen Selektor. Während der Umstellung zwischen den beiden Verfahren kann SES Nachrichten ganz ohne Signatur senden. Der Bericht kennzeichnet dies als fehlendes DKIM. Der DKIM-Checker verwendet das Token als Selektor.
SPF und der Return-Path. Standardmäßig verwendet SES eine Subdomain von amazonses.com als MAIL FROM. SPF besteht, aber für amazonses.com. Daher zeigt der Bericht SPF als nicht an Ihrer From-Adresse ausgerichtet an. Wenn DKIM ausgerichtet ist, hat dies nur geringe Auswirkungen (2 Punkte auf der 100-Punkte-Skala statt 5), und DMARC besteht weiterhin über DKIM. Um auch SPF auszurichten, richten Sie eine benutzerdefinierte MAIL FROM-Subdomain mit genau einem MX-Eintrag, 10 feedback-smtp.<region>.amazonses.com, und einem TXT-Eintrag, v=spf1 include:amazonses.com ~all, ein. Wählen Sie keine Subdomain, die E-Mails empfängt, und verwenden Sie kein aspf=s in Ihrem DMARC-Eintrag, da die SPF-Ausrichtung mit SES laut AWS bei einer strikten SPF-Richtlinie nicht funktioniert.
DMARC. SES veröffentlicht keinen DMARC-Eintrag für Sie. Das Beispiel von AWS lautet v=DMARC1;p=quarantine;rua=mailto:my_dmarc_report@example.com. Wenn Ihre DMARC-Berichte noch niemand auswertet, würde ich mit p=none beginnen und die Richtlinie später verschärfen. Der DMARC-Checker zeigt Ihre aktuelle Konfiguration, und DMARC fail behandelt häufige Fehlerursachen.
Beispielwerte. Kopieren Sie die tatsächlichen Werte aus Ihrem Konto.
| Name | Typ | Wert | Zweck | Kopieren |
|---|---|---|---|---|
| token. | CNAME | token. | Easy DKIM. Drei Einträge, einer pro Token. | |
| mail. | MX | 10 feedback-smtp. | Benutzerdefinierte MAIL FROM. Genau ein MX-Eintrag auf einer Subdomain, die keine E-Mails empfängt. | |
| mail. | TXT | v= | SPF für die benutzerdefinierte MAIL FROM, damit SPF an Ihrer From-Adresse ausgerichtet ist. | |
| _dmarc. | TXT | v= | DMARC, das Beispiel von AWS. Beginnen Sie mit p=none, wenn noch niemand die Berichte auswertet, und lassen Sie aspf=s weg. |
List-Unsubscribe. SES fügt List-Unsubscribe und List-Unsubscribe-Post nur hinzu, wenn Sie mit ListManagementOptions senden, die auf eine Kontaktliste und ein Thema verweisen. Selbst dann gilt dies nur für Nachrichten an einen einzelnen Empfänger und nur mit Easy DKIM. Außerdem überschreibt SES alle Abmelde-Header, die Sie selbst festlegen. Alle anderen Nachrichten werden ganz ohne Abmelde-Header versendet. Bei einem Newsletter führt dies zu einer fehlgeschlagenen List-Unsubscribe-Prüfung und einer fehlgeschlagenen One-Click-Prüfung, sofern Sie die Header nicht selbst hinzufügen. Seit März 2024 akzeptiert die v2 API benutzerdefinierte Header ohne Raw MIME. Nach dem One-Click-Blogbeitrag von AWS angepasst sehen die beiden Header so aus:
"Headers": [
{ "Name": "List-Unsubscribe",
"Value": "<https://yourdomain.com/unsub?address=x&topic=x>, <mailto:unsubscribe@yourdomain.com>" },
{ "Name": "List-Unsubscribe-Post",
"Value": "List-Unsubscribe=One-Click" }
]
Ihr Endpunkt muss anschließend den POST verarbeiten. Passwortzurücksetzungen und Belege ohne Listen-Header sind ein anderer Fall. Für sie kennzeichnet der Bericht die Gruppe für Massenversender als übersprungen. Weitere Informationen zum Header finden Sie auf unserer List-Unsubscribe-Seite.
IPs und Blocklisten
Neue Konten senden über IPs, die mit anderen SES-Nutzern geteilt werden. AWS empfiehlt, diese weiterzuverwenden, sofern Ihr Versandvolumen nicht groß und regelmäßig ist. Der Bericht fragt für die sendende IP 21 Blocklisten ab. Bei gemeinsam genutzten Adressen betrifft ein Treffer den gesamten Pool. Dedizierte IPs gibt es als Standard, wobei Sie sie selbst aufwärmen, oder als Managed, wobei SES das Aufwärmen übernimmt. In diesem Fall ist ein Eintrag Ihrem eigenen Versand zuzuordnen. Jede IP, die Sie auf der Registerkarte Headers finden, können Sie direkt im Blocklisten-Prüfer überprüfen.
AWS überwacht auch Ihr Konto. Laut den FAQ zu Durchsetzungsmaßnahmen sollten Sie Tests mit echten Adressen durchführen, die E-Mails empfangen können, oder den Simulator verwenden, damit erfundene Empfänger die Bounce-Rate nicht erhöhen. Ein Konto wird bei einer Bounce-Rate von 5 % oder einer Beschwerderate von 0,1 % überprüft.
Der Maßnahmenplan am Ende führt bis zu acht Änderungen auf, jeweils mit dem zu kopierenden DNS-Eintrag, sofern einer erforderlich ist. Die Punkte neben jeder Korrektur entsprechen den aktuellen Abzügen der davon betroffenen Prüfungen. Das Modell wählt Korrekturen aus und erklärt sie. Es legt ihre Punktwerte nicht fest. Wenn Ihnen der Name einer Prüfung nichts sagt, finden Sie in der Dokumentation Erklärungen zu allen 42 Prüfungen.
AWS-Referenzen
Sandbox- und Produktionszugriffdocs.aws.amazon.com ↗Easy DKIMdocs.aws.amazon.com ↗Benutzerdefiniertes MAIL FROMdocs.aws.amazon.com ↗DMARC mit SESdocs.aws.amazon.com ↗Abonnementverwaltungdocs.aws.amazon.com ↗sesv2 send-emaildocs.aws.amazon.com ↗Fragen
Kann ich aus der SES-Sandbox testen?
Nicht mit unserer Adresse. In der Sandbox stellt SES nur an verifizierte Empfänger zu. Durch die Verifizierung unserer Adresse würde bereits die einzige Nachricht verbraucht, die sie annimmt. Beantragen Sie den Produktionszugriff für die Region. Prüfen Sie Ihre Einträge in der Zwischenzeit mit den kostenlosen DKIM-, SPF- und DMARC-Prüftools.
Liefert der SES-Postfachsimulator dieselben Informationen?
Nein. Er zeigt Ihnen, wie SES einen Bounce, eine Beschwerde oder eine Zustellung verarbeitet, und wird wie ein normaler Versand abgerechnet. Er analysiert weder Ihre Header noch die Authentifizierung oder den Inhalt.
Sollte ich SES in den SPF-Eintrag meiner Root-Domain aufnehmen?
Empfangende Server prüfen SPF anhand der MAIL FROM-Domain. Diese ist standardmäßig eine Subdomain von amazonses.com oder Ihre benutzerdefinierte MAIL FROM-Subdomain. Der SPF-Eintrag für SES gehört auf diese Subdomain. Laut der MAIL FROM-Seite ist auf der Root-Domain kein Eintrag erforderlich.