Como criar habilitar Domain Keys Identified Mail (DKIM)

Domain Keys Identified Mail (DKIM)

A dor de cabeça

Sabe aquela dor de cabeça dos e-mails caírem na caixa de Spam? Isso acontece porque os provedores de e-mails como o Gmail, Outlook e Yahoo já estão saturados de Spammers, cada um deles implementa sua própria verificação, mas no geral o que sabemos é que nosso servidor, e claro nosso IP possui uma qualificação, que pode ser boa ou ruim, mas essa qualificação só aumenta para melhor se seguirmos boas práticas de segurança, uma delas é a especificação do DKIM(Domain Keys Identified Mail).

E o que é DKIM?

Segundo o Google, DKIM serve "para evitar spoofing, você pode adicionar uma assinatura digital aos cabeçalhos das mensagens enviadas usando o padrão DKIM".

Spoofing: No contexto de redes de computadores, IP spoofing é um ataque que consiste em mascarar (spoof) pacotes IP utilizando endereços de remetentes falsificados.

Instalando o DKIM em um servidor Linux Ubuntu

Vamos precisar instalar alguns pacotes:

apt-get install opendkim opendkim-tools

Configurando o OpenDKIM

Feito a instalação, agora vamos editar o arquivo de configuração:

sudo vim /etc/opendkim.conf

Dentro do arquivo, adicione as linhas:

Domain                  example.com
KeyFile                 /etc/postfix/dkim.key
Selector                mail
SOCKET                  inet:8891@localhost

Agora abra o arquivo default do opendkim:

vim /etc/default/opendkim

E substitua o SOCKET padrão ou adicione se não tiver nenhum, usando a linha abaixo:

SOCKET="inet:8891@localhost"

Configurações do Postfix

Com o opendkim configurado, precisamos fazer o Postfix entender que estamos querendo usar dkim, portanto abra as configurações do Postfix:

sudo vim /etc/postfix/main.cf

Ao final do arquivo, adicione as linhas a seguir:

# DKIM
milter_default_action = accept
milter_protocol = 2
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891

Gerando a chave DKIM

Agora precisamos gerar o conjunto de chaves, escolha um diretório para armazenar os arquivos e rode o comando:

opendkim-genkey -t -s mail -d example.com

Foram gerados dois arquivos: o mail.private é a chave privada, e o mail.txt é a chave pública. Copie a chave privada para o postfix:

cp mail.private /etc/postfix/dkim.key

Configurando o DNS

Agora que temos o opendkim configurado e o postfix, e as chaves geradas, precisamos configurar um registro DNS do tipo TXT para alocar a chave pública.

Abre o arquivo mail.txt, o nome do seu registro será **mail._domainkey**, e o valor tudo que está entre parênteses.

Usando o Digital Ocean, é bem fácil criar um registro TXT:

DNS no Digital Ocean

Lembre-se que um registro DNS precisa de um tempo para se propagar pela internet.

Você pode testar seu registro usando o comando dig:

dig mail._domainkey.example.com TXT

Ele irá retornar algo como:

;; ANSWER SECTION:
mail._domainkey.exmaple.com. 86400 IN   TXT "v=DKIM1\;" "k=rsa\;" "t=y\;" "p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDYv84GSl0Xp2CrPdFqMZ9ShBDi9Pal9XpfIf7asEENxLRdIka3TONpqtrcCKksROJBNh2G3OVGuoGJ1watQGT46B+zQtjcCI67+WiTlb2D98s1UV3KO7oi/0QH/lH8DzUmrGJUIy3ZBQ9mIu1t6YDyi8y3hlhTILHW7G4HV/VtwQIDAQAB"

Fechando a configuração

Reinicie os serviços:

service opendkim start
service postfix restart

Em meus testes o DKIM não estava funcionando porque o servidor não entendia o localhost, logo precisei seguir uma dica:

Abra o arquivo /etc/hosts:

sudo vim /etc/hosts

Adicione localhost.localdomain ao endereço de loopback:

127.0.0.1 localhost.localdomain localhost

Pronto, para testar você pode enviar um e-mail para o site http://www.mail-tester.com ou direto para uma conta sua no Gmail por exemplo, se for o Gmail o caso, basta clicar em

Gmail, opção de mostrar original

Referências: