はじめに
このドキュメントでは、メールの送受信中に断続的に発生する問題と接続の中断をトラブルシューティングする方法について説明します。
前提条件
次の項目に関する知識があることが推奨されます。
- Cisco Private Internet eXchange(PIX)または適応型セキュリティアプライアンス(ASA)バージョン7.x以降
- Cisco Email Security Appliance (ESA)
背景説明
Cisco ESA電子メールゲートウェイは、本質的に電子メールファイアウォールです。これにより、Cisco PIXやASAなどのアップストリームファイアウォールでESAとの間のメールトラフィックを検査する必要がなくなります。セキュリティアプライアンスのホストアドレスに対して、ファイアウォールの拡張シンプルメール転送プロトコル(ESMTP)アプリケーションインスペクション機能を無効にすることを推奨します。デフォルトでは、ESMTPプロトコルインスペクションは、シスコのファイアウォールを通過するすべての接続に対して有効になっています。つまり、TCPポート25経由でメールゲートウェイ間で発行されたすべてのコマンドと個々のメッセージヘッダーが分析され、RFCの821、1123、および1870を含むRequest for Comments(RFC;コメント要求)仕様に厳密に準拠しています。ESAとの間の配信で問題を引き起こす可能性がある受信者の最大数とメッセージサイズのデフォルト値が定義されています。次に、これらの特定の設定のデフォルトの概要を示します(Cisco Command Lookup Toolから取得したものです)。
inspect esmtpコマンドは、以前にfixup smtpコマンドで提供された機能を含んでおり、一部のESMTPコマンドに対する追加サポートを提供します。ESMTPアプリケーションインスペクションには、AUTH、EHLO、ETRN、HELP、SAML、SEND、SOML、VRFYなど8つのESMTPコマンドのサポートが追加されています。7つのRFC 821コマンド(DATA、HELO、MAIL、NOOP、QUIT、RCPT、RSET)のサポートに加え、セキュリティアプライアンスは合計15のSMTPコマンドをサポートします。ATRN、STARTLS、ONEX、VERB、CHUNKING、プライベート拡張など、その他のESMTPコマンドはサポートされません。サポートされていないコマンドはXに変換され、内部サーバによって拒否されます。この結果、500 Command unknown: XXXのようなメッセージが表示されます。不完全なコマンドは破棄されます。
inspect esmtpコマンドは、「2」、「0」、「0」文字以外のサーバSMTPバナーの文字をアスタリスクに変更します。キャリッジリターン(CR)およびラインフィード(LF)文字は無視されます。SMTP検査を有効にすると、インタラクティブSMTPに使用されるセッションは有効なコマンドを待機し、次のルールに従わない場合、ファイアウォールesmtpステートマシンがセッションの正しい状態を維持します。
- SMTPコマンドの長さは4文字以上にする必要があります。
- SMTPコマンドは、改行と改行で終了する必要があります。
- SMTPコマンドは、応答を待ってから次の応答を発行する必要があります。
SMTPサーバは、クライアント要求に対して、数値の応答コードと人間が読み取れるオプションの文字列で応答します。SMTPアプリケーション検査では、ユーザが使用できるコマンドと、サーバから返されるメッセージを制御および削減します。SMTP検査は、主に次の3つのタスクを実行します。
- SMTP要求を7つの基本SMTPコマンドと8つの拡張コマンドに制限します。
- SMTPコマンド応答シーケンスを監視します。
- 監査証跡の生成.監査レコード108002は、メールアドレスに埋め込まれた無効な文字が置き換えられたときに生成されます。詳細については、RFC 821を参照してください。
SMTP検査は、次の異常シグニチャのコマンドと応答シーケンスを監視します。
- 省略されたコマンド。
- コマンドの終了が正しくありません(<CR><LR>で終了していません)。
- PCI Express(PIPE)シグニチャのPHYインターフェイスがMAIL fromまたはRCPT toコマンドのパラメータとして検出されると、セッションは閉じられます。ユーザが設定することはできません。
- SMTPサーバーによる予期しない移行です。
- 不明なコマンドについては、セキュリティアプライアンスはパケット内のすべての文字をXに変更します。この場合、サーバはクライアントに対してエラーコードを生成します。パケットの変更により、TCPチェックサムを再計算または調整する必要があります。
- TCPストリームの編集
show service-policy inspect ESMTPの出力には、デフォルトのインスペクション値とそれに対応するアクションが示されます。
Global policy:
Service-policy: global_policy
Class-map: inspection_default
Inspect: esmtp _default_esmtp_map, packet 104468, drop 0, reset-drop 0
mask-banner, count 639 obfuscate the SMTP banner greeting
match cmd line length gt 512 deny all SMTP commands (and close connection)
drop-connection log, packet 0
match cmd RCPT count gt 100 drop all messages (and connection) with more
than 100 recipients
drop-connection log, packet 0
match body line length gt 998 log all messages with lines > 998 chars
log, packet 0
match header line length gt 998 drop all messages (and connection)
with headers > 998 chars
drop-connection log, packet 41
match sender-address length gt 320 drop all messages (and connection) with
envelope sender > 320 bytes
drop-connection log, packet 0
match MIME filename length gt 255 drop all messages (and connection) with
MIME attachment filenames > 255 bytes
drop-connection log, packet 0
match ehlo-reply-parameter others obfuscate extended commands not explicitly
noted in the RFCs (such as STARTTLS)
mask, packet 2555
問題
メッセージがCisco ESAによって正しく配信または受信されない場合があります。Cisco ESAデバイスmail_logsに、次の1つ以上のメッセージが表示されます。
- XXXの途中で中止されたメッセージ
- 異常終了したICID 21916の受信が失われました
- ICID 21916終了
- 接続エラー: DCID: XXXドメイン:example.com IP: 10.1.2.3ポート: 25詳細: [エラー60]
Operation timed out interface: 10.10.10.1 reason: network error(操作がインターフェイスでタイムアウトしました:10.10.10.1理由:ネットワークエラー)
解決方法
これらのデフォルト設定の一部は、Transport Layer Security(TLS)で暗号化されたメッセージの配信、メーリングリストのキャンペーン、トラブルシューティングなどに影響を与える可能性があります。より適切なポリシーとして、ファイアウォールを使用して、最初にセキュリティアプライアンスを通過しない残りのEメールトラフィックをすべて検査し、通過するトラフィックをすべて除外する方法があります。次の例は、1つのセキュリティホストアドレスのESMTPアプリケーションインスペクションを免除するためのデフォルト設定(前述)の調整方法を示しています。
モジュラポリシーフレームワーク(MPF)クラスマップで参照するために、Cisco ESAの内部アドレスとの間のすべてのトラフィックを定義できます。
access-list ironport_esa_internal extended permit ip any 192.168.1.1
access-list ironport_esa_internal extended permit ip 192.168.1.1 any
これにより、新しいクラスマップが作成され、異なる方法で処理されるトラフィックを明確に照合または選択できます。
class-map ironport_esa
match address ironport_esa_internal
このセクションでは、新しいCiscoクラスマップにリンクし、ESMTPプロトコルインスペクション機能を無効にします。
policy-map global_policy
class ironport_esa
no inspect esmtp
また、アドレス変換(NAT)文にも注目してください。この文は、アドレスへの着信およびハーフオープン(初期)接続数の制御に役立ちます。これはサービス拒否攻撃(DoS)を防ぐには便利ですが、配信速度を妨げる可能性があります。
NATコマンドとSTATICコマンドのパラメータを追跡するフォーマット… [tcp (max_conns)] [max_embryonic]。
この例では、TCP接続の総数が50に制限され、ハーフオープンまたは初期接続の試行が100に指定されています。
static (inside,outside) 1.1.1.1 192.168.1.1 netmask 255.255.255.255 tcp 50 100