tbsLogo guillemet Adresse : 22 rue de Bretagne - 14000 CAEN - FRANCE
Tél. : 02 76 30 59 00 - E-mail : certs@tbs-internet.com
guillemet et filet Friday, 29-Mar-2024 07:15:09 UTC Recherche arc gauche
arc droit langue FR
Les certificats
Le comparatif
Navigateurs
Notre gamme
Partenaires
Laboratoire
Sécurité Email
Outlook et S/MIME
Chiffrement S/MIME
Signature électronique S/MIME
S/MIME sous Unix
FAQ
Forums
The Satellite
Encyclopedia
Consulting
filet vert

Qmail supporte TLS !

Introduction

Qmail dispose d'un patch TLS depuis 1999. Pour l'avoir testé et utilisé dès sa sortie et depuis lors, il fonctionne parfaitement !

Cette extension permet :

  • l'authentification forte des serveurs SMTP

  • l'établissement d'une session TLS (chiffrée) entre 2 serveurs

  • l'authentification forte des clients SMTP (que pour le relais)

  • l'établissement d'une session TLS (chiffrée) entre le client et le serveur


Ceci permet par exemple de faire circuler le courrier dans des canaux chiffrés entre les serveurs d'une même organisation
(VPN SMTP), de forcer le mode chiffré vers des destinations identifiées, ou encore d'autoriser le relais après présentation
d'une authentification TLS cliente. A terme cette extension permettra de ne plus transporter de courrier en clair.

On peut faire un parallèle entre cette extension STARTTLS et ce que HTTPS est à HTTP. La seule différence notable est que
STARTTLS permet d'utiliser le même port (25) pour le chiffré et le non chiffré alors que HTTP utilise encore (pour des raisons
historiques) un port différent.

Pour plus d'information générale en français sur STARTTLS pour SMTP, POP3 et IMAP, en particulier sur les autres logiciels
supportant cette norme, y compris les UAs, voir : https://www.tbs-internet.com/ssl/email.html.

J'ai écris une petite doc qui ne demande qu'à s'étoffer pour faciliter la mise en route de cette extension.

Voici :

Compilation

Pour mettre en route l'extension STARTTLS dans Qmail :

  • récupérez les sources de qmail 1.03.

  • Installez OpenSSL 0.9.6, la librairie cryptographique ( ./config; make; make install ).

  • Ensuite appliquez le patch http://www.esat.kuleuven.ac.be/~vermeule/qmail/tls.patch aux sources de Qmail.
    Je vous conseille de definir la variable DEBUG ( #define DEBUG 1 ) pour activer des logs supplémentaires dans
    qmail-remote.c .

  • Si vous voulez installer Qmail avec les outils spamcontrol, l'ajout des 2 patchs est non trivial,
    c'est pour cela que vous trouverez ici une version prépatchée.

    Dès lors, poursuivez avec la compilation et l'installation de Qmail comme indiqué dans le fichier INSTALL ou UPGRADE.

Installation

Une fois le Qmail installé et configuré, on va maintenant paramétrer les aspects TLS.

  1. récupérer les racines des principales autorités de certification ici :
    https://www.TBS-internet.com/secure/ca/tbs-trusted-roots.tgz.

  2. Placez le fichier clientca.pem qui se trouve dans cette archive dans /var/qmail/control/
    Les racines des autorités de certification permettront d'authentifier les clients qui viendront se connecter
    sur votre serveur, si besoin est. Le patch TLS de Qmail n'authentifie pas, par defaut, les serveurs.


  3. obtenir un certificat SSL/TLS pour votre serveur. Ceci sera la carte d'identité électronique de votre serveur.
    Il y a 2 grandes façon de faire. Soit utiliser un certificat standard fournit par une autorité de certification (CA)
    soit créer votre propre autorité de certification (je n'aborde pas ce point ici, voir http://www.openCA.org/).

    Le plus simple pour démarrer consiste à utiliser un certificat de test d'un CA.
    Pour se faire, on utilise OpenSSL que l'on suppose installé dans /usr/local/ssl/ :
# 2.1: fabriquez une clef privée
# (remplacez "/var/log/messages" par un fichier de log quelconque (cela sert à
# initialiser le moteur random) et "smtp.toto.com" par le nom de votre serveur)
cd /usr/local/ssl/private
openssl genrsa -rand /var/log/messages 1024 > smtp.toto.com.key
# protégez et faites une sauvegarde de cette clef
chmod 400 smtp.toto.com.key
chown root smtp.toto.com.key


# 2.2: fabriquez une demande de certificat
cd /usr/local/ssl/certs
openssl req -new -key ../private/smtp.toto.com.key > smtp.toto.com.csr

# le système vous demande alors de renseigner les champs de votre certificat
# voilà comment renseigner les champs correctement!
# Le code ISO de votre pays
# => Country Name (2 letter code) [AU]:FR
# Le nom du département dans lequel vous êtes (exemple 92 = Hauts de Seine)
# => State or Province Name (full name) [Some-State]:Hauts de Seine
# La ville
# => Locality Name (eg, city) []:Nanterre
# le nom de votre entreprise/université/association
# => Organization Name (eg, company) [Internet Widgits Pty Ltd]:TOTO
# optionnel: le nom du service/division
# => Organizational Unit Name (eg, section) []:service technique
# Très important: le nom officiel du serveur (le nom en toutes lettres qui 
# figure dans la partie droite du record MX; exemple: "smtp.toto.com" dans 
# "toto.com. IN MX 0 smtp.toto.com."); ce champ est vérifié lors de 
# l'authentification
# => Common Name (eg, YOUR name) []:smtp.toto.com
# optionnel: ne rien mettre (valider) ou éventuellement postmaster@toto.com
# => Email Address []:
# ne rien mettre (valider)
# => A challenge password []:
# ne rien mettre (valider)
# An optional company name []:


2.3 : demandez votre certificat

    • Obtenir ici un certificat Gratuit pour 30 jours

    • copier/coller votre fichier CSR (smtp.toto.com.csr) dans la grande boite "Certificate Signing Request"

    • Finissez le remplissage de la page (il faut rentrer des informations correctes, sinon l'audit sera impossible)

2.4 : installez votre certificat

Faites un copier/coller du bloc résultat (avec les lignes commencant par ----- ) et placez cela dans
un nouveau fichier smtp.toto.com.crt dans votre répertoire /usr/local/ssl/certs


3 : constitution du fichier

Il ne reste plus qu'à constituer le fichier /var/qmail/control/servercert.pem qui doit être la concaténation du fichier de clef smtp.toto.com.key (fabriqué en 2.1) et du fichier certificat smtp.toto.com.crt (récupéré en 2.4). Il faut protéger ce fichier :

chmod 640 servercert.pem
chown qmaild.qmail servercert.pem


4 : testez  !

Lancez ou relancez votre Qmail et faites un "telnet localhost 25" Tapez "EHLO toto" et vous devez voir en retour une ligne.

250-STARTTLS

Si ce n'est pas le cas, vérifiez les logs.

Usage

Pour tester avec un autre serveur maintenant, envoyez un mail à tag-ping@TBS-internet.com qui renverra votre message. Notre ligne "Received" contiendra "with XXX encrypted SMTP" si votre message a été reçu par nous en mode STARTTLS (notre serveur utilise un Qmail avec STARTTLS). Votre Qmail qui doit recevoir le retour indiquera dans son champ received un "with XXX encrypted SMTP" si il a reçu le message de notre serveur en mode TLS. A la réception du message il ne vous reste donc plus qu'à étudier les entêtes du message pour savoir si STARTTLS fonctionne bien dans les deux sens. Vous pouvez aussi envoyer un email à bounce@esmtp.org pour tester avec un serveur Sendmail.

Pour optimiser la négociation TLS, ce n'est pas obligatoire, il est bon de fournir au serveur une clef RSA. Pour se faire, utilisez une entrée cron du style :

35 * * * *       umask 0077 ; /usr/bin/openssl genrsa -out /var/qmail/control/rsa512.new.$$ 512 > /dev/null 2>&1; chown qmaild.qmail /var/qmail/control/rsa512.new.$$ ; /bin/mv -f /var/qmail/control/rsa512.new.$$ /var/qmail/control/rsa512.pem

Qmail permet d'autoriser le relais de mail grâce à l'authentification par certificat client. Pour activer l'authentification client, c'est ultra simple : il faut avoir mis le fichier clientca.pem (étape 1 de installation) et placer dans le fichier /var/qmail/control/tlsclients la liste des adresses emails pour lesquels on veut relayer. Ainsi, si un certificat client émis par l'une des autorités définies dans clientca.pem contient un champ email-adress qui correspond à l'une des entrées (1 par ligne) de tlsclients, alors l'authentification est valide !

Pour tester cela, c'est simple : obtenez un certificat utilisateur pour Netscape à http://www.tbs-certificats.com/email-securise.html (Outlook ne présente pas les certificats clients). Ensuite tentez d'envoyer un mail avec Netscape via votre serveur depuis une IP non autorisée à relayer. Cela doit marcher ! Vous verrez une trace dans les entêtes de l'email ainsi transmis.

Si vous voulez faire en sorte que votre serveur s'authentifie en tant que client auprès d'autres serveurs TLS (qmail ne demande un certificat client que pour le relais, mais postfix et sendmail eux peuvent demander systématiquement un certificat client), il faut placer un certificat de type client (nsCertType) dans le fichier /var/qmail/control/clientcert.pem
Si votre certificat serveur est aussi de type client, alors vous pouvez faire un lien. Oui, il est possible d'obtenir un certificat client Thawte pour son serveur, le mettre dans clientcert.pem, et configurer un serveur qmail distant pour accepter de relayer sur présentation de ce certificat.

Enfin il est possible de configurer votre qmail pour qu'il exige une présentation d'un certificat avant l'envoi d'un mail à un serveur (authentification du serveur distant). Par exemple, si vous voulez authentifier intranet.toto.com et exiger un canal TLS pour lui transmettre du mail, placez dans le répertoire /var/qmail/control/tlshosts/ un fichier du nom du serveur :
intranet.toto.com.pem . Ce fichier, doit contenir la racine de l'autorité qui a signé ce certificat. Le nom du fichier ou lien doit être FQDN.pem où FQDN est le nom en toutes lettres du MX de la zone en question. Le plus simple, consiste a mettre les racines des autorités dans un sous répertoire, et faire un lien vers chaque racine en guise de fichier. Ainsi, si le serveur intranet.toto.com présente bien un certificat émis par l'autorité spécifiée et dont le nom usuel (CN) correspond, alors le serveur est authentifié ! Notez que cette option peut causer le refus de l'envoi si le serveur distant ne réponds pas conformément à votre demande !

Conclusion

Vous voyez, la mise en place de TLS est simple : une fois le patch compilé, une simple certificat a mettre en place et c'est bon !

N'hésitez pas à me fournir du feedback sur votre expérience directement par email (tag-ssl-feedback@TBS-internet.com) et/ou à rejoindre la liste de diffusion cryptox509 (voir https://www.tbs-internet.com/ssl/liste.html). Votre aide permettra d'améliorer cette doc et d'alimenter https://www.tbs-internet.com/ssl/email.html.



TBS est une société de conseil spécialisée dans les télécommunications spatiales, le conseil aux ISPs et la sécurité du commerce électronique. TBS-internet commercialise les solutions de Thawte (groupe VeriSign) en France.

Sécurisation Outlook Express | Sécurisation Netscape Communicator | Sécurisation serveurs SMTP/POP/IMAP |
Autres documents sécurité TBS

blanc
blanc [Webmaster] [Crédits] [Les certificats] [The Satellite Encyclopedia] [Pitux] [Consulting] [Accueil]
© TBS Internet, tous droits réservés. Toute reproduction, copie ou mirroring interdit.
Dernière modification: 1 July 2020
Magnifique: vous utilisez IPv6 depuis 2a02:c88:100:e240:2d8:61ff:fe4d:cc48 !