付録E. その他のゲートウェイ問題 (Other Gateway Issues)
この付録では、SMTPを他のメールシステムに接続するメールゲートウェイに関する特別な考慮事項について説明する。
E.1. ゲートウェイの責任 (Gateway Responsibilities)
SMTPを別のメールシステムに接続するメールゲートウェイは、以下を行わなければならない (MUST):
-
アドレスの変換 (Translate Addresses)
- SMTP形式と他のシステムの形式間で変換する
- 双方向マッピングを維持する
- 変換規則を文書化する
-
ヘッダーの変換 (Translate Headers)
- SMTPヘッダーフィールドを他のシステムの同等物にマッピングする
- 意味的意味を保持する
- ゲートウェイ固有の追跡フィールドを追加する
-
コンテンツの変換 (Translate Content)
- 文字セットの違いを処理する
- 必要に応じてコンテンツエンコーディングを変換する
- 可能な限り添付ファイルを保持する
-
配信通知の処理 (Handle Delivery Notifications)
- システム間でDSNを変換する
- 失敗を適切に報告する
- エラーコードをマッピングする
E.2. X.400ゲートウェイの例 (X.400 Gateway Example)
SMTP to X.400:
- RFC 5322アドレスをX.400 O/Rアドレスに変換する
- SMTPヘッダーをX.400 P2ヘッダーにマッピングする
- メッセージコンテンツを保持する
X.400 to SMTP:
- X.400 O/RアドレスをRFC 5322形式に変換する
- X.400ヘッダーをSMTPヘッダーにマッピングする
- 配信レポートを維持する
E.3. アドレスマッピングの課題 (Address Mapping Challenges)
問題: 異なるアドレス指定スキーム
SMTP: [email protected]
UUCP: host!user
X.400: /C=US/ADMD=ATT/PRMD=XYZ/S=Smith/G=John/
ゲートウェイは以下を行わなければならない (MUST):
- 両方向にアドレスを変換する
- 異なる部分 (エンベロープとヘッダー) のアドレスを処理する
- 変換不可能なアドレスに対処する
E.4. 文字セットの問題 (Character Set Issues)
SMTPは伝統的に7ビットASCIIを使用する。異なる文字セットを持つシステムへのゲートウェイは、以下を行わなければならない (MUST):
- エンコーディングの識別: 受信メッセージの文字セットを検出する
- 安全な変換: ターゲットシステムのエンコーディングに変換する
- 明確なマーク: ヘッダーでエンコーディングを示す (MIME Content-Type)
- 失敗の処理: 変換不可能な文字に対処する
E.5. コンテンツ変換 (Content Conversion)
コンテンツ形式が異なる場合:
テキスト:
- 行末変換 (CRLF vs LF vs CR)
- 文字セット変換
- テキストの折り返し/折り返し解除
バイナリ:
- エンコーディング (Base64、Quoted-Printable)
- タイプ保持
- ファイル名処理
リッチテキスト:
- HTMLから/他の形式へ
- フォーマット保持
- プレーンテキストへのフォールバック
E.6. ゲートウェイにおけるループ防止 (Loop Prevention in Gateways)
ゲートウェイは、メールループを防がなければならない (MUST):
SMTP → ゲートウェイA → 他のシステム → ゲートウェイB → SMTP (ループ!)
防止方法:
- ゲートウェイを越えてMessage-IDを追跡する
- ゲートウェイ固有の追跡ヘッダーを追加する
- ゲートウェイ変換を越えてホップカウントを制限する
- 繰り返されたゲートウェイ処理を検出する
E.7. エラー処理 (Error Handling)
ゲートウェイ固有のエラー:
変換失敗:
- 変換不可能なアドレス → 5xxエラーを返す
- 文字セットの問題 → エラーを返すか、最善の努力で変換する
- 形式の非互換性 → 拒否するか、損失警告付きで変換する
配信失敗:
- 他のシステムが拒否 → SMTPエラーコードに変換する
- 他のシステムでタイムアウト → 一時的失敗を返す (4xx)
- 永続的失敗 → 永続的失敗を返す (5xx)
E.8. ゲートウェイReceivedヘッダー (Gateway Received Headers)
ゲートウェイは、適切なReceivedヘッダーを追加しなければならない (MUST):
Received: from smtp.example.com by gateway.example.com
with SMTP (gateway to X400) id 12345
for [email protected]; Wed, 24 Dec 2024 10:00:00 +0000
以下を含む:
- ソースプロトコル (SMTP)
- 宛先プロトコル (コメント内)
- ゲートウェイ識別
- タイムスタンプ
E.9. ベストプラクティス (Best Practices)
- 変換を文書化: すべてのアドレスとヘッダーの変換を明確に文書化する
- 情報を保持: 可能な限り元の情報を保持する
- 追跡を追加: デバッグのためにゲートウェイ固有のヘッダーを追加する
- 徹底的にテスト: さまざまなメッセージタイプとエッジケースでテストする
- 監視: トラブルシューティングのためにゲートウェイ操作をログに記録する
- 更新: セキュリティと互換性のためにゲートウェイソフトウェアを最新に保つ