HSC
Network Security Consulting Agency Since 1989 - Specialized in Unix, Windows, TCP/IP and Internet
Text mode: access to the page content
Hervé Schauer Consultants
You are here: Home > Resources > Tips > Installation de postfix avec TLS (serveur de mail sécurisé)
Go to: HSC Trainings
Télécharger le catalogue des formations
Search:  
Version française
   Services   
o Skills & Expertise
o Consulting
o ISO 27001 services
o Audit & Assessment
o Penetration tests
o Vunerability assessment (TSAR)
o Forensics
o ARJEL
o Training courses
o E-learning
   Conferences   
o Agenda
o Past events
o Tutorials
   Resources   
o Thematic index
o Tips
o Lectures
o Courses
o Articles
o Tools (download)
o Vulnerability watch
   Company   
o Hervé Schauer
o Team
o Job opportunities
o Credentials
o History
o Partnerships
o Associations
   Press and
 communication
 
 
o HSC Newsletter
o Bulletin juridique HSC
o Press review
o Press releases
o Publications
   Contacts   
o How to reach us
o Specific inquiries
o Directions to our office
o Hotels near our office
|>|Installation de postfix avec TLS (serveur de mail sécurisé)   

by Yann Berthier (30/11/2000)




--------[Postfix / TLS------------------------------------------------------

Qui n'a pas révé un jour d'avoir son Postfix causer TLS avec ses petits
camarades MTA ? Et bien c'est ce à quoi nous allons nous employer de ce pas.

1. Où commencer ?

Par la page de Postfix, http://www.postfix.org, un MTA sécurisé par
Wietse Venema.

Une présentation complète de postfix, par Alain Thivillon, est 
disponible ici : http://www.hsc.fr/ressources/cours/postfix/

Et bien sur par la page où trouver le patch qui va bien : 
http://www.aet.tu-cottbus.de/personen/jaenicke/postfix_tls/


2. De quoi a t'on besoin ?

Sans ordre particulier, aujourd'hui :

 . Postfix snapshot-20001121
 . OpenSSL-0.9.6
 . et le patch pfixtls-0.6.26

Il faut de préférence utiliser la dernière version du patch.


3. Assez de théorie !

3.1. Décompresser le patch (je veux dire le tarball récupéré sur le site
mentionné plus haut)


3.2. Appliquer le patch.

On se met un dans l'arborescence du source postfix
(décompressé), puis :

 % patch -p0 < patch_to_the_patch/pfixtls.diff
 % cd path_to_postfix_src
 % make makefiles CCARGS="-DHAS_SSL -I/usr/local/ssl/include" \
  AUXLIBS="-L/usr/local/ssl/lib -lssl -lcrypto"         
 (bien sur, à modifier en fonction de votre installation de openssl)
 % make
 # sh INSTALL.sh, par exemple, pour installer postfix (ce qui n'est pas l'objet
 de ce document)


3.3. Où ça se gate. Euh, je veux dire, où il est question de certificats.

3.3.1. Aller chercher de l'aspirine et du rhum

3.3.2. Se créer son certificat serveur

 % openssl genrsa -out what.cert 1024


Puis il faut générer une 'requête de certificat', qui va être ensuite signée
par une autorité de certification :

 % openssl req -in what.cert -out what.req -keyout what.key -new -nodes

Attention, il ne faut pas mettre de passphrase pour protéger la clef privée,
sinon postfix attend la passphrase avant de se lancer au boot ! 

Il est très important également que le Common Name du certificat soit égal au
nom canonique du serveur postfix (ici what.ever.tld)
L'autorité de certification signe :

 % openssl x509 -req -in what.req -out what.crt \
 -CA ca.crt -CAkey ca.key -days 2000 -CAcreateserial

Si vous voulez être votre propre autorité de certification :
http://www.aet.tu-cottbus.de/personen/jaenicke/postfix_tls/doc/myownca.html

Il faut enfin mettre les clefs et les certificats dans /etc/postfix/, et
vérifier les droits sur ces fichiers, *très important* puisque notre
clef privée n'est pas protégée par une pass-phrase :

 # chmod 0400 /etc/postfix/what.key
 # chown root:root /etc/postfix/what.key
 # chown root:root /etc/postfix/what.crt
 # chown root:root /etc/postfix/ca.crt
 

3.4. Où il est enfin question de postfix !

Dans /etc/postfix/main.cf, les paramètres propres à TLS sont à rajouter :

## config TLS
#

# certificats :
# on peut utiliser des certificats différents
# pour le client smtp et le serveur smtpd
smtp_tls_key_file = /etc/postfix/what.key
smtp_tls_cert_file = /etc/postfix/what.crt
smtpd_tls_key_file = /etc/postfix/what.key
smtpd_tls_cert_file = /etc/postfix/what.crt
smtpd_tls_CAfile = /etc/postfix/ca.crt
smtp_tls_CAfile = /etc/postfix/ca.crt
#
# c'est ici que l'on controle l'utilisation ou non de TLS
smtp_use_tls = yes
smtpd_use_tls = yes
#
smtp_tls_note_starttls_offer = yes
smtpd_tls_loglevel = 1
smtp_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_ask_ccert = yes
#relay_clientcerts = hash:/etc/postfix/certs_ok
smtpd_tls_session_cache_database = sdbm:/etc/postfix/smtpd_scache
smtp_tls_session_cache_database = sdbm:/etc/postfix/smtp_scache
smtpd_tls_session_cache_timeout = 3600
smtp_tls_session_cache_timeout = 3600

Dans ca.crt, rajouter à suivre tous les certificats auquels on fait confiance
si on veut du 'verified ok' dans les headers

Il faut enfin rajouter une ligne dans /etc/postfix/master.cf :

tlsmgr	fifo	-	-	n	300	1	tlsmgr

NB : tlsmgr n'est *pas* chrootable.

Il n'y a plus maintenant qu'à lancer postfix :
 # postfix start


4. Où on vérifie que tout est pour le mieux dans le meilleur des mondes :

yann@what:~% telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 what.ever.tld ESMTP Postfix
EHLO what
250-what.ever.tld
250-PIPELINING
250-SIZE 10240000
250-ETRN
250-STARTTLS
250 8BITMIME

Notre postfix annonce désormais STARTTLS !!

Et si on envoie un mail entre deux serveurs qui causent TLS, on peut voir dans
les headers :

Received: from what.ever.tld (what.ever.tld [192.168.2.1])
        (using TLSv1 with cipher EDH-RSA-DES-CBC3-SHA (168/168 bits)) 
	(Client CN "what.ever.tld", Issuer CN "EVER CA" (verified OK))
	by where.ever.tld (Postfix) with ESMTP id 3B71415CD4B
	for <yann@where.ever.tld>; Fri, 17 Nov 2000 11:28:48 +0100 (CET)

On vérifie bien que le dialogue entre what.ever.tld et where.ever.tld a bien
été 'tlsisé', et que le certificat de what présenté est bien le bon (on le
connait car il est dans notre fichier /etc/postfix/ca.crt).

En rajoutant dans /etc/postfix/main.cf la ligne suivante :

smtp_tls_per_site = hash:/etc/postfix/tls_per_site

Avec dans le fichier /etc/postfix/tls_per_site

where.ever.tld	MUST

Le serveur where.ever.tld *doit* alors présenter un certificat signé, ce qui
permet d'éviter qu'une machine puisse récupérer les mails à destination de
where.ever.tld en usurpant son adresse IP. 

Etonnant, non ?



Last modified on 12 November 2003 at 13:55:00 CET - webmaster@hsc.fr
Mentions légales - Information on this server - © 1989-2013 Hervé Schauer Consultants