PostfixcomSPF

Postfix com SPF

Introdução

Este página descreve funcionamento do serviço SPF. Tencologia em uso crescente, usada no auxílio do combate ao SPAM. Descreve também o passo a passo para reconstrução do pacote Debian do Postfix recompilado com o patch para verificação de SPF.

O que é

O SPF (ou Sender Policy Framework) é uma extensão do SMTP que facilita a identificação de spam com endereço de origem forjado. A descrição técnica é simples: cada domínio interessado em combater e-mails forjados acrescenta uma linha de texto padronizada à configuração do seu próprio DNS. Esta linha segue o padrão definido pelo SPF, e descreve quais os endereços dos servidores de e-mail autorizados a gerar mensagens daquele domínio.

Funcionamento

Basicamente o provedor DONO do domínio, coloca uma linha no seu DNS informando “quais servidores SMTP têm permissão para enviar mensagens com aquele domínio” e ainda define um comportamento para o receptor quando o mesmo recebe mensagens daquele domínio que NÃO VENHAM daqueles endereços IP especificados no DNS. Os comportamentos podem ser:

FAIL (-all) - O receptor deverá RECUSAR a mensagem se ela não vier do range de IPs declarados no DNS;

SOFTFAIL (~all/?all) - O receptor deve decidir o que fazer, mas o provedor dono do domínio “acha” que o receptor deveria bloquear (também é uma forma de dizer que em breve o provedor dono do domínio trocará para FAIL);

NONE - (+all) O provedor dono do domínio diz que “é problema e decisão do receptor”.

Exemplo:

~$ host -t txt terra.com.br 
terra.com.br descriptive text "v=spf1 mx ip4:200.176.10.0/23 ip4:200.176.2.0/23 -all" 

Esta linha no DNS explica que todos os e-mails “@terra.com.br” só podem ser enviados a partir de:

a) MX’s listados nos DNS’s;

b) Da rede 200.176.10.0/23 e 200.176.2.0/23;

c) Usa FAIL como default.

O atributo “-all” (FAIL) diz que e-mail “@terra.com.br” devem ser recusados quando não vierem desta origem.

Ou seja, um e-mail enviado a partir de um servidor pessoal com FROM teste@terra.com.br será RECUSADO em provedores com SPF habilitado. Isso causa um problema com remailers, servidores de lista e usuários TERRA acostumados a usar os e-mails @terra.com.br a partir de seus provedores ou redes corporativas. Porém evita disseminação de vírus, de SPAM e dá credibilidade ao e-mail terra.com.br.

Outros provedores que usam “-all” (BLOQUEIO) são o UOL e o BOL:

~$ host -t txt uol.com.br 
uol.com.br descriptive text "v=spf1 ip4:200.221.11.0/24 ip4:200.221.29.0/24 ip4:200.221.4.0/24 -all"
~$ host -t txt bol.com.br
bol.com.br descriptive text "v=spf1 ip4:200.221.11.0/24 ip4:200.221.29.0/24 ip4:200.221.4.0/24 ip4:200.221.24.0/24 -all" 

Na prática

Bom, agora que já sabemos o que é e como funciona o SPF, vamos meter a mão na massa.

A distribuição escolhida foi o Debian Etch, não entraremos no mérito sobre os critérios escolhidos para definir a distro.

Pacotes necessários:

build-essential dpkg-dev fakeroot dpatch lsb-release libdb4.3-dev libgdbm-dev libldap2-dev libdb4.4-dev libssl-dev libsasl2-dev libpq-dev libcdb-dev libmysqlclient15-dev libspf2-2 libspf2-dev

Editar o source /etc/apt/source.lists:

deb  stable main contrib
deb  stable/updates main contrib
deb-src  stable main contrib 

Instalar pacotes:

~# apt-get install build-essential libdb4.4-dev libspf2-2 libspf2-dev
~# apt-get install dpkg-dev fakeroot dpatch lsb-release libgdbm-dev libldap2-dev libssl-dev libsasl2-dev libpq-dev libcdb-dev libmysqlclient15-dev 

Instalar o source do postfix:

~# mkdir postfix-src
~# cd postfix-src
~/postfix-src# apt-get source postfix 

Baixe e aplique o patch do spf:

~/postfix-src# wget 
~/postfix-src# cd postfix-2.3.8
~/postfix-src/postfix-2.3.8# patch -p1 < ../postfix-2.3.2_libspf2-1.2.x-20060819.patch 

Criando e instalando pacote:

~/postfix-src/postfix-2.3.8# make tidy  

Edite rules:

~/postfix-src/postfix-2.3.8# vim debian/rules  

Na linha CCARGS adicione o parâmetro: -DHAVE_NS_TYPE Em AUXLIBS adicione o parâmetro: -lspf2

Deve ficar algo assim:

CCARGS=-DDEBIAN -DMAX_DYNAMIC_MAPS -DHAS_PCRE -DHAS_LDAP \
        -DHAVE_NS_TYPE \ -DHAS_CDB \
        -DHAS_MYSQL -I/usr/include/mysql \
        -DHAS_PGSQL -Ipg_config --includedir \
        -DHAS_SSL -I/usr/include/openssl \
        -DUSE_SASL_AUTH -I/usr/include/sasl \
        -DUSE_CYRUS_SASL \
        -DUSE_TLS
AUXLIBS =-lssl -lcrypto -lsasl2 -lspf2 

Recrie o pacote e instale:

~/postfix-src/postfix-2.3.8# dpkg-buildpackage
~/postfix-src/postfix-2.3.8# cd .. 
~/postfix-src# dpkg -i postfix_2.3.8-2_i386.deb 

Teste o recurso de SPF:

~/postfix-src# postconf | grep spf
spf_explanation = spf_global_whitelist = yes
spf_local_policy =
spf_mark_only = no
spf_received_header = yes
spf_reject_code = 550
spf_reject_dsn = 5.7.1 

Configure o Postfix para rejeitar mensagens forjadas:

smtpd_recipient_restrictions =
        reject_non_fqdn_sender,
        ...
        reject_spf_invalid_sender,
        ...

Pronto, agora o seu Postfix já possui checagem de SPF embutida no código e você pode distribuir o pacote para outros servidores.

Junix/PostfixcomSPF (last edited 2011-09-19 23:20:46 by localhost)