Configurer un serveur SMTP sécurisé avec Exim

installer configurer optimiser securiser exim serveur email

1. Introduction

Établir un serveur SMTP sécurisé est essentiel pour garantir des communications par email confidentielles et fiables. Exim, un agent de transfert de mail (MTA) polyvalent pour les systèmes Unix-like, offre une personnalisation étendue et des fonctionnalités de sécurité robustes. Ce tutoriel vous fournit un guide complet pour mettre en place et configurer un serveur SMTP sécurisé avec Exim, en mettant l’accent sur l’authentification, le chiffrement et les stratégies de réduction du spam.

2. Prérequis

Avant de commencer, assurez-vous de disposer des éléments suivants :

  • Un serveur fonctionnant sous un système d’exploitation de type Unix (par exemple, Linux).
  • Des privilèges root ou sudo pour installer et configurer des logiciels.
  • Un nom de domaine avec un accès administratif aux paramètres DNS.
  • Une familiarité de base avec les commandes en ligne et les éditeurs de texte.

3. Installation d’Exim

Pour installer Exim sur votre système :

$ sudo apt update
$ sudo apt install exim4 exim4-config exim4-daemon-light

Pour les systèmes basés sur Debian, cette commande installe Exim ainsi que ses packages de configuration et de démon.

4. Configuration d’Exim

La configuration d’Exim est principalement gérée via le fichier /etc/exim4/exim4.conf.localmacros. Utilisez l’outil dpkg-reconfigure pour configurer Exim :

$ sudo dpkg-reconfigure exim4-config

Suivez les invites pour configurer les paramètres de votre serveur de messagerie, y compris le type de serveur de messagerie, le nom du système et les adresses IP à écouter.

5. Sécuriser SMTP avec l’Authentification

Pour empêcher l’utilisation non autorisée de votre serveur SMTP, configurez l’authentification SMTP (SMTP AUTH) :

  1. Activer SMTP AUTH dans Exim :Assurez-vous que les lignes suivantes sont présentes dans votre configuration Exim :
# Activer SMTP AUTH
daemon_smtp_ports = 25 : 587

  1. Configurer les Authentificateurs :Définissez les mécanismes d’authentification dans le fichier de configuration Exim :
begin authenticators
# Authentification en texte clair
plain:
   driver = plaintext
   public_name = PLAIN
   server_condition = ${if eq{$auth2}{${lookup{$auth1}lsearch{/etc/exim4/passwd}}}{1}{0}}
   server_set_id = $auth1
   client_send = : $auth1 : $auth2
# Authentification LOGIN
login:
   driver = plaintext
   public_name = LOGIN
   server_condition = ${if eq{$auth2}{${lookup{$auth1}lsearch{/etc/exim4/passwd}}}{1}{0}}
   server_set_id = $auth1
   client_send = : $auth1 : $auth2

Remplacez /etc/exim4/passwd par le chemin de votre fichier de mots de passe. (serverfault.com)

  1. Créer le fichier de mots de passe :Générez un fichier de mots de passe avec les noms d’utilisateur et mots de passe :
# touch /etc/exim4/passwd
# chmod 600 /etc/exim4/passwd

Ajoutez les identifiants des utilisateurs sous le format :

username:password

6. Implémenter le Chiffrement TLS

Pour sécuriser les transmissions par email, configurez le Transport Layer Security (TLS) :

  1. Installer le support TLS :Assurez-vous que OpenSSL ou GnuTLS est installé sur votre système :
$ sudo apt install openssl
  1. Configurer Exim pour TLS :Ajoutez les lignes suivantes à votre configuration Exim :
# Activer TLS
tls_advertise_hosts = *
tls_certificate = /etc/ssl/certs/exim.crt
tls_privatekey = /etc/ssl/private/exim.key

Remplacez les chemins de certificat et de clé par vos fichiers réels.

  1. Obtenir des certificats SSL :Pour un fonctionnement sécurisé de TLS, obtenez des certificats SSL valides auprès d’une Autorité de Certification (CA). Vous pouvez découvrir nos offre de certificats SSL et obtenir un certificat authentique avec un prix moins que le marché.

7. Configurer SPF, DKIM et DMARC

Pour améliorer la sécurité des emails et prévenir le spoofing :

  1. SPF (Sender Policy Framework) :
    • Créez un enregistrement DNS de type TXT pour votre domaine :
v=spf1 mx ~all

Cet enregistrement spécifie que seuls les serveurs de messagerie listés dans les enregistrements MX de votre domaine sont autorisés à envoyer des emails au nom de votre domaine.

  1. DKIM (DomainKeys Identified Mail) :
    • Installez le support DKIM :
$ sudo apt install opendkim opendkim-tools
  • Configurez Exim pour signer les emails sortants avec DKIM :
# Activer DKIM
dkim_domain = yourdomain.com
dkim_selector = mail
dkim_private_key = /etc/opendkim/keys/yourdomain.com/default.private

Remplacez yourdomain.com par votre domaine et ajustez le chemin du fichier de la clé privée.

  1. DMARC (Domain-based Message Authentication, Reporting, and Conformance) :
    • Ajoutez un enregistrement DMARC dans les paramètres DNS de votre domaine. Cet enregistrement spécifie votre politique pour l’authentification des emails et les rapports :
_dmarc.yourdomain.com. IN TXT "v=DMARC1; p=reject; rua=mailto:[email protected]"

Cet exemple de politique rejette les emails qui échouent aux vérifications DMARC et envoie les rapports à [email protected].

8. Configurer la Protection contre le Spam

L’un des grands défis de l’exécution d’un serveur SMTP est la prévention du spam. Exim peut être configuré pour filtrer le spam à l’aide de plusieurs techniques telles que les RBL (Real-time Blackhole Lists), le Greylisting et le filtrage via SpamAssassin.

  1. Configurer les RBL :
    • Configurez Exim pour utiliser les RBL afin de bloquer les emails entrants provenant de sources de spam connues :
    Ajoutez les lignes suivantes sous acl_smtp_rcpt dans la configuration Exim :
deny   message = Votre IP est répertoriée sur une liste noire
         domain = !+local_domains
         log_message = Blocage RBL
         condition = ${if match{$sender_host_address}{${lookup{$sender_host_address}lsearch{/etc/exim4/rbl_blacklist}}}}

Vous pouvez maintenir une liste RBL locale ou utiliser des listes publiques comme zen.spamhaus.org ou bl.spamcop.net.

  1. Configurer le Greylisting :
    • Le Greylisting rejette temporairement les emails en provenance d’expéditeurs inconnus, ce qui est efficace pour réduire le spam. Ajoutez les lignes suivantes pour activer le greylisting dans Exim :
delay:
   driver = accept
   condition = ${if def:h_Received: {${if match{$sender_host_address}{^.*[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$}{yes}{no}}}{1}{0}}}
   message = Rejet temporaire de votre message. Veuillez réessayer dans 5 minutes.
   time = 5m

Cette configuration retarde l’acceptation des emails, rendant ainsi plus difficile l’envoi d’emails par des spammeurs qui généralement ne réessaient pas d’envoyer des emails.

  1. Configurer SpamAssassin :
    • Installez SpamAssassin sur votre serveur :
$ sudo apt install spamassassin
  • Activez l’intégration de SpamAssassin avec Exim en ajoutant cela à la section acl_check_data de la configuration Exim :
# Utiliser SpamAssassin
spamassassin:
   driver = accept
   condition = ${if spam{${message_body}}}
   message = Ce message est identifié comme du spam

Cette configuration permet à Exim de filtrer les messages entrants à l’aide de SpamAssassin et de les marquer comme spam lorsqu’il est détecté.

9. Configurer la Limitation de Taux et la Régulation

Pour éviter les abus de votre serveur SMTP et atténuer les attaques par déni de service (DoS), il est important de mettre en place des limitations de taux et des régulations.

  1. Configurer Exim pour la Limitation de Taux :
    • Ajoutez les lignes suivantes à la configuration d’Exim pour limiter le nombre d’emails envoyés par connexion et par expéditeur :
smtp_connect_max = 10
smtp_send_max = 100

Ces paramètres limitent le nombre de connexions et de messages autorisés à partir d’un même client. Ajustez-les en fonction des performances et de l’utilisation de votre serveur.

  1. Limiter les Connexions par Adresse IP :
    • Limitez le nombre de connexions simultanées à votre serveur en fonction de l’adresse IP de l’expéditeur. Vous pouvez le faire en ajoutant une condition dans l’ACL (liste de contrôle d’accès) :
deny   message = Trop de connexions depuis votre adresse IP
         condition = ${if >{$acl_connects}{10}{1}{0}}

Cela bloquera les clients qui dépassent 10 connexions dans un délai court.

10. Test et Dépannage

Une fois le serveur configuré, il est crucial de tester son bon fonctionnement. Voici quelques méthodes pour vérifier la configuration de votre serveur SMTP.

  1. Tester l’Authentification :
    • Utilisez la commande telnet pour vérifier l’authentification SMTP :
$ telnet localhost 25
EHLO localhost
AUTH LOGIN

Ensuite, fournissez un nom d’utilisateur et un mot de passe encodés en base64 pour vérifier l’authentification.

  1. Vérifier les Ports Ouverts :
    • Vérifiez que les ports SMTP pertinents (25, 587, 465) sont ouverts :
$ sudo ufw allow 25,587,465/tcp
  • Utilisez telnet ou nc (netcat) pour vérifier si le serveur accepte les connexions sur ces ports :
$ telnet yourdomain.com 587
  1. Vérifier les Logs Exim :
    • Les logs d’Exim fourniront des informations cruciales en cas d’erreurs. Vous pouvez consulter les fichiers de log d’Exim pour le dépannage :
$ sudo tail -f /var/log/exim4/mainlog

Les logs afficheront les tentatives de connexion et les échecs d’authentification.

11. Conclusion

Dans ce tutoriel, nous avons couvert les étapes essentielles pour configurer un serveur SMTP sécurisé avec Exim. En activant des fonctionnalités telles que l’authentification SMTP, le chiffrement TLS et la protection SPF/DKIM/DMARC, vous pouvez garantir que votre serveur SMTP est résistant aux accès non autorisés et aux attaques malveillantes. L’intégration de mesures de protection contre le spam, la limitation du taux et la surveillance renforce encore la sécurité et la fiabilité de vos services de messagerie.

Il est crucial de surveiller régulièrement les performances du serveur et de mettre à jour les patches de sécurité et les bonnes pratiques pour maintenir la santé de votre infrastructure SMTP.


Références :

  1. Documentation officielle d’Exim. exim.org
  2. Documentation officielle de SpamAssassin. spamassassin.apache.org
  3. Guide de configuration d’OpenDKIM. opendkim.org
  4. Sender Policy Framework (SPF). sidn.nl
  5. DomainKeys Identified Mail (DKIM). dmarc.org
  6. Real-time Blackhole Lists (RBL). spamcop.net
  7. Configuration d’Exim sur Ubuntu. ubuntu.com

Laisser un commentaire