
Tentando descobrir as melhores práticas para implementar DKIM em um único EC2 que terá vários IPS elásticos.
# /etc/opendkim.conf
...
Mode sv
Canonicalization relaxed/simple
ExternalIgnoreList refile:/etc/opendkim/TrustedHosts
InternalHosts refile:/etc/opendkim/TrustedHosts
KeyTable refile:/etc/opendkim/KeyTable
SigningTable refile:/etc/opendkim/SigningTable
SignatureAlgorithm rsa-sha256
...
# /etc/opendkim/KeyTable
default._domainkey.example.com example.com:hp-hv-1:/etc/opendkim/keys/default.private
default._domainkey.example.com example.com:hp-hv-2:/etc/opendkim/keys/default.private
# /etc/opendkim/SigningTable
*@example.com default._domainkey.example.com
Então eu tenho dois registros DNS:
hp-hv-1._domainkey.example.com TXT "v=DKIM1;k=rsa;p=default.txt_key_goes_here"
hp-hv-2._domainkey.example.com TXT "v=DKIM1;k=rsa;p=default.txt_key_goes_here"
Para ambas as instâncias postfix na mesma instância EC2, cada uma tem o seguinte $myhostname:
# postfixmulti instance #1
myhostname = hp-hv-1
# postfixmulti instance #2
myhostname = hp-hv-2
Ambas as instâncias postfix estão na mesma instância EC2, portanto, ambas compartilham o mesmo par de chaves privada/pública default.private/default.txt, portanto, não há necessidade de adicionar mais linhas a KeyTable e SigningTable. Pelo que sei, só preciso adicionar linhas extras a KeyTable e SigningTable se quiser implementar vários domínios (o que não faço).
Mas quando testo minhas configurações de DKIM, continuo recebendo respostas 'pass: neutral', dizendo que os e-mails não estão assinados, mas estão, posso ver no arquivo de log:
# snippet from /var/log/maillog
Sep 25 15:15:31 service-a-4 opendkim[27420]: 5B4A3625F0: DKIM-Signature field added (s=hp-hv-1, d=example.com)
o que estou perdendo?
Versões:
CentOS 6.5
Postfix v2.6.6
Opendkim v2.9
Responder1
Ok, eu estava obviamente confuso, fiquei pensando que "s" no campo de assinatura DKIM deveria identificar $myhostname na configuração do postfix, mas na verdade isso não acontece. Depois de ler mais sobreRotação de chave DKIM, finalmente usei para mim, o "s" é simplesmente o seletor a ser usado no KeyTable, SigningTable e DNS.
Verifique isto:
# /etc/opendkim/KeyTable
# Format: selector(1) domain:selector(2):/path/to/key
# selector(1) is used in the /etc/opendkim/SigningTable
# selector(2) is built into the DKIM signature for every email sent, which is used to lookup the DNS TXT entry: mail-1_r-1._domainkey.example.com
mail-1_r-1._domainkey.example.com example.com:mail-1_r-1:/etc/opendkim/keys/mail-1_r-1.private
E agora se eu quiser girar as chaves eu faria isso:
# /etc/opendkim/KeyTable
# Generate new private/public key pair, and rename accordingly
mail-1_r-1._domainkey.example.com example.com:mail-1_r-1:/etc/opendkim/keys/mail-1_r-1.private
mail-1_r-2._domainkey.example.com example.com:mail-1_r-2:/etc/opendkim/keys/mail-1_r-2.private
Então na tabela de assinatura:
# /etc/opendkim/SigningTable
*@shouttag.com mail_r-1._domainkey.example.com
*@shouttag.com mail_r-2._domainkey.example.com
Então, para entradas DNS, você terá o seguinte
mail_r-1.domainkey.example.com "v=DKIM1;k=rsa;p=mail_r-1.txt_key_goes_here"
mail_r-2.domainkey.example.com "v=DKIM1;k=rsa;p=mail_r-2.txt_key_goes_here"
Essas entradas DNS são usadas para ajudar a validar se o e-mail foi realmente enviado do seu domínio (daí o correio identificado pela chave de domínio). Depois de cerca de 7 dias, você poderá remover mail_r-1.domainkey.example.com.