【質問】
ルータにファイアウォールを設定したところ、メール送信に30秒ほど時間がかかるようになってしまった。
内部から外部方向の通信は全て許可している.。
メール送信に時間がかかる原因は?
(この下は自動配信されるネット広告スペースです)
【回答】
メールを送信する際、メールサーバは発信元に向かってAuth/IDENTというプロトコルを使って、セッションを張ったユーザを特定しようとします。これをident要求と呼びます。
ident要求は、ファイアウォールにとってはメール送信時に使用するsmtp接続とは逆方向の、外部→内部のリクエストとなるため、これを遮断してしまいます。TCP/113の遮断ログがsmtp接続時に逆方向でファイアウォールに取られているはずです。
メールサーバは、ident要求に対する応答が無かった場合、リトライを繰り返しながらあらかじめ設定した待ち(タイムアウト待ち)、その後smtp接続を開始するように動作します。そのため
identがフィルタリングされた状態では、smtp接続にタイムアウト待ちが発生するようになり、接続に30秒ほどの待ち時間がかかるようになってしまいます。
アライドテレシスのルータでは、ファイアウォールを有効にした場合、identプロキシ機能が自動的に有効になります。
この機能が有効になると、外部から内部へのident要求に対して、ルータがユーザー名proxyuserで代理応答するようになります。
メールサーバはident接続に対して応答が無い場合タイムアウト待ちをしますが、identのTCP接続に対してReject(TCP RST) を返した場合、メールサーバはident接続をあきらめ、smtp接続に移るようになります。
アライドテレシスのルータでは、identプロキシ機能を無効にした場合、identのTCP接続に対してRejectを返すようになります。
そのため、以下の設定によってidentプロキシ機能を無効にすると、より早くメール送信ができるようになります。
disable firewall policy=(ファイアウォール名) identproxy |
なお、ルータにDMZを設定してメールサーバを設置している場合は、メールサーバに対してTCP/113を開放するのも一つの手です。