DiscourseのメールサービスをMandrillからMailgunに切り替える

Jeff Atwood
Mar 28, 2016 • 6 min read

セルフホスト型のDiscourseは機能するためにメールが必須です。そのため、私たちは常にサードパーティのメールプロバイダーと共存関係にあります。これまでMandrillを推奨してきており、一部のサイトでは私たち自身も利用していて、Mandrillには良い経験しかありませんでした……今回のことが起きるまでは。2月24日、Mandrillは2016年4月27日をもってMandrillサービスを事実上永久に終了することを発表しました

今後、すべてのMandrillユーザーは有料の月額MailChimpアカウントを持ち、すべての送信ドメインの所有権を確認することが求められます。スケジュールは以下の通りです:3/16以降、すべての新規MandrillユーザーはMailChimpを通じてアカウントを作成し、現在のMandrillユーザーは既存のMandrillアカウントを月額MailChimpアカウントと統合できます。現在のユーザーは4/27までにアカウントを統合する必要があります。

技術的にはMailChimpプロバイダーへ移行することはできますが、月額費用が大幅に増加します——無料(月間12,000通以下のメール)から月額約40ドルへの値上がりです。これは、メールを送信するためだけに、Digital OceanのDiscourseホストVMの基本料金(月額10ドル)の4倍もかかることになります!

no-mailchimp

MandrillアカウントをMailChimpに「アップグレード」することは可能ですが、わずかなメールを送信するために月額40ドルを支払ってもよいとお考えでない限り、それはお勧めしません。合理的な送信数の上限以下であれば同様に無料プランを提供している信頼できるサードパーティのメールプロバイダーが他にもいくつかあります:

これらのサービスすべてについて良い評判を耳にしていますが、私たちはMailGunの経験が最も豊富ですので、ここではMailGunについて説明します。手順はどのサードパーティメールサービスでも大体同様になります。

1. Mailgunにサインアップする

Mailgunアカウントを作成してください。クレジットカードは不要です。月間10,000通という上限を超えた場合でもサービスを継続して利用できるよう、サインアップ時に任意でクレジットカードを追加することもできます——これは1日平均333通に相当します。

ただし、確認済みのメールアドレスに加えて有効な電話番号が必要であり、SMS認証が送信されますので、ご準備ください。

2. アカウントにドメインを追加する

MailGunのDomainsタブから、次の形式でDiscourseのドメインを追加してください:

discourse.example.com

これが機能するためにはメールが@discourse.example.comから送信される必要がある点にご注意ください。したがって、Discourseサイトのメール設定にそのドメインが含まれていること、特にnotification emailの項目を確認してください:

そこにnoreply@discourse.example.comと記載されており、ドメインがメールアドレスと一致していることを確認してください。メールは常に送信元のドメインによって判断されます!

3. ドメインのメール認証のためにDNSレコードを更新する

MailGunのドメインページにアクセスすると、ドメインを認証するために必要なDNS変更の概要が表示されます。

これらのDNS変更は、DNS機能を別の場所に移管していない限り、通常はドメイン名を購入した場所で行います。ここでは2つのTXTレコード(SPF用とDKIM用)を追加または更新する必要があります。CloudFlare DNSでのこれら2つのTXTレコードの例は以下の通りです:

変更が完了したら、ドメインページの「Check DNS Records Now」ボタンを使用して、MailgunがDNSの変更を確認できているか確認してください。この変更が反映されるまで最大24時間かかる場合がありますので、しばらくお待ちください。私のテストでは実際に数時間かかりました。ドメインの認証が完了すると、Mailgunからメールが届きます。

ドメインを認証するためのこれらのDNS変更を行うまで、サインアップ時に登録した単一のメールアドレスにしかメールを送信できない点にご注意ください!

4. SSHでログインしてDiscourseの設定を編集する

これで、このドメインのMailgunアカウントのSMTP認証情報をDiscourseに入力する準備が整いました。MailgunのドメインページにあるドメインUのDefault SMTP LoginDefault Passwordフィールドを確認してください。

ご利用のSSHクライアントを使用してサーバーにSSHでログインしてください。ログインしてSSHコマンドプロンプトが表示されたら、app.ymlファイルの編集を開始します:

cd /var/discourse
nano containers/app.yml

上記のMailGunドメインページに記載されているドメインのアカウント情報を使用して、3つのDISCOURSE_SMTPの行を変更する必要があります:

DISCOURSE_SMTP_ADDRESS: smtp.mailgun.org
DISCOURSE_SMTP_USER_NAME: postmaster@discourse.example.com
DISCOURSE_SMTP_PASSWORD: ac9e7725d9c65fdf47dccea0f16838b0

編集が完了したら、Discourseを最新版にリビルドしてください。何も削除されませんのでご安心ください!ただし、サーバーの速度によっては4〜10分かかるため、多少のダウンタイムが発生することをご了承ください

git pull
./launcher rebuild app

ビルドが完了すると、コマンドプロンプトに戻り、DiscourseサイトはリビルドされてライブAになります。エラーが表示されないはずですが、もし表示された場合は、上にスクロールして確認し、app.ymlを再度編集してみてください。

5.(オプション)年次整理

SSHでログインしている間に、年に一度の整理作業をされることを強くお勧めします。これは完全にオプションであることをご承知おきください。急いでいてメールの設定だけを直したい場合は、次のステップにスキップしていただいて構いません。ただ……せっかくここにいるのですから、やっておくのも良いでしょう。簡単ですから!

推奨のUbuntu 14.04 LTSをご利用の場合は、最新のUbuntuアップデートをダウンロードしてインストールしてください:

apt-get update
apt-get dist-upgrade

以前に自動インストールされたUbuntuアップデートの残余バックアップを削除して、ディスクスペースを解放してください。数ギガバイトと、節約できる容量はかなりの量になる場合があります:

apt-get autoremove
apt-get autoclean

以前のDiscourseアップグレードで残った古いDockerコンテナを削除してください。こちらも複数ギガバイトになる場合があります:

./launcher cleanup

6. テストメールを送信する

すべてが正常に動作していることを確認するには、DiscourseのAdmin画面でEmailsのページを開いて、概要を確認してください。app.ymlに入力した内容と一致していますか?

ここに表示されているすべての内容が入力した内容と一致している場合は、下部にメールアドレス——MailGunにサインアップした際に使用したもの——を入力し、「Send Test Email」ボタンを押してください。このメールが受信トレイに届いた場合は、設定は完了です。ドメインが認証されると、ここからどのメールアドレスにもテストメールを送信でき、届くようになるはずです。

メールが届かない場合は、ドメインの「Logs」タブを確認して、Discourseサーバーが少なくともMailGunと通信できる程度には設定が正しいかどうか確認してください:

ここにログエントリが表示されない場合は、app.ymlのSMTPユーザー名、パスワード、またはアドレスの設定を誤った可能性があります。それらを再度ご確認ください。

うまくいくことを願っており、このガイドがお役に立てれば幸いです!ご不便をおかけして申し訳ありませんが、MailChimpは比較的短い予告期間で無料のMandrillサービスを事実上廃止することを決定しました。

善意のジェスチャーとして、既存のDiscourseサイトをお持ちでこの作業にお困りの場合、手順1〜3をすでに完了していることを前提として、SSHログイン認証情報をteam@discourse.orgにメールで送っていただければDiscourse SSHの作業(手順4と5)のサポートが可能です。手順1〜3はご自身のメールアドレス、電話番号、ドメイン名に固有の前提条件となる手順であるため、これらを実施していただくまではサポートができない点をご了承ください。

原文はこちら:


Good Loopでは、Discourseのセルフホスティングを安価で提供しています。開発元であるCDCK社の協力のもと、公式ブログ記事の翻訳・公開など、日本での普及にも努めています。

詳しくはこちら: Discourseの導入・運用支援・コンサルティング – Good Loop