In questo tutorial imparerai come installare un certificato SSL/TLS su Postfix, il popolare mail transfer agent per Linux.
Abbiamo anche registrato un video che ti guida attraverso l’intero processo. Guardalo qui sotto, oppure continua a leggere per la versione testuale.
Generare un codice CSR su Postfix
Se hai già generato il tuo codice CSR e ti servono solo i passaggi di installazione, vai direttamente a Installare un certificato SSL su Postfix.
Per ottenere un certificato SSL da una CA (Certificate Authority) affidabile, devi inviare un CSR (Certificate Signing Request). Un CSR è un blocco di testo codificato che contiene i tuoi dati di contatto e dell’organizzazione. Hai due opzioni:
- Usa il nostro generatore di CSR per creare il CSR automaticamente.
- Segui il nostro tutorial passo-passo su come generare un CSR in Postfix.
Durante il processo d’ordine con il tuo fornitore SSL, apri il file CSR in un editor di testo semplice e copia-incolla l’intero blocco, incluse le righe —–BEGIN CERTIFICATE REQUEST—– e —–END CERTIFICATE REQUEST—–, nel campo corrispondente. Una volta che la CA convalida la tua richiesta ed emette il certificato, prosegui con l’installazione qui sotto.
Installare un certificato SSL su Postfix
Dopo che la CA convalida la tua richiesta e invia i file del certificato alla tua casella di posta, puoi iniziare l’installazione.
Passaggio 1: prepara i file SSL
Postfix utilizza i certificati SSL/TLS in formato X.509. Un’installazione corretta richiede tre file:
- La tua chiave privata, generata insieme al CSR sul tuo server (ad esempio privkey.key).
- Il tuo certificato SSL principale, il file all’interno dell’archivio ZIP che la CA ti ha inviato via email. In questa guida lo chiameremo server.crt.
- Il certificato/i intermedio/i, il CA bundle dello stesso archivio ZIP. Lo chiameremo intermediate.pem.
Puoi conservare tutti e tre i file in un’unica directory, ad esempio /etc/postfix/. Assicurati che la chiave privata sia leggibile solo dall’utente root:
sudo chmod 600 /etc/postfix/privkey.key
Passaggio 2: costruisci la catena di certificati
Il modo in cui assembli i file dipende dalla tua versione di Postfix. Controllala prima di procedere:
postconf mail_version
Consigliato (Postfix 3.4 e versioni successive)
Crea un unico file catena che contenga la chiave privata, il certificato del server e gli intermedi, esattamente in questo ordine:
cat /path/to/privkey.key /path/to/server.crt /path/to/intermediate.pem > /etc/postfix/rsachain.pem
Questo metodo moderno evita problemi di rollover dei certificati e funziona correttamente con la direttiva smtpd_tls_chain_files di Postfix. Proteggi il file catena allo stesso modo della chiave, poiché contiene la tua chiave privata:
sudo chmod 600 /etc/postfix/rsachain.pem
Alternativa (tutte le versioni di Postfix)
Se utilizzi una versione di Postfix precedente alla 3.4, tieni la chiave separata e combina solo il certificato del server con gli intermedi:
cat /path/to/server.crt /path/to/intermediate.pem > /etc/postfix/server.pem
Farai riferimento a questo bundle e alla chiave privata separatamente nella configurazione riportata di seguito.
Passaggio 3: configura Postfix
Apri il file di configurazione principale /etc/postfix/main.cf e scegli lo stile adatto alla tua configurazione.
Opzione A: Postfix 3.4 o versioni successive (consigliato). Fai puntare Postfix all’unico file catena che hai creato:
smtpd_tls_chain_files = /etc/postfix/rsachain.pem
smtpd_tls_security_level = may
Opzione B: legacy (Postfix precedente alla 3.4). Fai riferimento al bundle di certificati e alla chiave separatamente:
smtpd_tls_cert_file = /etc/postfix/server.pem
smtpd_tls_key_file = /etc/postfix/privkey.key
smtpd_tls_security_level = may
Alcune note su queste direttive:
- smtpd_tls_security_level = may abilita il TLS opportunistico per la posta in entrata sulla porta 25. Questa è l’impostazione corretta per un server MX pubblico: annuncia STARTTLS ai mittenti che lo supportano, pur continuando ad accettare connessioni in chiaro da quelli che non lo supportano. Non impostarlo su encrypt su un MX pubblico, poiché ciò respingerebbe la posta legittima proveniente da mittenti che usano solo connessioni in chiaro. (Il vecchio interruttore smtpd_use_tls = yes è deprecato; smtpd_tls_security_level lo sostituisce.)
- Usa un certificato con catena completa (il tuo certificato più gli intermedi), sia che lo fornisca tramite smtpd_tls_chain_files (Opzione A) sia tramite smtpd_tls_cert_file (Opzione B). Servire solo il certificato foglia causa errori di convalida della catena lato ricevente.
- Le versioni moderne di Postfix disabilitano già di default SSLv2, SSLv3 e i cifrari deboli, quindi non è necessario aggiungere ulteriori liste di esclusione per il traffico in entrata sulla porta 25.
Proteggi il servizio di submission (porta 587)
Quando i tuoi utenti inviano posta tramite Postfix (via Outlook, Thunderbird, Apple Mail e simili), si connettono sulla porta di submission 587, non sulla porta 25, riservata alla consegna server-to-server. Poiché solo i tuoi utenti autenticati usano questa porta, puoi applicare regole più rigide in tutta sicurezza: richiedere il TLS e impostare un protocollo minimo di TLS 1.2.
Apri /etc/postfix/master.cf, assicurati che il servizio submission sia abilitato, e aggiungi le seguenti sostituzioni:
submission inet n - y - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_tls_mandatory_protocols=>=TLSv1.2
Alcuni dettagli che spesso creano confusione:
- smtpd_tls_mandatory_protocols ha effetto solo quando il livello di sicurezza è encrypt (TLS obbligatorio), che è esattamente il caso qui sulla porta 587. Per il TLS opportunistico sulla porta 25 (livello di sicurezza may), l’impostazione equivalente sarebbe invece smtpd_tls_protocols, ma su un MX pubblico in genere si lascia questa impostazione ai valori predefiniti di Postfix per non respingere i mittenti più datati.
- La sintassi compatta >=TLSv1.2 richiede Postfix 3.6 o versioni successive e non deve avere alcuno spazio tra >= e il numero di versione. Su Postfix 3.4 o 3.5, usa invece la forma di esclusione: smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1.
- In master.cf, non c’è spazio attorno al simbolo = in una sostituzione -o (ad esempio -o smtpd_tls_security_level=encrypt), mentre in main.cf si scrive chiave = valore con gli spazi.
Opzionale: TLS implicito sulla porta 465. Molti client moderni preferiscono la porta 465 (SMTPS / “submissions”), che avvolge l’intera sessione in TLS fin dall’inizio. L’RFC 8314 la approva insieme alla 587. Per offrirla, abilita il servizio smtps in master.cf con la modalità wrapper:
smtps inet n - y - - smtpd
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
Passaggio 4: ricarica Postfix
Prima di ricaricare, è buona norma controllare la configurazione per eventuali errori di sintassi:
sudo postfix check
Se il comando non restituisce nulla, applica le modifiche. Un ricaricamento (reload) rilegge la configurazione senza interrompere le connessioni attive:
sudo systemctl reload postfix
Sui sistemi senza systemd, il comando equivalente è:
sudo postfix reload
Passaggio 5: verifica il certificato
Conferma che Postfix stia servendo il certificato e la catena corretti con OpenSSL. Sostituisci yourdomain.com con il nome host del tuo server di posta:
openssl s_client -starttls smtp -connect yourdomain.com:25 -servername yourdomain.com </dev/null
| openssl x509 -noout -issuer -subject -dates
L’output dovrebbe mostrare il soggetto del certificato del tuo server, il suo emittente (la CA) e le date di validità. Per testare invece il servizio di submission, cambia la porta in 587 (anch’essa usa STARTTLS) oppure, per la porta con TLS implicito 465, rimuovi -starttls smtp e connettiti direttamente alla porta 465. Congratulazioni, hai installato con successo un certificato SSL su Postfix.
Testa la tua installazione SSL
Dopo aver installato il certificato, è opportuno scansionare la tua configurazione alla ricerca di errori o vulnerabilità. Il nostro SSL Checker ti fornisce report istantanei su ogni aspetto del tuo certificato e della sua configurazione, così puoi confermare che la catena sia completa e che i protocolli siano configurati correttamente.
Dove acquistare il miglior certificato SSL per Postfix?
Sei arrivato nel posto giusto. In SSL Dragon offriamo una delle gamme più ampie di prodotti SSL ad alcuni dei prezzi più bassi sul mercato, e tutti i nostri certificati sono compatibili con il mail transfer agent Postfix.
Non sai quale certificato scegliere? Il nostro SSL Wizard rende semplice e veloce trovare il prodotto giusto per il tuo server di posta.
Domande frequenti
Il TLS viene configurato in /etc/postfix/main.cf. Su Postfix 3.4 e versioni successive, la direttiva consigliata è smtpd_tls_chain_files, che punta a un unico file PEM contenente la chiave privata, il certificato del server e gli intermedi. Nelle versioni più vecchie, invece, si impostano separatamente smtpd_tls_cert_file (un certificato a catena completa) e smtpd_tls_key_file (la chiave privata). Le sostituzioni per singolo servizio per le porte 587 e 465 si trovano in /etc/postfix/master.cf.
Per smtpd_tls_chain_files, l’ordine è prima la chiave privata, poi il certificato del server (foglia), quindi il/i certificato/i intermedio/i:cat privkey.key server.crt intermediate.pem > /etc/postfix/rsachain.pem
Se l’ordine è errato, Postfix non riuscirà a caricare la catena. Non includere il certificato della CA radice; i client lo considerano già attendibile.
Usa may (TLS opportunistico) per la posta in entrata sulla porta 25. Un MX pubblico deve accettare posta da mittenti che non supportano il TLS, e encrypt li respingerebbe, causando la perdita di email. Riserva encrypt (TLS obbligatorio) per il servizio di submission autenticato sulla porta 587, dove si connettono solo i tuoi utenti.
Per le modifiche relative al certificato e al TLS è sufficiente un ricaricamento (reload); esegui sudo systemctl reload postfix (oppure sudo postfix reload). Il reload rilegge la configurazione senza interrompere le connessioni attive. Esegui prima sudo postfix check per individuare eventuali errori di sintassi prima che diventino effettivi.
Connettiti con OpenSSL e leggi il certificato che Postfix presenta tramite STARTTLS:openssl s_client -starttls smtp -connect yourdomain.com:25 -servername yourdomain.com </dev/null | openssl x509 -noout -issuer -subject -dates
Questo comando stampa il soggetto, l’emittente e le date di validità del certificato. Puoi anche eseguire una scansione completa con i nostri strumenti SSL per confermare che la catena sia completa.
In sintesi
Installare un certificato SSL su Postfix si riduce ad assemblare un file PEM a catena completa, indirizzare main.cf ad esso con smtpd_tls_chain_files (o la coppia legacy smtpd_tls_cert_file / smtpd_tls_key_file), impostare smtpd_tls_security_level = may per la posta in entrata, rafforzare il servizio di submission sulla porta 587, controllare la configurazione con sudo postfix check e ricaricare Postfix.
Hai bisogno prima di un certificato? Sfoglia i nostri certificati SSL.
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


