Email Configuration · 5 min read · Oct 14, 2025

Configurar DKIM (DomainKeys Identified Mail) Funcionando Com Postfix No CentOS Usando OpenDKIM

Configurar DKIM (DomainKeys Identified Mail) Funcionando Com Postfix No CentOS Usando OpenDKIM

Versão 1.0
Autor: Eladio Martinez < [email protected] >
http://twitter.com/mafecsllc

Este tutorial mostra como fazer o DKIM funcionar em uma máquina CentOS executando Postfix usando OpenDKIM, também abordarei algumas dicas simples de solução de problemas e conselhos para futuras atualizações na sua instalação do OpenDKIM.

1 Requisitos

Este tutorial assume que você tem uma instalação completa do CentOS funcionando os seguintes serviços:

  • Postfix 2.3.3 ou melhor atualmente funcionando.
  • Sendmail está desligado.

2 Notas Preliminares

Estou executando todos os passos deste tutorial com privilégios de root, atualmente estou executando o CentOS 6.3 com a versão 2.4.2 do OpenDKIM e usarei example.com como o domínio principal para este tutorial.

3 Baixar e instalar OpenDKIM

Você também precisará instalar os pacotes de desenvolvimento do OpenSSL e Sendmail, porque eles contêm algumas “bibliotecas” que você precisa para fazer o OpenDKIM funcionar.

yum install sendmail-devel openssl-devel

Baixe o OpenDKIM para o diretório /usr/local/src:

cd /usr/local/src
wget http://sourceforge.net/projects/opendkim/files/opendkim-2.4.2.tar.gz

Extraia, configure, compile e instale o OpenDKIM com:

tar zxvf opendkim-2.4.2.tar.gz
cd opendkim-2.4.2
./configure –sysconfdir=/etc –prefix=/usr/local –localstatedir=/var
make
make install

Note que o comando ./configure inclui algumas flags muito importantes, que serão passadas para o script de inicialização que é criado quando o comando configure é executado. A primeira informa ao sistema onde o arquivo de configuração do OpenDKIM estará localizado, a segunda define o prefixo preferido para alguns outros locais de arquivos importantes, e a última controla o diretório onde o arquivo PID do OpenDKIM será armazenado.

4 Criar um novo usuário

Adicione um novo usuário para o DKIM chamado opendkim com as seguintes opções:

useradd -r -U -s /sbin/nologin opendkim

Este comando criará uma nova conta de sistema (-r) e grupo (-g) chamada opendkim e não atribuirá acesso ao shell a este usuário (-s).

5 Criar diretórios de trabalho

Crie alguns novos diretórios para o OpenDKIM e dê a eles a propriedade e permissões adequadas com:

mkdir -p /etc/opendkim/keys
chown -R opendkim:opendkim /etc/opendkim
chmod -R go-wrx /etc/opendkim/keys

6 Copiar o script de inicialização para /etc/init.d/

O pacote fonte do OpenDKIM inclui um diretório contrib que contém um script init personalizado para ser usado com todos os sistemas compatíveis com RedHat, incluindo Fedora e CentOS. Você pode copiá-lo para o seu diretório /etc/init.d/ para facilitar o início, parada, reinicialização e recarga do OpenDKIM:

cp /usr/local/src/opendkim-2.4.2/contrib/init/redhat/opendkim /etc/init.d/

Agora defina as permissões corretas para o script init:

chmod 755 /etc/init.d/opendkim

7 Gerar chaves para assinatura

Você precisa gerar uma chave privada e uma chave pública para cada um dos domínios para os quais deseja assinar e-mail. A chave privada é armazenada em seu servidor, enquanto a chave pública é publicada nos registros DNS do seu domínio para que os servidores de e-mail receptores possam verificar seu e-mail assinado com DKIM.

Você precisa decidir agora qual será o nome do seu seletor. Um seletor é uma palavra-chave única que está associada a ambas as chaves (pública e privada), incluída em todas as assinaturas e publicada em seus registros DNS. Para simplicidade, uso a palavra default como meu seletor padrão. Sinta-se à vontade para escolher algo diferente, mas se o fizer, precisará usá-lo de forma consistente em toda a sua configuração. Além disso, embora isso deva ser óbvio, você deve usar seu domínio de e-mail em vez de example.com em todos os passos seguintes.

Crie suas chaves:

mkdir /etc/opendkim/keys/example.com
/usr/local/bin/opendkim-genkey -D /etc/opendkim/keys/example.com/ -d example.com -s default
chown -R opendkim:opendkim /etc/opendkim/keys/example.com
mv /etc/opendkim/keys/example.com/default.private /etc/opendkim/keys/example.com/default

Neste exemplo, usei a opção -D (diretório), a opção -d (domínio) e as opções -s (seletor). Isso é tudo que você precisa para fazer isso funcionar.

8 Editar arquivos de configuração

Você precisa criar ou editar quatro arquivos:

  • 1 /etc/opendkim.conf –- arquivo de configuração principal do OpenDKIM
  • 2 /etc/opendkim/KeyTable –- uma lista de chaves disponíveis para assinatura
  • 3 /etc/opendkim/SigningTable – uma lista de domínios e contas autorizadas a assinar
  • 4 /etc/opendkim/TrustedHosts –- uma lista de servidores para “confiar” ao assinar ou verificar

Crie o arquivo /etc/opendkim.conf:

vi /etc/opendkim.conf

Certifique-se de que seu arquivo fique assim:

##
## opendkim.conf -- arquivo de configuração para o filtro OpenDKIM
##
AutoRestart             Yes
AutoRestartRate         10/1h
Canonicalization        relaxed/simple
ExternalIgnoreList      refile:/etc/opendkim/TrustedHosts
InternalHosts           refile:/etc/opendkim/TrustedHosts
KeyTable                refile:/etc/opendkim/KeyTable
LogWhy                  Yes
Mode                    sv
PidFile                 /var/run/opendkim/opendkim.pid
SignatureAlgorithm      rsa-sha256
SigningTable            refile:/etc/opendkim/SigningTable
Socket                  inet:8891@localhost
Syslog                  Yes
SyslogSuccess           Yes
TemporaryDirectory      /var/tmp
UMask                   022
UserID                  opendkim:opendkim

Crie o arquivo /etc/opendkim/KeyTable:

vi /etc/opendkim/KeyTable

Certifique-se de que seu arquivo fique assim:

default._domainkey.example.com example.com:default:/etc/opendkim/keys/example.com/default

O arquivo KeyTable informa ao OpenDKIM onde encontrar suas chaves. Cada entrada no arquivo KeyTable é uma única linha para cada local de chave (por exemplo, todo o texto no exemplo acima deve estar em uma única linha no seu arquivo). Se você for usar várias chaves (para assinar e-mails para domínios virtuais com chaves diferentes), precisará criar uma linha separada no arquivo KeyTable para cada domínio.

Crie o arquivo /etc/opendkim/SigningTable:

vi /etc/opendkim/SigningTable

Certifique-se de que seu arquivo fique assim:

*@example.com default._domainkey.example.com

O arquivo SigningTable informa ao OpenDKIM como usar suas chaves, como quais remetentes devem usar quais seletores para suas assinaturas. No exemplo acima, estou dizendo que todos () enviando e-mail do servidor “example.com” devem usar o seletor chamado “default”. É importante notar que o símbolo curinga só funcionará se a opção SigningTable usar o prefixo refile: antes do nome do arquivo.

Crie o arquivo /etc/opendkim/TrustedHosts:

vi /etc/opendkim/TrustedHosts

Certifique-se de que seu arquivo fique assim:

127.0.0.1
hostname1.example1.com
example1.com
hostname1.example2.com
example2.com

O arquivo TrustedHosts informa ao OpenDKIM quem pode usar suas chaves. Como é referenciado pela diretiva ExternalIgnoreList em seu arquivo de configuração, o OpenDKIM ignorará esta lista de hosts ao verificar e-mails recebidos e, como também é referenciado pela diretiva InternalHosts, esta mesma lista de hosts será considerada “interna”, e o OpenDKIM assinará seus e-mails de saída.

IMPORTANTE: Certifique-se de listar o endereço IP para localhost (127.0.0.1) no arquivo TrustedHosts ou o OpenDKIM não assinará e-mails enviados deste servidor. Se você tiver vários servidores na mesma rede que retransmitem e-mails através deste servidor e quiser assinar seus e-mails também, eles devem ser listados no arquivo TrustedHosts. Coloque cada entrada em sua própria linha. Uma entrada pode ser um nome de host, nome de domínio (por exemplo, “example.com”), endereço IP, um endereço IPv6 (incluindo um endereço IPv4 mapeado) ou uma especificação de IP no estilo CIDR (por exemplo, “192.168.1.0/24?”).

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.