// so behebst du es
Amazon SES SMTP „535 Authentication Credentials Invalid“: so behebst du es
Amazon SES lehnt deinen SMTP-Login mit 535 Authentication Credentials Invalid ab. Nutze echte SMTP-Zugangsdaten, die richtige Region und teste sie.
Was das bedeutet
Deine App, dein Plugin oder dein Mailserver hat sich mit dem SMTP-Endpunkt von Amazon SES verbunden, versucht sich anzumelden, und SES hat Benutzername oder Passwort abgelehnt:
535 Authentication Credentials Invalid
Ein 5xx-Code bedeutet einen dauerhaften Fehler: Ein neuer Versuch mit denselben Einstellungen schlägt wieder fehl. Die Verbindung selbst funktioniert, es ist also kein Firewall-Problem.
Warum das passiert
- Du hast direkt IAM-Zugriffsschlüssel verwendet. Das SES-SMTP-Passwort ist nicht dein AWS Secret Access Key. Der SMTP-Benutzername sieht wie eine Access Key ID aus (
AKIA...), das Passwort wird aber mit einem speziellen Algorithmus aus dem geheimen Schlüssel abgeleitet. - Falsche Region. SMTP-Zugangsdaten gelten nur für eine AWS-Region. Für
eu-west-1erstellte Zugangsdaten funktionieren nicht mitemail-smtp.us-east-1.amazonaws.com. - Gelöschter oder deaktivierter Benutzer oder Schlüssel. SMTP-Zugangsdaten gehören zu einem IAM-Benutzer. Wurde dieser Benutzer oder sein Zugriffsschlüssel gelöscht oder deaktiviert (zum Beispiel bei einem Sicherheits-Aufräumen), schlägt der Login fehl.
- Temporäre Zugangsdaten. SMTP-Passwörter lassen sich nicht aus temporären Zugangsdaten ableiten (Rollen, STS-Sitzungsschlüssel).
- Fehler beim Kopieren und Einfügen: zusätzliche Leerzeichen, ein abgeschnittenes Passwort oder Sonderzeichen (
+,/,=), die in einer URL oder in einer.env-Datei ohne Anführungszeichen kaputtgehen. - Ein alter Benutzername oder ein altes Passwort, das ein Plugin gespeichert hat, während du die Werte woanders geändert hast.
Andere Codes bedeuten andere Probleme: 530 Authentication required heißt, dass dein Client gar nicht versucht hat, sich anzumelden; 535 Account not subscribed to SES heißt, dass das AWS-Konto nicht für SES registriert ist; 554 Access denied: User ... is not authorized to perform ses:SendRawEmail heißt, dass der Login geklappt hat, dem IAM-Benutzer aber die Berechtigung fehlt.
So prüfst du es
- Öffne in der SES-Konsole SMTP settings in der Region, die du nutzt, und notiere den genauen Endpunkt, zum Beispiel
email-smtp.eu-west-1.amazonaws.com. Die Ports sind 25, 587 oder 2587 mit STARTTLS sowie 465 oder 2465 mit TLS von Anfang an. - Suche in IAM den SMTP-Benutzer und prüfe, ob sein Zugriffsschlüssel Active ist.
- Teste den Login außerhalb deiner App mit
swaks:
swaks --server email-smtp.eu-west-1.amazonaws.com --port 587 --tls \ --auth LOGIN --auth-user 'AKIAEXAMPLE' --auth-password 'YOUR_SMTP_PASSWORD' \ --from sender@yourdomain.com --to you@example.com
Bekommt swaks die Antwort 235 Authentication successful, sind die Zugangsdaten in Ordnung, und das Problem liegt in der Konfiguration deiner App. Kannst du dich gar nicht verbinden, sieh dir SMTP-Port 25 blockiert oder Verbindungs-Timeout an (Port 25 ist auf EC2 eingeschränkt; nutze 587 oder 465).
So behebst du es
- Erstelle SMTP-Zugangsdaten auf dem einfachen Weg. SES-Konsole, richtige Region, SMTP settings, Create SMTP credentials. SES legt einen IAM-Benutzer mit der richtigen Sendeberechtigung an und zeigt SMTP-Benutzername und Passwort einmalig an. Lade die .csv-Datei herunter.
- Oder leite sie ab aus dem geheimen Schlüssel eines bestehenden IAM-Benutzers, mit dem Skript aus der AWS-Dokumentation und der Region, aus der du senden wirst. Der Benutzer braucht die Berechtigung
ses:SendRawEmail. - Trage die Werte in deine App ein, zusammen mit dem Endpunkt derselben Region. Beispiel für nodemailer:
const transporter = nodemailer.createTransport({
host: 'email-smtp.eu-west-1.amazonaws.com',
port: 587,
secure: false, // STARTTLS
auth: { user: process.env.SES_SMTP_USER, pass: process.env.SES_SMTP_PASS },
});Für Postfix, in /etc/postfix/sasl_passwd:
[email-smtp.eu-west-1.amazonaws.com]:587 AKIAEXAMPLE:YOUR_SMTP_PASSWORD
Führe dann postmap /etc/postfix/sasl_passwd aus, setze relayhost = [email-smtp.eu-west-1.amazonaws.com]:587, smtp_sasl_auth_enable = yes, smtp_tls_security_level = encrypt und lade Postfix neu.
Nutzt du PHPMailer oder WordPress, führen dieselben Ursachen zu „Could not authenticate“; siehe PHPMailer SMTP Error: Could not authenticate. Um ein SMTP-Passwort zu ändern, empfiehlt AWS, den SMTP-Benutzer zu löschen und neue Zugangsdaten zu erstellen. Wurden deine Zugangsdaten vor dem 10. Januar 2019 erstellt, ersetze sie: Sie verwenden eine ältere Signaturversion.
Prüfe, ob es behoben ist
Sende aus deiner App über SES eine Nachricht an die einmalige Adresse auf der Startseite von Delivmail. Kommt sie an, funktioniert die Authentifizierung; lies im Bericht SPF, DKIM und DMARC. Bekommst du jetzt 554 Message rejected: Email address is not verified, ist der Login in Ordnung, und der nächste Schritt steht in Amazon SES „Email address is not verified“.
Prüfe, ob es behoben ist
DNS-Änderungen können ein paar Minuten bis einige Stunden dauern. Sende danach eine neue Test-E-Mail oder scanne deine Domain erneut.
Ähnliche Anleitungen
- Amazon SES „Email address is not verified“: Sandbox und Identitäten richtig einrichtenAmazon SES lehnt deine E-Mail ab, weil eine Absender- oder Empfänger-Identität nicht verifiziert ist. Verifiziere Identitäten und verlasse die Sandbox.
- Amazon SES DKIM-Verifizierung „Pending“ oder „Failed“: so behebst du esDeine Amazon-SES-Domain bleibt auf „Pending“ oder zeigt DKIM „Failed“. Prüfe die drei CNAME-Einträge, typische DNS-Fehler und starte die Verifizierung neu.
- Amazon SES eigene MAIL-FROM-Domain: SPF-Alignment für DMARCAmazon SES nutzt eine Bounce-Domain unter amazonses.com, daher ist SPF nicht auf DMARC ausgerichtet. Richte eine eigene MAIL-FROM-Subdomain mit MX und SPF ein.
- Amazon-SES-Konto „under review“ oder pausiert: Bounce- und BeschwerderateDein Amazon-SES-Konto wird überprüft oder der Versand ist pausiert, wegen Bounces oder Beschwerden. Kenne die Grenzwerte, finde die Ursache, antworte AWS.
- Amazon SES „Throttling: Maximum sending rate exceeded“ (454): so behebst du esAmazon SES meldet „Maximum sending rate exceeded“ oder „Daily message quota exceeded“. Prüfe deine Kontingente, sende langsamer und beantrage mehr.