Ícone do site Mailtrap

O que é Autenticação SMTP e Por Que Não Pode Ignorá-la

Como você se sentiria se qualquer pessoa pudesse enviar emails do seu servidor de email? Um sinal verde para spammers – de jeito nenhum! É por isso que o Google e outros provedores de serviços de email protegem seus servidores contra uso não autorizado. Os remetentes precisam se autenticar e provar que possuem uma conta válida. Se não o fizerem, o servidor rejeitará sua solicitação. Tudo isso é possível com a autenticação SMTP, também conhecida como SMTP AUTH.

Por que você não deve usar servidores SMTP sem autenticação

Vamos supor que sua empresa fornece um endereço de email para seus funcionários. No entanto, não há necessidade de autenticação para se conectar ao servidor de email. Portanto, eles não precisam inserir um nome de usuário e senha para enviar um email. Que riscos isso pode envolver?

Anonimato é a primeira coisa a considerar. Todos que usam o servidor de email permanecem anônimos, pois não precisam fazer login com quaisquer credenciais. Isso não é um grande problema. Mas você realmente precisa desse tipo de anonimato?

Falsificação de email é algo com o que você definitivamente deve se preocupar. Sem autenticação SMTP, é possível falsificar o remetente. No melhor dos casos, alguém usará seu servidor de email para enviar emails de vendas não autorizados. No pior dos casos, o falsificador pode solicitar informações pessoais do destinatário e usá-las para roubo de identidade (phishing).

Então, como você protege o servidor contra falsificação? Anteriormente, escrevemos sobre autenticação de email via SPF, DKIM e DMARC. Hoje, vamos falar sobre os mecanismos de autenticação para o servidor.

O que é SMTP AUTH e como funciona?

A autenticação SMTP, ou simplesmente SMTP AUTH, é a extensão do serviço ESMTP. Ela exige que um remetente de email (cliente) tenha permissão para usar o servidor de email. Portanto, apenas usuários autorizados podem enviar mensagens de saída.

A autenticação é realizada de acordo com o mecanismo SASL. Como regra, os servidores usam os três mecanismos mais comuns: PLAIN, LOGIN e CRAM-MD5. Existem também outras opções sobre as quais falaremos mais tarde. Agora, vamos ver a autenticação em ação.

Após o handshake SMTP, o cliente envia o comando EHLO para o servidor. A resposta é o código 250. Normalmente, ele vem acompanhado de informações adicionais, incluindo mecanismos SASL suportados. Aqui está como a sessão SMTP se parece:

S: 220 smtp.mailtrap.io SMTP ready
C: EHLO client.railsware.com
S: 250-smtp.mailtrap.io Oi client.railsware.com
S: 250 AUTH LOGIN PLAIN CRAM-MD5

Como exemplo, usaremos o Email Sandbox do Mailtrap, pois ele responde positivamente à maioria dos comandos dos clientes e não precisaremos nos preocupar com problemas de configuração. Além disso, nosso Email Sandbox impede que emails de teste cheguem aos destinatários e os spammem.

Vamos tentar autenticar via o mecanismo SASL LOGIN. Para isso, o cliente envia o comando AUTH LOGIN. O servidor responde com um código 334 e solicita um nome de usuário. Assim que o cliente o fornece, o servidor segue com a solicitação de senha. Eventualmente, o servidor responde com 235 - Authentication successful.

S: 250 AUTH LOGIN PLAIN CRAM-MD5
C: AUTH LOGIN
S: 334 DYT3jf4sdDR5
C: TXktVXNlcm5hbWU=
S: 334 LIRdf2pekwW3
C: TXktUGFzc3dvcmQ=
S: 235 Authentication successful

DYT3jf4sdDR5 e LIRdf2pekwW3 pelo servidor são os textos codificados em BASE64 para “Username” e “Password”, respectivamente. TXktVXNlcm5hbWU= e TXktUGFzc3dvcmQ= são as respostas do cliente que também são codificadas em BASE64.

ESMTP substituiu POP-before-SMTP

Hoje em dia, todos os servidores de email usam autenticação ESMTP via mecanismos SASL. Esse tipo de SMTP AUTH substituiu a autenticação POP-before-SMTP obsoleta. Esta última, no entanto, ainda pode ser encontrada em alguns servidores antigos. A ideia é autenticar o usuário no serviço POP3 do mesmo servidor e depois conectá-lo de volta ao SMTP. Se você precisar saber como o POP3 difere do SMTP, confira nosso post dedicado no blog IMAP vs. POP3 vs. SMTP.

Esse método de autenticação não é muito seguro. Diferentes clientes podem compartilhar o mesmo endereço IP e autenticar-se como um único usuário. Além disso, o servidor executa os serviços POP3 e SMTP no mesmo sistema. A autenticação ESMTP tem vantagem, pois implementa mecanismos SASL.

Mecanismos de autenticação SASL

Os mecanismos de autenticação SMTP permitem que o servidor verifique se o cliente SMTP está autorizado. Eles diferem no nível de segurança. Como regra, o servidor lista quais mecanismos SASL ele suporta como resposta ao comando EHLO. A maioria dos servidores suporta as seguintes opções:

S: 250 AUTH LOGIN PLAIN CRAM-MD5
C: AUTH PLAIN
S: 334
C: vHRjyADROPsdSDIROu=
S: 235 Authentication successful

Alternativamente, o cliente pode enviar as credenciais junto com o comando AUTH PLAIN em uma única linha:

S: 250 AUTH LOGIN PLAIN CRAM-MD5
C: AUTH PLAIN vHRjyADROPsdSDIROu=
S: 235 Authentication successful
S: 250 AUTH LOGIN PLAIN CRAM-MD5
C: AUTH LOGIN
S: 334 DYT3jf4sdDR5
C: TXktVXNlcm5hbWU=
S: 334 LIRdf2pekwW3
C: TXktUGFzc3dvcmQ=
S: 235 Authentication successful
S: 250 AUTH LOGIN PLAIN CRAM-MD5
C: AUTH CRAM-MD5
S: 334 HSU43fnkj47dskmlSH6dsnjn8ndskjnkjnScdDES=
C: adIBUhb7nsddnKsddsfUN8HkjJNJNsdfJIb4LJNKJ=
S: 235 Authentication successful

O CRAM-MD5 oferece um nível de segurança mais alto em comparação com os mecanismos de autenticação de texto simples, PLAIN e LOGIN. O protocolo usa o princípio de desafio-resposta. O servidor envia uma string de desafio. O cliente decodifica o desafio do servidor e responde com um cálculo HMAC (Código de Autenticação de Mensagem com Hash) usando a senha como chave secreta. Depois disso, o desafio com hash é convertido em uma string de dígitos hexadecimais minúsculos. Além disso, o cliente adiciona o nome de usuário e um caractere de espaço à string. O servidor recebe essa concatenação codificada em BASE64.

Os spoofers não podem:

Agora, vamos descobrir outros mecanismos SASL que podem ser usados em servidores SMTP:

S: 250-AUTH LOGIN PLAIN XOAUTH XOAUTH2
C: AUTH XOAUTH2 dXNlcj1zb21ldXNlckBleGFtcGxlLmNvbQFhdXRoPUJlY
XJlciB5YTI5LnZGOWRmdDRxbVNSbGNrQJoZG1semRHRXVZMjl0Q2cBAQ==
S: 235 Accepted
S: 250-AUTH GSSAPI NTLM
C: AUTH NTLM
S: 334 ntlm supported
C: TlRMTVNTUAABAAAAt4II4gAAAAAAAAAAAAAAAAAAAAAFAs4OAAAADw==
S:334 lRMTVNTUAACAAAAFgAWADgAAAA1goriZt7rI6Uq/ccAAAAAAAAAAGwAbABOAAAABQLODgAAAA9FAFgAQwBIAC0AQwBMAEkALQA2ADYAAgAWAEUAWABDAEgALQBDAEwASQAtADYANgABABYARQBYAEMASAAtAEMATABJAC0ANgA2AAQAFgBlAHgAYwBoAC0AYwBsAGkALQA2ADYAAwAWAGUAeABjAGgALQBjAGwAaQAtADYANgAAAAAA
C:TlRMTVNTUAADAAAAGAAYAHwAAAAYABgAlAAAABYAFgBIAAAACAAIAF4AAAAWABYAZgAAABAAEACsAAAANYKI4gUCzg4AAAAPZQB4AGMAaAAtAGMAbABpAC0ANgA2AHQAZQBzAHQARQBYAEMASAAtAEMATABJAC0ANgA2AAZKkK42dvN2AAAAAAAAAAAAAAAAAAAAABvqCZdJZ0NxuuMaNT5PPn5aZ6imuk9cPZkPUjEYNIRezkCGmTwS5G0=
S: 235 Authentication successful

Aqui está um exemplo:

S: 250-AUTH GSSAPI PLAIN
C: AUTH GSSAPI
S: 334
C: YIICEQYJKoZIhvcSAQICAQBuggIAMIIB/KADAgEFoQMCAQ6iBwMFACAAAACjggETYYIBDzCCAQugAwIBBaENGwtOQURBLktUSC5TRaIjMCGgAwIBAaEaMBgbBHNtdHAbEHNtdHAubmFkYS5rdGguc2Wjgc8wgcygAwIBEKEDAgEJooG/BIG8msq2xygko4Lv0Agu5pW6SEundUbFK5swuopukvx9kTidWULb/Ab490wQbtnKx3lmM3BFvNFvuUyD3zvh9PHggwz7T7eZYSCDaovIL/QZ0ismF3lZejZBSwBhgLDADQuk4nZHbbeoU9Lk+1jzsMJguNh6Ot3G6o8WLqFZoe8pi3NuxzSdjutjg3O9s/fasuSB9T85bq6oIMWGr5HHRNBNUF4x11tK3ytpsVoMNpKng3d4bY8tLgnxxLCmREakgc8wgcygAwIBEKEDAgEBooG/BIG8SPCDQwKGzJfZGg+MgqQquBiGBXA2uy/08gPE19vuTBP7XyL2H4EaVqtl71MeVxExbat/CNAK
3dMXkNqR6VHxZqb+ky8MYMDo452Z1sN6BfIsKcsy2BcYTwFJMtgdn21vTWVHtMPH3wtXPuPFGn3jigjsXiAyytXi1Y4p4Tni+ox5ndlZuqBJGeThVxyZIpCEI+5rWflxDIYVa/8CAcRUPQqoDpQIs5zkwfoPQtTdfRLdph5VxQ79N9PnvnQ=
S: 334 YGwGCSqGSIb3EgECAgIAb10wW6ADAgEFoQMCAQ+iTzBNoAMCARCiRgRE2FBXYUbT0MVIicgLYE/FKy6CcrvfQxZaoxyt05qqxJBL13kqneza/TKe5i0mjsN0Nc90KW/l4rL0eQ76vWMenaE1Lw8=
S: 334
YD8GCSqGSIb3EgECAgIBBAD/////IGqNk7Rz3+kPdzT9oYPRWnQi/ESL0p3EeQ2yNLWArrmdOzxpBwAgAAQEBAQ=
C: Using system username `jas' as authentication identity.
YD8GCSqGSIb3EgECAgIBBAD/////JhNtx+GhzYe54NY92BltbUHD6i02upmatfXUnIGrBR5vT5yuAQAgAGphcwE=
235 OK Authenticated

A conexão SSL é necessária para mecanismos de texto simples. Credenciais não criptografadas podem ser enviadas sem problemas. Todos os mecanismos SASL não baseados em texto simples não requerem criptografia SSL/TLS.

Portas de escuta SMTP AUTH

Código 535 – Falha de autenticação e outros erros SMTP AUTH

O servidor SMTP pode responder tanto positivamente quanto negativamente ao comando AUTH. Códigos de resposta positiva são:

A resposta negativa mais frequente é 535 - Authentication failed. É provável que você consiga corrigir esse erro se souber o que o causou.

Além de 535, você pode encontrar outros erros com o comando AUTH:

O código 550 indica que seu servidor de email requer autenticação SMTP. É principalmente uma resposta à tentativa de enviar uma mensagem. Para mais informações sobre comandos e respostas SMTP, leia nosso post dedicado no blog.

Como testar a autenticação SMTP

Algum tempo atrás, escrevemos sobre testar o servidor SMTP com uma sessão Telnet manual. Agora, vamos usar o cliente Telnet para testar a autenticação SMTP em seu servidor de email.

A autenticação SMTP é o que você pode usar para proteger seu servidor de email contra falsificação e phishing. Ao mesmo tempo, existem muitas outras ameaças, como malware, ataques DoS e assim por diante. Leia nosso post no blog para aprender como tornar o SMTP seguro e se proteger contra todas as possíveis vulnerabilidades.

Sair da versão mobile