bg-tutorials

Come installare un certificato SSL ACME sui server di posta elettronica

In questa guida scoprirai come installare un certificato SSL ACME sui server di posta, in particolare Postfix, Dovecot e, facoltativamente, Exim, utilizzando i provider commerciali che supportano ACME + EAB. Utilizzeremo acme.sh per registrare il tuo account ACME, emettere un certificato per il tuo hostname di posta e poi inserire il certificato direttamente nella configurazione TLS del tuo server di posta.

Server di posta ACME SSL

Questa guida presuppone un server di posta basato su Linux e una CA commerciale che fornisce un URL della directory ACME insieme alle credenziali EAB (ID chiave + HMAC). Poiché gli ambienti di posta differiscono tra le varie distribuzioni e configurazioni di hosting, considera questa guida come un modello chiaro e affidabile, ma controlla sempre i percorsi, i nomi dei servizi e le impostazioni TLS del tuo server.


Prima di iniziare

Se queste nozioni di base sono pronte, il tempo sarà molto più scorrevole:

  • Un hostname di posta, ad esempio mail.example.com, con un record A/AAA che punta al tuo server di posta.
  • Il tuo record MX che punta a quell’hostname (configurazione comune)
  • Accesso al server di posta tramite shell/SSH con sudo o root
  • Un account CA commerciale che fornisce un URL della directory ACME(ad esempio https://acme.yourca.com/v2/acme), l’ID della chiave EAB e la chiave EAB HMAC.
  • Stack di posta: Postfix/Exim per SMTP e Dovecot per IMAP/POP3

Utilizzeremo la convalida DNS-01 perché funziona anche quando il tuo server di posta non gestisce un sito web pubblico ed è spesso preferita in produzione.


Passo 1: Installare acme.sh sul Mail Server

Installerai il client ACME direttamente sul server di posta in modo che possa rinnovare i certificati e scriverli su disco dove Postfix/Dovecot/Exim potrà leggerli.

Sul server di posta:

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

Se vedi un numero di versione, il client è installato e pronto. Se la riga source ~/.bashrc non funziona, esci e rientra, quindi esegui di nuovo acme.sh --version.


Fase 2: Registrazione dell’account ACME (con EAB)

Successivamente, dovrai registrare il tuo account ACME con la tua CA commerciale utilizzando le credenziali EAB del loro pannello. acme.sh supporta EAB tramite --eab-kid e --eab-hmac-key.

Esegui questa operazione sul server di posta:

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]

Sostituisci:

  • https://acme.yourca.com/v2/acme con l’URL della directory ACME della tua CA
  • YOUR_EAB_KID con l’ID della chiave
  • YOUR_EAB_HMAC_KEY con la chiave HMAC
  • [email protected] con la tua vera email di amministratore per gli avvisi di scadenza

Devi farlo una volta per ogni account. Se il comando fallisce, quasi sempre si tratta di un errore di battitura nell’URL o nei valori EAB.


Passo 3: Rilasciare il certificato tramite DNS-01

Ora richiedi un certificato per il nome dell’host a cui si connetteranno i tuoi utenti, ad esempio mail.example.com (o imap.example.com, smtp.example.com. Scegli quello che usi effettivamente nelle configurazioni dei client).

Rilascia il certificato (DNS manuale)

Corri:

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

--dns dns_manual acme.sh dovrai aggiungere manualmente i record TXT nel tuo pannello DNS.

Il client produrrà qualcosa come:

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

Aggiungi il record TXT

Nel pannello del tuo provider DNS, crea un record TXT:

  • Nome: _acme-challenge.mail.example.com
  • Valore: il token mostrato da acme.sh

Attendi qualche minuto affinché il DNS si propaghi, quindi verifica con:

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

Se vedi il token, esegui nuovamente il comando acme.sh --issue per completare la convalida. Se ha successo, acme.sh memorizza i tuoi file in ~/.acme.sh/mail.example.com/.

All’interno di questa directory avrai almeno:

  • fullchain.cer – certificato più catena intermedia
  • mail.example.com.key – chiave privata
  • ca.cer – Certificati CA (se il tuo CA li fornisce separatamente)

Li useremo nei prossimi passi.


Passo 4: Configurare Postfix per utilizzare il certificato ACME (SMTP)

Postfix deve sapere dove risiedono il nuovo certificato e la nuova chiave. Il TLS in Postfix è controllato da opzioni come smtpd_tls_cert_file e smtpd_tls_key_file.

Per prima cosa, copia i file in una posizione stabile, ad esempio:

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

Poi dì a Postfix di usarli:

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_* le impostazioni controllano la posta in arrivo (i client che inviano la posta all’utente)
  • smtp_* le impostazioni controllano la posta in uscita (il tuo server che invia la posta ad altri)

Applica le modifiche:

sudo systemctl restart postfix

Se la tua distro utilizza ancora service, regola il comando di conseguenza.


Passo 5: Configurare Dovecot per utilizzare il certificato ACME (IMAP/POP3)

Dovecot gestisce IMAP e POP3. Configura TLS indicando a ssl_cert e ssl_key gli stessi file che abbiamo appena preparato.

Apri la configurazione SSL di Dovecot:

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

Aggiorna (o aggiungi) queste righe:

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

Salva il file e ricarica Dovecot:

sudo systemctl restart dovecot

Ora IMAP/POP3 su TLS presenterà lo stesso certificato commerciale ACME.


Opzionale: Usa la stessa cert in Exim

Se utilizzi Exim come server di posta invece di Postfix, l’integrazione è simile. Exim utilizza le opzioni tls_certificate e tls_privatekey per il TLS.

Nella configurazione di Exim (il percorso dipende dalla distro, spesso /etc/exim4/exim4.conf.template o split config in /etc/exim4/conf.d/), imposta:

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

Poi ricarica Exim:

sudo systemctl restart exim4

Controlla i documenti del pacakge della tua distribuzione se il nome del servizio è leggermente diverso.


Passo 6: Verifica il TLS della tua posta

Puoi eseguire il test da qualsiasi altro computer in cui sia installato OpenSSL .

Test SMTP (Postfix o Exim)

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

Prova IMAP (Dovecot)

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

Se l’output mostra la tua CA commerciale e il nome dell’host corrisponde, sei a posto.


Passo 7: Mantenere il rinnovo e la ricarica automatizzati

acme.sh installa già un cron job che controlla i rinnovi ogni giorno. Quando il tuo certificato è prossimo alla scadenza, lo rinnoverà automaticamente e aggiornerà i file in ~/.acme.sh/mail.example.com/.

Per fare in modo che Postfix/Dovecot/Exim utilizzino sempre la versione più recente, hai due opzioni:

  1. Punta le configurazioni direttamente ai file in ~/.acme.sh/mail.example.com/
    (ad esempio smtpd_tls_cert_file = /root/.acme.sh/mail.example.com/fullchain.cer) e assicurati che solo root possa leggerli.
  2. Scrivi un piccolo script di deploy che copi i file rinnovati in /etc/ssl/mail/ e riavvii o ricarichi il server.

Esempio di 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

Questo script copia il nuovo certificato ACME e la chiave privata nella directory SSL del tuo server, imposta la proprietà e i permessi corretti e riavvia Postfix e Dovecot in modo che inizino immediatamente a utilizzare il certificato aggiornato. Usa le tue credenziali al posto dei segnaposto.

Poi collegalo a 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"

Da questo momento in poi, i rinnovi avverranno automaticamente.


Domande comuni e risoluzione dei problemi

La prima volta che lo fai potrebbero sorgere alcuni problemi. Ecco come affrontarli rapidamente.

Perché la convalida di ACME fallisce con “non autorizzato” o “risposta non valida”?

Questo accade quando la CA non riesce a verificare il tuo record DNS TXT. Controlla che:

  • Il record TXT è esattamente _acme-challenge.mail.example.com
  • Il token non contiene virgolette o spazi aggiuntivi
  • Il DNS si è propagato (dig TXT _acme-challenge.mail.example.com +short)
  • Non hai confuso mail.example.com con example.com

Se non sei sicuro, cancella il record TXT, esegui nuovamente acme.sh --issue e inserisci nuovamente il valore esatto che ACME ti ha fornito.

Perché ricevo “accountDoesNotExist” o errori relativi all’EAB?

Questi appaiono quando la registrazione del tuo account ACME non corrisponde alle credenziali EAB della tua CA.

Fissato da:

  • Ricontrollo dell’URL della directory ACME (produzione vs staging)
  • Assicurati che l’ID della chiave e l’HMAC siano copiati esattamente, senza spazi nascosti.
  • Eseguire nuovamente il comando di registrazione una volta con i valori corretti

I CA commerciali rifiutano qualsiasi registrazione EAB che non corrisponda al profilo rilasciato.

Perché SMTP/IMAP mostra ancora il vecchio certificato?

Questo significa che il servizio non ha ricaricato il nuovo certificato o sta leggendo da un percorso diverso. Controlla:

  • I percorsi TLS in Postfix/Dovecot/Exim corrispondono ai file effettivi
  • Hai riavviato il servizio corretto (systemctl restart postfix dovecot exim4)
  • Nessuna seconda istanza, contenitore o proxy sta servendo il vecchio cert.

Puoi verificare il certificato dal vivo utilizzando:

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

Parole finali

Con questa configurazione, il tuo server di posta presenta un certificato ACME commerciale adeguato ai client SMTP e IMAP/POP3, mentre acme.sh gestisce tranquillamente i rinnovi in background. In questo modo manterrai il pieno controllo sulla catena di certificati e sui nomi dei file, i tuoi utenti non vedranno più gli avvisi di sicurezza e non dovrai più collegarti ogni tot mesi per caricare a mano i nuovi file.

Una volta fatto una volta, puoi ripetere lo stesso schema per altri nomi host, server MX secondari o altri stack di posta utilizzando lo stesso account e lo stesso processo ACME.

Risparmia il 10% sui certificati SSL ordinando oggi stesso da SSL Dragon!

Emissione rapida, crittografia avanzata, affidabilità del browser al 99,99%, assistenza dedicata e garanzia di rimborso entro 25 giorni. Codice coupon: SAVE10

Un'immagine dettagliata di un drago in volo
Scritto da

Scrittore di contenuti con esperienza, specializzato in certificati SSL. Trasforma intricati argomenti di cybersicurezza in contenuti chiari e coinvolgenti. Contribuisci a migliorare la sicurezza digitale attraverso narrazioni d'impatto.