Ricerca nel sito web

Protezione del server di posta gestito da ISPConfig 3 con un certificato SSL Lets Encrypt valido


Su questa pagina

  1. Prerequisiti
  2. Per iniziare
  3. Emissione del certificato
  4. Sostituzione del certificato con il certificato Lets Encrypt
  5. Imposta uno script di rinnovo automatico
  6. Non funziona?

Se stai utilizzando il tuo server di posta, è consigliabile connettersi ad esso in modo sicuro con una connessione SSL/TLS. Avrai bisogno di un certificato valido per queste connessioni sicure. In questo tutorial, impostiamo un certificato Lets Encrypt per il nostro server di posta che si rinnova automaticamente.

Attenzione: questo tutorial è basato su questo tutorial: https://linux-console.net/tutorial/securing-ispconfig-3-with-a-free-lets-encrypt-ssl-certificate/ ma modificato in modo da avere un certificato separato per il tuo server di posta e pannello di controllo. Se hai già seguito quel tutorial, questo tutorial potrebbe interrompere la tua configurazione.

Questo tutorial utilizza i certificati emessi da acme.sh. Se stai usando certbot, segui invece questo tutorial: https://linux-console.net/community/threads/securing-your-ispconfig-3-managed-mailserver-with-a-valid-lets-encrypt-ssl-certificate -certbot.86372/

Nota per ISPConfig 3.2: ISPConfig 3.2 è in grado di creare automaticamente un certificato SSL Lets Encrypt valido per il nome host del server durante l'installazione, che viene utilizzato anche per il server di posta. Non è necessario creare manualmente un certificato SSL Lets Encrypt come descritto qui sui sistemi ISPConfig 3.2 a meno che non siano necessari nomi di dominio diversi nel certificato SSL accanto al nome host del server.

Prerequisiti

  • Il tuo server dovrebbe essere installato secondo il tutorial Perfect Server per il tuo sistema operativo.
  • Assicurati di aver effettuato l'accesso come utente root.

Iniziare

Userò i seguenti nomi host per il mio server di posta: mail.example.com, smtp.example.com, imap.example.com.

Sostituisci tutti i nomi host sottolineati in rosso in questo tutorial con i tuoi.

Crea i record DNS per i tuoi nomi host, in modo che puntino al tuo server. Questi dovrebbero essere record A (ed eventualmente AAAA). Quindi, nell'interfaccia ISPConfig, vai alla scheda Siti.

Rilascio del certificato

In Siti, fai clic su \Aggiungi nuovo sito web\. Imposta mail.example.com come dominio. Disattiva sottodominio automatico e seleziona la casella di controllo Lets Encrypt.

Successivamente puoi aggiungere i tuoi altri nomi host come domini alias, andando all'elenco dei domini alias e facendo clic su \Aggiungi nuovo dominio alias\. Seleziona smtp.example.com come dominio e mail.example.com come sito Web principale. Disabilita il sottodominio automatico e salva il nuovo record. Ripeti l'operazione per eventuali altri nomi host.

Verificare che il certificato sia presente. Puoi farlo con uno strumento come https://www.sslshopper.com/ssl-checker.html

Dovrebbe assomigliare a qualcosa di simile a questo:

Se i nomi host sono elencati e non ci sono altri errori, puoi procedere. Altrimenti, controlla gli errori e risolvili prima di andare oltre.

Sostituzione del certificato con il certificato Lets Encrypt

Ora possiamo sostituire il certificato corrente con il tuo certificato attendibile. Accedi al tuo server ed esegui questi comandi:

(sostituisci mail.example.com con il nome host che hai utilizzato per il sito web)

cd /etc/postfix/
mv smtpd.cert smtpd.cert-$(date +"%y%m%d%H%M%S").bak
mv smtpd.key smtpd.key-$(date +"%y%m%d%H%M%S").bak
ln -s /root/.acme.sh/mail.example.com/fullchain.cer smtpd.cert
ln -s /root/.acme.sh/mail.example.com/mail.example.com.key smtpd.key
systemctl restart postfix
systemctl restart dovecot

Il certificato dovrebbe ora essere utilizzato per il tuo server Postfix e Dovecot. Ma non abbiamo ancora finito! Il certificato Lets Encrypt si rinnova ogni 60 giorni, quindi dovremmo automatizzare il processo di sostituzione del certificato in futuro, quindi non puoi dimenticartene.

Imposta uno script di rinnovo automatico

Apri un nuovo file di script:

nano /etc/init.d/le_mailserver_restart.sh

Incolla questo in quel file:

#!/bin/sh
### BEGIN INIT INFO
# Provides: LE MAILSERVER CERT AUTO UPDATER
# Required-Start: $local_fs $network
# Required-Stop: $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: LE MAILSERVER CERT AUTO UPDATER
# Description: Restart mail server automatically when a new Let's Encrypt certificate is issued.
### END INIT INFO
systemctl restart postfix
systemctl restart dovecot

Rendi eseguibile lo script:

chmod +x /etc/init.d/le_mailserver_restart.sh

Per attivare automaticamente questo script al rinnovo, utilizzeremo systemd.

Crea e apri il nuovo servizio systemd:

nano /etc/systemd/system/le-mailserver-restart.service

Incolla questo in quel file:

[Unit] 
Description="Run script to restart Postfix and Dovecot after the certificate has been renewed"

[Service]
ExecStart=/etc/init.d/le_mailserver_restart.sh

Salva e chiudi questo file. Quindi crea e apri il nuovo file di percorso systemd:

nano /etc/systemd/system/le-mailserver-restart.path

Incolla questo in quel file e sostituisci mail.example.com con il nome host che hai usato:

[Unit]
Description="Monitor the mailserver certificate files to trigger a e-mail services restart after the certificates has been renewed"

[Path]
PathModified=/root/.acme.sh/mail.example.com/
Unit=le-mailserver-restart.service

[Install]
WantedBy=multi-user.target

Salva e chiudi questo file. Quindi avvia il servizio e abilitalo in modo che venga eseguito all'avvio:

systemctl start le-mailserver-restart.path

E abilitalo in modo che venga eseguito all'avvio:

systemctl enable le-mailserver-restart.path

E abbiamo finito!

Non funziona?

Una volta ho avuto un problema con questo, perché Lets Encrypt utilizzava uno dei domini alias come dominio principale. Puoi trovare il dominio principale nello strumento SSL menzionato in precedenza come \Nome comune\ o elencando il contenuto di /root/acme.sh/ per vedere quale dei domini (alias) ha una cartella lì.

Se il problema persiste, apri una discussione sul forum in modo che altri possano aiutarti.