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=
Oi Fábio… é o Vander (Marília) gostaria de saber se pra cada domínio virtual neste server terei que gerar uma chave? ou posso usar a mesma ?
Olá Vander, tudo bem?
O mais recomendado é gerar um chave para domínio sim !
Abraços.
OLá FsSchmidt. Desculpa lhe escrever, mas ja escrvei pra varios forums. ninguem responde. Veja o que vc pode me dizer pra me ajudar:
meu vps é na digitalocean, onde uso debian + vestacp hospedados 5 sites e todos assinam os emails com spf pass ok, dmarc pass ok, dkim pass ok, automaticamente, quando faço apontamento dns para para os names servers ns1.digitalocean.com ns2…. e gravo as entradas nas tabelas dos dominios.. tudo corre bem como ja mensionado. E quando tambem faço apontamento para os namesserver da cloudflare e configuro minha tabelas dns na cloudflare. Mas quando instalo debian + virtualmin, tudo acontece automaticamente quando uso tabelas dns digitalocean: spf pass ok, dkim pass ok, spf pass ok.
Mas se eu fizer aponamento dos meus dominios para os namesservers da cloudflare e configurar as tabelas dns na cloudflare com virtualmin, nunca assinam as dkim, sempre status fail, ja gerei varias chaves, com amaves, opendkin, e do proprio painel virtualmin que são autogeradas e as que geralmente aplico e sempre deram certo. sempre consigo para tabelas da digitalocean, pelo fato de eu configurar as tabelas no no mesmo local onde se encontra meu vps que é na digitalocean, sempre da certo as configurações, mas para apontar para fora e usar a tabela de fora(cloudflare), so o vestacp funciona, porque nao posso usar tabela dns externa com virtualmin? o que eu preciso fazer no virtualmin e que o vestacp ja faz automaticamente? seria algo no bind? nunca precisei mexer no bind porque aponto meus dominios para names server de algum lugar e configuro a tabela la, copiando e colando os dados gerados nos paines virtual, centros web panel etc.. logo nunca precisei operar o BIND. Desde ja agradeço voce.
é bom observar que o vesta usa exim4 e o virtualmin usa o postfix, seria laguma diretrica que ja vem ativada no exim4 e falta tivar no postfix? qual seria?
Olá amigo ! Imagina ! Só tenho a agradecer por visitar meu Blog !
Não entendi sua pergunta, o que seria o vestacp?
Abraços.