Gehirn MTA SMTP API 送信用エンドポイント障害
Incident Report for Gehirn Web Services
Postmortem

2022 年 9 月 24 日、 Gehirn MTA メール送信 SMTP API mx.mta.gis.gehirn.jp のサブミッションポートである tcp:465 と tcp:587 に接続できなくなる障害が発生いたしました。この障害のため、当該 API を利用したメール送信を行えなくなりました。

なお、メールの受信および受信したメールの転送に影響はございませんでした。また、 HTTP API 並びに mx.mta.gis.gehirn.jp:25 ポートを利用したメール送信も通常通り機能しておりました。

お客さまに多大なるご不便・ご迷惑をおかけいたしましたことを深くお詫び申し上げます。

障害概要

  • 障害機関

    • 2022 年 9 月 24 日午前 9 時 42 分から同午後 3 時 28 分までの 5 時間 46 分間
  • 障害内容

障害原因

本件障害は、当社が利用するクラウドプロバイダーのロードバランサーおよびヘルスチェック機能による、 Gehirn MTA SMTP API に対するアクセスパターンが変化したことに起因いたします。

SMTP API では特定のお客さまおよび外部の不正な接続がリソースを専有することなく、すべてのお客さまが公平にサービスをご利用になれるよう、カーネルレベルで接続元 IP アドレスに応じた TCP 接続制限を実施しております。今回、ロードバランサーおよびヘルスチェック機能によるアクセスパターンの変化により、通常は許可されるべき接続が意図せず遮断されました。

この結果、異常を検知したロードバランサーがすべてのバックエンドインスタンスを切り離したことにより、 SMTP API tcp:465 および tcp:587 に接続できない状態となりました。

SMTP API ではバックエンドインスタンスに異常が発生した場合は自動的に修復され回復するよう設定しておりました。しかし、その発動条件が tcp:25 のみを対象としているところ、 tcp:25 を除くほかのポートで異常が発生したことから自動修復機構が発動しませんでした。

SMTP API バックエンドインスタンスでは tcp:25 、 tcp:465 および tcp:587 のすべてのポートが単一の OS プロセスにより処理され、これらポートのうちひとつでも異常が発生した場合にはプロセス全体が異常を報告するよう設計されております。このため tcp:25 を発動条件とすることですべてのポートにおける問題を修復できる想定でおりました。

しかし、本件障害ではカーネルにより発動条件である tcp:25 以外のポートが遮断されたため、 OS プロセスレベルでは異常を報告することができませんでした。

障害対応

今回の障害は発生から 5 分後の午前 9 時 47 分に監視システムにより検知されておりました。

しかし、アラーティングルールの不備により、監視システムは緊急対応が不要であると誤って判断しておりました。

このため、緊急対応では行われる電話による担当エンジニアの呼び出しが行われず、休業日明け月曜日以降に対応されるよう簡易的な通知のみが送信されました。

午後 3 時ごろ、エンジニアが Gehirn MTA メール送信 SMTP API の異常に気づき、前述の障害検知の通知を発見したため、緊急対応を開始いたしました。

午後 3 時 23 までにロードバランサーの異常を発見し、 mx.mta.gis.gehirn.jp の DNS リソースレコードの更新により当該ロードバランサーの切り離しを実施いたしました。

DNS 更新の直後に監視システムが障害の回復を検知し、元のリソースレコードの TTL が経過した 15 時 28 分までに障害が収束いたしました。

その後、障害原因の調査を開始し、これまでにご説明したクラウドプロバイダーのロードバランサーおよびヘルスチェック機能によるアクセスパターンの変化と特定いたしました。

再発防止

本件障害、とりわけ対応開始までに著しく長い時間を要したことについて当社では許容できるサービスレベルではないと考えております。

今後同様の障害が再発しないよう、また再発した場合にはより短い時間で復旧できるよう、以下の対策を実施してまいります。なお、一部の対策についてはすでに完了しております。

TCP 接続制限の見直し

本件障害の直接の原因となった TCP 接続制限の誤検知が発生しないよう、制限内容の見直しを実施いたしました。

今後さらにアクセスパターンが変化した場合でもロードバランサーおよびヘルスチェックによるアクセスが遮断されないよう設定しております。

また、一部の制限についてはユーザーランドの Gehirn MTA SMTP API プロセスに委譲可能なことから、カーネルレベルの制限を撤廃いたしました。

アラーティングルールの修正

今回のように SMTP API に接続できない障害が発生した場合に緊急対応の対象となるよう、アラーティングルールの修正を実施いたしました。

万が一同様の障害が発生した場合も、今後は発生から数分以内に担当エンジニアの呼び出しが行われます。

すべてのポートを対象とする自動修復

本件障害では、一部のポートのみに問題が発生することを想定できておらず、自動修復機構が発動しなかったことからエンジニアによる手動の対応が必要となりました。

自動修復機構はクラウドプロバイダーにより提供されており、機能上の制約から複数の条件を設定することが難しくなっております。

このことから、今後数週間にかけ、すべてのポートで自動修復が行われるようトポロジーの変更を実施いたします。

お客さまで必要な対応

お客さまが管理される SMTP サーバーのリレー先(送信ゲートウェイ)として Gehirn MTA をご利用の場合、障害発生中に送信されたメールがお客さまのメールサーバーの送信キューに滞留している場合がございます。該当のお客さはお手数をおかけいたしますが、 Postfix の postqueue -f コマンドなどにより、送信キュー内のメールの即時再送を実施してください。

本件のお問い合わせ先

この度はお客さまに多大なるご不便とご迷惑をおかけいたしましたことをお詫び申し上げます。

本件に関してご不明な点やお気づきの点がございましたら Gehirn Web Services お問い合わせフォーム よりご連絡ください。

なお、当お問合せフォームでは内部で Gehirn MTA を利用しております。障害発生中にお寄せくださいましたお問い合わせは当社に到達していないことが考えられます。

お問い合わせの送信後、自動送信される折り返しメールを受信されていないお客さまは大変お手数をおかけいたしますが、再送信くださいますようお願い申し上げます。

Posted Sep 26, 2022 - 17:05 JST

Resolved
本障害は解消いたしました。お客さまにご不便・ご迷惑をおかけいたしましたことをお詫び申し上げます。
Posted Sep 24, 2022 - 16:11 JST
Monitoring
mx.mta.gis.gehirn.jp:465 および mx.mta.gis.gehirn.jp:587 に接続できない障害が発生しておりました。問題を修正し、現在は送信エンドポイントが正常に機能していることを確認しております。
Posted Sep 24, 2022 - 15:47 JST
Investigating
Gehirn MTA SMTP API 送信用エンドポイントで障害が発生しております。
Posted Sep 24, 2022 - 15:25 JST
This incident affected: Gehirn MTA (SMTP API, Mail Delivery).