SMTP Error 421: Service Not Available

SMTPエラー 421 は、メールサーバーが一時的に利用不可であり、送信チャネルを閉じていることを示します。これは、サーバーがシャットダウン、再起動、または高負荷を経験している場合に通常発生する一時的な障害です。

421の意味

SMTP応答コード 421 は標準的なSMTP応答形式に従います:

  • 4 = 一時的な障害(過渡的否定的完了応答)
  • 21 = サービス利用不可、送信チャネルを閉じる

421エラーを受け取った場合、受信メールサーバーが一時的に接続を受け入れるか、リクエストを処理できないことを意味します。サーバーは明示的に接続を閉じており、後で再試行する必要があります。

エラータイプ

  • タイプ: 一時的な障害(ソフトエラー)
  • カテゴリ: サービスの可用性
  • 必要なアクション: 遅延後に接続を再試行する

よくある原因

  1. サーバーシャットダウン: メールサーバーがメンテナンスや更新のためにシャットダウンしている
  2. サーバー再起動: メールサーバーが再起動またはリブートしている
  3. 高負荷: サーバーが高トラフィックを経験しており、一時的に新しい接続を拒否している
  4. リソース枯渇: サーバーがリソース(メモリ、接続など)を使い果たしている
  5. 設定変更: サーバーが再起動を必要とする設定変更を適用している
  6. ネットワーク問題: サーバーが接続を受け入れるのを妨げる一時的なネットワーク問題

解決方法

メール送信者向け

  1. 待機して再試行: 再接続を試みる前に数分待つ
  2. 指数バックオフ: 指数バックオフ再試行ロジックを実装する(1分待機、次に2分、次に4分など)
  3. サーバーステータスの確認: 受信メールサーバーが既知の問題を経験しているか確認する
  4. 接続レートの削減: 一括メールを送信している場合、サーバーを圧倒しないように接続レートを削減する
  5. 再試行回数の監視: 再試行回数を追跡し、合理的な回数の試行後に停止する

開発者向け

  1. 再試行ロジックの実装: 指数バックオフで自動再試行ロジックを追加する
  2. 接続プール: 接続プールを使用してサーバー接続を効率的に管理する
  3. エラー処理: 421エラーを永続的な障害から分離してログに記録する
  4. レート制限: 受信サーバーを圧倒しないようにレート制限を実装する
  5. ヘルスチェック: サーバーのヘルスを監視し、再試行戦略を適宜調整する

関連するSMTPエラー

エラーメッセージの例

421 Service not available, closing transmission channel

拡張ステータスコード付きの例

421 4.7.0 Service not available, closing transmission channel

一般的なシナリオ

  • メンテナンス中: サーバーがメンテナンスのためにシャットダウンする前に421を送信
  • 高トラフィック: サーバーがピーク負荷時に一時的に接続を拒否
  • グレースフルシャットダウン: サーバーが再起動前にすべてのアクティブ接続に421を送信

ベストプラクティス

  1. 再試行ロジックの実装: 421エラーは常に遅延後に再試行する
  2. 指数バックオフの使用: 再試行間の待機時間を指数関数的に増やす
  3. 最大再試行回数の設定: 再試行回数を制限する(例:3〜5回の試行)
  4. エラー率の監視: 421エラーの頻度を追跡して問題のあるサーバーを特定する
  5. サーバー制限の尊重: すぐに再接続しない;サーバーが回復する時間を与える
  6. 適切なログ記録: 421エラーは一時的なため、エラーではなく警告としてログに記録する