Как я могу манипулировать полем «от» в электронном письме и заставить «кому» видеть что-то отличное от фактического?
Пример:
действительно из
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.com>
Помните, что строка «от» в заголовке сообщения используется только для отображения. Фактическая маршрутизация выполняется по адресу конверта SMTP. Это то, что SMTP-серверы фактически используют для передачи сообщений между серверами. Это может отличаться от заголовка сообщения "от". Если у вас есть собственный механизм SMTP, просто попросите его использовать один адрес в конверте SMTP, а другой - в заголовке «from» фактического сообщения.
Есть ряд законных причин, по которым вы можете захотеть это сделать, но, пожалуйста, воздержитесь от гнусных целей.
Обратите внимание, что правильный пример синтаксиса можно найти в 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.
#
Если бы вы пропустили строки «от:» и «кому:» в разделе «Данные», то отобразились бы фактические отправитель и получатель конверта.
Обратите внимание, что такого рода уловки часто ищут спам-фильтры, и они, конечно же, не сделают вас постоянными друзьями. Кроме того, это работает не для всех почтовых клиентов (только для самых распространенных).
Да, это можно сделать вручную, установив заголовки 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);
}