私が実際にこれについて考え始めたのは、私が送信するはずだったメールで誰かにCCするのを忘れて、他の人に二重送信せずにコピーを手に入れたかったからです。私は彼にそれを転送するだけになりましたが、私はまだ興味があります。
SMTPでCCおよびBCCリストはどこで処理されますか?SMTPサーバーを制御する必要がありますか、それともクライアント側で実行できますか?
ありがとう!
私が実際にこれについて考え始めたのは、私が送信するはずだったメールで誰かにCCするのを忘れて、他の人に二重送信せずにコピーを手に入れたかったからです。私は彼にそれを転送するだけになりましたが、私はまだ興味があります。
SMTPでCCおよびBCCリストはどこで処理されますか?SMTPサーバーを制御する必要がありますか、それともクライアント側で実行できますか?
ありがとう!
回答:
つまり、受信者のSMTPサーバーに直接接続できる場合は可能です。Rupが彼の答えで概説している理由から、それは特に実用的ではないかもしれません。また、ファイアウォールの背後にあるネットワーク上にいる場合、TCPポート25でリモートサーバーに接続できない場合があります。
これがあなたに当てはまらないと仮定すると、ここに詳細があります:
(メールクライアントとして)受信者のメールサーバーに接続する場合、そのサーバーが(配信目的で)気にするのは、で指定された受信者のみRCPT TO:
です。RFC2821-Simple Mail Transfer Protocolを参照してください。受信者のタイプ(to:、cc:またはbcc :)を区別せず、「サーバーの受信者がこれを受信していることを確認してください」と言っていることを知っているだけです。
ただし、受信者の実際のメールクライアントに関する限り、メッセージのすべての受信者が誰であるかを示すのはメッセージのヘッダーです。RFC2822-インターネットメッセージフォーマットを参照してください。
つまり、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: <test@mydomain.co.uk>
250 2.1.0 OK f70si17620845wej.110
RCPT TO: <user_i_missed_out@mydomain.co.uk>
250 2.1.5 OK f70si17620845wej.110
DATA
354 Go ahead f70si17620845wej.110
To: recipient_on_original@somewhere.com
cc: another_recipient_on_original@somewhere.com, user_i_missed_out@mydomain.co.uk
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.
最終的な効果は、user_i_missed_out@mydomain.co.uk
彼がccリストにあるメールのコピーrecipient_on_original@somewhere.com
と元の受取人と元のcc受取人を受け取るということanother_recipient_on_original@somewhere.com
です。
ただし、後者の2つのメールサーバーに実際に接続したことはないため、2回目に実際にメールを受信することはありません。また、以前に送信されたメールを変更することはできないため、別のcc受信者を追加したことに気付かないでしょう。
何が起こる
つまり、メールを3に注入できれば、見逃したCCユーザーのホームSMTPサーバーに直接配信し、他の全員にメールを送信せずにCCを配信できます。特に、BCC受信者は、それらにまったく言及していないメッセージヘッダーと本文を取得します(「X-Envelope-To」ヘッダーを除く場合があります)。
ただし、実際には、全員に送信する方がはるかに簡単です。これを効率的に行うには、電子メールクライアントとローカルSMTPサーバーを変更して、受信者の拡張中に処理する偽の受信者リスト、または実際には送信しない除外リストをサポートする必要があります。
この問題は、実際に進行中のIETFの進行中の作業であるコスメティックカーボンコピーによって解決されます。残念ながら、ドラフトはエイプリルフールの無意味な冗談だと広く考えられているため、実際にCCCを実装しているメールクライアントは知りません。
真剣に、あなたが求めていることは可能です。なぜなら、ほとんどの場合、電子メールの内容は、SMTP層でメールの送信先に実際には影響しないからです。電子メールクライアントは、To、CC、およびBCCフィールドの全員にメールを送信するように作成されていますが、標準でこれを行う必要はありません。
更新:正確に言うと、SMTPサーバーにメールを送信する場合、送信者はRCPTコマンドを使用して、メッセージの配信先の電子メールアドレスを指定します。次に、DATAコマンドを使用してメールの内容を送信します。SMTPサーバーはコンテンツを見るべきではありません。メッセージのCCヘッダー行に1人の受信者を追加し、SMPTサーバーにその1つのアドレスのみに配信するように依頼することができるはずです。
私がこれを正しく理解している場合、あなたがしようとしているのは、To:ヘッダーとCC:ヘッダーの元の受信者を含むメッセージを2回送信することですが、そのメッセージは追加の受信者によってのみ受信されます。他の回答で指摘したように、これは、SMTPサーバーと通信し、元の電子メールのTo:およびCc:ヘッダーを含む1人の受信者のみを指定する電子メールクライアントによって実現できます。
Appleのメールクライアントは、これを効果的に行うことができます機能を備えています。リダイレクト機能は、メッセージのメッセージメニュー、またはコンテキストメニューに見出すことができます。この関数は、件名行にFwd:を追加して引用レベルを上げることなく、他の人に透過的にメールを転送する方法として使用するように設計されていますが、以前に送信したメッセージにも使用できます。元のメッセージのTo / Cc / Fromフィールドを同じに保ち、Resent-ToおよびResent-CCヘッダーに新しい受信者を追加します。再送メッセージの受信者は、作成時に指定した受信者のみです。この機能を使用したときにこれがどのように機能するかは完全には明らかではないため、事前にテストしてください。