以前、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.

こちらの記事はなかの人(suz-lab)監修のもと掲載しています。
元記事は、こちら