Luta contra SPAM 2

Na verdade este deveria ter sido o post 1, mas tudo bem, antes tarde do que nunca…


Antes de podermos falar de registros SPF é importante entendermos o funcionamento de um e-mail. O que ocorre para que a mensagem saia do ponto A e chegue até o ponto B.


Toda a forma de comunicação entre computadores é feita através do uso de portas, por isso que elas são chamadas de portas de comunicação (capaz? :D). Bem, no caso do e-mail estamos falando da porta 25, que é a porta do SMTP (Simple Mail Transfer Protocol).


Quando enviamos uma mensagem o nosso servidor de e-mail identifica para quem é a mensagem. Ele faz isso lendo o que há após o arroba (@) no endereço de e-mail do destinatário, por isso que se lê um e-mail da seguinte forma: carlos em seudominio.com.br, quando ele é expresso da seguinte forma carlos@seudominio.com.br. Ou seja, o @ significa “em”, o local (servidor) onde este e-mail existe. Identificado o domínio destinatário, nosso servidor de e-mail faz uma busca no DNS para descobrir o endereço deste servidor (por isso que incluímos os registros SPF no DNS, pois desta forma, na primeira verificação eles já são analisados).


Identificado o servidor de destino é estabelecida uma conexão pela porta 25 e são enviados os comandos para o servidor remoto. Estes mesmos comandos enviados pelo nosso servidor de e-mail podem ser enviados por nós mesmos, diretamente para este servidor, caso desejemos. Daí a facilidade para se criar softwares para envio de e-mails (muitos deles utilizados para SPAM).


Mas quais comandos são estes? Vou explicar os principais abaixo, que são os seguintes: HELO, MAIL FROM, RCPT TO, DATA e QUIT.


HELO ou EHLO: O padrão é o primeiro, mas de acordo com o servidor que estiver do outro lado, será aceito o segundo, por isso posto os dois. Este comando serve para identificar a máquina que este tentando se conectar, ou seja, a máquina que terá seu IP verificado contra o registro SPF se este estiver criado. A resposta do servidor remoto será algo do tipo “Hello [200.101.10.26]” sendo o seu IP dentro dos colchetes . Isto equivale ao diálogo “Olá”, com a resposta “Olá, falano de tal”, que é a saudação enviada pela nossa máquina à máquina remota e a sua resposta. Você pode neste comando já se identificar, o que seria algo como “HELO seudominio.com.br”, mas normalmente receberá a mesma resposta e é neste momento que pode ser “mentida” a identificação do remetente. Claro que esta identificação será checada com o registro de DNS do domínio que informei, entrando em ação, novamente, nosso SPF.


MAIL FROM: Este é realmente o comando que iniciará o processamento da mensagem. Ele equivale a dizer “Tenho uma mensagem de falano de tal a ser entregue”. Muitos aqui podem perguntar, por que devo me identificar denovo, se já fiz isto no passo anterior? Porque no passo anterior identificamos o servidor que está se conectando e aqui vamos identificar o remetente da mensagem, que podem pertencer a domínio diferentes (imaginem o caso de empresas que gerenciam as mensagens de mais de um domínio em seus servidores). O endereço especificado se tornará o “envelope” FROM ou SENDER, conforme configurado e não precisa ser o mesmo informado no passo do HELO, conforme explicado anteriormente. Este aparente furo de segurança é inevitável, pois o servidor recipiente não tem como saber antecipadamente quais servidores gerenciam mensagens para quais domínios, o que é verificado posteriormente.


RCPT TO: Representa o outro lado do MAIL FROM, indicando quem será o recipiente da mensagem. Quando se deseja enviar a mesma mensagem para múltiplos recipientes basta inserir múltiplos comandos RCPT TO. O endereço indicado aqui se tornará o “envelope” TO ou RECIPIENT, conforme configurado e caso a conta não exista no servidor remoto, esta mensagem será encaminhada para a conta CATCH ALL (pega tudo) do domínio ou rejeita, de acordo com a configuração do servidor recipiente. Este campo realmente indica quem receberá a mensagem, independentemente do que constar do campo TO do e-mail, por isso que mensagens com cópias ocultas são entregues a todos destinatários, mesmo os que não constam do campo TO. Todos campos de nosso e-mail (TO, CC, BCC ou PARA, CC, CCO) transformam-se em “envelopes” TO ou RECIPIENT uma vez entregues ao servidor remoto.


DATA: Este comando inicia o envio da mensagem em si, do campo BODY ou CORPO do e-mail. Tudo o que for informado após o comando DATA será considerado como sendo parte da mensagem e não há restrições para o conteúdo deste campo. Linhas que iniciem por uma simples palavras, seguidas de uma vírgula serão interpretadas como cabeçalhos do e-mail, pela maioria dos servidores. Uma linha composta apenas por um ponto será considerada o final da mensagem.


QUIT: Encerra a conexão.


Para testar isto manualmente emita o seguinte comando no seu prompt: TELNET servidor_remoto 25


Onde TELNET identifica que você deseja se conectar com “teclado remoto”, servidor_remoto é o endereço da máquina remota e 25 é a porta de comunicação a ser utilizada, neste caso a SMTP.


Abaixo coloco um exemplo disto, usando o prompt de comando (muito útil para testes de servidores de e-mail :D) para facilitar o entendimento:


TELNET mailhost.aqueledominio.com 25
220 mailhost.aqueledominio.com ESMTP Sendmail 8.8.5/1.4/8.7.2/1.13; Tue, Sep 15 2007 14:38:58 -0800 (PST)
HELO mail.meudominio.com
250 mailhost.aqueledominio.com Hello mail.meudominio.com [202.17.130.28], pleased to meet you
MAIL FROM: eu@meudominio.com
250 eu@meudominio.com… Sender ok
RCPT TO: eu@aqueledominio.com
250 eu@aqueledominio.com… Recipient ok
DATA
354 Enter mail, end with “.” on a line by itself
Received: from servidor.meudominio.com (servidor.meudominio.com [204.81.17.25]) by mail.meudominio.com (8.8.5) id 004A21; Sat, Ago 18 2007 14:36:17 -0800 (PST)
From: José Silva <jsilva@meudominio.com>
To: eu@aqueledominio.com
Date: Tue, Sep 15 2007 14:36:14 PST
Message-Id: <show-484@mail.meudominio.com>
Subject: Como vai?

Então, isto é muito legal, estou enviando uma mensagem de e-mail.

– eu
.
250 FAA214578 Message accepted for delivery
QUIT
221 mailhost.aqueledominio.com closing connection


——-


Bem amigos, a proposta era esta, sei que não chega nem perto de um curso de envio de e-mails, mas creio que sirva para passar uma idéia do seu funcionamento. Espero que divirtam-se com estes testes, mas por favor, não usem para fins ilícitos (ainda que a maioria dos servidores esteja preparado para evitar isto).

Leave a Reply

Your email address will not be published. Required fields are marked *


*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>