Amazon SESのSMTPを利用してメールを送信する方法です。
まずはSESのSMTPを設定をします。
設定といっても認証情報を作成するだけでSMPTサーバ自体は共有のものを使用します。
SESのメニューから「SMTP Setting」を選択して「Create My SMTP Credentials」のボタンを押します。
IAMユーザー名を指定して作成ボタンを押します。
デフォルトで設定されている値でも構いません。
認証情報が作成されますのでダウンロードしておきます。
続いてメールアドレスを登録します。
ここで登録するメールアドレスは送信元に設定するアドレスになります。
メニューから「Email Addresses」を選択して「Verify a New Email Adress」のボタンを押します。
メールアドレスを入力し、検証ボタンを押すとアドレスが登録され確認用のメールが送信されます。
メール本文にあるリンクを開くとメールアドレスが検証済み(verified)となります。
ここまででAWS側の設定が完了です。
続いてメールの送信を行います。
メールの送信(SMTPサーバへの転送)はOpenSSLのコマンドで行います。
まずはメール本文及び認証情報記述したテキストを作成します。
$ vi mail
EHLO 送信元ホスト名 AUTH LOGIN アクセスキー シークレット MAIL FROM: 送信先メールアドレス RCPT TO: 送信元メールアドレス DATA From: Sender Name <送信先メールアドレス> To: 送信元メールアドレス Subject: メールタイトル メール本文 . QUIT
送信元ホスト名は送信元メールアドレスのドメインを設定します。
アクセスキーとシークレットキーは先ほど作成した認証情報のものになります。
また、アクセスキーとシークレットキーはbase64にエンコードしたものを記述します。
ここまで準備できればOpenSSLのコマンドでメールを送信することができます。
$ openssl s_client -crlf -quiet -starttls smtp -connect email-smtp.us-east-1.amazonaws.com:587 < mail
今回、SMTPサーバを安価で用意する必要があったためSESを利用しました。
ちなみに商用システムとして使用するには信頼性(ドメインの)がないためAWS側も推奨してはいないようです。