MastodonのメールサーバにSendGridを使う際のポイント

Mastodon

SendGridサポートチームの佐藤(@awwa500)です。

はじめに

ここ数日、にわかに注目を集めているオープンソースの分散型SNS「Mastodon」。自前でTwitterライクな環境(インスタンス)を構築できるということで、早速SendGridと連携させてみました。今回は、メールサーバ周りの設定と運用上のポイントについてまとめてみました。

すぐにインスタンスを作って試してみたいという方は、HerokuのようなPaaSを利用するのが手っ取り早いのでお勧めです。その他の環境で動かしたい場合はMastodonのリポジトリドキュメント(英語)を参照すると良いでしょう。Qiitaでもいろいろな記事が見つかると思います。

SMTPサーバ周りの設定

さて、Mastodonのインスタンス構築の際に必要になるのがメールサーバ(SMTPサーバ)です。ユーザ登録時の確認メールやフォローなどの各種通知メールの送信に使われますが、もちろんSendGridを利用できます。SMTPサーバ関連はSMTP_*で始まる各環境変数に設定しますが、参考までに推奨値をご紹介します。その他の環境変数については様々なオプションがあるので、上述のドキュメントを参考にご自身の環境に合わせて設定してください。

環境変数 推奨値
SMTP_SERVER smtp.sendgrid.net
SMTP_PORT 587
SMTP_LOGIN apikey
SMTP_PASSWORD Mail Sendパーミッションを与えたSendGridのAPIキー
SMTP_DOMAIN
SMTP_FROM_ADDRESS 送信元メールアドレス
SMTP_AUTH_METHOD plain
SMTP_OPENSSL_VERIFY_MODE peer(とりあえず試したいだけ、ということであればnoneでも大丈夫です)
SMTP_ENABLE_STARTTLS_AUTO true

SendGrid側の設定

次に、SendGrid側の設定ですが、上述のAPIキーの発行以外に必須の設定項目はありません。ただし、メールの到達率を上げるために独自ドメイン利用に関する設定(Whitelabel)を行うことをお勧めします。この設定を行うことで、メールがSendGridからではなく、設定したドメインから送信されたように見せることができ、迷惑メール判定される可能性を下げることができます。

メールが届かない時の調査方法

送信されたはずのメールが届かない時は、Activity機能(SendGridダッシュボードの左側メニューからアクセス可)でメールの送信状況が確認できます。正常にメール送信が行われている場合、Processed(送信リクエスト受付完了)とDelivered(送信完了)イベントがセットで記録されます。Processedが発生していない場合、リクエストがSendGridに届いていないので、MastodonのSMTP関連の設定に不備がある可能性があります。Mastodonのログから送信処理結果を確認しましょう。Processedが発生していればSendGridに送信リクエストは届いています。この状態でメールがとどかない場合の調査方法についてはチュートリアルを参照してください。バウンス(メールの不達)処理についてはこちらも参考になると思います。

Freeプランの制限に注意

無料で利用できるFreeプランの送信通数上限は月間12,000通です。送信通数上限を超えると送信できなくなるのでご注意ください。必要な場合は有料プランにアップグレードすることで送信通数の上限を上げることができます。

さいごに

もちろん、自前で構築したSMTPサーバを利用することも可能ですが、インストールおよび設定にメール周りの知識や手間が必要なのと、送信通数が増えてくるとサーバ管理やバウンス管理が大変になります。SendGridのようなSaaSを利用することで、面倒な管理作業が楽になるので是非ご活用ください!