ฟิลด์“ จาก” ปลอมในอีเมล


9

ฉันจะจัดการฟิลด์ "จาก" ในอีเมลและทำให้ผู้ใช้ "เป็น" เห็นสิ่งที่แตกต่างจากของจริงได้อย่างไร

ตัวอย่าง:

จริงๆจาก

From: TStamper@yahoo.com

แต่พวกเขาเห็น

From: Tremayne "Top Dog" Stamper

ฉันได้ยินมาว่าไม่สามารถจัดการกับ SMTP ได้ แต่ไม่แน่ใจว่ามันถูกต้องหรือไม่


2
ฉันเห็นสิ่งนี้ว่าเป็นปัญหาที่ถูกต้อง เราทำสิ่งนี้ตลอดเวลา (โดยเฉพาะการสร้างอีเมลจากซอฟต์แวร์ที่ดูเหมือนว่ากำลังส่งถึงผู้ใช้)
C. Ross

ฉันยอมรับว่าอาจเป็นปัญหาที่ถูกต้องหากคุณต้องการเปลี่ยนฟิลด์จากเป็นแสดงชื่อจริงแทนที่จะเป็นที่อยู่ เราทำเช่นนั้นตลอดเวลาในระบบของเราด้วย มันเป็นเพียงเล็กน้อยของธงเนื่องจากตัวอย่างในคำถามเปลี่ยนจากที่อยู่หนึ่งไปยังอีก เหยื่อสแปม
squillman

อัปเดตด้วยตัวอย่างที่ดีกว่า
TStamper

นั่นเป็นเหตุผลที่พวกเขาสร้าง SPF บันทึก
เอลียาห์โกลเวอร์

คำตอบ:


14

โดยพื้นฐานแล้ว 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 และกำหนดจาก: ในข้อความ DATA มีวิธีในการป้องกันสิ่งนี้ แต่มีการกำหนดไว้ในตรรกะของเซิร์ฟเวอร์อีเมลไม่ใช่ในโปรโตคอลเอง

ตัวอย่างเช่นฉันในฐานะผู้ให้บริการอีเมลอาจต้องการให้ผู้ใช้รับรองความถูกต้องโดยใช้ชื่อผู้ใช้ @ โดเมนประเภทผู้ใช้ จากนั้นเซิร์ฟเวอร์อีเมลของฉันอาจต้องการให้จดหมายใด ๆ ที่พวกเขาส่งนั้นมีผู้ส่งซองจดหมายและส่วนหัวจาก: ที่ตรงกับผู้ใช้ที่ได้รับการรับรองความถูกต้อง เทคโนโลยีเพิ่มเติมเช่น DKIM และ SPF สามารถช่วยในเรื่องนี้ได้เช่นกัน


8

มีสิ่งต่าง ๆ ให้พิจารณาที่นี่ หากคุณเพียงแค่ต้องการแสดงชื่ออื่นหรือที่อยู่อีเมลให้ตั้งค่าส่วนหัว "จาก" ของข้อความ (ข้อความจากที่อยู่) เป็นที่อยู่อีเมลที่มีชื่อที่แสดงในวงเล็บเช่น:

จาก: Joe ตัวอย่าง <joe@example.com>

โปรดจำไว้ว่าบรรทัด "จาก" ในส่วนหัวของข้อความใช้เพื่อการแสดงผลเท่านั้น การกำหนดเส้นทางที่แท้จริงทำโดยที่อยู่ซองจดหมายของ SMTP นี่คือสิ่งที่เซิร์ฟเวอร์ SMTP ใช้เพื่อส่งข้อความระหว่างเซิร์ฟเวอร์จริง ๆ สิ่งนี้อาจแตกต่างจากข้อความ "จาก" ส่วนหัว หากคุณมีเอนจิน SMTP เองให้ใช้ที่อยู่หนึ่งในซองจดหมาย SMTP และอีกอันหนึ่งในส่วนหัว "จาก" บนข้อความจริง

มีสาเหตุหลายประการที่ถูกกฎหมายที่คุณอาจต้องการทำเช่นนี้ แต่โปรดงดเว้นจากวัตถุประสงค์ที่เลวร้าย

โปรดทราบว่าตัวอย่างไวยากรณ์ที่ถูกต้องสามารถพบได้ในRFC 5322 - A.2.1


1
ตัวอย่างวงเล็บคือผิดก็ถอยหลัง
jj33

แก้ไขแล้ว; เป็นเวลานานแล้วที่ข้าได้ทำสิ่งนี้
สเปรย์ของ Justin

ฉันอัปเดตอีกครั้งตอนนี้เพื่อให้ตรงกับ RFC 822
Mike Graf

1
@MikeGraf 822 ถูกแทนที่อย่างน้อยสองครั้ง 5322 ดีกว่า
Patrick Mevzek

2
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 ที่อนุญาตให้ส่งผ่านซึ่งแทบจะเป็นไปไม่ได้ที่จะหา ... หรือม้วนตัวเอง (อย่าใช้ความรู้นี้เพื่อส่งสแปม!)


2

ที่อยู่ "จริงๆจาก" มาจากกล่องโต้ตอบ "จาก:" ในการสนทนา 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.
#

หากคุณออกจากบรรทัด "จาก:" และ "ถึง:" ในส่วนของข้อมูลมันจะแสดงผู้ส่งและผู้รับซองจดหมายจริง

โปรดทราบว่าเทคนิคต่าง ๆ เหล่านี้มักถูกค้นหาโดยตัวกรองสแปมและจะไม่ทำให้คุณกลายเป็นเพื่อนถาวร นอกจากนี้ยังใช้ไม่ได้กับโปรแกรมรับส่งเมลทั้งหมด (เฉพาะที่พบบ่อยที่สุด)


1

ใช่มันเป็นเรื่องของการตั้งค่าส่วนหัวของ SMTP ด้วยตนเองและไม่ประสบความสำเร็จ Google มัน แต่อย่าโดนสแปม ......


0

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);
    }
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.