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 eo 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 um provedor de e-mail, posso exigir que um usuário se autentique usando um nome de usuário do tipo usuário @ domínio. Então, meu servidor de e-mail pode exigir que qualquer e-mail que eles enviem tenha um remetente de envelope e um cabeçalho De: que corresponda ao usuário que eles autenticaram. Outras tecnologias, como DKIM e SPF, também podem ajudar nessa área.