이메일의 가짜 “보낸 사람”필드 수있게하려면 어떻게해야합니까? 예:

이메일의 “보낸 사람”필드를 조작하고 “받는 사람”사용자가 실제와 다른 것을 볼 수있게하려면 어떻게해야합니까?

예:

진짜에서

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 에서 올바른 구문 예제를 찾을 수 있습니다.


답변

telnet some_smtp_server.com 25
ehlo whatsup
mail from: JohnBaker@yahoo.com
rcpt to: recipient@somewhere.com
data
your message here
end with a dot on a single line like this:
.

물론 중계를 허용하는 SMTP 서버가 필요합니다. 거의 찾을 수 없거나 롤업하는 것은 거의 불가능합니다 (이 지식을 스팸으로 사용하지 마십시오!).


답변

“실제로 보낸 사람”주소는 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 :”행을 생략하면 실제 봉투 발신자와 수신자가 표시됩니다.

이러한 종류의 속임수는 종종 스팸 필터에서 찾아 볼 수 있으며 영구적 인 친구가되지는 않습니다. 또한 모든 메일 클라이언트 (가장 일반적인 메일 클라이언트)에서는 작동하지 않습니다.


답변

예, 수동으로 SMTP 헤더를 설정하는 것으로 간단합니다. 구글 그것. 그러나 스팸에 걸리지 마십시오 ……


답변

이 코드에서 바로 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);
    }


답변