送信先メールサーバとの無通信タイムアウト時間について
送信先のメールサーバとE-Postが通信ができなかった場合のタイムアウト時間について質問を受けたことがあります。送信先と通信ができなかったときにどのくらいの時間が経過したら、相手先との通信が異常であると判断し、その後「配送詳細(SMTP)」ダイアログボックスでの設定値に基づいたリトライ動作の挙動へ移るのかという主旨のご質問です。
E-Postが送信先メールサーバとの通信ができなかった場合の無通信タイムアウト時間について、下記の2点に分けて説明します。
- socketの接続を試みようとして失敗する場合
socketの接続を試みようとして失敗する場合は、OSであるWindows Serverの仕様によります。
(※)OSの供給元であるMicrosoftが詳細な数字を公表していないため不明ですが、実測ではタイムアウト時間の初期値は3秒、再送回数は2回、21秒後にタイムアウトとなるようです。
0秒(最初のSYN)
3秒後( +3秒)(1回)
9秒後( +6秒)(2回)
21秒後(+12秒)(タイムアウト)
- socket接続後の通信状態によるE-Post側のタイムアウト設定値
たとえば応答が遅いためや回線断などのsocket接続後の通信状態によるタイムアウトについては、E-PostのSMTP配送サービスであるEPSTDSが送信・受信(応答)の無通信タイムアウト値として下記のような設定値を持っており、それぞれレジストリを変更することで値の変更が可能です。
- 送信データのタイムアウト値がデフォルト20分(1200秒)
- 受信データのタイムアウト値がデフォルト20分(1200秒)
下記のレジストリ値を変更することが可能です。変更後は、EPSTDSサービスの再起動が必要です。
HKEY_LOCAL_MACHINE
→SYSTEM
→CurrentControlSet
→Services
→EPSTDS
→SendDataTimeout
(DWORD Default 1200)sec 送信1回当りのタイムアウト時間
→RecvDataTimeout
(DWORD Default 1200)sec 応答1回当りのタイムアウト時間
(※レジストリに該当項目やキーがない場合は新規作成して設定値を入力)
(関連FAQ)
●E-Post Mail Server (x64) / E-Post SMTP Server (x64) で使用している設定ファイル&レジストリ