Implementando assinatura DKIM com Postfix e Amavis

Publicado por Fabio Soares Schmidt em 15/01/2013

[ Hits: 9.386 ]

 


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

Cyrus IMAPD - Erro "Unsupported feature(s) in require" ao aplicar filtros Sieve

Dovecot - Mover Spam automaticamente para a pasta desejada

Cyrus IMAP: Eliminar mensagens "fetching user deny" no código

Separando os logs do AMaViS no Debian

Recuperando arquivos skiplist corrompidos

Leitura recomendada

Evitando problemas no servidor SMTP para quem usa sendmail

Configurando Kmail para usar conta do Gmail

E-mail Linux

Life with qmail

Desinstalando o Zimbra da forma correta

  

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

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts