Javascript External Library

2020-08-02

AzureでSMTPサーバを構築する

はじめに

かつてはサーバというのは自前で構築するものでしたが、どうしてもメンテナンスコストがかかります。人力でこなせばいいだけのことですが、生産性を上げるなら専門のサービスに任せてしまうのが今の時代です。
また、公開サーバを用意すると支那人が攻撃に来るので、この対策にも費用がかかります。

今更、電子メールなのか

電子メールはインターネット黎明期から存在する通信プロトコルで細かな改良は加えられてますが基本的なものは変わっていません。そもそもToまで到達することが保証されてないです。その割に構築は面倒でSMTPとPOPの2つがセットで必要となります。
その上、支那人対策もしないといけないので、うちの電子メール環境はすべてGoogleさんにおまかせしました。
ではなぜいまさらSMTPが必要になるかというと、垂れ流し方式の警告を行うのにGMailは面倒だからです。SMTPがあれば複雑な手順を踏まずにメールが送信できます。

Azure Virtual Machines は使えない

サーバが必要なので真っ先に思いつく構築は仮想マシンなのですが、Azureの仮想マシンでSMTPは構築できません。これはAzureがSMTPの構築を禁止していて通信ポートを塞いでるからです。
前述の通り、SMTPは簡単にメールが送信できて、しかもFrom情報の検証は行いません。このため、電子メールは犯罪行為や迷惑行為に利用されてしまいます。インターネットの通信を中継するルーターにはこの種のメールのフィルタ機能があって、頻繁にこの種のメールを送信するサーバのIPアドレスをブラックリストとして共有します。このため、IPアドレスを共有する仮想マシンはすぐにブラック化されてしまい、仮想環境の提供元も被害を受けてしまします。これが禁止の理由です。

Send Grid を使う

クラウドサービスではこの問題は一般的なので普通はSMTPを行うサービスがあります。しかし、Azureでは自前のものがないでのSend Gridサービスを利用することになります。MicrosoftもSend Gridを推奨しています。
Send Grid をデプロイするときに設定する内容は次の3つです。
  • 名前
    アカウント名って説明があるけど、認証のIDは別に発行される。
    ここで言う名前はAzure上のリソースを管理するときの名前です。
    私はアカウント名と間違った・・・
  • パスワード
    こっちは認証用に使うパスワードです。
    上の名前とセットの入力欄になっているのがいやらしい。
  • プラン
    料金プランです。Freeでも月25000通のメールが送信できるのでFreeで十分
以上です。

Send Grid の接続情報

  • サーバ名:smtp.sendgrid.net
  • ポート:25 / 465 / 587 / 2525
  • 認証:SMTP認証
ポートは25は暗号化なし、465はSSL、587はTLSです。
2525は非推奨となっています。
このため、ポートは587の一択となります。

Send Grid の管理

Send Grid の管理はAzureのコンソールからManageを選択すると管理画面に遷移することができます。
ユーザー登録する時に送信される確認メールから認証画面が開きますが、そこからは遷移できないです。Azure経由の登録だからなのかな?

Send Grid のサービスステータス

サービスのステータスは以下のリンクから確認が可能です。

1 件のコメント: