Le CNRS
   Accueil > La Délégation à votre service > Informatique > Les certificats > Espace administration système > Mise en oeuvre d’un SMTP Postfix ou Sendmail utilisant les cerficats issus de l’IGC du CNRS

Mise en oeuvre d’un SMTP Postfix ou Sendmail utilisant les cerficats issus de l’IGC du CNRS

Le protocole SMTP a été étendu en 1999 pour le support de TLS (Transport Layer Security) la version normalisée du protocole SSL (Secure Socket Layer). Cette extension, désignée dans la suite par "Extension STARTTLS" permet d'utiliser des certificats dans le dialogue entre un client et un serveur ou bien entre deux serveurs de messagerie.


Cette page WWW résume les opérations nécessaires pour la configuration d'un serveur Postfix 1.1.x ou Sendmail 8.12.x utilisant les certificats issus de l'IGC du CNRS.


 

Sommaire


Pourquoi des certificats dans la messagerie ?

Il y a deux raisons qui peuvent inciter à utiliser des certificats au niveau des serveurs de messagerie.

  1. Chiffrer le courrier reçu ou émis vers un ou plusieurs domaines donnés.
  2. Configurer les règles anti-relais du serveur en fonction de certificats d'utilisateurs.

Le chiffrement entre serveurs de messagerie est une fonctionnalité peu utilisée au CNRS. Elle est pourtant intéressante pour des organismes qui veulent garantir la confidentialité des échanges via Internet de courriers électroniques entre leurs différents sites. En configurant tous les serveurs de  l'organisme pour utiliser l'extension "STARTTLS" du protocole SMTP, on a l'assurance que tout le courrier inter-filiales est chiffré.

La configuration des règles anti-relais via les certificats est une réponse optimale au problème que rencontrent nos utilisateurs lorsqu'ils sont en déplacement avec un poste de travail portable.

En effet, la configuration de la messagerie sur ce portable mentionne explicitement le serveur qui va retransmettre les messages envoyés depuis le portable. Ce serveur s'appelle le relais de messagerie ou serveur SMTP sortant. C'est le serveur de messagerie du campus ou bien celui du laboratoire.

En général, ce serveur refuse tout message émis depuis un poste de travail qui n'est pas physiquement raccordé au réseau du campus ou du laboratoire. C'est une bonne chose. Elle évite que le serveur soit utilisé comme relais pour des envois en masse de messages à caractère publicitaire. Ce type d'envois nécessite de trouver sur l'Internet un serveur quelconque qui autorise le relais librement, de lui envoyer ensuite une seule fois le message accompagné de l'adresse de plusieurs centaines de milliers de destinataires. Ce sont alors les ressources du serveur, la bande passante du campus et de Renater qui sont utilisées pour acheminer ces courriers. Le taux d'erreurs dans ce type d'envoi étant très important, c'est aussi l'administrateur de ce serveur qui aura à gérer dans sa propre boite à lettres les dizaines de milliers de messages de rejet.

Dans la suite, nous décrirons comment configurer le serveur de messagerie afin de permettre à des utilisateurs disposant de certificats personnels CNRS d'émettre sans difficultés des messages sans pour autant laisser le serveur en relais ouvert à tous.

La demande de certificat pour le serveur

La demande de certiticat pour un serveur est décrite dans la fiche "Mise en oeuvre d'un serveur Apache utilisant les certificats de l'IGC du CNRS". Le nom indiqué dans le certificat sera celui du nom Internet du serveur de messagerie, tel qu'il figure dans le DNS.

Notons que l'extension "STARTTLS" prévoit qu'un serveur de messagerie utilise deux certificats différents :

  • le premier lorsque le serveur reçoit une connexion depuis un autre serveur. C'est un certificat de type serveur SSL/TTS.
  • le second est utilisé lorsque le serveur de messagerie envoie des messages. Il se comporte alors comme un client vis à vis du serveur de messagerie du destinataire. Il nécessite donc un certificat de type client SSL/TLS.

Les certificats délivrés par l'IGC du CNRS ne permettent pas d'obtenir un certificat client pour des machines. Dans les configurations expliquées dans la suite, nous ne configurerons les certificats que dans la partie serveur.

Configuration de Postfix 1.1.x

Le support de l'extension STARTTLS est inclus dans les distributions de Postfix. L'utilisation de certificats dans Postfix necéssite donc que la modification du fichier de configuration main.cf et le rajout du certificat du serveur ainsi que des autorités de certification CNRS dans le répertoire de Postfix.

Les exemples ci-dessous illustrent la configuration pour un serveur Postfix 1.1.x sous Linux RedHat 7.3 ou ultérieure. Il est supposé que le serveur Postfix est déjà opérationnel. Nous n'aborderons donc que les modifications nécessaires pour que les règles anti-relais reconnaissent des certificats CNRS.

Postfix permet d'autoriser le relais de messagerie en fonction du certificat de l'utilisateur selon deux méthodes distinctes :

  • soit le certificat de l'utilisateur est dans une liste exhaustive de certificats acceptés,
  • soit le certificat de l'utilisateur a été émis par une autorité de certification faisant partie d'une liste exhaustive d'autorités acceptées.

Il n'est malheureusement pas prévu de listes de contrôles d'accès permettant d'autoriser les certificats des utilisateurs sur la base de leurs attributs, comme par exemple, "autoriser tous les certificats dont l'attribut organisationalUnit (OU) est le code de mon laboratoire".

En pratique, on peut très bien laisser tout titulaire d'un certificat CNRS utiliser son serveur en relais de messagerie. C'est d'ailleurs ce que nous avons fait pour le serveur camus.dr15.cnrs.fr.  Les entêtes d'un message envoyés après authentification par un certificat contiennent le nom du titulaire de ce certificat. Il serait donc éventuellement très simple de repérer l'auteur d'un usage abusif de notre relais de messagerie.

La suite décrit les modifications à effectuer dans le fichier de configuration "main.cf" de Postfix. Ce dernier se trouve dans le répertoire "/etc/postfix" dans les distributions Linux Red-Hat 7.3 ou ultérieures. C'est ce répertoire qui sera utilisé dans les exemples qui suivent.

La clé privée du serveur

Le chemin d'accès du fichier contenant la clé privée du serveur est indiqué par la directive "smtpd_tls_key_file" qui s'utilise comme suit :


smtpd_tls_key_file /etc/postfix/server.key

Déplacez le fichier contenant la clé privée du certificat de votre serveur en lieu et place du fichier indiqué dans la directive "smtpd_tls_keyfile". Modifiez les permissions de ce fichier afin qu'il ne soit lisible que par l'administrateur. Les commandes Unix correspondantes sont les suivantes :


mv nom.de.votre.serveur.key /etc/postfix/server.key
chown root /etc/postfix/server.key
chmod 400 /etc/postfix/server.key

Le certificat du serveur

Le chemin d'accès du fichier contenant le certificat du serveur est indiqué par la directive "smtpd_tls_cert_file" qui s'utilise comme suit :


smtpd_tls_cert_file /etc/postfix/server.crt

Déplacez le fichier contenant le certificat de votre serveur en lieu et place du fichier indiqué dans la directive "smtpd_tls_cert_file". Les commandes Unix correspondantes sont les suivantes :


mv nom.de.votre.serveur.crt /etc/postfix/server.crt
chown root /etc/postfix/server.crt

Les autorités de certification

Le chemin d'accès du fichier contenant la liste des autorités de certification autorisées est indiqué par la directive "smtpd_tls_CAfile" qui s'utilise comme suit :


smtpd_tls_CAfile /etc/postfix/CAcert.pem


Copiez dans le fichier indiqué, l'une à la suite de l'autre, toutes les autorités de certifications que vous acceptez.  Tout certificat d'utilisateur émis par l'une de ces autorités sera reconnu comme vallide.

Vous trouverez ci-dessous un fichier "CAcert.pem" ontenant les certificats de l'autorité racine du CNRS, celui de CNRS-Standard et celui de CNRS-Plus. Recopiez ce fichier dans /etc/postfix/CAcert.pem. Les commandes Unix pour effectuer cette opération sont :

cp CAcert.pem /etc/postfix/CAcert.pem
chown root /etc/postfix/CAcert.pem

La configuration de Postfix

Les directives suivantes de Postfix sont à rajouter à la fin du fichier "main.cf" de Postfix. Elles permettent une utilisation du protocole TLS pour toutes les connexions SMTP émises à partir d'un client ou d'un serveur vers votre serveur de messagerie.

# RAJOUTS LOCAUX POUR AUTHENTIFICATION PAR CERTIFICATS
# Les options pour le serveur smtpd
#
smtpd_tls_cert_file = /etc/postfix/server.crt
smtpd_tls_key_file = /etc/postfix/server.key
smtpd_tls_CAfile = /etc/postfix/CAcert.pem
smtpd_tls_received_header = yes
smtpd_use_tls = yes
smtpd_tls_ask_ccert = yes


Il est recommandé de compléter ces directives avec celles qui permettent d'utiliser TLS pour toutes les connexions SMTP émises à partir de votre serveur vers un serveur tiers. Notez qu'en théorie, votre serveur aurait besoin pour s'authentifier d'un certificat client SSL/TLS. Malheureusement, l'IGC du CNRS n'en distribue pas. C'est pourquoi les lignes décrivant la partie cliente ne configurent pas de certificat.

En ce qui concerne les autorités de certifications, vous pouvez être moins restrictif et accepter le certificat de la machine distante, même s'il n'est pas émis par l'IGC du CNRS. Nous avons supposé que le même serveur était aussi configuré comme serveur Apache avec mod_ssl. Nous utiliserons donc pour Postfix une partie de la configuration d'Apache avec mod_ssl :

# Les options pour le client smtp. Utilisent la conf. de mod_ssl
#
smtp_tls_CAfile = /etc/httpd/conf/ssl.crt/ca-bundle.crt
smtp_tls_CApath = /etc/httpd/conf/ssl.crt
smtp_use_tls = yes


Dans le cas où Apache et/ou mod_ssl ne sont pas installés sur votre serveur, utilisez les lignes ci-dessous :

# Les options pour le client smtp. N'utilisent pas la conf. de mod_ssl
#
smtp_tls_CAfile = $smtpd_tls_CAfile
smtp_use_tls = yes


Toutes ces directives ne modifient pas la configuration des règles anti-relais. Pour ce faire, vous devez rajouter "permit_tls_all_clientcerts" dans la directive "smtpd_recipient_restrictions" qui correspond à la configuration actuelle des règles anti-relais. Repérez cette directive dans votre fichier de configuration. Elle est variable selon les sites. Par exemple, vous aurez :

smtpd_recipient_restrictions = permit_mynetworks,
check_relay_domains


Rajoutez à cette ligne la propriété "permit_tls_all_clientcerts". Elle permet d'autoriser le relais de messagerie pour toute connexion authentifiée par un certificat émis par l'une des autorités contenues dans le fichier "CAcert.pem". Vous obtenez :


smtpd_recipient_restrictions = permit_mynetworks,
permit_tls_all_clientcerts,
check_relay_domains


Dans le cas où la directive "smtpd_recipient_restrictions" n'existe pas dans votre fichier "main.cf", insérez-la de la façon suivante :


smtpd_recipient_restrictions = permit_mynetworks,
permit_tls_all_clientcerts,
reject

Relancez votre serveur Postfix

Vous pouvez relancer votre serveur Postfix par les commandes suivantes :

postfix stop
postfix start


Effectuez des tests de connexions depuis un poste de travail configuré pour utiliser TLS (voir ci-dessous) pour les connexions avec votre serveur. Les journaux de Postfix contenus dans /var/log/maillog vous donneront des indications sur les erreurs possibles.

Configuration de Sendmail 8.12.x

Le support de l'extension STARTTLS est inclus dans les distributions de Sendmail 8.12.x sur les serveurs Linux. L'utilisation de certificats dans Sendmail ne necéssite donc que la modification du fichier de configuration sendmail.mc et le rajout du certificat du serveur ainsi que des autorités de certification CNRS dans les répertoires appropriés.

Les exemples ci-dessous illustrent la configuration pour un serveur Sendmail 8.12.x sous Linux RedHat 7.3 ou ultérieure. Il est supposé que le serveur Sendmail est déjà opérationnel. Nous n'aborderons donc que les modifications nécessaires pour que les règles anti-relais reconnaissent des certificats CNRS.

Sendmail permet d'autoriser le relais de messagerie en fonction du certificat de l'utilisateur selon deux méthodes distinctes :

  • soit le nom distingué (DN, Distinguished name) du certificat de l'utilisateur est dans une liste exhaustive de certificats acceptés,
  • soit le certificat de l'utilisateur a été émis par une autorité de certification faisant partie d'une liste exhaustive d'autorités acceptées.
  • soit le nom distingué du certificat de l'utilisateur satisfait une expression régulière

En pratique, on peut très bien laisser tout titulaire d'un certificat CNRS utiliser son serveur en relais de messagerie. C'est d'ailleurs ce que nous avons fait pour le serveur camus.dr15.cnrs.fr.  Les entêtes d'un message envoyés après authentification par un certificat contiennent le nom du titulaire de ce certificat. Il serait donc éventuellement très simple de repérer l'auteur d'un usage abusif de notre relais de messagerie.

La suite décrit les modifications à effectuer dans le fichier de configuration "sendmail.mc" de Sendmail. Ce dernier se trouve dans le répertoire "/etc/mail" dans les distributions Linux Red-Hat 7.3 ou ultérieures. C'est ce répertoire qui sera utilisé dans les exemples qui suivent.

La clé privée et le certificat du serveur

Sur Linux RedHat 7.3 et ultérieurs, le répertoire "/usr/share/ssl/certs" est destiné à recevoir les certificats et clés privés destinés aux divers services utilisant SSL. Les certificats et clés privées sont concaténées dans un fichier qui porte le nom du service pour lesquels ils sont destinés.

Dans le cas de Sendmail, on crée donc le fichier "/usr/share/ssl/certs/sendmail.cf" de la façon suivante :

cd /usr/share/ssl/certs/
cat nom.de.votre.serveur.key nom.de.votre.serveur.pem > sendmail.pem
chown root sendmail.pem
chmod 400 sendmail.pem

Les autorités de certification

A l'instar d'Apache, Sendmailest prévu pour utiliser un fichier contenant un ensemble de certificats d'autorités reconnues (le fichier "ca-bundle.crt") et des certificats individuels pour les autorités de certification comme celle du CNRS. Nous n'avons pas réussi à faire fonctionner cette deuxième possibilité. La solution de contournement a donc été de rajouter les autorités de certification du CNRS dans le fichier "ca-bundle.crt".

Vous trouverez en cliquant sur ce lien un fichier contenant les certificats de l'autorité racine du CNRS, celui de CNRS-Standard et celui de CNRS-Plus. Sauvez ce fichier dans le répertoire "/tmp" puis ajoutez le à la fin de /usr/share/ssl/certs/ca-bundle.crt. Les commandes Unix pour effectuer cette opération sont :

cd /usr/share/ssl/certs/
cat /tmp/CAcert.pem >> ca-bundle.crt

La configuration de Sendmail

Les directives permettant d'utiliser les certificats dans Sendmail sur Linux sont en commentaires. Repérez les quatre lignes suivantes  dans le fichier "/etc/mail/sendmail.mc" :

dnl define(`confCACERT_PATH',`/usr/share/ssl/certs')
dnl define(`confCACERT',`/usr/share/ssl/certs/ca-bundle.crt')
dnl define(`confSERVER_CERT',`/usr/share/ssl/certs/sendmail.pem')
dnl define(`confSERVER_KEY',`/usr/share/ssl/certs/sendmail.pem')

Dans chacune de ces lignes, supprimez la marque de commentaire "dnl". Vous obtenez :

define(`confCACERT_PATH',`/usr/share/ssl/certs')
define(`confCACERT',`/usr/share/ssl/certs/ca-bundle.crt')
define(`confSERVER_CERT',`/usr/share/ssl/certs/sendmail.pem')
define(`confSERVER_KEY',`/usr/share/ssl/certs/sendmail.pem')

Configuration des règles anti-relais

Les règles anti-relais se configurent à l'aide du fichier "/etc/mail/access". L'exemple ci-dessous montre comment on peut autoriser tout utilisateur détenant un certificat émis par l'une des autorités du CNRS à utiliser notre serveur de messagerie comme relais.

Rajoutez dans le fichier "/etc/mail/access" les lignes suivantes :

CERTISSUER:/C=FR/O=CNRS/CN=CNRS-Plus      RELAY
CERTISSUER:/C=FR/O=CNRS/CN=CNRS-Standard RELAY

Fabriquez la base "access.db" associée :

cd /etc/mail
makemap hash access < access

Génération du fichier sendmail.cf et redémarrage de Sendmail

La configuration de Sendmail est prête à être relancée. Les commandes Unix pour effectuer cette opération sont :
cd /etc/mail
make sendmail.cf
/etc/init.d/sendmail restart

Configurez vos clients de messagerie

La configuration de la messagerie des postes de travail mobiles peut maintenant être modifiée afin d'utiliser des connexions TLS vers le serveur de messagerie. Les paragraphes ci-dessous indiquent comment procéder pour les logiciels de messagerie les plus communs. Dans tous les cas, on supposera que l'utilisateur du poste de messagerie dispose déjà d'un certificat CNRS et que son logiciel de messagerie est déjà configuré pour la signature électronique.

Configurer Netscape Messenger 4

Lancez Netscape Messenger. Dans le menu "Édition," puis "Préférences", cliquez sur "Serveur de courrier".

Dans la case intitulée "Serveur de courrier sortant (SMTP)" tapez le nom de votre serveur, tel qu'il apparait dans son certificat.

Cochez le bouton "Si possible" qui s'affiche sous "utiliser (SSL) ou TLS pour les messages sortants".

Cliquez ensuite sur "OK" puis une nouvelle fois sur "OK" pour sortir de la fenêtre des préférences.

Configurer Netscape Messenger 7 ou Mozilla 1.x

Lancez Netscape Messenger 7. Dans le menu "Édition, puis "Paramètres de compte de messagerie/forum", faites défiler jusqu'en bas la fenêtre de gauche qui décrit vos comptes de messagerie. Cliquez sur "Serveur sortant (SMTP)".

Dans la case intitulée "Nom du serveur", tapez le nom de votre serveur, tel qu'il apparait dans son certificat.

Cochez le bouton "Lorsque disponible" situé sous "Utiliser une connexion sécurisée (SSL)".

Cliquez sur "OK" pour sortir de la fenêtre des préférences.

Configurer Outlook Express

A compléter



Autorités de certification du CNRS - Ce fichier contient la liste des certificats des autorités de certification du CNRS. Il s’installe dans /etc/postfix/CAcert.pem
 

Rechercher


sur le site de la délégation
Le CNRS Accueil Le CNRS Annuaires Mots clefs CNRS Autres sites Accueil Imprimer Contact Crédits Plan du site