mail-receiver をリリースバージョンに更新

このメッセージが管理ダッシュボードに表示されているため、ここへアクセスされた場合は、正しい場所にお越しください。

Discourse サーバーに SSH で接続し、以下の 2 つのコマンドを実行して mail-receiver を更新してください。

sed -i 's/mail-receiver:.*/mail-receiver:release/' /var/discourse/containers/mail-receiver.yml
/var/discourse/launcher rebuild mail-receiver

詳細については、引き続きお読みください。

なぜ mail-receiver を更新する必要があるのですか?

mail-receiver を、非推奨の API 認証方法を使用しない新しいバージョンに更新する必要があります。

mail-receiver を最初にセットアップした際には、ハードコードされたバージョン番号を含む containers/mail-receiver.yml ファイルの作成が求められました。

base_image: discourse/mail-receiver:x.x.x

この数値を手動で更新しなくても今後のアップデートを受け取るためには、バージョン番号を指定する代わりに release に変更してください。

/var/discourse/containers/mail-receiver.yml を編集して、以下のベースイメージを使用するように設定してください。

base_image: discourse/mail-receiver:release

もしよろしければ、以下のコマンドを実行するだけでファイルを編集できます。

sed -i 's/mail-receiver:.*/mail-receiver:release/' /var/discourse/containers/mail-receiver.yml

その後、以下のコマンドを実行して mail-receiver を最新バージョンに更新してください。

/var/discourse/launcher rebuild mail-receiver
「いいね!」 21

Thanks for the update guide @blake! However, I seem to not have the mail-receiver.yml file in /var/discourse/containers/ for some reason.

root@nomadgate-community-eu:/var/discourse# sed -i 's/mail-receiver:.*/mail-receiver:release/' /var/discourse/containers/mail-receiver.yml
sed: can't read /var/discourse/containers/mail-receiver.yml: No such file or directory

For good measure checked typed ls to check what’s actually there:

root@nomadgate-community-eu:/var/discourse/containers# ls
app.yml  app.yml.save

Any idea why there’s no mail-receiver.yml file and what I can do about it? Mail Receiver seems to be working for my community, even without the file…

EDIT: Come to think of it, I don’t think I’ve ever set up “mail-receiver”. I’m using SendGrid’s inbound parse webhook feature, so why am I even seeing this error in my Discourse dashboard?

However, to make that work I am passing the API credentials as URL parameters like so: /admin/email/handle_mail?api_key=xxx&api_username=xxx — will this no longer work? And if so, is there any other way to keep the support for inbound messages via SendGrid?

「いいね!」 2

同意します。私の Discourse インストールには containers/mail-receiver.yml ファイルが見当たりません。現時点では、問題の影響は確認できていません。

@dltj 送信グリッド(SendGrid) または同様のサービスも利用されていますか?

ただし、メール受信機能のインストールを行っていない場合は、アップグレードの必要はありません。

「いいね!」 2

もちろんですが、SendGrid やこのエンドポイントを利用できるように設定できる他のプロバイダーのサポート状況によっては、クエリパラメータベースの API 呼び出しに変更が生じる可能性があるため、できるだけ多くの情報を収集しようとしています。

「いいね!」 3

いいえ、SendGrid は使っていません。この Discourse インストールは数年前のものなので、当時、受信メールを Discourse に取り込むために /admin/email/handle_mail API を使用する AWS Lambda を作成しました。その Lambda スクリプトは Python 2.7 を使用していたため、書き換えが必要です…そろそろ現在の選択肢を確認する時期かもしれません。

奇妙なことに、Discourse の管理ダッシュボードには 「古いバージョンの mail-receiver が検出されました…」 というメッセージはもう表示されていません。へえ。 訂正します――メッセージは依然として表示されています。もしかすると、/admin/email/handle_mail エンドポイントに数日間受信メールが届かなかったため消えたのか、あるいはテストメッセージを送信した際に届いたため再び表示されたのかもしれません。

確認しましたが、Discourse への受信メールは引き続き正常に動作しています。

「いいね!」 1

その通りです。24 時間以内にメッセージを受信しないと、タイムアウトが発生します。

「いいね!」 2

ああ、わかりました。つまり、ダッシュボードの警告は ‘mail-receiver’ を使っているからではなく、API エンドポイントへのクエリパラメータとして、現在非推奨となった api_keyapi_username を使っていることが原因なんですね。なるほど…修正は簡単そうです。ヒントをありがとう。

「いいね!」 3