// come risolvere
Amazon SES SMTP "535 Authentication Credentials Invalid": come risolvere
Amazon SES rifiuta il tuo login SMTP con 535 Authentication Credentials Invalid. Usa vere credenziali SMTP, la Region e l'endpoint giusti, e provale.
Cosa significa
La tua applicazione, il tuo plugin o il tuo server di posta si è collegato all'endpoint SMTP di Amazon SES, ha tentato di autenticarsi e SES ha rifiutato nome utente o password:
535 Authentication Credentials Invalid
Un codice 5xx indica un errore definitivo: riprovare con le stesse impostazioni fallirà di nuovo. La connessione in sé funziona, quindi non è un problema di firewall.
Perché succede
- Hai usato direttamente le chiavi di accesso IAM. La password SMTP di SES non è la tua secret access key AWS. Il nome utente SMTP somiglia a un access key ID (
AKIA...), ma la password è derivata dalla chiave segreta con un algoritmo apposito. - Region sbagliata. Le credenziali SMTP sono specifiche di ogni Region AWS. Credenziali create per
eu-west-1non funzionano suemail-smtp.us-east-1.amazonaws.com. - Utente o chiave eliminati o disattivati. Le credenziali SMTP appartengono a un utente IAM. Se quell'utente o la sua chiave di accesso sono stati eliminati o resi inattivi (per esempio durante una pulizia di sicurezza), il login fallisce.
- Credenziali temporanee. Le password SMTP non possono essere derivate da credenziali temporanee (ruoli, chiavi di sessione STS).
- Errori di copia e incolla: spazi in più, una password troncata o caratteri speciali (
+,/,=) alterati quando vengono messi in un URL o in un file.envsenza virgolette. - Un vecchio nome utente/password memorizzato da un plugin, mentre i valori li hai cambiati altrove.
Altri codici indicano altri problemi: 530 Authentication required significa che il tuo client non ha nemmeno provato ad autenticarsi; 535 Account not subscribed to SES significa che l'account AWS non è iscritto a SES; 554 Access denied: User ... is not authorized to perform ses:SendRawEmail significa che il login ha funzionato ma l'utente IAM non ha il permesso.
Come verificare
- Nella console SES apri SMTP settings nella Region che usi e annota l'endpoint esatto, per esempio
email-smtp.eu-west-1.amazonaws.com. Le porte sono 25, 587 o 2587 con STARTTLS, e 465 o 2465 con TLS fin dall'inizio. - In IAM trova l'utente SMTP e verifica che la sua chiave di accesso sia Active.
- Prova il login fuori dalla tua applicazione con
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
Se swaks ottiene 235 Authentication successful, le credenziali sono corrette e il problema è nella configurazione della tua applicazione. Se non riesci nemmeno a collegarti, consulta porta SMTP 25 bloccata o connessione scaduta (la porta 25 è limitata su EC2; usa la 587 o la 465).
Come risolvere
- Crea le credenziali SMTP nel modo più semplice. Console SES, Region corretta, SMTP settings, Create SMTP credentials. SES crea un utente IAM con il giusto permesso di invio e mostra una sola volta nome utente e password SMTP. Scarica il file .csv.
- Oppure derivale dalla chiave segreta di un utente IAM esistente con lo script della documentazione AWS, indicando la Region da cui invierai. L'utente ha bisogno del permesso
ses:SendRawEmail. - Inserisci i valori nella tua applicazione con l'endpoint della stessa Region. Esempio per 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 },
});Per Postfix, in /etc/postfix/sasl_passwd:
[email-smtp.eu-west-1.amazonaws.com]:587 AKIAEXAMPLE:YOUR_SMTP_PASSWORD
Poi esegui postmap /etc/postfix/sasl_passwd, imposta relayhost = [email-smtp.eu-west-1.amazonaws.com]:587, smtp_sasl_auth_enable = yes, smtp_tls_security_level = encrypt e ricarica Postfix.
Se usi PHPMailer o WordPress, le stesse cause producono "Could not authenticate"; consulta PHPMailer SMTP Error: Could not authenticate. Per cambiare una password SMTP, AWS consiglia di eliminare l'utente SMTP e creare nuove credenziali. Se le tue credenziali sono state create prima del 10 gennaio 2019, sostituiscile: usano una versione di firma più vecchia.
Verifica che sia risolto
Invia un messaggio dalla tua applicazione tramite SES all'indirizzo unico nella home page di Delivmail. Se arriva, l'autenticazione funziona; leggi il report per SPF, DKIM e DMARC. Se ora ricevi 554 Message rejected: Email address is not verified, il login va bene e il passo successivo è in Amazon SES "Email address is not verified".
Verifica che sia risolto
Una modifica DNS può richiedere da pochi minuti a qualche ora. Poi invia una nuova email di test o scansiona di nuovo il tuo dominio.
Guide correlate
- Amazon SES "Email address is not verified": sandbox e identità, come risolvereAmazon SES rifiuta la tua email perché un'identità del mittente o del destinatario non è verificata. Verifica le identità, esci dalla sandbox e invia in sicurezza.
- Verifica DKIM di Amazon SES "Pending" o "Failed": come risolvereIl tuo dominio Amazon SES resta "Pending" o mostra DKIM "Failed". Controlla i tre record CNAME, gli errori DNS più comuni e come riavviare la verifica.
- Dominio MAIL FROM personalizzato su Amazon SES: allineamento SPF per DMARCAmazon SES usa un dominio di bounce amazonses.com, quindi SPF non è allineato per DMARC. Configura un sottodominio MAIL FROM con i record MX e SPF giusti.
- Account Amazon SES sotto revisione o sospeso: tasso di bounce e di reclamiIl tuo account Amazon SES è sotto revisione o l'invio è sospeso per bounce o reclami. Scopri le soglie, trova la causa e rispondi ad AWS.
- Amazon SES "Throttling: Maximum sending rate exceeded" (454): come risolvereAmazon SES restituisce "Maximum sending rate exceeded" o "Daily message quota exceeded". Controlla le quote, rallenta gli invii e chiedi un aumento.