Table des matières

, , , ,

Comment installer un relais mail sécurisé ?

Introduction

L'utilisation nomade du courriel (sous entendu IMAP et SMTP) est devenue une pratique courante. Les utilisateurs souhaitent accéder à tous leurs dossiers et veulent envoyer et recevoir des courriels où qu'ils soient.

Ce concept de plus en plus désiré (il suffit de voir les systèmes BlackBerry, Palm, …) pose un problème relativement délicat à gérer pour l'administrateur du serveur de courriel.

Dans une utilisation normale (c'est-à-dire les utilisateurs sont dans les murs sur le même réseau que le serveur de courriel), la sécurisation du serveur est simple; on limite les relais SMTP aux seuls réseaux connus. C'est la politique employée par les fournisseurs d'accès Internet.

Lorsque les utilisateurs se connectent sur n'importe quel réseau en dehors des murs de la société (WiFi, UMTS, hôtel, …), il faut assurer un minimum de sécurité.

Dans ce document, je vous présenterai comment mettre en place un relais IMAP et SMTP avec authentification et sécurisation SSL. En fin de document, je mentionnerai la configuration client à utiliser dans le cadre d'un usage avec Thunderbird installé sur un portable et la configuration d'un Palm avec SnapperMail.

Remarque : il existe un moyen simple pour un utilisateur distant d'accéder à toutes les ressources d'un réseau d'entreprise, la tunnellisation. Je suis assez contre cette solution si c'est pour ouvrir uniquement un accès courriel car, premièrement, une connexion sous tunnel avec un client Microsoft Windows va envoyer une quantité inconsidérée de paquet pour les accès aux disques réseaux. Et deuxièmement, les accès avec des systèmes GSM, BlackBerry, Palm ou autres sont plus difficiles à mettre en œuvre avec un tunnel.

Pré-requis

En rédigeant cette documentation, je pars des principes suivants :

  1. Vous avez une machine fonctionnelle et à jour sous Dapper.
  2. Vous avez accès à un serveur IMAP ou POP3.
  3. Vous avez accès à un serveur SMTP.

Remarque : ces serveurs peuvent être ceux de votre fournisseurs d'accès Internet.

Installation et configuration de base

Création des certificats SSL

Il existe beaucoup de site expliquant comment créer un certificat SSL personnel. Voici une technique détaillée dans le wiki.

Remarque : ce certificat n'est authentifié par aucune autorité, vous aurez donc un message d'avertissement quand vous vous connectez au serveur. Thunderbird prévoit une option : "Toujours faire confiance à…" qu'il convient d'utiliser.

Installation et configuration de Perdition

Pour le relais de courrier au niveau IMAP et du POP3, j'utilise perdition. Perdition sert de relais pour les connexions sécurisées vers un serveur qui, à priori, ne l'est pas.

Pour installer perdition :

sudo apt-get install perdition

IMAPS

Voici les quelques configurations que j'ai utilisé pour effectuer le relais sécurisé IMAP. C'est-à-dire que j'ai un serveur IMAP en interne (simple, non sécurisé, les utilisateurs s'identifient avec login/mot de passe) et de l'extérieur, j'ai un serveur IMAPS (sécurisé en SSL, les utilisateurs s'identifient avec le même login/mot de passe).

Pour la configuration, je crée un fichier /etc/perdition/perdition.imap4s.conf avec les informations suivantes :

outgoing_server 192.168.0.5
outgoing_port 143
log_facility local5
no_lookup
timeout 40
imap_capability "IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE STARTTLS"
listen_port 993
ssl_mode ssl_listen
ssl_cert_file /etc/ssl/server.crt
ssl_key_file /etc/ssl/server.key

Mon serveur IMAP en interne est accédé à l'adresse 192.168.0.5 et sur le port 143.

POP3S

Voici la configuration utilisée pour effectuer le relais vers un serveur POP3.

Pour la configuration, je crée un fichier /etc/perdition/perdition.pop3s.conf avec les informations suivantes :

outgoing_server 192.168.0.4
outgoing_port 110
log_facility local5
no_lookup
timeout 40
ssl_mode ssl_listen
ssl_cert_file /etc/ssl/server.crt
ssl_key_file /etc/ssl/server.key

Mon serveur POP3 en interne est accédé à l'adresse 192.168.0.4 et sur le port 110.

Installation et configuration de Postfix avec SASL

Cette partie est la partie la plus délicate… En fait, j'ai passé plusieurs jours pour configurer mon accès SMTPS avec authentification SASL car aucun des tutoriels trouvés sur Internet n'ont fonctionné. Voici le résultat de mes recherches, certains parties ne sont pas idéales mais tout fonctionne.

Postfix de base

Premièrement, installons Postfix si ce n'est déjà fait :

sudo apt-get install postfix

Ensuite, nous allons configurer Postfix en tant que relais simple (avant de rajouter l'authentification et le SSL). Pour ce faire, on modifie le fichier de configuration /etc/postfix/main.cf de la manière suivante :

# See /usr/share/postfix/main.cf.dist for a commented, more complete version

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h

mydomain = ubuntu-fr.org
myhostname = ubuntu-fr.org
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mydestination = mailer, localhost.localdomain, localhost
relayhost = 192.168.0.3
mynetworks = 127.0.0.0/8
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all

Dans notre exemple, on travailler pour le domaine ubuntu-fr.org et le serveur SMTP réel est 192.168.0.3.

Rechargez la configuration de Postfix et faites un essai d'envoi pour être sûr que tout fonctionne :

sudo /etc/init.d/postfix reload

SASL

Si les envois fonctionnent par le relais, on va ajouter l'authentification. On commence par installer SASL par la commande suivante :

sudo apt-get install libsasl2 libsasl2-modules sasl2-bin

On configure SASL en éditant le fichier /etc/default/saslauthd afin qu'il ressemble à ceci :

START=yes
MECHANISMS="sasldb"

On configure le répertoire de travail de SASL en éditant le fichier /etc/default/saslauthd. Trouvez une ligne commençant par OPTIONS="…" et remplacez la par :

OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd"

On crée les différents répertoires nécessaires à SASL :

dpkg-statoverride --add root sasl 710 /var/spool/postfix/var/run/saslauthd

Et enfin, on désactive une bibliothèque d'authentification qui pose problème (Edit : 23/01/2022. Cette modification ne semble plus être utile.) :

cd /usr/lib/sasl2
sudo mkdir deactived
sudo mv *otp* deactived/

On peut maintenant démarrer le démon d'authentification :

sudo /etc/init.d/saslauthd start

Postfix avec authentification

Créez le fichier /etc/postfix/sasl/smtpd.conf et indiquez :

pwcheck_method: saslauthd
mech_list: plain login

Modifiez le contenu du fichier /etc/postfix/main.cf en ajoutant les lignes suivantes :

smtpd_tls_cert_file=/etc/ssl/server.crt
smtpd_tls_key_file=/etc/ssl/server.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${queue_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${queue_directory}/smtp_scache

smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $mydomain
smtpd_sasl_application_name = smtpd
broken_sasl_auth_clients = yes

smtpd_recipient_restrictions = permit_sasl_authenticated, reject

Redémarrez Postfix, vous devriez pouvoir vous connecter sur le port SMTP standard (25) en identification TLS (lisez la section concernant les mots de passe au préalable, car sans login, la connexion ne fonctionnera pas).

sudo /etc/init.d/postfix restart

Postfix uniquement via SSL avec authentification

Si tout fonctionne, il ne reste plus qu'à autoriser les connexions uniquement en SMTPS. Pour ce faire, modifiez le fichier /etc/postfix/master.cf en commentant la ligne suivante :

#smtp      inet  n       -       -       -       -       smtpd

et en décommentant les lignes suivantes :

submission inet n      -       -       -       -       smtpd
        -o smtpd_etrn_restrictions=reject
        -o smtpd_client_restrictions=permit_sasl_authenticated,reject
smtps    inet  n       -       -       -       -       smtpd
        -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes

Rechargez la configuration de Postfix :

sudo /etc/init.d/postfix restart

Gestion des utilisateurs

Pour ce qui est de l'IMAP ou du POP3, l'authentification est déléguée au serveur sous-jacent.

Pour ce qui est du SMTP, l'authentification est gérée à partir de SASL (démon saslauthd). Le fichier des mots de passe se trouve en /etc/sasldb2.

Pour ajouter un utilisateur, modifier un mot de passe ou supprimer un utilisateur; vous pouvez utiliser la commande saslpasswd2 (voir la manpage pour plus de détail). Par exemple :

sudo saslpasswd2 -c ostaquet -u ubuntu-fr.org

Une seule restriction, le mot de passe d'un utilisateur ne peut pas être userPassword.

Pour lister les utilisateurs :

sudo sasldblistusers2

Configuration des clients

Thunderbird sur Windows/Linux

Sous Thunderbird, vous devez créer un nouveau compte.

Dans les paramètres des comptes, onglet "Paramètres serveur". Indiquez serveur IMAP et sélectionnez "SSL" pour les paramètres de sécurité. La procédure est semblable pour le POP3.

Pour les envois de courrier, allez dans "Serveur sortant (SMTP)". Dans la partie "Sécurité et authentification", sélectionnez "SSL" et "Utiliser un nom d'utilisateur et un mot de passe".

SnapperMail sur Palm

Après avoir longtemps chercher un bon client de messagerie pour Palm (avec l'IMAPS), je me suis arrêté sur SnapperMail qui fonctionne à merveille pour un usage en entreprise. Il est vrai qu'il est payant mais il fonctionne très bien. Pour ceux qui n'ont besoin que du POP3, le client VersaMail fournit par Palm fonctionne très bien.

Pour configurer SnapperMail, allez dans la configuration des comptes. Lorsque vous avez les adresses des serveurs sous les yeux, cliquez sur "Advanced option" et sélectionnez "Always secure (wrapped port)". Les ports utilisés sont : 465 pour le SMTPS, 995 pour le POP3S et 993 pour l'IMAP4S.


Contributeur : ostaquet