Primeiro instale os pacotes necessários:
sudo apt-get install opendkim opendkim-tools
Adicione o seguinte a /etc/opendkim.conf
:
Domain example.com
KeyFile /etc/postfix/dkim.key
Selector dkim
SOCKET inet:8891@localhost
Adicione o seguinte a /etc/default/opendkim
:
SOCKET="inet:8891@localhost"
Anexe uma configuração DKIM adequada a /etc/postfix/main.cf
:
# DKIM
# --------------------------------------
milter_default_action = accept
milter_protocol = 2
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891
Você deve anexar no_milters
à linha receive_override_options
em /etc/postfix/master.cf
. Isso impede que várias assinaturas sejam colocadas no mesmo item de correio de saída
-o receive_override_options=no_header_body_checks,no_unknown_recipient_checks,no_milters
Agora você pode gerar uma chave privada para assinar mensagens de saída. Observe que no comando a seguir, dkim
é o valor dado ao Seletor em /etc/opendkim.conf
.
opendkim-genkey -t -s dkim -d example.com
Mova a chave para o lugar, mas não se esqueça de fazer uma cópia e manter essa cópia em backup em algum lugar seguro:
mv dkim.private /etc/postfix/dkim.key
Você precisará reiniciar os serviços Postfix e OpenDKIM para selecionar as alterações de configuração para que as mensagens de saída sejam assinadas usando o DKIM:
service opendkim start
service postfix restart
O próximo passo é a configuração do registro DNS. Como você faz isso é novamente completamente dependente de como você gerencia o DNS ou como ele é gerenciado para você - as ferramentas de todos são diferentes.
O arquivo dkim.txt
contém o seguinte conteúdo, o registro TXT completo que deve ser criado. Ele tem o subdomínio dkim._domainkey
e um longo conjunto de conteúdo codificado como o valor. Novamente "dkim" é o valor dado ao Seletor em /etc/opendkim.conf
.
dkim._domainkey IN TXT ( "v=DKIM1; k=rsa; t=y; "
"p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC9rulKo58JIb5h+3MMEnYhlnbuVgRoA4w68R/X7qA2Lfv3RpdrrUb+r7KxemIo6PUIOm6uZ5OymhBgpJ0LAWBHBSJjnFmDXNajSgxMOcvkpgmVCW1/k1kxK864WVVSyFVQPyUImqklY+ws4u+mog3PSbuq2J8NFAnvSwzMg3vT1QIDAQAB" ; ----- DKIM key mail for example.com
Ao configurar isso, você deve omitir a parte k=rsa; t=y;
do valor. O primeiro item refere-se ao formato da chave e o padrão é RSA. O segundo denota que esta é uma entrada de teste e não deve ser incluída. Então, o valor é assim:
"v=DKIM1; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC9rulKo58JIb5h+3MMEnYhlnbuVgRoA4w68R/X7qA2Lfv3RpdrrUb+r7KxemIo6PUIOm6uZ5OymhBgpJ0LAWBHBSJjnFmDXNajSgxMOcvkpgmVCW1/k1kxK864WVVSyFVQPyUImqklY+ws4u+mog3PSbuq2J8NFAnvSwzMg3vT1QIDAQAB"
É útil visualizar exemplos na natureza para fins de comparação, para que você possa ver como deve inserir o valor em seus registros. Você pode usar o verificador de chaves DKIM ou outras ferramentas, como dig. Observe que o dkim._domainkey
é o subdomínio no seguinte comando:
dig dkim._domainkey.twitter.com txt
EDIT 1
Alterar em /etc/postfix/main.cf
form
# DKIM
# --------------------------------------
milter_default_action = accept
milter_protocol = 2
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891
para
smtpd_milters = inet:127.0.0.1:8891
non_smtpd_milters = $smtpd_milters
milter_default_action = accept
milter_protocol = 2
Reinicie o postfix
. Verifique o status do serviço opendkim
e postfix
. Verifique o correio cantando novamente.