Linux: Como autenticar emails com DKIM e Postfix

Neste tutorial vamos mostrar como configurar um servidor Linux para enviar emails autenticados com assinatura DKIM pelo Postfix.

Em nosso tutorial “Debian Wheezy e ISPConfig 3” mostramos como instalar o Linux Debian e configurá-lo com o painel de controle ISPConfig 3 para gerenciar domínios, websites e servidor de emails. Porém alguns leitores relatam a falta de uma assinatura DKIM nos emails enviados através do servidor, que autentica a mensagem e ajudar a prevenir que seja enviada como SPAM.

O que significa DKIM?

DKIM é uma especificação do Internet Engineering Task Force (IETF) que define um mecanismo para autenticação de e-mail baseado em criptografia de chaves pública e privada. Através do uso do DKIM, uma organização assina digitalmente as mensagens que envia, permitindo ao receptor confirmar a autenticidade da mensagem. Para verificar a assinatura digital, a chave pública é obtida por meio de consulta ao DNS no domínio do assinante, certificando a origem da mensagem.

* Antes de instalar e configurar a chave DKIM verifique se a mesma já não está ativada. Veja como fazer isso lendo o passo 11 deste tutorial (role a tela até o final)

Instalando e configurando o OpenDKIM:

* Os comandos abaixo referem-se ao nosso servidor Debian 7.0 Wheezy, que <instalamos anteriormente>. Lembre-se de fazer login como “root” para executar os comandos de instalação e configuração. Editaremos os arquivos usando o WinSCP e Notepad++ conforme mostramos <neste tutorial>.

1.Faça login no terminal SSH do seu servidor como superusuário “root”.

2.Instale o OpenDKIM digitando o comando:

> apt-get install opendkim opendkim-tools

Do you want to continue? <– ENTER

3.Edite o arquivo /etc/opendkim.conf e adicione as seguintes linhas no final:

AutoRestart          Yes
AutoRestartRate      10/1h
UMask                002
Syslog               yes
SyslogSuccess        Yes
LogWhy               Yes

Canonicalization     relaxed/simple

ExternalIgnoreList   refile:/etc/opendkim/TrustedHosts
InternalHosts        refile:/etc/opendkim/TrustedHosts
KeyTable             refile:/etc/opendkim/KeyTable
SigningTable         refile:/etc/opendkim/SigningTable

Mode                 sv
PidFile              /var/run/opendkim/opendkim.pid
SignatureAlgorithm   rsa-sha256
UserID               opendkim:opendkim
Socket               inet:12301@localhost

*Para habilitar chaves DKIM em subdomínios descomente a linha 20 e altere para yes:

SubDomains yes

4.Edite o arquivo /etc/default/opendkim e adicione a seguinte linha:

SOCKET="inet:12301@localhost"

5.Vamos configurar também o Postfix para usar o filtro, edite o arquivo /etc/postfix/main.cf e adicione as 4 linhas abaixo (se as linhas já existirem no arquivo mas estiverem comentadas certifique-se de descomentá-las).

ATENÇÃO: Sempre que adicionar configurações novas no main.cf deixe uma linha em branco no final do arquivo (basta dar ENTER após a última linha). E por favor galera, obviamente que vocês devem instalar o ISPConfig com Servidor de Emails ANTES de configurar o DKIM (vejam os comentários abaixo).

Antes de adicionar os filtros “milter” verifique se existem estas duas linhas abaixo, se houverem, comente para desligá-las. O Postfix já autentica os emails usando a chave DKIM, com as 2 linhas abaixo ligadas o Amavis tentará inserir a chave também duplicando quando enviar o email:

# content_filter = amavis:[127.0.0.1]:10024 
# receive_override_options = no_address_mappings

Agora adicione estas 4 linhas no final:

milter_protocol = 2
milter_default_action = accept

smtpd_milters = inet:localhost:12301
non_smtpd_milters = inet:localhost:12301

NOTA: Na instalação do sistema o script ligou automaticamente o Clamav Anti-Virus no servidor. Se você optou por um VPS de baixo custo talvez queira desativá-lo juntamente com o Amavis liberando aproximadamente 300mb de RAM. Digite os comandos abaixo:

> /etc/init.d/postfix restart

> /etc/init.d/clamav-daemon stop; /etc/init.d/clamav-freshclam stop; /etc/init.d/amavis stop; update-rc.d -f clamav-daemon remove; update-rc.d -f clamav-freshclam remove; update-rc.d -f amavis remove

6.Criar os diretórios e os arquivos de configurações para o OpenDKIM operar, digite os comandos:

> mkdir -p /etc/opendkim/keys
> touch /etc/opendkim/TrustedHosts; touch /etc/opendkim/KeyTable; touch /etc/opendkim/SigningTable

7.Edite os arquivos criados para configurar as chaves DKIM. Substitua fatorbinario.com pelo seu nome de domínio. No caso de múltiplos domínios no mesmo servidor adicione linhas extras conforme mostrado abaixo (sempre lembrando de substituir o domínio em cada nova linha).

ATENÇÃO: Se você copiar/colar as configurações nos 3 arquivos abaixo certifique-se de fazer isso com um editor de textos padrão unix. Em alguns casos reportados a assinatura DKIM não era inserida na mensagem por causa do CR no final das linhas (Previna isso, após colar o texto, teclando DEL no final de cada linha e em seguida ENTER, isso irá refazer os CR)

A.Arquivo /etc/opendkim/TrustedHosts:

* Não altere os endereços IPs nas 3 primeiras linhas.

127.0.0.1
localhost
192.168.0.1/24

*.fatorbinario.com

#Para adicionar outros dominios descomente as proximas linhas e altere o dominio:
#*.exemplo1.net
#*.exemplo2.org

#Observacao: se quiser adicionar um subdominio use o seguinte exemplo. Util para habilitar o nome do VPS na tabela de assinaturas DKIM (note que nao ha necessidade do asterisco):
#vps1.fatorbinario.com

B.Arquivo /etc/opendkim/KeyTable:

* A configuração é uma linha única, então se der quebra de linha em seu navegador certifique-se de copiar e colar corretamente.

mail._domainkey.fatorbinario.com fatorbinario.com:mail:/etc/opendkim/keys/fatorbinario.com/mail.private

#Para adicionar outros dominios descomente as proximas linhas e altere o dominio:
#mail._domainkey.exemplo1.net exemplo1.net:mail:/etc/opendkim/keys/exemplo1.net/mail.private
#mail._domainkey.exemplo2.org exemplo2.org:mail:/etc/opendkim/keys/exemplo2.org/mail.private

C.Arquivo /etc/opendkim/SigningTable:

*@fatorbinario.com mail._domainkey.fatorbinario.com

#Para adicionar outros dominios descomente as proximas linhas e altere o dominio:
#*@exemplo1.net mail._domainkey.exemplo1.net
#*@exemplo2.org mail._domainkey.exemplo2.org

#Pode-se adicionar um subdominio apontando para um dominio, ou ainda outro dominio apontando para a mesma chave acima. Veja o exemplo com um subdominio:
#*@vps1.fatorbinario.com mail._domainkey.fatorbinario.com

8.Após editar e salvar os arquivos vamos gerar as chaves pública e privada de cada domínio (substituindo fatorbinario.com pelo seu domínio).

A.Crie um subdiretório para cada domínio que tiver configurado:

> mkdir /etc/opendkim/keys/fatorbinario.com

B.Acesse o subdiretório do domínio e gere os arquivos com as chaves. Em seguida, por segurança, troque o dono do arquivo contendo a chave privada para opendkim:

> cd /etc/opendkim/keys/fatorbinario.com
> opendkim-genkey -s mail -d fatorbinario.com
> chown opendkim:opendkim mail.private

* * O arquivo mail.private contém a chave privada do domínio e o arquivo mail.txt a chave pública que usaremos para configurar o DNS a seguir.

9.Reinicie o Postfix e o OpenDKIM:

> /etc/init.d/postfix restart
> /etc/init.d/opendkim restart

10.Na configuração DNS adicione a seguinte entrada (substitua as informações pelo conteúdo do seu arquivo mail.txt gerado):

* Note o (ponto) no final da propriedade “Name” abaixo. Isso é necessário para o correto funcionamento. O prefixo “mail._domainkey.” também é necessário pois configuramos a chave usando este prefixo.

Record Type: TXT

Name: mail._domainkey.fatorbinario.com.

Text: “v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDs0+Ep6l2g9SgVvJayx5SMZeV1+9AVN7FGkZO4FLWrigG7O69neoj+FSFwI3ATvXUITvQojlP2QMbMj3ffjZpBpZeK0JjS75rcWRmf66d/Q9MyUv7AaHq801OD1dZkv+NbXJh5bl7AbtKzV4AklNrJZPNkpLmcnDqyW0Ii+ePrawICCQAB”

* * Veja que no arquivo mail.txt tem um texto adicional após fechar as aspas duplas da chave. Certifique-se de não colar aquele comentário ao adicionar a entrada.

* * Cole a sua chave na entrada DNS conforme mostrado acima com as aspas duplas incluídas.

* * Se o seu servidor é um VPS na DigitalOcean siga nosso tutorial de como adicionar entradas DNS no painel da conta clicando neste link.

11.Para verificar se o email está sendo enviado com a assinatura DKIM aguarde algumas horas até a entrada DNS propagar-se pela internet e envie um email diretamente do servidor (o meu VPS é na DigitalOcean e só tive que aguardar 15 minutos para o novo registro propagar). Se você seguiu nosso tutorial anterior então acesse o SquirrelMail pelo endereço: http://seuservidor.com:8081/squirrelmail.

Verificando com o Gmail:

Envie um email para uma conta do Gmail e veja se está assinado, abra o email e clique na seta “mais opções” (lado direito da mensagem), em seguida escolha “Mostrar Original” no menu. Abrirá uma tela com as informações de origem da mensagem e nela deverá aparecer uma seção “DKIM-Signature:

Verificando com o Hotmail:

Envie um email para uma conta do Hotmail e veja se está assinado, abra o email e clique na seta “Ações“, em seguida escolha “Exibir Origem da Mensagem” no menu. Abrirá uma tela com as informações de origem da mensagem e nela deverá aparecer uma seção “DKIM-Signature:

Verificando com o serviço da port25.com:

Envie um email em branco para o seguinte endereço:

[email protected]

Será retornada uma mensagem com informações detalhadas do cabeçalho da mensagem enviada parecido com isso:

Thank you for using the verifier,
The Port25 Solutions, Inc. team
==============================
Summary of Results
==============================
SPF check:          pass
DomainKeys check:   neutral
DKIM check:         pass
Sender-ID check:    pass
SpamAssassin check: ham

* * Verifique se as duas linhas em negrito acima estão como “pass”, se a linha SPF der “fail” veja nosso tutorial de como adicionar a entrada DNS para solucionar o problema.


 Linux: Como autenticar emails com DKIM e Postfix
Tutorial ISPConfig 3 〉〉 ÍNDICE ANT PROX

©2014-2024 Fator Binário - Todos os direitos reservados

Fazer login com suas credenciais

Esqueceu sua senha?