以前、PostfixからSESにリレー(stunnel編)の記事でPostfixからSESへのリレーの準備としてstunnelでSESに繋ぎました。
今回は、直接SMTPでstunnel経由のSESでメールを送信してみます。
まずはstunnelにtelnetです。
# telnet localhost 2525 Trying ::1... telnet: connect to address ::1: Connection refused Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 email-smtp.amazonaws.com ESMTP SimpleEmailService-264224127
上記のようにSESからのレスポンスが返って来ます。
そして、次にEHLO(localhost)コマンドを実行します。
EHLO localhost 250-email-smtp.amazonaws.com 250-8BITMIME 250-SIZE 10485760 250-AUTH PLAIN LOGIN 250 Ok
認証タイプにPLAINとLOGINが利用できることが確認できます。
今回AUTHコマンドでLOGIN指定します。
AUTH LOGIN 334 VXNlcm5hbWU6
LOGINはBASE64にエンコードしたユーザー(アクセスキー)とパスワード(シークレットキー)を別々に入力します。
BASE64のエンコードは下記のようにすることができます。
perl -MMIME::Base64 -e 'print encode_base64("アクセスキー");' perl -MMIME::Base64 -e 'print encode_base64("シークレットキー");'
当然、アクセスキー、シークレットキーはSESが利用できるユーザーのものになります。
まずは、BASE64にしたアクセスキー(ユーザー)を入力します。
[アクセスキーをBASE64したもの] 334 UGFzc3dvcmQ6
そうすると、パスワード(シークレットキー)が求められますので、BASE64にしたシークレットキーを入力します。
[シークレットキーをBASE64したもの] 235 Authentication successful.
問題なければ認証が成功します。
後は、SMTPのコマンドでメールを送信します。
MAIL FROM:suzuki@suz-lab.com 250 Ok RCPT TO:suzuki@suz-lab.com 250 Ok DATA 354 End data with. Subject: test10 test10 . 250 Ok 00000139b5f98021-c9e0b8d5-1d2a-415f-aae2-e057fbb7a690-000000 QUIT 221 Bye Connection closed by foreign host.
FROMとTOがSESで認証されたメールアドレスなら、SESからメールが送信されて来ます。
(プロダクションモードの場合は、TOは認証されたメールアドレスでなくても大丈夫です)
最後に再度、SMTPコマンドのやり取りの全体を掲載しておきます。
# telnet localhost 2525 Trying ::1... telnet: connect to address ::1: Connection refused Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 email-smtp.amazonaws.com ESMTP SimpleEmailService-264224127 EHLO localhost 250-email-smtp.amazonaws.com 250-8BITMIME 250-SIZE 10485760 250-AUTH PLAIN LOGIN 250 Ok AUTH LOGIN 334 VXNlcm5hbWU6 [アクセスキーをBASE64したもの] 334 UGFzc3dvcmQ6 [シークレットキーをBASE64したもの] 235 Authentication successful. MAIL FROM:suzuki@suz-lab.com 250 Ok RCPT TO:suzuki@suz-lab.com 250 Ok DATA 354 End data with. Subject: test10 test10 . 250 Ok 00000139b5f98021-c9e0b8d5-1d2a-415f-aae2-e057fbb7a690-000000 QUIT 221 Bye Connection closed by foreign host.