Alibaba Cloud ECSからのメール送信について

はじめまして。SBCloudエンジニアの南(cjnan)です。今日からエンジニアの色々についてブログを書き始めたいと思います。

本記事では、Alibaba Cloud ECSからメールを送信する際の注意点や、ベストプラクティスやについてご紹介します。ECSサーバからメール配信する方法は主に次の3つがあります。

  1. ECSにMTAを構築してメールの配信環境を作る
  2. 外部のメール送信サービスを利用する(SMTP利用)
  3. 外部のメール送信サービスを利用する(WebAPI利用)

方法1. ECSにMTAを構築してメールの配信環境を作る

Alibaba Cloud ECSではOP25Bを実施し、インターネットへのSMTP(25番ポート)が制限されています。Alibaba Cloudで25番ポートのメール通信をする場合には、指定のECSインスタンスから送信先のドメインに対する25番ポートの外部接続制限を最大3件まで解除することができます。特定のドメインにのみメールを送信する場合、ECSにMTAを構築しメール送信を行うことが可能です。

関連内容:ECS で SMTP(25番ポート)を使用する際の注意事項

外部への25番ポートを開放する方法

ECSの外部への25番ポートの開放はテクニカルサポートへチケットを申請することでできます。申請時に下記の情報を記入する必要があります。詳しくは「ECS で SMTP(25番ポート)を使用する際の注意事項」のドキュメントを確認してください。


・送信するメールの種類
・一日あたりの送信件数
・配信停止メール受取の有無
・ユースケースの説明
・ECSのIPアドレス
・ECSが接続するドメイン名

方法2. 外部のメール送信サービスを利用する(SMTP)

SendGridについて

方法1でもメールを送信することは可能ですが、不特定多数の宛先に送る場合には対応することができません。そこで、今回は外部のメール送信サービスSendGridを利用したメールの送信方法を紹介します。

SendGridは2009年から始めたメール配信サービスです。クラウドサービスのためアカウントを作成するだけで即日メールを送信でき、面倒でコストのかかるメールサーバの構築は不要です。SMTP経由のメール送信機能はもちろん、Web APIの提供やいくつかの言語(C#, Go, Java, PHP, Node.js, Ruby, Python)向けにライブラリも提供しています。関連APIのソースコードはGitHubで公開されています。SendGridについての詳しい内容は下記のリンクをご参照ください。

リンク: https://sendgrid.kke.co.jp/docs/

イメージ図

(1)アカウント作成

SendGridを利用するには、まずアカウントの作成が必要です。SendGridではパスワードとしてアルファベットと数字のみ利用可能になっています。

リンク:https://sendgrid.kke.co.jp/about/

アカウントを作成するとまず次のメッセージが来ます。SendGridからの確認は通常2日内で終わります。

(2)Postfixの設定を更新する

SendGridをリレーホストとして利用するためにPostfixの設定を更新することは簡単です。まず、下記の設定ファイルを開きます。

$vi /etc/postfix/main.cf

ファイルに関連内容を追加します。

smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = static:yourSendGridUsername:yourSendGridPassword
smtp_sasl_security_options = noanonymous
smtp_tls_security_level = encrypt
header_size_limit = 4096000
relayhost = [smtp.sendgrid.net]:587

smtp_sasl_password_mapsに自分のSendGridユーザ名とパスワードを入力れます。編集が終わるとPostfixを再起動します。

$ /etc/init.d/postfix restart

これでSendgGridとPostfixの連携が終わり、SMTP(25番ポート)のメール送信ができるはずです。

(3)エラーについて

上記の設定でno mechanism availableが出たら、SASL認証ライブラリがない場合が多いです。依存関係のモジュールをインストールしたらエラーが消えるはずです。

$ apt-get install libsasl2-modules

方法3. 外部のメール送信サービスを利用する(WebAPI)

SendGridはメール送信用のWebAPIも提供しています。このAPIの利用をアプリケーションに組み込むこともできます。この方法については以下の別の記事で紹介したいと思います。

Alibaba Cloud上でSendGridのWeb APIを使ったメール送信方法

まとめ

Alibaba Cloud ECSでは外部向けの25番ポートが制限されていますが、いくつかのメールの送信方法があります。それぞれの使いみちを理解した上で、最適なメール送信方法を選択しましょう。

この記事をシェアする