web-dev-qa-db-ja.com

SMTP:オリジナルを送信せずに誰かをCCすることは可能ですか?

送信するはずだったメールで誰かにCCするのを忘れたので、私は実際にこれについて考え始めました。また、他の人に二重送信せずにコピーを取得するように彼に求めました。私は彼にそれを転送するだけになりましたが、私はまだ興味があります。

CCおよびBCCリストはSMTPでどこで処理されますか? SMTPサーバーを制御する必要がありますか、それともクライアント側で実行できますか?

ありがとう!

25
Jim

つまり、受信者のSMTPサーバーに直接接続できれば可能です。理由 Rupが彼の回答で概説しています これは特に実用的ではない可能性があります。ファイアウォールの背後にあるネットワーク上にいる場合、TCPポート25です。

これが当てはまらない場合、詳細は次のとおりです。

(メールクライアントとして)受信者のメールサーバーに接続するとき、そのサーバーが(配信目的で)気にするのは、RCPT TO:で指定された受信者だけです。 RFC2821-Simple Mail Transfer Protocol を参照してください。受信者のタイプ(to:、cc:、bcc :)は区別されません。「サーバーの受信者がこれを受信することを確認してください」と言っているだけです。

ただし、受信者の実際のメールクライアントに関する限り、メッセージのすべての受信者が誰であるかを示すのはメッセージのヘッダーです。 RFC2822-Internet Message Format を参照してください。

つまり、TO:、CC :、およびBCC:ヘッダーはメールクライアントの利益のためにありますが、実際の配信はメールサーバーとのSMTP「会話」中に処理されます。

したがって、実際には、次のようなSMTPサーバーと会話することができます。

C:>telnet aspmx.l.google.com 25
220 mx.google.com ESMTP f70si17620845wej.110
HELO myserver.mydomain.co.uk
250 mx.google.com at your service
MAIL FROM: <[email protected]>
250 2.1.0 OK f70si17620845wej.110
RCPT TO: <[email protected]>
250 2.1.5 OK f70si17620845wej.110
DATA
354  Go ahead f70si17620845wej.110
To: [email protected]
cc: [email protected], [email protected]
Subject: My email

Hi - this is a test
.
250 2.0.0 OK 1277401976 f70si17620845wej.110
QUIT
221 2.0.0 closing connection f70si17620845wej.110


Connection to Host lost.

最終的な影響は、[email protected]がccリストに彼を含むメールのコピー、元の宛先[email protected]、および元のcc受信者[email protected]を受け取ることです。

ただし、後者の2つのメールサーバーには実際に接続したことがないため、2回目にメールを受信することはありません。また、以前に送信されたメールを変更することはできないため、cc受信者が追加されたことに気付くことはありません。

18
Rob Levine

何が起こるか

  1. ローカル(またはISP)のSMTPサーバーに電子メールを送信します
  2. ローカルSMTPサーバーが受信者リストを展開し、すべての受信者について通信する必要があるサーバーのリストを計算します。メッセージからBCCヘッダーを削除します。
  3. サーバーごとに接続し、「ここに受信者​​X、Yのメールがあります。ここにメッセージのヘッダーと本文があります」と表示されます。

つまり、メールを3に挿入できる場合は、不在のCCユーザーのホームSMTPサーバーに直接配信し、他のすべての人にメールを送信する必要なくCCを配信できます。特に、BCC受信者は、まったく言及しないメッセージヘッダーと本文を取得します( 'X-Envelope-To'ヘッダーを除く)。

ただし、実際には、全員に送信する方がはるかに簡単です。これを効率的に行うには、電子メールクライアントとローカルのSMTPサーバーを変更して、受信者の展開中に処理する偽の受信者リスト、または実際に送信しない除外リストをサポートする必要があります。

4
Rup

この問題は、既存のIETFの進行中の作業である Cosmetic Carbon Copy によって実際に解決されます。残念ながら、ドラフトはエイプリルフールにとって無意味な冗談であると広く考えられているため、実際にCCCを実装している電子メールクライアントについては知りません。

真剣に、あなたが求めていることは可能です。主な理由は、電子メールの内容が実際にはSMTP層でのメールの送信先に影響を与えないためです。電子メールクライアントは、To、CC、およびBCCフィールドのすべてのユーザーにメールを送信するように作成されていますが、標準でこれを行う必要はありません。

更新:正確には、SMTPサーバーにメールを送信する場合、送信者はRCPTコマンドを使用して、メッセージの配信先となるメールアドレスを指定します。次に、DATAコマンドを使用してメールの内容を送信します。 SMTPサーバーはコンテンツを見てはいけません。メッセージのCCヘッダー行に1人の受信者を追加し、SMPTサーバーにその1つのアドレスのみに配信するように要求することが可能です。

2
Karmastan

私がこれを正しく理解している場合、あなたがしようとしていることは、元の受信者をTo:およびCC:ヘッダーに含めてメッセージをもう一度送信することですが、そのメッセージは一部の追加の受信者のみが受信します。他の回答が指摘しているように、これは、SMTPサーバーと通信し、1人の受信者のみを指定して、元のメールのTo:ヘッダーとCc:ヘッダーを含めて、メールクライアントで実行できます。

Apple Mailクライアントには、これを効果的に実行できる機能があります。 リダイレクト関数は、メッセージメニュー、またはメッセージのコンテキストメニューにあります。この関数は、件名にFwd:を追加せずに引用レベルを上げることなく、電子メールを透過的に他の人に転送する方法として使用するように設計されていますが、以前に送信したメッセージにも使用できます。元のメッセージのTo/Cc/Fromフィールドを同じに保ち、Resent-ToヘッダーとResent-CCヘッダーに新しい受信者を追加します。再送信されたメッセージの唯一の受信者は、メッセージを作成するときに指定した受信者になります。この機能を使用する場合、これがどのように機能するかは完全には明らかではないため、必ず事前にテストしてください。

0
NReilingh