メールとプッシュ通知
Antimatter は、招待、パスワードリセット、認証、未読メッセージのためにメールを送信し、プッシュプロキシ経由でモバイルアプリにプッシュ通知を送ります。設定が完了するまで、どちらも機能しません。
送信メール (SMTP)
Antimatter は、指定した SMTP サーバー (組織のメールサーバーまたはトランザクションメールサービス) 経由でメールを送信します。設定されていない場合、パスワードのリセットができず、メールによる招待や認証が届かず、未読メッセージのメール通知も受け取れません。
システムコンソール › 環境 › SMTP で設定するか、変数を使用します:
| 設定項目 | キーと変数 | デフォルト値 |
|---|---|---|
| SMTPサーバー | EmailSettings.SMTPServer, AM_EMAILSETTINGS_SMTPSERVER | localhost |
| SMTPサーバーポート | EmailSettings.SMTPPort, AM_EMAILSETTINGS_SMTPPORT | 10025 |
| SMTP認証を有効にする | EmailSettings.EnableSMTPAuth, AM_EMAILSETTINGS_ENABLESMTPAUTH | 接続セキュリティなしの場合はオフ、ある場合はオン |
| SMTPサーバーのユーザー名 | EmailSettings.SMTPUsername, AM_EMAILSETTINGS_SMTPUSERNAME | 空 |
| SMTPサーバーパスワード | EmailSettings.SMTPPassword, AM_EMAILSETTINGS_SMTPPASSWORD | 空 |
| 接続のセキュリティー | EmailSettings.ConnectionSecurity, AM_EMAILSETTINGS_CONNECTIONSECURITY | なし (空欄); または TLS または STARTTLS |
| 証明書の検証をしない | EmailSettings.SkipServerCertificateVerification | オフ。本番環境ではオフのままにしてください。 |
プロバイダーの指示に従い、ポート587でSTARTTLSまたはポート465でTLSを使用してください。その後、同じページでテスト接続をクリックすると、Antimatterがあなたのメールアドレスにテストメールを送信します。
Docker Compose を使用した典型的なセットアップ (compose.yaml の隣にある compose.override.yaml 内):
services:
antimatter:
environment:
AM_EMAILSETTINGS_SMTPSERVER: smtp.example.com
AM_EMAILSETTINGS_SMTPPORT: "587"
AM_EMAILSETTINGS_CONNECTIONSECURITY: STARTTLS
AM_EMAILSETTINGS_ENABLESMTPAUTH: "true"
AM_EMAILSETTINGS_SMTPUSERNAME: chat@example.com
AM_EMAILSETTINGS_SMTPPASSWORD: ${SMTP_PASSWORD}
AM_EMAILSETTINGS_FEEDBACKNAME: Antimatter
AM_EMAILSETTINGS_FEEDBACKEMAIL: chat@example.com
AM_EMAILSETTINGS_REPLYTOADDRESS: chat@example.com
SMTP_PASSWORD を .env に配置します。サイトの compose ファイルはサーバーをデフォルトネットワークに配置します。このネットワークはインターネットにアクセスできるため、外部の SMTP サーバーに到達できます。
送信元と通知メールの設定
システムコンソール › サイト設定 › 通知 で:
| 設定項目 | キー | デフォルト値 |
|---|---|---|
| 電子メール通知を有効にする | EmailSettings.SendEmailNotifications | on |
| 通知の表示名 | EmailSettings.FeedbackName | 空 |
| 通知の送信元電子メールアドレス | EmailSettings.FeedbackEmail | test@example.com: 変更してください |
| 通知のReply-Toアドレス | EmailSettings.ReplyToAddress | test@example.com: 変更してください |
| サポートメールアドレス | SupportSettings.SupportEmail | 空 |
| 通知のフッターの住所 | EmailSettings.FeedbackOrganization | 空 |
| プッシュ通知の内容 | EmailSettings.EmailNotificationContentsType | メッセージの全文を送信 (full)するか、送信者の名前のみの一般的な説明を送信 (generic)するか |
| 電子メールバッチ処理を有効にする | EmailSettings.EnableEmailBatching | オフ。オンにすると、ユーザーは 1 通ずつメールを受け取る代わりに、15 分ごとまたは 1 時間ごとに未読メッセージをまとめた 1 通のメールを受け取るように選択できます。 |
| メール通知にチャンネル名を使用する | EmailSettings.UseChannelInEmailNotifications | オフ |
| プレビューモードバナーを有効にする | EmailSettings.EnablePreviewModeBanner | オン: メール通知がオフの間、メールが設定されていないことを管理者に知らせるバナーが表示されます |
From アドレスは、SMTP サーバーが送信を許可されているアドレスである必要があります。そのドメインに対して SPF と DKIM を設定してください。そうしないと、メールがスパムフォルダに振り分けられる可能性があります。
メール関連のサインイン設定(新規アカウントがメールアドレスの確認を必要とするかどうか、招待をメールで送れるかどうか)は、サインインとアカウントにあります。
モバイルアプリへのプッシュ通知
プッシュ通知の仕組み
Antimatter は Apple や Google に直接接続しません。各通知について、プッシュプロキシを呼び出します。このプロキシはモバイルアプリの認証情報を保持し、iPhone には Apple (APNs) へ、Android には Google (Firebase Cloud Messaging) へ通知を転送します。Apple と Google は、対象アプリの認証情報で送信された場合のみ通知を配信します。したがって、プッシュプロキシは、その認証情報を保持するモバイルアプリのビルド 1 つのみで動作します。
- Antimatter は公開のプッシュプロキシを運営していません。ユーザーがインストールするモバイルアプリのビルドの認証情報を使用して、Antimatter のプッシュプロキシを自分で実行してください。
- Antimatter は、テスト環境でもホスト環境でも、Mattermost のプッシュサービスに通知を送信しません。これらは Mattermost 独自のモバイルアプリへのみ配信されるためです。サーバーがこれらのアドレス(旧型の Mattermost 設定で使用される
https://push-test.mattermost.comなど)に設定されている場合、何も送信されず、起動時に警告がログに記録されます。
新しいサーバーにはプッシュ通知サーバーが設定されていないため、プッシュプロキシのアドレスを設定するまでプッシュ通知は送信されません。それまで、モバイルアプリは動作しますが、通知は受信できません。
プッシュプロキシの実行
プッシュプロキシは push-proxy リポジトリにあります。その README では、モバイルアプリのビルドを公開するアカウントから取得する 2 つの認証情報の入手方法が説明されています。
- Android: Android ビルドで使用している Firebase プロジェクトのサービスアカウントファイル。
- iOS: iOS ビルドを公開する Apple 開発者アカウントの APNs 認証キー (
AuthKey_<KEY ID>.p8)、およびそのキー ID とチーム ID。
これらをプロキシの設定ファイルとともに compose.yaml の隣に配置します。
push-proxy/
config/antimatter-push-proxy.json
certs/AuthKey_ABCDE12345.p8
certs/firebase-service-account.json
push-proxy/config/antimatter-push-proxy.json に、バンドル識別子、キー ID、チーム ID を入力します。
{
"ListenAddress": ":8066",
"ThrottlePerSec": 300,
"ThrottleMemoryStoreSize": 50000,
"ThrottleVaryByHeader": "X-Forwarded-For",
"EnableMetrics": false,
"SendTimeoutSec": 30,
"RetryTimeoutSec": 8,
"ApplePushSettings": [
{
"Type": "apple_rn",
"ApplePushUseDevelopment": false,
"ApplePushTopic": "chat.antimatter.app",
"AppleAuthKeyFile": "./certs/AuthKey_ABCDE12345.p8",
"AppleAuthKeyID": "ABCDE12345",
"AppleTeamID": "FGHIJ67890"
}
],
"AndroidPushSettings": [
{
"Type": "android_rn",
"ServiceFileLocation": "./certs/firebase-service-account.json"
}
],
"EnableConsoleLog": true,
"EnableFileLog": false,
"LogFormat": "plain",
"LogLevel": "info"
}
ApplePushTopic はビルドの iOS バンドル識別子です。ApplePushUseDevelopment は Xcode からインストールされたビルドの場合のみ true にします。通話の着信は iPhone に対して VoIP プッシュを通じて行われ、同じキーを使用するため、ここではこれ以上の設定は不要です。
サイトには、compose ファイルにそのまま追加できるcompose.push.example.yamlが用意されています。公開されているイメージ ghcr.io/antimatterchat/push-proxy:latest を実行します。
curl -fsSLO https://antimatter.chat/compose.push.example.yaml
docker compose -f compose.yaml -f compose.push.example.yaml --profile push up -d
docker compose -f compose.yaml -f compose.push.example.yaml logs push-proxy
起動時、プロキシのログには設定された各プッシュターゲットの名前が記録され、認証情報をロードできないターゲットにはエラーが記録されます。プロキシはポートを公開しません。compose ネットワーク上で Antimatter からのアクセスのみを受け付けます。
Docker を使用しない場合は、push proxy の .deb または .rpm パッケージをインストールしてください。GIF サービスと push proxy のパッケージを参照してください。
Antimatter をプロキシに接続する
システムコンソール › 環境 › プッシュ通知サーバーで、プッシュ通知を有効にするを独自のプッシュプロキシ経由でプッシュ通知を送信するに、プッシュ通知サーバーをhttp://push-proxy:8066(別の場所で実行している場合はプロキシのHTTPSアドレス)に設定します。このオプションが設定されている場合、アドレスが空ではページを保存できません。プッシュ通知の送信を停止するには、プッシュ通知を送らないを選択します。または、antimatterサービスの変数を使用して:
AM_EMAILSETTINGS_SENDPUSHNOTIFICATIONS: "true"
AM_EMAILSETTINGS_PUSHNOTIFICATIONSERVER: http://push-proxy:8066
確認方法:モバイルアプリでサインインし、バックグラウンドに移動した状態で、別のアカウントからメンションを送ります。通知が届かない場合は、Antimatter のログとプロキシのログで push を検索してください。デバイスタイプが不明であるか、キーが拒否されたか、またはデバイスが別のアプリビルドに属しているかが記録されています。
通知の内容
システムコンソール › サイト設定 › 通知 › プッシュ通知の内容(EmailSettings.PushNotificationContents):
| オプション | 値 |
|---|---|
| 送信者の名前のみの一般的な説明 | generic_no_channel |
| 送信者とチャンネル名の一般的な説明 | generic |
| 通知ペイロードに送信される完全なメッセージ内容(デフォルト) | full |
| 受信時にサーバーから取得される完全なメッセージ内容 | id_loaded |
id_loaded を使用すると、プロキシ、Apple、Google 経由で送られる通知には ID のみが含まれ、アプリがサーバーからメッセージを取得します。メッセージ本文はこれらのサービスを経由しません。メッセージが機密である場合、これが最善の選択です。
プッシュ通知サーバーページにある大規模チャンネルの通知閾値(TeamSettings.MaxNotificationsPerChannel、デフォルトは1000)は、@here、@all、@channelが機能するチャンネルの最大メンバー数です。これより大きいチャンネルでは、これらのメンションと入力中のインジケーターが無効になります。