quarta-feira, 26 de agosto de 2009

Como implementar SPF em um servidor Postfix

A maioria das mensagens abusivas de emails têm falsos remetentes. Neste momento alguém pode estar forjando um email de sua empresa para enviar mensagens abusivas a terceiros. Mas há uma forma de se protejer desses abusos utilizando o SPF.

O SPF é a sigla de Sender Policy Framework que define o conjunto de regras para prevenir a falsificação do endereço do remetente.

O SPF funciona da seguinte forma:

Inicialmente o administrador do domínio deve publicar em seu DNS as informações pertinentes a sua política de envio de email, que nada mais é do que informar aos demais servidores de correio com suporte a SPF quais são os endereços que podem enviar mensagens cuja a origem seja o seu domínio.

Para publicar as informações referentes a sua política de envio de email você deve ter um servidor de DNS funcionando. Se você ainda não possui um servidor de DNS existem inúmeros tutoriais disponíveis na internet para este fim.

Seguem alguns exemplos de publicação de SPF que deve estar em seu arquivo de zona de DNS.

EX01.

IN TXT "v=spf1 ip4:200.200.200.200/32 -all"

Onde:

v=spf Significa a versão (Sendo a SPFv1 a mais atual)
ip4:200.200.200.200/32 Significa que o ip 200.200.200.200 pode enviar emails por esse domínio.
-all Significa que os demais endereços não podem enviar email por esse domínio.

EX02.

IN TXT "v=spf1 mx -all"

v=spf Significa a versão do SPF
mx Significa que todos os registros MX publicados no DNS do domínio podem enviar email por esse domínio.
-all Significa que os demais endereços não podem enviar email por esse domínio.

Para uma sintaxe completa da publicação da política de email acesse:

http://www.openspf.org/SPF_Record_Syntax

Você pode ainda verificar como os demais servidores estão publicando suas políticas de envio de email, lembrando que nem todos os servidores utilizam SPF, mas com o número crescente de emails falsos o SPF vem se tornando padrão em todas as empresas que querem garantir a autenticidade de seus emails. Você pode consultar as políticas de email conforme os comandos abaixo:

host -C (Domínio a ser verificado)

EX.

alexandre@destroyer:~$ host -C terra.com.br
Nameserver ns2.terra.com.br:
terra.com.br has SOA record dns.terra.com.br. sysadm.terra.com.br. 2009082706 7200 7200 2419200 7200
Nameserver ns1.terra.com.br:
terra.com.br has SOA record dns.terra.com.br. sysadm.terra.com.br. 2009082706 7200 7200 2419200 7200

O comando informa quais são os servidores de DNS SOA para o domínio informado. Para consultar as entradas de SPF do domínio entre com o comando abaixo:

dig @(Servidor do domínio) (Domínio a ser verificado) (Tipo da Consulta)

EX.

alexandre@destroyer:~$ dig @ns1.terra.com.br terra.com.br TXT

; <<>> DiG 9.5.1-P2 <<>> @ns1.terra.com.br terra.com.br TXT
; (1 server found)
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37087
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;terra.com.br. IN TXT

;; ANSWER SECTION:
terra.com.br. 7200 IN TXT "v=spf1 ip4:200.176.10.0/23 ip4:200.176.2.0/23 ip4:200.154.152.0/24 ip4:208.84.242.0/23 include:tmp-spf.terra.com.br include:ti-spf.terra.com.br include:te-spf.terra.com.br -all"

;; AUTHORITY SECTION:
terra.com.br. 7200 IN NS ns1.terra.com.br.
terra.com.br. 7200 IN NS ns2.terra.com.br.

;; ADDITIONAL SECTION:
ns1.terra.com.br. 7200 IN A 200.176.2.172
ns2.terra.com.br. 7200 IN A 200.176.2.173

;; Query time: 129 msec
;; SERVER: 200.176.2.172#53(200.176.2.172)
;; WHEN: Fri Aug 28 09:37:41 2009
;; MSG SIZE rcvd: 287


A parte em negrito da resposta ao comando informa a configuração de SPF do servidor em questão. Adapte esta consulta para analisar as configurações de outros domínios.

Com esse passo concluído os demais servidores podem verificar a sua política de email e verificar a autenticidade dos emails recebidos de seu domínio. Resta agora configurar nosso servidor para verificar as políticas de email dos demais servidores.

Existem alguns patches e extensões disponíveis para o Postfix que exigem que o postfix seja recompilado, neste artigo utilizaremos o postfix-policyd-spf-perl que pode ser encontrado em http://www.openspf.org/Software ou no repositório padrão dos servidores Ubuntu.
Este aplicativo trata-se de um pacote perl que pode ser implementado em instalações já existentes de postfix.

A instalação foi realizada em um servidor Ubuntu 8.10.

Inicialmente instale o pacote
postfix-policyd-spf-perl e suas dependências conforme a baixo:

apt-get install
postfix-policyd-spf-perl


Após a instalação edite o arquivo /etc/postfix/masters.cf e adicione a linha abaixo:

[...]
policy unix - n n - - spawn
user=nobody argv=/usr/bin/perl /usr/sbin/policyd-spf-perl

O próximo passo é editar o arquivo /etc/postfix/main.cf no parâmetro smtpd_recipient_restrictions conforme abaixo:

[...]
smtpd_recipient_restrictions =
[...]
reject_unauth_destination
check_policy_service unix:private/policy
[...]
[...]


IMPORTANTE:

Você deve especificar reject_unauth_destination sempre antes de check_policy_service ou seu servidor de correio pode se tornar um Open Relay.

Para maiores informações sobre os parâmetros de configuração do Postfix acesse http://www.postfix.org/postconf.5.html

Feito isso reinicie seu servidor Postfix

/etc/init.d/postfix restart

Pronto... seu servidor já está configurado para verificar os registros SPF de outros servidores, confira no seu arquivo de log do postfix para verificar o funcionamento do SPF. Os logs são bem diretos e você não precisará de muito tempo para entender as entradas no arquivo de log.Para entender o funcionamento do SPF confira a documentação instalada.

Para maiores informações consultem os links abaixo que serviram de base para este artigo.

http://www.openspf.org/
http://www.postfix.org/postconf.5.html
http://www.howtoforge.com/postfix_spf

2 comentários:

  1. Fala Dr.!

    Parabéns pelo Blog! Mais uma fonte de consultas para a comunidade Linux!

    Abração!

    ResponderExcluir
  2. Grande Agostinho,
    Vindo de vc que contribui com a comunidade sempre com excelentes artigos é um grande elogio.

    Abraço.

    ResponderExcluir