電子メールを送信する場合、RCTP TO: コマンドを介して SMTP ダイアログ中に受信者リストが提供されます。その後、DATA コマンドで、'To'、'Cc'、'bcc' などのヘッダー フィールドが示されます。受信者のこの RCPT TO リストは、DATA コマンドで示されるヘッダーと一致する必要がありますか?
また、受信者が RCPT TO に示されておらず、電子メール ヘッダーの To フィールドに示されている場合、RCPT TO にない受信者に配信されますか?
いいえ、一致する必要はありません。メッセージが送信されると、SMTP サーバー (別名メッセージ転送エージェントまたは MTA) は、メッセージの受信者と送信者を含む、いわゆる SMTP エンベロープを作成します ( RFC5321を参照)。
SMTP はメール オブジェクトを転送します。メール オブジェクトには、封筒と内容が含まれます。SMTP エンベロープは、一連の SMTP プロトコル ユニットとして送信されます (セクション 3 で説明)。これは、発信者アドレス (エラー レポートの送信先)、1 つ以上の受信者アドレス、およびオプションのプロトコル拡張マテリアルで構成されます。
実際には、RCPT TO: コマンドには、メッセージのヘッダーよりも多くの受信者が含まれていることがよくあります。一般的なケースの 1 つは、「ブラインド コピー」 bcc: ( RFC5321を参照)の使用です。
メッセージ ヘッダー セクションに表示されないアドレスは、さまざまな理由で SMTP サーバーへの RCPT コマンドに表示される場合があります。最も一般的な 2 つは、「リスト エクスプローダ」(複数のアドレスに解決される単一のアドレス) としての郵送先住所の使用と、「ブラインド コピー」の外観を含みます。
受信者のこの RCPT TO リストは、DATA コマンドで示されるヘッダーと一致する必要がありますか?
いいえ。
受信者が RCPT TO ではなく、電子メール ヘッダーの To フィールドで示されている場合、RCPT TO ではない受信者に配信されますか?
RCPT。これは、私自身のSMTPクライアントからの(変更された)トランスクリプトです。ここでは、あなたが求めることだけを行います。
CLIENT: MAIL FROM:<myaccount@gmail.com>
SERVER: 250 2.1.0 OK
CLIENT: RCPT TO:<myaccount@gmail.com>
SERVER: 250 2.1.5 OK
CLIENT: DATA
SERVER: 354 Go ahead
CLIENT: Subject: Test email
CLIENT: From:'John Doe'<fakeaccount@gmail.com>
CLIENT: To:'John Doe'<fakeaccount@gmail.com>
CLIENT: This is a test...
CLIENT: .
メッセージは「myaccount@gmail.com」に正常に送信されました。
SMTP プロトコル ( RFC 2821 ) では、次のように規定されています。
RFC 822 形式 [7, 32] が使用されている場合、メール データには、
Date、Subject、To、Cc、From などのメモ ヘッダー項目が含まれます。サーバー SMTPシステムは、 RFC 822 または MIME [12] メッセージ ヘッダーまたはメッセージ ボディ
で認識された欠陥に基づいて、メッセージを拒否すべきではありません (SHOULD NOT )。
この:
DATA コマンドは、プロトコル交換の 2 つの時点でのみ失敗する可能性があります。
- メールがない場合、またはRCPTコマンドがない場合、またはそのようなコマンドがすべて拒否された場合、サーバーはDATAコマンドに応答して「コマンドの順序が間違っている」(503)または「有効な受信者がいない」(554)応答を返す場合があります。これらの応答の 1 つ (またはその他の 5yz 応答) を受信した場合、クライアントはメッセージ データを送信してはなりません。より一般的には、354 応答が受信されない限り、メッセージ データを送信してはなりません。
これらのステートメントから、ヘッダーと RCPT TO: コマンドの内容は一致する必要はなく (一致する必要があります)、RCPT TO: を使用しないと、エラーが発生して DATA コマンドを続行できなくなります。