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.
En rédigeant cette documentation, je pars des principes suivants :
Remarque : ces serveurs peuvent être ceux de votre fournisseurs d'accès Internet.
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.
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
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
.
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
.
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.
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
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
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
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
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
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".
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