SendGrid
背景
Discourseをセットアップしようとしてい たところ、いくつかのEmailプロバイダが紹介されていた。
Discourseはセットアップにメールサーバが要求される。以前のMastodonのセットアップでは、Gmailとアプリパスワードを使った簡易セットアップを使ったが、経験積みとセキュリティ上の懸念から、今回はメールサーバを用意することにした。
名前を聞いたことのあるSendGridを使う。業務上の利用を想定しているようだが、個人による利用として続行する。スケールする商用サービスでの利用ではないが、利用経験は技術選定の上で大事だと思う。その分、Abuseしないように考えなければならないが。
Freeプラン
1日に100メールまではFreeプランが使用できる。自分しか使わない、またはごくごく小規模な利用では十分だろう。
登録
Start For Free
から登録する。
!["Start For Free"をクリックする](/static/4286e3f792bb6f9856104d39f321d45e/e3b18/signup_button.png)
細かい登録の過程は省略する。
ドメインの認証
ダッシュボードを開く。
!["authenticate a domain instead"をクリックする](/static/541cff2b1470c9cf0e4c0f0ea77e48c2/a6d36/authenticate_a_domain_instead.png)
![DNSホストの選択](/static/bed1130d8ef974163937b9689904e83e/a6d36/authenticate_your_domain.png)
ドメインプロバイダ(DNSホスト)の選択を求められる。
お名前.comはリストになかったので、Other Host (Not Listed)
を選択し続行する。
あまり意味はないだろうが、Which DNS Hostにプロバイダ名を書いておく。
![ドメイン名の入力](/static/6665b3f20d22793113edb3182a018d6f/13a9a/input_domain.png)
ドメイン名を入力する。
![認証用のDNSレコード情報](/static/c54ed427504ea35eb4aba6b893b22c24/a6d36/dns_info.png)
DNSサーバに登録すべき認証用のレコードが表示される(DNSサーバにクエリを送れば誰でも確認できるので公開情報)。
![お名前.comでのDNSレコード設定](/static/7c3b36dd8de3ff2ad43342a95432e4c2/a6d36/onamae_dns_setup.png)
ドメインプロバイダ/DNSサーバでDNSレコードを設定する。 設定が反映されるまでしばらく待つ。
![ドメイン認証完了](/static/6bb3b385b4bb673095ebc1fc12eae68b/50e4b/domain_verified.png)
ドメインが認証された。 これでSendGridを使って、このドメインからのメールを送信できるようになった。
APIキーの発行(送信テスト)
![APIキーの利用方法の選択](/static/53f637f04626c09e738a2971cdb88dc1/a6d36/choose_setup_method.png)
Web APIを選択する。
![プログラミング言語/利用プログラムの選択](/static/8c049868365b1a6edafae7557a844d18/a6d36/webapi_langs.png)
プログラミング言語/利用プログラムを選択する。チュートリアルの出し分けをするだけで、ここでの選択に特に意味はないと思われる(チュートリアルなしでAPIキーを発行もできる: https://app.sendgrid.com/settings/api_keys)。
![APIキーの発行](/static/41226ddae9a3f87c065f8909e5e0e2d1/a6d36/create_api_key.png)
とりあえずcURLでテストすることにして、APIキーを発行する。
下のcurlコマンドの送信JSONデータを編集する。
toを自分のメールアドレス、fromを認証したドメインのメールアドレスに変える。
特にfromのメールアカウントを作成する必要はなく、
hoge@example.com
のように適当なアカウント名をつけたアドレスを使えばよい。
![受信したEメール](/static/c2ddf66ed124edd37b16ad7e77e7dd99/dd45a/received_email.png)
コマンドを適当な端末で実行し、メールが届けば成功。
![Eメール送信成功](/static/e564802c520eb4385878a260be6a0e1b/a6d36/email_send_succeeded.png)
SendGrid上でも送信成功を確認できる。