目次

Amazon SES



概要


サプレッションリスト(Suppression list)で、迷惑メール管理

アカウントのサプレッションリスト

Amazon SESを使ってメール送信した際、メールがハードバウンスすると、サプレッションリストに登録されます。


グローバルサプレッションリスト


SESを利用してメール送信する方法

SESとPostfixの連携

SESとPostfixの連携では、Amazon SES SMTP インターフェイスを利用するため、SES用のユーザとパスワードが必要です。
IAMユーザではないです。

/etc/postfix/main.cf

#利用しているリージョンを指定
relayhost = [email-smtp.us-east-1.amazonaws.com]:25

smtp_sasl_auth_enable = yes
smtp_sasl_security_options = noanonymous
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_use_tls = yes
smtp_tls_security_level = encrypt
smtp_tls_note_starttls_offer = yes

smtp_tls_CAfile = /etc/ssl/certs/ca-bundle.crt

/etc/postfix/master.cf

#       -o smtp_fallback_relay=

/etc/postfix/sasl_passwd.db(/etc/postfix/sasl_passwd)

# vi /etc/postfix/sasl_passwd
[email-smtp.us-east-1.amazonaws.com]:25 SMTP ユーザー名:SMTP パスワード

# postmap hash:/etc/postfix/sasl_passwd
# chmod 600 /etc/postfix/sasl_passwd.db

# rm /etc/postfix/sasl_passwd   <- 必要に応じて、不要なファイルを削除


Postfixの設定反映

# service postfix restart


メール送信テスト

echo "test" | mail -r from@example.com -s "mail-subject" to@example.com


bashでAmazon SESを利用する方法

bashからSESを利用する場合は、IAMユーザが必要です。
Amazon SES SMTP インターフェイスを利用するSES用のユーザとパスワードではないです。

#!/bin/bash
 
##################################################
# アクセスキーID/シークレットアクセスキー/リージョン の設定
##################################################
AWS_ACCESS_KEY="AKIxxxxx"  # アクセスキーID
AWS_SECRET_KEY="xxxxx"     # シークレットアクセスキー
REGION="us-west-2"         # リージョン。米国東部 (バージニア北部):us-east-1、米国西部 (オレゴン):us-west-2、EU (アイルランド):eu-west-1
 
##################################################
# メールの送信者・受信者/件名/本文 の設定
##################################################
TO="Email To <to@example.com>"
FROM="Email From <from@example.com>"
SUBJECT="<YOUR SUBJECT HERE>"
MESSAGE="<YOUR MESSAGE HERE>"
 
##################################################
# 処理
##################################################
date="$(date -R)"
access_key="$AWS_ACCESS_KEY"
priv_key="$AWS_SECRET_KEY"
region="$REGION"
signature="$(echo -n "$date" | openssl dgst -sha256 -hmac "$priv_key" -binary | base64 -w 0)"
auth_header="X-Amzn-Authorization: AWS3-HTTPS AWSAccessKeyId=$access_key, Algorithm=HmacSHA256, Signature=$signature"
endpoint="https://email.$region.amazonaws.com/"
 
action="Action=SendEmail"
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"