この記事は何?
新卒一年目が前知識0からAmazon SES(以下SES)でメールサーバーを構築した話の振り返りのようなもの。
その中で「なるほど」と思ったことを残します。
※構築の手順書ではないです
構築前のAmazon SESのイメージ
AWSのメール送信ができるサービス。
Amazon SES とは
以下公式より引用となります。
Amazon SES は、一括 E メール送信用の任意のアプリケーションに統合できるクラウド E メール サービスプロバイダーです。
トランザクションメールを送信する場合でも、マーケティングメールを送信する場合でも、使用した分だけ料金が発生します。
Amazon SES は、専用 IP アドレス、共有 IP アドレス、所有 IP アドレスなど、さまざまなデプロイもサポートしています。
送信者統計に関するレポートと到達率ダッシュボードは、企業がすべての E メールを活用するのに役立ちます。
SESってどんなサービス?を一言で表すと、「Amazonが所有しているメールサーバーを借りてメールの送信ができる。」ですね。
その中で、「従量課金ですよ〜」とか「マネージドサービスなので信頼性・可用性が高いですよ〜」とか、自前でサーバーを用意する際の懸念点をカバーしてくれています。
構築してみて始めて知ったこと
「構築してみて始めて知ったこと」と見出しで書いていますが、「前知識0」なので初めから最後まで知らないことばかりでした。。。
流石に全部は書ききれないので、大きくハマったところについて2つ書こうと思います。
IAMユーザーの作成 ・ SMTP認証情報の取得
SESでは認証された送信元の登録として、ドメインorメールアドレスを登録します。
ここで登録したドメインorメールアドレスからしか、メールは送信できません。
さらに、SESにはメール送信方法として「SMTP接続を使う方法」、「Amazon SES APIを使用する方法」の二通りがあります。
メールサーバーの仕組み・設定方法すら知らなかった私は「送信元として使いたいメールアドレスを登録しておしまい!」と考えていました。
しかし、メールアドレスを登録するだけではもちろんメールの送信はできません。(テスト用としてごく簡単なメールは送信できます)
今回担当した案件の要件では「メール送信はメーラーからSESに接続する」ことだったため、上記で挙げた送信方法のうち「SMTP接続を使う方法」を使ってSESのメールサーバーに接続する方法を採用しました。
IAMユーザーの作成
SES では 「Amazon が所有しているメールサーバーを借りる」ため、そのサーバーへ接続する認証情報が必要になります。
そのため、メールサーバーへ接続可能なロールを持ったIAMユーザーを払い出す必要があるんですね。
SES のコンソールを使えば、そのIAMユーザーを払い出しが簡単にできます。
手順書ではないため詳細は省きますが、下記の四角で囲んだボタンから、IAMユーザー名を入力するだけで作成ができます。
IAMユーザーの作成が完了すると「ユーザー名」と「パスワード」が発行されるので、「メールサーバーの名前(エンドポイント)」「ポート番号」と合わせて、メーラーに接続情報を渡してあげることで、無事メーラーからメールの送信ができるようになりました。
パスワードの文字数が多すぎる
こちらは実際に顧客からお問い合わせがあり、対処できるかそうかでハマった問題です。
上記の「IAMユーザーの作成」で発行したパスワードは40字以上の英数字で構成されていました。
このパスワードの長さにメーラーが対応しておらず、短くできないかを調査することとなりました。
まずは、AWS公式のドキュメントを確認してみます。下記の記述が確認できました。
SMTP パスワードを変更する場合は、IAM コンソールで既存の SMTP ユーザーを削除します。次に、前の手順を完了して、新しい SMTP 認証情報のセットを作成します。
要は、SMTP認証で使うパスワードを変更したいときは、ユーザー削除して再作成してね。ということのようですね。
パスワードの長さを短くできるかどうかについての明確な記載は確認できませんでした。
他技術者様の記事等も複数拝見しましたが、結論は見つからず。
解決の糸口が見えないまま悩んでいましたが、ことの最後は意外とあっさり解決しました。
グループミーティングで「SMTP認証で使うパスワードが短くできるかどうか、悩んでるんですよね」と相談させていただいたところ、チームの方から「短くはできないみたいですね」と根拠付きで教えていただきました。
答えは AWS re:Post にありましたね。。。
この件に関しては「調べる力」がまだまだだな、と痛感する良い機会となりました。
同時に調べる力持っている方のすごさを体感しました、
おわりに
Qiitaに記事を投稿するには初めてでしたが、学んだ技術やハマったことはアウトプットすることで、自分自身の経験を振り返る良い機会になるなと感じました。アドベントカレンダーという形で記事投稿の機会をくれた @Michinosuke ありがとう