2017-05-26 1 views
1

J'utilise Laravel 5.3, EC2 et SES pour envoyer des emails.Amazon SES 403 Interdit SignatureDoesNotMatch utilisant Laravel 5.3

config/mail.php

'driver' => env('MAIL_DRIVER', 'smtp'), 
'host' => env('MAIL_HOST', 'smtp.mailgun.org'), 
'port' => env('MAIL_PORT', 587), 

.env a

MAIL_DRIVER=ses 
MAIL_HOST=email-smtp.us-west-2.amazonaws.com 
MAIL_PORT=25 
MAIL_ENCRYPTION=TLS 
SES_KEY='AKIA------DZQ5TYQ' 
SES_SECRET=AhN8d----------------ZbBq7TNBmhNnosfYbasg6Q 
SES_REGION='us-west-2' 

composer.json

"require": { 
    "aws/aws-sdk-php": "~3.0", 
} 

EC2 est hébergé à Mumbai et SES en nous-ouest. J'ai essayé ce qui suit:
1) Créer un nouvel utilisateur IAM et en utilisant la nouvelle clé/secret.
2) Création de la clé/secret de l'utilisateur root.
3) Exécution de la commande NTPDATE.
4) php artisan cache: clair, config: clair, affichage: clair, dump-autoload
5) J'ai aussi utilisé sparkpost en .env et cela donne l'erreur 403: interdite aussi.

Je vois encore l'erreur suivante:

[2017-05-26 06:02:00] local.ERROR: exception 'Aws\Ses\Exception\SesException' with message 'Error executing "SendRawEmail" on "https://email.us-west-2.amazonaws.com"; AWS HTTP error: Client error: `POST https://email.us-west-2.amazonaws.com` resulted in a `403 Forbidden` response: 
<ErrorResponse xmlns="http://ses.amazonaws.com/doc/2010-12-01/"> 
    <Error> 
    <Type>Sender</Type> 
    <Code>SignatureDo (truncated...) 
SignatureDoesNotMatch (client): The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details. 

erreur complète ici: https://pastebin.com/KSJinB1E

+0

Cela peut être utile. http://docs.aws.amazon.com/ses/latest/DeveloperGuide/smtp-credentials.html >> Votre nom d'utilisateur SMTP et votre mot de passe ne sont pas les mêmes que votre ID de clé d'accès AWS et votre clé d'accès secrète. N'essayez pas d'utiliser vos informations d'identification AWS pour vous authentifier par rapport au point de terminaison SMTP. Je veux juste m'assurer que vous avez essayé cela. – nightgaunt

+0

Oui. C'est fait. J'utilise les informations d'identification IAM. Veuillez vérifier SES_KEY et SES_SECRET. C'est les informations d'identification de l'utilisateur IAM. –

+0

Vous avez mentionné que vous avez exécuté ntpdate, mais pas la sortie? Êtes-vous sûr de ne pas avoir de décalage d'horloge? Quelle est la sortie de ntpstat? – Robo

Répondre

1

Je ne suis pas au courant de Laravel pour commencer. Toutefois, si vous utilisez SMTP, vous devez spécifier MAIL_USERNAME et MAIL_PASSWORD. Le pilote doit également être SMTP et non SES puisque vous utilisez l'hôte SMTP de SES.

Le lien de documentation - http://docs.aws.amazon.com/ses/latest/DeveloperGuide/smtp-credentials.html devrait vous permettre de générer des informations d'identification SMTP différentes de vos informations d'identification AWS IAM.

En bref, vous n'utilisez pas SES SDK mais SMTP pour envoyer des emails. SES_KEY et SES_SECRET ne le feront donc pas.

+0

Utilisation de SES SDK –