Opendkim: Solucionando problemas na instalação/configuração

DKIM

Olá ! Nesse artigo gostaria de compartilhar com vocês algumas dicas para solucionar alguns problemas comuns na instalação e configuração do Opendkim, seja em distribuições Red Hat ou Debian.

no signing table match for ‘user@yourdomain.com’

Muitas vezes, desejamos utilizar múltiplas assinaturas, por domínio, no nosso ambiente, e ao configurar o parâmetro “SigningTable” e gerar a tabela, respectivamente, conforme abaixo, o Opendkim não consegue assinar a mensagem.

SigningTable            /etc/opendkim/SigningTable

*@otherdomain.com default._domainkey.otherdomain.com

Ocorre que para o Opendkim interpretar expressões regulares no arquivo, o parâmetro “refile:” deve ser utilizado antes do mesmo, conforme o exemplo abaixo:

 SigningTable           refile:/etc/opendkim/SigningTable

can’t load key from /etc/opendkim/keys/yourdomain.com/default.private: Permission denied

Também é muito comum obter erros de permissão negada do Opendkim ao ler a chave para assinatura. Ocorre que para o Opendkim poder utilizar as chaves, é necessário que todo o caminho (diretórios) esteja, ao menos, com a permissão r+x (5).

Zimbra: Verificando as configuração de DKIM

Olá ! Seguem algumas dicas rápidas para validar suas configurações de DKIM (http://www.dkim.org) caso esteja utilizando o Zimbra.

  • Verificar as configurações que devem ser publicadas no DNS E identificar o SELECTOR que está sendo utilizado: /opt/zimbra/libexec/zmdkimkeyutil -q -d exemplo.com.br
  • Testar as configurações validando as chaves públicas e privadas: /opt/zimbra/opendkim/sbin/opendkim-testkey -d exemplo.com.br -s SELECTOR -x /opt/zimbra/conf/opendkim.conf

Dkim – Parte 1 – Assinando mensagens com o Amavis

Esse 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 apresentei 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 incluida 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=