• cerca

SEI GIA' REGISTRATO? EFFETTUA ADESSO IL LOGIN.



HAI DIMENTICATO LA PASSWORD? CLICCA QUI

NON SEI ANCORA REGISTRATO A WEBAREA? CLICCA QUI E REGISTRATI !

Come implementare la crittografia TLS su Postfix

di :: 05 luglio 2018

implementare crittografia tls su postfix

Nell'ottica di configurare un server di posta, per inviare le nostre email o newsletter, cercando di metter in atto tutti gli accorgimenti necessari per inviare email riducendo al minimo la possibilità di finire in spam, vediamo in questo articolo come implementare la crittografia TLS nell'invio delle nostre mail.

Perchè implementare la crittografia TLS?

Lo vediamo in questa immagine. Abbiamo inviato una email, senza crittogragfia TLS, ad un indirizzo di posta Gmail.
Il risultato è il seguente: la mail viene evidenziata con un lucchetto rosso, ed aprendo il dettaglio capiamo il perchè

gmail-tls-non-implementato

Così invece si presenta Gmail nel caso in cui riceva una email con crittografia TLS

gmail-tls-implementato

Vediamo adesso come implementare la crittografia TLS su un server di posta come Postfix

In questo articolo utilizziamo come sistema operativo Centos 7.

1: Il certificato SSL

Per prima cosa, occorre un certificato SSL.

Un certificato SSL (Secure Sockets Layer) ed il suo successore TLS (Transport Layer Security), proteggono le comunicazioni via Internet, assicurando che le informazioni fornite dagli utenti sul web rimangano riservate e non vengano in alcun intercettate da terze parti.

Ne abbiamo sentito parlare molto in questo periodo, con riferimento al passaggio dei siti web da http ad https.
Vediamo come utilizzare un certificato anche per l'invio della posta.

I certificati vengono rilasciati da un’Autorità di Certificazione (CA) e ... costano, anche se esistono fornitori di certificati gratuiti come Let's Encrypt.

Come si procede per ottenere un cerificato da una CA?

  1. si crea sul proprio server una chiave privata (è un file con estensione ".key")
  2. si crea una richiesta di certificato (è un file con estensione ".csr")
  3. si invia la richiesta di certificato alla CA
  4. la CA crea il certificato
  5. si riceve dalla CA il certificato

Nel nostro esempio vogliamo risparmiare per cui creiamo un certificato autofirmato: in pratica lo generiamo noi, simulando di essere noi la CA.

Procediamo con i 5 punti descritti pocanzi

  1. creiamo una chiave privata
    Utilizziamo a questo scopo il programma openssl.
    Se openssl non fosse installato procediamo alla sua installazione con yum
    # yum install openssh​
    Adesso possiamo generare la chiave privata
    # openssl genrsa -out ca.key 2048​

    Abbiamo ottenuto un file con nome "ca.key"

  2. Creiamo la richiesta di certificato
    # openssl req -new -key ca.key -out ca.csr​

    Verrà richiesto l'inserimento di alcune informazioni

    You are about to be asked to enter information that will be incorporated
    into your certificate request.
    What you are about to enter is what is called a Distinguished Name or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter '.', the field will be left blank.
    -----
    Country Name (2 letter code) [XX]:IT
    State or Province Name (full name) []:Italia
    Locality Name (eg, city) [Default City]:Milano
    Organization Name (eg, company) [Default Company Ltd]:Pippo
    Organizational Unit Name (eg, section) []:1
    Common Name (eg, your name or your server's hostname) []:pippo.mioserver.com                    
    Email Address []:postmaster@mioserver.com
    
    Please enter the following 'extra' attributes
    to be sent with your certificate request
    A challenge password []:
    An optional company name []:

    Tralasciate la richiesta di "challenge password" e "optional company name"
    Mentre è importantissimo indicare come "Common name" il nome nost della macchina "fully qualified" (FQDN), cioè il nome host della macchina + il dominio della macchina raggiungibile da web.  Occorre cioè che per quel server sia stato configurato un dominio registrato (un dominio come quelli che usiamo per i siti web) che punti a quell'IP tramite la creazione di un record A nel DNS del dominio.

    Per sapere il nome host fully qualified nel nostro server utlizziamo il comando

    # hostname --fqdn
    server1.servertest.com

    Nel nostro esempio abbiamo un server a cui abbiamo dato nome host "server1" e come dominio "servertest.com", da cui si ottiene il FQDN "server1.servertest.com"

    Abbiamo quindi ottenuto una richiesta di certificato, nel nostro esempio il file "ca.csr​"

  3. invio della richiesta di certificato alla CA
    Abbiamo detto che simuliamo di essere noi la CA per cui... saltiamo questo punto
  4. la CA (noi!) crea il certificato
    openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt​

    Abbiamo creato un certificato, nel nosto esempio il file "ca.crt", di durata 365 giorni

  5. riceviamo il certificato dalla CA
    Essendo noi la CA... il certificato ce l'abbiamo già avendolo creato al punto precedente!

2 - Configurazione diPostfix

Bene, adesso che abbiamo "ricevuto" il certificato lo dobbiamo installare

  1. Per prima cosa creiamo, sotto la directory di postfix, una nuova directory chiamata "tls", dove al suo interno spostiamo i file creati
    # mkdir /etc/postfix/tls
    # mv ca.csr /etc/postfix/tls/ckomail.csr
    # mv ca.key /etc/postfix/tls/ckomail.key
    # mv ca.crt /etc/postfix/tls/ckomail.crt
    
  2. Modifichiamo il file di configurazione di postfix "main.cf"
    # vi /etc/postfix/main.cf​
    ed al suo interno, al fondo, aggiungiamo queste righe
    # TLS configuration starts here
    tls_random_source = dev:/dev/urandom
    
    # SMTP from your server to others
    smtp_tls_security_level = may
    smtpd_tls_security_level = may
    smtpd_tls_cert_file = /etc/postfix/tls/ckomail.crt
    smtpd_tls_key_file = /etc/postfix/tls/ckomail.key
    smtpd_tls_loglevel = 1​
  3. Salviamo, e riavviamo postfix
    # service postfix restart​
  4. Verifichiamo che TLS sia stato correttamente implementato, utilizzando in locale telnet
    # telnet localhost 25
    Trying 127.0.0.1...
    Connected to localhost.
    Escape character is '^]'.
    220 server1.servertest.com ESMTP Postfix
    
    EHLO test
    
    250-mail.rigacci.org
    250-PIPELINING
    250-SIZE 20480000
    250-VRFY
    250-ETRN
    250-STARTTLS
    250-ENHANCEDSTATUSCODES
    250-8BITMIME
    250 DSN
    
    STARTTLS
    
    220 2.0.0 Ready to start TLS​
    quit
    Dopo la riga "220 server1.servertest.com ESMTP Postfix (Debian/GNU)" scriviamo "EHLO test"

    Dovremmo quindi leggere una riga "250-STARTTLS" .... scriviamo quindi "STARTTLS", e se TLS è stato correttamente implementato dovremmo vedere indicato "220 2.0.0 Ready to start TLS​"

    Scriviamo "quit" per uscire.
  5. Inviamo una mail di prova
    Abbiamo implementato TLS su Postfix, proviamo ad inviare una email di prova su gmail all'indirizzo "pippo@gmail.com", con oggetto "Mail di prova" e testo "Test invio". Nel nostro esempio abbiamo utilizzato il programma MUTT
    echo "Test invio" | mutt -s "Mail di prova" pippo@gmail.com​

Controlliamo su gmail, e se tutto è andato correttamente a buon fine la nostra mail si presentera così:

gmail-tls-implementato

Abbiamo così concluso la spiegazione di come implementare TLS su Postfix.

Stay tuned!

Potrebbe interessarti

x

ATTENZIONE