Implementando assinatura DKIM com Postfix e Amavis

Publicado por Fabio Soares Schmidt em 15/01/2013

[ Hits: 7.468 ]

 


Implementando assinatura DKIM com Postfix e Amavis



Este tutorial foi criado para apresentar o Framework DKIM, que utiliza chaves públicas para autenticação de e-mail. O remetente assina a mensagem no envio permitindo que o receptor efetue consulta no DNS para confirmar sua autenticidade.

Decidi escrever sobre este tema devido a muitos relatos de problemas ao entregar mensagens para grandes provedores que efetuam verificação DKIM como o Gmail, Yahoo! e Hotmail, por exemplo.

Nesse texto não entrarei em detalhes sobre o funcionamento deste mecanismo, e sim, apresentei uma forma rápida para implementar, caso já tenha o Amavis implementado. Nos próximos artigos sobre este tema, apresentarei todas as definições do framework.

Neste exemplo utilizamos o Debian Squeeze, portanto, o arquivo de configuração do Amavis onde iremos implementar o DKIM é /etc/amavis/conf.d/20-debian_defaults. Criaremos o diretório /etc/dkim/keys/ para armazenar nossas chaves, utilizaremos o domínio "laboratorio.com.br".

Primeiramente, vamos criar a chave para assinatura:

# amavisd-new genrsa /etc/dkim/keys/laboratorio.pem

Agora vamos editar o arquivo 20-debian_defaults incluindo as linhas abaixo, destacando que não estamos habilitando verificação com DKIM, e sim assinando nossas mensagens:

$enable_dkim_verification = 0; #não iremos verificar DKIM, apenas assinar
$enable_dkim_signing = 1;
dkim_key('laboratorio.com.br', 'default', '/etc/dkim/keys/laboratorio.pem');
@dkim_signature_options_bysender_maps = (
{ '.' => { ttl => 21*24*3600, c => 'relaxed/simple' } } );
@mynetworks = qw(192.168.0.0/24); # coloque aqui suas faixas de rede

Agora precisamos incluir nossa chave pública no DNS, para que os destinatários possam verificar nossa assinatura. Execute o comando abaixo, que irá apresentar na tela a saída que deve ser incluída no DNS. Se estiver utilizando o BIND, basta copiar e colar:

# amavisd-new showkeys

Exemplo:

; Deve ser incluido na configuração do seu DNS
default._domainkey.laboratorio.com.br.      3600 TXT (
"v=DKIM1; p="
"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC4ZkmIpubptTSpHV7365iB7j7m"
"/46sYWN/PTHweK1LQmq4aGiXD5XfPlmZ2E78kgsCEw0weMG5q5+Q+VSBLxV+f6If"
"MOG+B9ruNx8MkoNgNQlCwsUiEV9knvMyx2+ou/KmypZv2i/wRUwOh4jT+NTcr4Ur"
"WNCLWJSH34L/eYoHvwIDAQAB")

Feito isso, reinicie o serviço do Amavis e efetue um "reload" no seu servidor DNS.

O comando:

# amavisd-new testkeys

Permite validarmos a configuração:

TESTING#1: default._domainkey.laboratorio.com.br => pass

Agora basta enviar uma mensagem e confirmar se o Amavis efetuou a assinatura:

DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=laboratorio.com.br; h=
	user-agent:message-id:subject:subject:from:from:date:date
	:content-transfer-encoding:content-type:content-type
	:mime-version:received:received; s=default; t=1355229764; x=
	1357044164; bh=IZzGk5hdbwv1XsfTE2Dngp1hMDfBwbnO3RaSFfeDt+k=; b=P
	AQ7bFr1vCck1ZHI6Elqm3lWxhc1Widsq4qw3hlfGvNK6xwtRYRfxFkEBM7t9sxRv
	+QLjMO8iLZb3qGDigFJNw8kfiaUX9tHI6FbexB44M0UJfh0XGSL2Cnc9hsOxk7Or
	vTXMSUBbuq8Td6Ow7b7IDaGwZw2Ly4iwc9uCyiVRkQ=

Obrigado

Fabio Soares Schmidt
http://respirandolinux.wordpress.com

Outras dicas deste autor

Zimbra - Copiando base de SPAM/HAM para outro servidor

Thunderbird - Modificar a consulta no LDAP ao redigir mensagens

Dovecot: Adicionando mais informações na entrega da mensagem

Zimbra - "Erro: PKIX path building failed" ao executar o Zmmailbox

Postfix: Adicionando disclaimer - Exceções de remetentes e arquivos diferentes por domínio

Leitura recomendada

Exportação de e-mail Kmail para Thunderbird

Expresso Livre - Anexos e mensagens exportadas com 0 KB [Resolvido]

Instalando pacotes de idiomas no Thunderbird pelo APT

Rejeitando extensões maliciosas com Postfix

Otimizando as consultas do MySQL no Postfix

  

Comentários
[1] Comentário enviado por allanbarcelos em 13/12/2013 - 15:40h

e quando o servidor possui vários domínios? usa-se a mesma dkim?

[2] Comentário enviado por fs.schmidt em 13/12/2013 - 18:25h

Olá @allanarab, basta voce criar outras chaves para os dominios adicionais e criar novas entadas:

dkim_key('laboratorio.com.br', 'default', '/etc/dkim/keys/laboratorio.pem');

dkim_key('DOMINIO2.com.br', 'default', '/etc/dkim/keys/DOMINIO2.pem');

[3] Comentário enviado por leonardochristo em 24/01/2014 - 10:26h

Bom Dia,

Gostei muito do seu artigo.

Tenho uma instalação distribuida onde o postfix é separado do serviço web, mas está junto dos conectores.

Gostaria de saber se tem possibilidade de implementar uma solução com DKIM e SPF e SPAMASSASSIN em um servidor separado só apontando para o postfix que tenho, vc teria uma ideia de como fazer isso? Ou Um artigo?

Obrigado!

[4] Comentário enviado por fs.schmidt em 24/01/2014 - 15:29h

Olá @leonardochristo, tudo bem?

É possível colocar o Amavis em um servidor dedicado, pois é ele quem faz a ponte com o DKIM, SPF e SPAMASSASSIN.

Não tenho nenhum artigo pronto sobre isso ainda.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts