// cómo solucionarlo
Amazon SES SMTP "535 Authentication Credentials Invalid": cómo solucionarlo
Amazon SES rechaza tu inicio de sesión SMTP con 535 Authentication Credentials Invalid. Usa credenciales SMTP reales, la región y el endpoint correctos, y pruébalas.
Qué significa
Tu aplicación, plugin o servidor de correo se ha conectado al endpoint SMTP de Amazon SES, ha intentado iniciar sesión y SES ha rechazado el usuario o la contraseña:
535 Authentication Credentials Invalid
Un código 5xx indica un error permanente: si vuelves a intentarlo con la misma configuración, fallará otra vez. La conexión en sí funciona, así que no es un problema de cortafuegos.
Por qué ocurre
- Has usado directamente las claves de acceso IAM. La contraseña SMTP de SES no es tu clave de acceso secreta de AWS. El usuario SMTP se parece a un ID de clave de acceso (
AKIA...), pero la contraseña se obtiene a partir de la clave secreta con un algoritmo especial. - Región equivocada. Las credenciales SMTP son propias de cada región de AWS. Las credenciales creadas para
eu-west-1no funcionan enemail-smtp.us-east-1.amazonaws.com. - Usuario o clave eliminados o desactivados. Las credenciales SMTP pertenecen a un usuario IAM. Si ese usuario o su clave de acceso se han eliminado o desactivado (por ejemplo, durante una limpieza de seguridad), el inicio de sesión falla.
- Credenciales temporales. Las contraseñas SMTP no se pueden obtener a partir de credenciales temporales (roles, claves de sesión STS).
- Errores al copiar y pegar: espacios de más, una contraseña recortada o caracteres especiales (
+,/,=) estropeados al ponerlos en una URL o en un archivo.envsin comillas. - Un usuario o contraseña antiguos guardados por un plugin, mientras tú cambiaste los valores en otro sitio.
Otros códigos indican otros problemas: 530 Authentication required significa que tu cliente ni siquiera ha intentado iniciar sesión; 535 Account not subscribed to SES significa que la cuenta de AWS no está dada de alta en SES; 554 Access denied: User ... is not authorized to perform ses:SendRawEmail significa que el inicio de sesión ha funcionado, pero el usuario IAM no tiene el permiso necesario.
Cómo comprobarlo
- En la consola de SES, abre SMTP settings en la región que usas y anota el endpoint exacto, por ejemplo
email-smtp.eu-west-1.amazonaws.com. Los puertos son 25, 587 o 2587 con STARTTLS, y 465 o 2465 con TLS desde el principio. - En IAM, busca el usuario SMTP y comprueba que su clave de acceso está Active.
- Prueba el inicio de sesión fuera de tu aplicación 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
Si swaks obtiene 235 Authentication successful, las credenciales son buenas y el problema está en la configuración de tu aplicación. Si ni siquiera consigues conectarte, consulta puerto SMTP 25 bloqueado o tiempo de conexión agotado (el puerto 25 está restringido en EC2; usa el 587 o el 465).
Cómo solucionarlo
- Crea las credenciales SMTP de la forma sencilla. Consola de SES, región correcta, SMTP settings, Create SMTP credentials. SES crea un usuario IAM con el permiso de envío adecuado y muestra una sola vez el usuario y la contraseña SMTP. Descarga el archivo .csv.
- O genéralas a partir de la clave secreta de un usuario IAM existente con el script de la documentación de AWS, indicando la región desde la que vas a enviar. El usuario necesita el permiso
ses:SendRawEmail. - Pon los valores en tu aplicación con el endpoint de esa misma región. Ejemplo para 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 },
});Para Postfix, en /etc/postfix/sasl_passwd:
[email-smtp.eu-west-1.amazonaws.com]:587 AKIAEXAMPLE:YOUR_SMTP_PASSWORD
Después ejecuta postmap /etc/postfix/sasl_passwd, configura relayhost = [email-smtp.eu-west-1.amazonaws.com]:587, smtp_sasl_auth_enable = yes, smtp_tls_security_level = encrypt y recarga Postfix.
Si usas PHPMailer o WordPress, las mismas causas producen "Could not authenticate"; consulta PHPMailer SMTP Error: Could not authenticate. Para cambiar una contraseña SMTP, AWS recomienda eliminar el usuario SMTP y crear credenciales nuevas. Si tus credenciales se crearon antes del 10 de enero de 2019, sustitúyelas: usan una versión de firma antigua.
Comprueba que está solucionado
Envía un mensaje desde tu aplicación a través de SES a la dirección única de la página de inicio de Delivmail. Si llega, la autenticación funciona; revisa en el informe SPF, DKIM y DMARC. Si ahora recibes 554 Message rejected: Email address is not verified, el inicio de sesión está bien y el siguiente paso está en Amazon SES "Email address is not verified".
Comprueba que está solucionado
Un cambio de DNS puede tardar de unos minutos a unas horas. Después, envía un nuevo email de prueba o vuelve a escanear tu dominio.
Guías relacionadas
- Amazon SES "Email address is not verified": sandbox e identidades, cómo solucionarloAmazon SES rechaza tu email porque una identidad de remitente o destinatario no está verificada. Verifica identidades, sal del sandbox y envía sin riesgo.
- Verificación DKIM de Amazon SES pendiente o fallida: cómo solucionarloTu dominio en Amazon SES se queda en "Pending" o muestra DKIM "Failed". Revisa los tres registros CNAME, los errores DNS habituales y cómo relanzar la verificación.
- Dominio MAIL FROM personalizado en Amazon SES: alineación SPF para DMARCAmazon SES usa un dominio de rebote amazonses.com, así que SPF no se alinea con DMARC. Configura un subdominio MAIL FROM propio con los registros MX y SPF correctos.
- Cuenta de Amazon SES en revisión o pausada: tasa de rebotes y de quejasTu cuenta de Amazon SES está en revisión o el envío está pausado por rebotes o quejas. Conoce los umbrales, encuentra la causa y responde a AWS.
- Amazon SES "Throttling: Maximum sending rate exceeded" (454): cómo solucionarloAmazon SES devuelve "Maximum sending rate exceeded" o "Daily message quota exceeded". Revisa tus cuotas, reduce la velocidad de envío y pide un aumento.