// comment corriger
Amazon SES SMTP « 535 Authentication Credentials Invalid » : la solution
Amazon SES refuse votre connexion SMTP avec 535 Authentication Credentials Invalid. Utilisez de vrais identifiants SMTP, la bonne Région et le bon serveur.
Ce que ça veut dire
Votre application, votre plugin ou votre serveur mail s'est connecté au point de terminaison SMTP d'Amazon SES, a tenté de s'authentifier, et SES a refusé le nom d'utilisateur ou le mot de passe :
535 Authentication Credentials Invalid
Un code 5xx signale une erreur définitive : réessayer avec les mêmes réglages échouera de nouveau. La connexion elle-même fonctionne, ce n'est donc pas un problème de pare-feu.
Pourquoi cela arrive
- Vous avez utilisé directement des clés d'accès IAM. Le mot de passe SMTP de SES n'est pas votre clé d'accès secrète AWS. Le nom d'utilisateur SMTP ressemble à un identifiant de clé d'accès (
AKIA...), mais le mot de passe est dérivé de la clé secrète par un algorithme spécifique. - Mauvaise Région. Les identifiants SMTP sont propres à chaque Région AWS. Des identifiants créés pour
eu-west-1ne fonctionnent pas suremail-smtp.us-east-1.amazonaws.com. - Utilisateur ou clé supprimé ou désactivé. Les identifiants SMTP appartiennent à un utilisateur IAM. Si cet utilisateur ou sa clé d'accès a été supprimé ou rendu inactif (par exemple lors d'un nettoyage de sécurité), la connexion échoue.
- Identifiants temporaires. Impossible de dériver un mot de passe SMTP à partir d'identifiants temporaires (rôles, clés de session STS).
- Erreurs de copier-coller : espaces en trop, mot de passe tronqué, ou caractères spéciaux (
+,/,=) abîmés lorsqu'ils sont placés dans une URL ou dans un fichier.envsans guillemets. - Un ancien identifiant enregistré par un plugin, alors que vous avez changé les valeurs ailleurs.
D'autres codes signalent d'autres problèmes : 530 Authentication required veut dire que votre client n'a même pas tenté de s'authentifier ; 535 Account not subscribed to SES veut dire que le compte AWS n'est pas inscrit à SES ; 554 Access denied: User ... is not authorized to perform ses:SendRawEmail veut dire que la connexion a réussi mais que l'utilisateur IAM n'a pas la permission.
Comment vérifier
- Dans la console SES, ouvrez SMTP settings dans la Région que vous utilisez et notez le point de terminaison exact, par exemple
email-smtp.eu-west-1.amazonaws.com. Les ports sont 25, 587 ou 2587 avec STARTTLS, et 465 ou 2465 avec TLS dès la connexion. - Dans IAM, retrouvez l'utilisateur SMTP et vérifiez que sa clé d'accès est Active.
- Testez la connexion en dehors de votre application avec
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 obtient 235 Authentication successful, les identifiants sont bons et le problème vient de la configuration de votre application. Si vous n'arrivez pas du tout à vous connecter, consultez port SMTP 25 bloqué ou délai de connexion dépassé (le port 25 est restreint sur EC2 ; utilisez 587 ou 465).
Comment corriger
- Créez des identifiants SMTP par la voie simple. Console SES, bonne Région, SMTP settings, Create SMTP credentials. SES crée un utilisateur IAM avec la bonne permission d'envoi et affiche une seule fois le nom d'utilisateur et le mot de passe SMTP. Téléchargez le fichier .csv.
- Ou dérivez-les à partir de la clé secrète d'un utilisateur IAM existant avec le script de la documentation AWS, en lui indiquant la Région d'envoi. L'utilisateur a besoin de la permission
ses:SendRawEmail. - Saisissez ces valeurs dans votre application avec le point de terminaison de la même Région. Exemple pour 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 },
});Pour Postfix, dans /etc/postfix/sasl_passwd :
[email-smtp.eu-west-1.amazonaws.com]:587 AKIAEXAMPLE:YOUR_SMTP_PASSWORD
Lancez ensuite postmap /etc/postfix/sasl_passwd, réglez relayhost = [email-smtp.eu-west-1.amazonaws.com]:587, smtp_sasl_auth_enable = yes, smtp_tls_security_level = encrypt, puis rechargez Postfix.
Avec PHPMailer ou WordPress, les mêmes causes produisent « Could not authenticate » ; voir PHPMailer SMTP Error: Could not authenticate. Pour changer un mot de passe SMTP, AWS recommande de supprimer l'utilisateur SMTP et de créer de nouveaux identifiants. Si vos identifiants ont été créés avant le 10 janvier 2019, remplacez-les : ils utilisent une ancienne version de signature.
Vérifier que c'est corrigé
Envoyez un message depuis votre application via SES à l'adresse unique de la page d'accueil de Delivmail. S'il arrive, l'authentification fonctionne ; lisez le rapport pour le SPF, le DKIM et le DMARC. Si vous obtenez maintenant 554 Message rejected: Email address is not verified, la connexion est bonne et l'étape suivante se trouve dans Amazon SES « Email address is not verified ».
Vérifiez que c'est corrigé
Une modification DNS peut prendre de quelques minutes à quelques heures. Ensuite, envoyez un nouvel email de test ou scannez à nouveau votre domaine.
Fiches liées
- Amazon SES « Email address is not verified » : sandbox et identités, la solutionAmazon SES refuse votre email car une identité d'expéditeur ou de destinataire n'est pas vérifiée. Vérifiez vos identités, sortez de la sandbox et envoyez sereinement.
- Vérification DKIM Amazon SES en attente (Pending) ou en échec (Failed) : comment corrigerVotre domaine Amazon SES reste « Pending » ou affiche DKIM « Failed ». Vérifiez les trois CNAME, les erreurs DNS courantes et comment relancer la vérification.
- Domaine MAIL FROM personnalisé Amazon SES : alignement SPF pour DMARCAmazon SES utilise un domaine de rebond amazonses.com, donc le SPF ne s'aligne pas pour DMARC. Configurez un sous-domaine MAIL FROM avec le bon MX et le bon SPF.
- Compte Amazon SES « under review » ou en pause : taux de rebond et de plaintesVotre compte Amazon SES est en cours d'examen ou l'envoi est suspendu à cause des rebonds ou des plaintes. Seuils, causes et réponse à AWS.
- Amazon SES « Throttling: Maximum sending rate exceeded » (454) : la solutionAmazon SES renvoie « Maximum sending rate exceeded » ou « Daily message quota exceeded ». Vérifiez vos quotas, ralentissez l'envoi et demandez une hausse.