2016-07-05 2 views
0

Я написал этот сценарийОтправка почты через SES не работает

#!/bin/bash 

TO="[email protected]" 
FROM="[email protected]" 
SUBJECT="test" 
MESSAGE="test message" 

date="$(date -R)" 
echo $date 
priv_key="my_access_key" 
access_key="my_access_key_id" 
signature="$(echo -n "$date" | openssl dgst -sha256 -hmac "$priv_key" -binary | base64 -w 0)" 
echo $signature 
auth_header="X-Amzn-Authorization: AWS3-HTTPS AWSAccessKeyId=$access_key, Algorithm=HmacSHA256, Signature=$signature ,Date=$date" 
endpoint="https://email.us-east-1.amazonaws.com/" 

action="Action=SendRawEmail" 
source="Source=$FROM" 
to="Destination.ToAddresses.member.1=$TO" 
subject="Message.Subject.Data=$SUBJECT" 
message="Message.Body.Text.Data=$MESSAGE" 

curl -v -X POST -H "Date: $date" -H "$auth_header" --data-urlencode "$message" --data-urlencode "$to" --data-urlencode "$source" --data-urlencode "$action" --data-urlencode "$subject" "$endpoint" 

Но я получаю эту ошибку:

<ErrorResponse xmlns="http://ses.amazonaws.com/doc/2010-12-01/"> 
    <Error> 
    <Type>Sender</Type> 
    <Code>InvalidClientTokenId</Code> 
    <Message>The security token included in the request is invalid</Message> 
    </Error> 
</ErrorResponse> 

Я не в состоянии разобраться в проблеме, что маркер, который информационной безопасности говорит. Это о моих полномочиях. Я создал пользователя IAM с ролью для отправки сырой электронной почты.

ответ

0

Во-первых, вам нужно перейти на консоль IAM и создать роль или пользователя и добавить пользователю политику отправки электронной почты с использованием SES.

Вы никогда не должны записывать учетные данные в свой код. Есть более безопасные и правильные способы сделать это. Например, если вы используете EC2, вы должны добавить роль в свой экземпляр EC2. Другое решение - использовать переменные среды (http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html).

Когда пользователь имеет эту политику, вам также необходимо выполнить проверку электронной почты отправителя на панели управления SES в вашей учетной записи AWS. Вы можете либо подтвердить электронную почту получателя, либо создать запрос на отправку писем незарегистрированным получателям.

Но сначала попробуйте добавить разрешения IAM и попытайтесь заставить его работать.