SMTP : 원본을 보내지 않고 다른 사람을 참조 할 수 있습니까?


24

내가 보내야 할 이메일로 누군가에게 CC를 잊어 버렸기 때문에 실제로 이것에 대해 생각하기 시작했고, 다른 사람에게 두 번 보내지 않고 사본을 받기를 원했습니다. 나는 단지 그에게 그것을 전달하는 것을 끝내었다. 그러나 나는 아직도 호기심이있다.

SMTP에서 CC 및 BCC 목록은 어디에서 처리됩니까? SMTP 서버를 제어해야합니까, 아니면 클라이언트 측에서 수행 할 수 있습니까?

감사!

email  smtp 

5
왜 이것이 다운 보트되고 있습니까? 결국 흥미로운 질문입니다.

5
@Achilles-이것이 가능한지 아닌지에 대한 세부 사항은 절대적으로 프로그래밍 질문 IMHO입니다. RFC 2821 및 2822에 정의되어 있습니다. 하루가 끝나면 모든 메일 클라이언트는 이러한 정의에 따라 프로그래밍되며 여기에있는 모든 개발자는 어느 시점에서 SMTP를 조사해야 할 수도 있습니다. 나는 확실히있다.

3
"슈퍼 유저에 속함"으로 투표를 종료하십시오. OP가 문제에 대해 생각하게하는 이메일을 보내는 행위라고 말했기 때문에 실제적인 질문은 "프로그래밍과 관련이 없다"는 것은 아닙니다. 웹 링크를 클릭 할 때 발생하는 http 구현 질문이있는 경우 "프로그래밍 관련이 아닌 것"입니까? No.

답변:


17

요컨대 수신자 SMTP 서버에 직접 연결할 수 있다면 가능합니다. Rup이 자신의 답변에 설명 하는 이유 때문에 특히 실용적이지 않을 수 있으며 방화벽 뒤에있는 네트워크에 있으면 TCP 포트 25의 원격 서버에 전혀 연결하지 못할 수 있습니다.

이것이 적용되지 않는다고 가정하면 세부 사항은 다음과 같습니다.

(메일 클라이언트로서) 수신자의 메일 서버에 연결할 때 (배달 목적으로) 서버가 신경 쓰는 모든 것은에 지정된 수신자입니다 RCPT TO:. RFC2821-단순 메일 전송 프로토콜을 참조하십시오 . 받는 사람 유형 (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참조 목록뿐만 아니라 원래 수신자에 그에게이 이메일의 사본을 수신 recipient_on_original@somewhere.com하고, 원래의 참조 수신자를 another_recipient_on_original@somewhere.com.

그러나 실제로 후자의 두 메일 서버에 연결 한 적이 없기 때문에 실제로 두 번째로 전자 메일을받지 않습니다. 이전에 이미 발송 된 메일은 변경할 수 없으므로 다른 cc 수신자를 추가 한 것을 알 수 없습니다.


4

무슨 일이야

  1. 로컬 (또는 ISP의) SMTP 서버로 이메일을 보냅니다.
  2. 로컬 SMTP 서버는 수신자 목록을 확장하고 모든 수신자에게 대화해야하는 서버 목록을 작성합니다. 메시지에서 BCC 헤더를 제거합니다.
  3. 각 서버에 대해 연결하고 "수신자 X, Y에 대한 전자 메일이 있습니다. 여기에 메시지 헤더 및 본문이 있습니다"라고 표시됩니다.

즉, 이메일을 3에 주입 할 수 있고, 놓친 CC 사용자의 홈 SMTP 서버로 직접 전달하면 다른 사람에게 메일을 보내지 않고도 CC를 전달할 수 있습니다. 특히 BCC 수신자는 메시지 헤더와 본문을 전혀 언급하지 않는 본문을받습니다 ( 'X-Envelope-To'헤더 제외).

그러나 실제로는 모든 사람에게 보내는 것이 훨씬 쉽습니다. 이 작업을 효율적으로 수행하려면 전자 메일 클라이언트와 로컬 SMTP 서버를 수정하여받는 사람 확장 중에 처리되는 가짜받는 사람 목록 또는 실제로 보내지 않는 제외 목록을 지원해야합니다.


2

이 문제는 실제로 기존 IETF 진행중인 작업 인 Cosmetic Carbon Copy에 의해 해결됩니다 . 불행히도 초안은 만우절에 무의미한 농담으로 널리 간주되므로 실제로 CCC를 구현하는 전자 메일 클라이언트를 모릅니다.

모든 심각성에서 전자 메일의 내용은 실제로 SMTP 계층에서 메일을 보내는 사람에게 영향을 미치지 않기 때문에 요청하는 것이 가능합니다. 전자 메일 클라이언트는받는 사람, CC 및 BCC 필드의 모든 사람에게 메일을 보내도록 작성되었지만 표준에 따라이 작업을 수행 할 필요는 없습니다.

업데이트 : 정확하게, SMTP 서버로 메일을 보낼 때 발신자는 RCPT 명령을 사용하여 메시지를 전달할 이메일 주소를 지정합니다. 그런 다음 DATA 명령으로 메일 내용을 보냅니다. SMTP 서버는 내용을 보지 않아야합니다. 메시지의 CC 헤더 행에 한 명의 수신자를 추가하고 SMPT 서버가 해당 주소로만 전달하도록 요청할 수 있어야합니다.


0

이 내용을 올바르게 이해하면 To : 및 CC : 헤더의 원래 수신자를 포함하여 두 번째로 메시지를 보내지 만 일부 추가 수신자가 해당 메시지를 수신해야합니다. 다른 답변에서 알 수 있듯이 전자 메일 클라이언트가 SMTP 서버와 통신하고받는 사람을 하나만 지정하고 원본 전자 메일의 To : 및 Cc : 헤더를 포함하여이 작업을 수행 할 수 있습니다.

애플 메일 클라이언트는 효율적으로이 작업을 수행 할 수있는 기능이 있습니다. 리디렉션 기능은 메시지에 대한 메시지 메뉴, 또는 상황에 맞는 메뉴에서 찾을 수 있습니다. 이 기능은 제목 줄에 Fwd :를 추가하지 않고 견적 수준을 높이 지 않고도 다른 사람에게 전자 메일을 투명하게 전달하는 방법으로 사용되지만 이전에 보낸 메시지에도 사용할 수 있습니다. 원본 메시지의받는 사람 / 참조 / 보낸 사람 필드를 동일하게 유지하고 Resent-To 및 Resent-CC 헤더에 새받는 사람을 추가합니다. 재전송 된 메시지의 유일한 수신자는 메시지를 작성할 때 지정한 수신자입니다. 기능을 사용할 때 이것이 어떻게 작동하는지는 확실하지 않으므로 미리 테스트하십시오.


-1

클라이언트별로 허용 / 금지 될 수 있지만 To에 가짜 (예 : 미공개 수신자 ;; ")를 넣어 모든 사람을 BCC에 배치 할 수 있습니다. 그런 다음 프로세스를 반복하면 타임 스탬프 나 스레드 된 메시지 등을 면밀히 관찰하지 않는 한 동일한 이메일처럼 보입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.