bg-tutorials

Como instalar um certificado ACME SSL em servidores de e-mail

Neste guia, você aprenderá a instalar um certificado ACME SSL em servidores de e-mail, especificamente Postfix, Dovecot e, opcionalmente, Exim, usando provedores comerciais que suportam ACME + EAB. Usaremos o acme.sh para registrar sua conta ACME, emitir um certificado para seu nome de host de e-mail e, em seguida, conectar esse certificado diretamente à configuração TLS do seu servidor de e-mail.

Servidores de correio ACME SSL

Este guia pressupõe um servidor de e-mail baseado em Linux e uma CA comercial que fornece um URL de diretório ACME juntamente com credenciais EAB (Key ID + HMAC). Como os ambientes de e-mail diferem entre as distribuições e as configurações de hospedagem, considere este guia como um modelo claro e confiável, mas sempre verifique os caminhos, os nomes de serviço e as configurações de TLS do seu próprio servidor à medida que você avança.


Antes de você começar

Você terá uma experiência muito mais tranquila se esses princípios básicos estiverem prontos:

  • Um nome de host de e-mail, por exemplo, mail.example.com, com um registro A/AAAA apontando para o seu servidor de e-mail
  • Seu registro MX apontando para esse nome de host (configuração comum)
  • Acesso shell/SSH ao servidor de e-mail com sudo ou root
  • Uma conta de CA comercial que fornece um URL de diretório ACME(por exemplo, https://acme.yourca.com/v2/acme), ID de chave EAB e chave HMAC EAB
  • Pilha de correio eletrônico: Postfix/Exim para SMTP e Dovecot para IMAP/POP3

Usaremos a validação DNS-01 porque ela funciona mesmo quando o seu servidor de e-mail não executa um site público e geralmente é preferida na produção.


Etapa 1: instalar o acme.sh no servidor de e-mail

Você instalará o cliente ACME diretamente no servidor de e-mail para que ele possa renovar os certificados e gravá-los no disco onde o Postfix/Dovecot/Exim possa lê-los.

No servidor de correio eletrônico:

curl https://get.acme.sh | sh
source ~/.bashrc
acme.sh --version

Se você vir um número de versão, o cliente está instalado e pronto. Se a linha source ~/.bashrc não funcionar, faça logout e login novamente e, em seguida, execute acme.sh --version novamente.


Etapa 2: Registre sua conta ACME (com EAB)

Em seguida, você precisa registrar sua conta ACME com sua CA comercial usando as credenciais EAB do painel dela. acme.sh oferece suporte a EAB via --eab-kid e --eab-hmac-key.

Execute isso no servidor de correio eletrônico:

acme.sh --register-account \
  --server https://acme.yourca.com/v2/acme \
  --eab-kid YOUR_EAB_KID \
  --eab-hmac-key YOUR_EAB_HMAC_KEY \
  --accountemail [email protected]

Substituir:

  • https://acme.yourca.com/v2/acme com o URL do diretório ACME da sua CA
  • YOUR_EAB_KID com a ID da chave
  • YOUR_EAB_HMAC_KEY com a chave HMAC
  • [email protected] com seu e-mail real de administrador para avisos de expiração

Você deve fazer isso uma vez por conta. Se o comando falhar, quase sempre é um erro de digitação nos valores de URL ou EAB.


Etapa 3: Emitir o certificado via DNS-01

Agora você solicita um certificado para o nome de host ao qual seus usuários se conectarão, por exemplo, mail.example.com (ou imap.example.com, smtp.example.com. Basta escolher o que você realmente usa nas configurações do cliente).

Emitir o certificado (DNS manual)

Você pode correr:

acme.sh --issue \
  -d mail.example.com \
  --dns dns_manual \
  --server https://acme.yourca.com/v2/acme

--dns dns_manual informa acme.sh que você adicionará registros TXT manualmente no seu painel DNS.

O cliente produzirá algo como:

Please add a TXT record:
_acme-challenge.mail.example.com → some-long-token-value

Adicione o registro TXT

No painel do seu provedor de DNS, crie um registro TXT:

  • Nome: _acme-challenge.mail.example.com
  • Valor: o token mostrado por acme.sh

Aguarde alguns minutos para que o DNS se propague e, em seguida, verifique com:

dig TXT _acme-challenge.mail.example.com +short

Se você vir o token lá, execute o comando acme.sh --issue novamente para concluir a validação. Se você for bem-sucedido, o acme.sh armazenará seus arquivos em ~/.acme.sh/mail.example.com/.

Dentro desse diretório, você terá pelo menos:

  • fullchain.cer – certificado mais cadeia intermediária
  • mail.example.com.key – chave privada
  • ca.cer – Certificados da CA (se a sua CA os fornecer separadamente)

Você os usará nas próximas etapas.


Etapa 4: configurar o Postfix para usar o certificado ACME (SMTP)

O Postfix precisa saber onde estão o novo certificado e a chave. O TLS no Postfix é controlado por opções como smtpd_tls_cert_file e smtpd_tls_key_file.

Primeiro, copie os arquivos para um local estável, por exemplo:

sudo mkdir -p /etc/ssl/mail
sudo cp ~/.acme.sh/mail.example.com/fullchain.cer /etc/ssl/mail/mail-fullchain.cer
sudo cp ~/.acme.sh/mail.example.com/mail.example.com.key /etc/ssl/mail/mail.key
sudo chown root:root /etc/ssl/mail/*
sudo chmod 600 /etc/ssl/mail/mail.key

Em seguida, diga ao Postfix para usá-los:

sudo postconf -e 'smtpd_use_tls = yes'
sudo postconf -e 'smtpd_tls_security_level = may'
sudo postconf -e 'smtpd_tls_cert_file = /etc/ssl/mail/mail-fullchain.cer'
sudo postconf -e 'smtpd_tls_key_file = /etc/ssl/mail/mail.key'
sudo postconf -e 'smtp_tls_security_level = may'
  • smtpd_* as configurações controlam os e-mails recebidos (clientes que enviam e-mails para você)
  • smtp_* as configurações controlam o correio de saída (seu servidor envia correio para outros)

Aplique as alterações:

sudo systemctl restart postfix

Se a sua distribuição ainda usa service, ajuste o comando de acordo.


Etapa 5: configurar o Dovecot para usar o certificado ACME (IMAP/POP3)

O Dovecot lida com IMAP e POP3. Você configura o TLS apontando ssl_cert e ssl_key para os mesmos arquivos que acabamos de preparar.

Abra a configuração SSL do Dovecot:

sudo nano /etc/dovecot/conf.d/10-ssl.conf

Atualize (ou adicione) essas linhas:

ssl = yes
ssl_cert = </etc/ssl/mail/mail-fullchain.cer
ssl_key  = </etc/ssl/mail/mail.key

Salve o arquivo e recarregue o Dovecot:

sudo systemctl restart dovecot

Agora, o IMAP/POP3 por TLS apresentará o mesmo certificado comercial da ACME.


Opcional: Use o mesmo certificado no Exim

Se você usar o Exim como servidor de e-mail em vez do Postfix, a integração será semelhante. O Exim usa as opções tls_certificate e tls_privatekey para TLS.

Na sua configuração do Exim (o caminho depende da distribuição, geralmente /etc/exim4/exim4.conf.template ou split config em /etc/exim4/conf.d/), defina:

tls_certificate = /etc/ssl/mail/mail-fullchain.cer
tls_privatekey  = /etc/ssl/mail/mail.key

Em seguida, recarregue o Exim:

sudo systemctl restart exim4

Verifique os documentos do pacote de distribuição se o nome do serviço for ligeiramente diferente.


Etapa 6: Teste o TLS do seu e-mail

Você pode testar em qualquer outra máquina que tenha o OpenSSL instalado.

Teste o SMTP (Postfix ou Exim)

openssl s_client -starttls smtp -connect mail.example.com:587 -showcerts

Teste IMAP (Dovecot)

openssl s_client -starttls imap -connect mail.example.com:143 -showcerts

Se a saída mostrar sua CA comercial e o nome do host corresponder, você está pronto.


Etapa 7: Mantenha a renovação e a recarga automatizadas

acme.sh já instala um trabalho cron que verifica as renovações diariamente. Quando seu certificado estiver perto de expirar, ele será renovado automaticamente e atualizará os arquivos em ~/.acme.sh/mail.example.com/.

Para fazer com que o Postfix/Dovecot/Exim sempre use a versão mais recente, você tem duas opções:

  1. Aponte as configurações diretamente para os arquivos em ~/.acme.sh/mail.example.com/
    (por exemplo, smtpd_tls_cert_file = /root/.acme.sh/mail.example.com/fullchain.cer) e garanta que somente o root possa lê-los.
  2. Escreva um pequeno script de implementação que copie os arquivos renovados para /etc/ssl/mail/ e reinicie ou recarregue o servidor.

Exemplo de um script:

#!/usr/bin/env bash
DOMAIN="mail.example.com"
SRC="$HOME/.acme.sh/$DOMAIN"
DEST="/etc/ssl/mail"

sudo cp "$SRC/fullchain.cer" "$DEST/mail-fullchain.cer"
sudo cp "$SRC/$DOMAIN.key"   "$DEST/mail.key"
sudo chown root:root "$DEST/"*
sudo chmod 600 "$DEST/mail.key"

sudo systemctl restart postfix dovecot

Esse script copia o certificado ACME recém-emitido e a chave privada para o diretório SSL de email do servidor, define a propriedade e as permissões corretas e, em seguida, reinicia o Postfix e o Dovecot para que eles comecem a usar imediatamente o certificado atualizado. Use suas credenciais em vez dos espaços reservados.

Em seguida, conecte-o em acme.sh:

acme.sh --install-cert -d mail.example.com \
  --key-file       ~/.acme.sh/mail.example.com/mail.example.com.key \
  --fullchain-file ~/.acme.sh/mail.example.com/fullchain.cer \
  --reloadcmd "/path/to/your/deploy-script.sh"

A partir daí, as renovações ocorrerão automaticamente.


Perguntas comuns e solução de problemas

Alguns problemas podem surgir quando você fizer isso pela primeira vez. Veja a seguir como você pode lidar com eles rapidamente.

Por que a validação do ACME falha com “não autorizado” ou “resposta inválida”?

Isso acontece quando a CA não consegue verificar o registro TXT do seu DNS. Verifique isso:

  • O registro TXT é exatamente _acme-challenge.mail.example.com
  • O token não tem aspas ou espaços extras
  • O DNS se propagou (dig TXT _acme-challenge.mail.example.com +short)
  • Você não confundiu mail.example.com com example.com

Se não tiver certeza, exclua o registro TXT, execute novamente o site acme.sh --issue e adicione novamente o valor exato que a ACME fornecer a você.

Por que estou recebendo erros do tipo “accountDoesNotExist” ou relacionados ao EAB?

Eles aparecem quando o registro da sua conta ACME não corresponde às credenciais EAB da sua CA.

Fixado por:

  • Verificar novamente o URL do diretório ACME (produção vs. teste)
  • Garantir que a ID da chave e o HMAC sejam copiados exatamente, sem espaços ocultos
  • Reexecutar o comando de registro uma vez com os valores corretos

As ACs comerciais rejeitam qualquer registro de EAB que não corresponda ao perfil emitido.

Por que o SMTP/IMAP ainda mostra o certificado antigo?

Isso significa que o serviço não recarregou o novo certificado ou está lendo de um caminho diferente. Verifique:

  • Os caminhos de TLS no Postfix/Dovecot/Exim correspondem aos arquivos reais
  • Você reiniciou o serviço correto (systemctl restart postfix dovecot exim4)
  • Nenhuma segunda instância, contêiner ou proxy está servindo o certificado antigo

Você pode verificar o certificado ativo usando:

openssl s_client -connect mail.example.com:465 -servername mail.example.com

Palavras finais

Com essa configuração, o seu servidor de e-mail apresenta um certificado ACME comercial adequado aos clientes SMTP e IMAP/POP3, enquanto o acme.sh cuida discretamente das renovações em segundo plano. Você mantém controle total sobre a cadeia de certificados e os nomes de arquivos, seus usuários param de ver avisos de segurança e você não precisa fazer login a cada poucos meses para carregar novos arquivos manualmente.

Depois de fazer isso uma vez, você pode repetir o mesmo padrão para outros nomes de host, servidores MX secundários ou pilhas de correio adicionais usando a mesma conta e o mesmo processo do ACME.

Economize 10% em certificados SSL ao fazer seu pedido hoje!

Emissão rápida, criptografia forte, 99,99% de confiança no navegador, suporte dedicado e garantia de reembolso de 25 dias. Código do cupom: SAVE10

Uma imagem detalhada de um dragão em voo
Escrito por

Redator de conteúdo experiente, especializado em certificados SSL. Transformação de tópicos complexos de segurança cibernética em conteúdo claro e envolvente. Contribua para melhorar a segurança digital por meio de narrativas impactantes.