이메일의 "보낸 사람"필드를 조작하고 "받는 사람"사용자가 실제와 다른 것을 볼 수있게하려면 어떻게해야합니까?
예:
진짜에서
From: TStamper@yahoo.com
그러나 그들은 본다
From: Tremayne "Top Dog" Stamper
SMTP 조작에서 들었지만 실제로 얼마나 정확한지 또는 어떻게 수행 할 수 있는지 잘 모르겠습니다.
이메일의 "보낸 사람"필드를 조작하고 "받는 사람"사용자가 실제와 다른 것을 볼 수있게하려면 어떻게해야합니까?
예:
진짜에서
From: TStamper@yahoo.com
그러나 그들은 본다
From: Tremayne "Top Dog" Stamper
SMTP 조작에서 들었지만 실제로 얼마나 정확한지 또는 어떻게 수행 할 수 있는지 잘 모르겠습니다.
답변:
기본적으로 SMTP는 실제 확인이없는 텍스트 기반 프로토콜입니다. 예를 들면 다음과 같습니다.
=== Trying g3.example.net:25...
=== Connected to g3.example.net.
<- 220 home.example.net ESMTP Exim 4.68 Thu, 07 May 2009 11:03:21 -0400
-> EHLO g3.example.net
<- 250-home.example.net Hello g3.example.net [192.168.0.4]
<- 250-SIZE 52428800
<- 250-PIPELINING
<- 250-AUTH CRAM-SHA1 CRAM-MD5 MSN
<- 250-STARTTLS
<- 250 HELP
-> MAIL FROM:<jj33@g3.example.net>
<- 250 OK
-> RCPT TO:<jj33@g3.example.net>
<- 250 Accepted
-> DATA
<- 354 Enter message, ending with "." on a line by itself
-> Date: Thu, 07 May 2009 11:03:21 -0400
-> To: jj33@g3.example.net
-> From: jj33@g3.example.net
-> Subject: test Thu, 07 May 2009 11:03:21 -0400
-> X-Mailer: swaks v20070921.0-dev jetmore.org/john/code/#swaks
->
-> This is a test mailing
->
-> .
<- 250 OK id=KJA4HL-0006M6-8T
-> QUIT
<- 221 home.example.net closing connection
=== Connection closed with remote host.
"MAIL FROM :"줄은 SMTP 봉투 발신자를 정의하고 From :은 메시지 DATA에 정의됩니다. 이를 방지 할 수있는 방법이 있지만 프로토콜 자체가 아닌 메일 서버 로직에 정의되어 있습니다.
예를 들어, 메일 제공자로서 사용자는 user @ domain 유형 사용자 이름을 사용하여 인증하도록 요구할 수 있습니다. 그런 다음 내 메일 서버는 보낸 모든 메일에 봉투 발신자와 인증 된 사용자와 일치하는 From : 헤더가 있어야 할 수 있습니다. DKIM 및 SPF와 같은 추가 기술도이 영역에서 도움이 될 수 있습니다.
여기서 고려해야 할 몇 가지 다른 사항이 있습니다. 다른 이름이나 전자 메일 주소 만 표시하려면 메시지의 "보낸 사람"헤더 (주소의 메시지)를 표시 이름이 괄호 안에있는 전자 메일 주소로 설정하십시오.
보낸 사람 : Joe Example <joe@example.com>
메시지 머리글의 "보낸 사람"줄은 표시 목적으로 만 사용됩니다. 실제 라우팅은 SMTP 봉투 주소로 수행됩니다. SMTP 서버가 실제로 서버간에 메시지를 전송하는 데 사용하는 것입니다. 메시지 "보낸 사람"헤더와 다를 수 있습니다. 사용자 지정 SMTP 엔진이있는 경우 SMTP 봉투에 하나의 주소를 사용하고 실제 메시지의 "보낸 사람"헤더에 다른 주소를 사용하십시오.
합법적 인 이유는 여러 가지가 있지만 사악한 목적은 삼가십시오.
RFC 5322-A.2.1 에서 올바른 구문 예제를 찾을 수 있습니다.
"실제로 보낸 사람"주소는 SMTP 대화의 "보낸 사람 :"대화 상자에서 가져옵니다.
"가짜로부터"는 SMTP 대화의 데이터 부분에 배치 된 다양한 헤더 필드를 표시하는 이메일 클라이언트의 일반적인 관행을 이용하여 비롯됩니다. 예를 들어 :
# telnet mail.example.com 25
Connected to mail.example.com.
Escape character is '^]'.
220 mail.example.com ESMTP Postfix
helo fakeserver
250 mail.example.com
mail from: real@example.com
250 2.1.0 OK
rcpt to: real@example.com
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
from: fake@example.com
to: you@example.com
subject: This is a subject
This is the body.
.
250 2.0.0 Ok: queued as 90D0F95A06
quit
221 2.0.0 Bye
Connection closed by foreign host.
#
데이터 부분에 "from :"및 "to :"행을 생략하면 실제 봉투 발신자와 수신자가 표시됩니다.
이러한 종류의 속임수는 종종 스팸 필터에서 찾아 볼 수 있으며 영구적 인 친구가되지는 않습니다. 또한 모든 메일 클라이언트 (가장 일반적인 메일 클라이언트)에서는 작동하지 않습니다.
이 코드에서 바로 2c-C #으로 작성
public static void SendSpam(string message, string to)
{
System.Net.Mail.MailMessage myMessage = new System.Net.Mail.MailMessage("Fake Name", to);
myMessage.Subject = "SPAM";
myMessage.Body = message;
System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient("mail.mailserver.com", 25);
System.Net.NetworkCredential c = new System.Net.NetworkCredential("realusername@mailserver.com", "realpassword");
client.Credentials = c;
client.Send(myMessage);
}