alle Anleitungen

// 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-1 erstellte Zugangsdaten funktionieren nicht mit email-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

  1. Ö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.
  2. Suche in IAM den SMTP-Benutzer und prüfe, ob sein Zugriffsschlüssel Active ist.
  3. 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

  1. 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.
  2. 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.
  3. 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