メインコンテンツまでスキップ

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要件のまとめ)

機能セクションMUSTSHOULDMAY備考
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