campo "de" falso em um email

9

Como posso manipular o campo "de" em um email e fazer com que o usuário "to" veja algo diferente do real.

Exemplo:

realmente de

From: [email protected]

mas eles veem

From: Tremayne "Top Dog" Stamper

Ouvi dizer que manipulava o SMTP, mas realmente não tenho certeza do quão preciso é ou como isso pode ser feito

TStamper
fonte
2
Eu vejo isso como um problema válido. Fazemos isso o tempo todo (principalmente fazer com que um e-mail de um software pareça estar enviando para um usuário).
729 Ross C.
Concordo que pode ser um problema válido se você deseja alterar o campo De para exibir algo como um nome real em vez de um endereço. Também fazemos isso o tempo todo em nossos sistemas. É apenas um pouco de sinalizador por causa do exemplo da pergunta, mudando de um endereço para outro. Isca de spam.
217 squillman
atualizado com melhor exemplo
TStamper
É por isso que eles criaram registos SPF
Elijah Glover

Respostas:

14

Na sua base, o SMTP é apenas um protocolo baseado em texto sem verificação real. Aqui está um exemplo:

=== 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:<[email protected]>
<-  250 OK
 -> RCPT TO:<[email protected]>
<-  250 Accepted
 -> DATA
<-  354 Enter message, ending with "." on a line by itself
 -> Date: Thu, 07 May 2009 11:03:21 -0400
 -> To: [email protected]
 -> From: [email protected]
 -> 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.

A linha "MAIL FROM:" define o remetente do envelope SMTP e o De: é definido na mensagem DATA. Existem maneiras de se proteger contra isso, mas elas são definidas na lógica do servidor de correio, não no próprio protocolo.

Por exemplo, eu, como provedor de correio, pode exigir que um usuário se autentique usando um nome de usuário user @ domain. Então, meu servidor de e-mail pode exigir que qualquer e-mail enviado tenha um remetente de envelope e um cabeçalho De: que corresponda ao usuário como autenticado. Tecnologias adicionais como DKIM e SPF também podem ajudar nessa área.

jj33
fonte
8

Há algumas coisas diferentes a considerar aqui. Se você deseja exibir apenas um nome ou endereço de email diferente, defina o cabeçalho "De" da mensagem (a mensagem do endereço) como o endereço de email com o nome de exibição entre colchetes, como tal:

De: Joe Exemplo <[email protected]>

Lembre-se de que a linha "de" no cabeçalho da mensagem é usada apenas para fins de exibição. O roteamento real é feito pelo endereço do envelope SMTP. É isso que os servidores SMTP realmente usam para transmitir a mensagem entre os servidores. Isso pode ser diferente do cabeçalho da mensagem "de". Se você possui um mecanismo SMTP personalizado, basta usar um endereço no envelope SMTP e outro no cabeçalho "de" na mensagem real.

Há várias razões legítimas para você querer fazer isso, mas evite fins nefastos.

Observe que um exemplo de sintaxe correto pode ser encontrado na RFC 5322 - A.2.1

Justin Scott
fonte
1
O exemplo de suporte é errado, é para trás
jj33
Fixo; já faz um tempo desde que eu implementei esse tipo de coisa.
7263 Justin Scott
Atualizei-o novamente agora para coincidir com o RFC 822
Mike Graf
1
O @MikeGraf 822 foi substituído pelo menos duas vezes, 5322 é melhor.
Patrick Mevzek
2
telnet some_smtp_server.com 25
ehlo whatsup
mail from: [email protected]
rcpt to: [email protected]
data
your message here
end with a dot on a single line like this:
.

É claro que você precisará de um servidor SMTP que permita a retransmissão, o que é quase impossível de encontrar ... ou faça o seu próprio (apenas não use esse conhecimento para enviar spam!).

Ivan
fonte
2

O endereço "realmente de" vem da caixa de diálogo "de:" na conversa SMTP.

O "falso de" vem da exploração da prática comum em clientes de email de exibir os vários campos de cabeçalho, conforme disposto na parte Dados da conversa SMTP. Por exemplo:

# 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: [email protected]
250 2.1.0 OK
rcpt to: [email protected]
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
from: [email protected]
to: [email protected]
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.
#

Se você tivesse deixado de fora as linhas "de:" e "para:" na parte Dados, ele exibirá o remetente e o destinatário reais do envelope.

Observe que esse tipo de truque geralmente é procurado por filtros de spam e certamente não fará de você um amigo permanente. Além disso, isso não funciona em todos os clientes de email (apenas os mais comuns).

sh-beta
fonte
1

Sim, é configurando manualmente os cabeçalhos SMTP e é fácil de realizar. Google it. Mas não seja pego enviando spam ......

squillman
fonte
0

Este é o meu 2c direto do código - escrito em 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("[email protected]", "realpassword");
        client.Credentials = c;
        client.Send(myMessage);
    }
Dani
fonte