5. ELECTRONIC MAIL -- SMTP AND RFC-822 (電子メール -- SMTPとRFC-822)
5.1 INTRODUCTION (はじめに)
電子メールは、インターネットで最も重要なアプリケーションの1つです。2つの主要なプロトコルを使用します:
- RFC-822: メールメッセージの形式を定義
- SMTP: メール送信のための簡易メール転送プロトコル
すべてのインターネットホストは、電子メールの送受信のためにSMTPとRFC-822を実装すべきです (SHOULD)。
5.2 PROTOCOL WALK-THROUGH (プロトコルの詳細)
5.2.1 RFC-822
RFC-822は、メールメッセージの構文を定義します。メールメッセージは次で構成されます:
- ヘッダー: From、To、Subject、Dateなどのフィールドを含む
- 本文: 実際のメッセージ内容
一般的なヘッダーフィールド
- From: メッセージの発信者 (必須)
- To: 主要な受信者 (送信時に必須)
- Cc: カーボンコピー受信者
- Bcc: ブラインドカーボンコピー受信者
- Subject: 件名行
- Date: メッセージが送信された日時
- Message-ID: 一意のメッセージ識別子
- Received: トレース情報
5.2.2 SMTP
SMTPは、ホスト間でメールメッセージを送信するためのプロトコルです。SMTPはTCPポート25を使用します。
SMTPコマンド
- HELO: クライアントからサーバーへの識別
- EHLO: 拡張HELO (ESMTP)
- MAIL FROM: 送信者の指定
- RCPT TO: 受信者の指定
- DATA: メッセージ内容の開始
- RSET: トランザクションのリセット
- VRFY: 受信者の確認
- EXPN: メーリングリストの展開
- HELP: ヘルプ情報
- NOOP: 操作なし
- QUIT: 接続の終了
SMTP応答コード
SMTPは3桁の応答コードを使用します:
- 2xx: 肯定的完了
- 3xx: 肯定的中間
- 4xx: 一時的な否定的完了
- 5xx: 永続的な否定的完了
5.3 SPECIFIC ISSUES (個別の問題)
5.3.1 SMTP
5.3.1.1 Sending Strategy (送信戦略)
SMTPクライアントは、失敗したメール送信のキューイングと再試行のための設定可能な戦略を実装すべきです (SHOULD)。再試行戦略は指数バックオフを使用すべきです (SHOULD)。
5.3.1.2 Receiving Strategy (受信戦略)
SMTPサーバーは、有効なローカル受信者のメールを受け入れなければなりません (MUST)。SMTPサーバーは、メールを受け入れる前に受信者の有効性を確認すべきです (SHOULD)。
5.3.1.3 Error Handling (エラー処理)
SMTP実装は、すべてのSMTP応答コードを適切に処理しなければなりません (MUST)。一時的な失敗 (4xx) は再試行につながるべきであり、永続的な失敗 (5xx) は配信不能通知につながるべきです。
5.3.1.4 Timeouts (タイムアウト)
SMTP実装は、適切なタイムアウトを使用しなければなりません (MUST):
- 初期220メッセージ: 5分
- MAILコマンド: 5分
- RCPTコマンド: 5分
- DATA開始: 2分
- DATAブロック: 3分
- DATA終了: 10分
5.3.2 RFC-822
5.3.2.1 Message Format (メッセージ形式)
実装は、RFC-822構文に準拠するメッセージを生成しなければなりません (MUST)。ただし、実装は、軽微な逸脱があるメッセージを受け入れる際に寛容であるべきです (SHOULD)。
5.3.2.2 Address Formats (アドレス形式)
RFC-822は、いくつかのアドレス形式を定義しています。実装は、メールボックスアドレスをサポートしなければならず (MUST)、グループアドレスをサポートすべきです (SHOULD)。
5.3.2.3 Date and Time (日付と時刻)
すべてのメールメッセージは、Dateヘッダーフィールドを含まなければなりません (MUST)。日付は、RFC-822の日付と時刻の形式を使用しなければなりません (MUST)。
5.4 SMTP REQUIREMENTS SUMMARY (SMTP要件のまとめ)
| 機能 | セクション | MUST | SHOULD | MAY | 備考 |
|---|---|---|---|---|---|
| SMTPの実装 | 5.1 | ✓ | |||
| RFC-822の実装 | 5.1 | ✓ | |||
| ローカル受信者のメールを受け入れ | 5.3.1.2 | ✓ | |||
| 再試行に指数バックオフを使用 | 5.3.1.1 | ✓ | |||
| すべての応答コードを正しく処理 | 5.3.1.3 | ✓ | |||
| 適切なタイムアウトを使用 | 5.3.1.4 | ✓ | |||
| RFC-822準拠メッセージを生成 | 5.3.2.1 | ✓ | |||
| Dateヘッダーを含める | 5.3.2.3 | ✓ |