Lorsque nous avons adopté Exchange 2007 il y quelques mois, j'ai trouvé que les fonctionnalités antispam n'étaient pas au rendez-vous.
Avant Exchange, notre serveur de mail était hMailServer, un serveur open source tournant sous Windows et celui-ci nous donnant toute satisfaction en ce qui concernait le spam, je me suis penché sur l'intégration de celui-ci en amont d'Exchange.
::TOC::
hMailServer dispose de toute une palette d'outils pour bloquer le spam et les virus comme par exemple:
- DNS Blacklist
- SURBL
- Antispam externes (Spam Assassin / ASSP)
- Antivirus (intégration de ClamAv ou tout autre antivirus fonctionnant en ligne de commande)
Nous allons donc voir comment paramétrer le réseau, hMailServer et Exchange :
Les versions utilisées sont :
- hMailServer 5.1.1
- Exchange 2007 SP1
1. La configuration réseau
Rien de bien compliqué à ce niveau là : :- hMailserver est installé sur une machine virtuelle XP Pro (IP : 192.168.1.20)
- Exchange est installé sur un serveur spécifique sous Windows 2008 64bits (IP : 192.168.1.21)
- Le routeur est configuré pour envoyer le port 25 (SMTP) vers le serveur hMailServeur.
2. La configuration de hMailServer en tant que relai SMTP
2.1 Installation de hMailServer
L'installation de hMailServer se fait de façon simple en suivant la procédure d'installation.Pas de difficulté particulière à ce niveau, donc.
Il y a juste quelques paramètres à configurer :
- Dans Settings / Protocols / SMTP :
Configurez le "welcome message" (ex : mail.mondomaine.com says hello) - Dans Settings / Protocols /SMTP / Onglet "Delivery of e-mail" :
Renseignez le champ Local host name avec le FQDN externe de votre serveur de messagerie (ex : mail.mondomaine.com) - Dans Settings / Advanced / IP Ranges :
Cliquez sur "Add..." et configurez l'étendue comme sur la capture ci-dessous (remplacez Lower IP et Upper IP par l'IP de votre serveur Exchange)
2.2 Configurer un compte local pour autoriser l'accès à Exchange
Dans l'interface d'administration d'hMailServer, allez dans "Domains"Ajoutez un nouveau domaine :
- Cliquez sur le bouton "Add..."
- Dans l'onglet "Général", crézr le domaine "hms.local"
- Validez en cliquant sur "Save"
- Dans le menu "Accounts", cliquez sur "Add..."
- Dans le champ "Address", tapez "exchange"
- Dans le champ "Password", tapez un mot de passe
- Validez en cliquant sur "Save".
2.2 Configurer les routes pour les domaines hébergés sur Exchange :
Cette manipulation est à faire pour chacun des domaines mails gérés par Exchange (ce qui est après l'@).- Allez dans Settings / Protocols / SMTP / Routes
- Cliquez sur Add...
- Renseignez les champs suivants :
- Domain : le domaine de mail
- Target SMTP host : l'IP interne de votre serveur Exchange
- TCP/IP port : 25
- Treat this route as "A local domain" - Validez en cliquant sur Save
La configuration d'hMailServer en tant que relai SMTP est terminée.
Nous allons maintenant passer à la configuration d'Exchange puis nous reviendrons sur hMailServer pour la configuration de l'antispam.
3. Configurer Exchange pour récupérer les mails de hMailServer
On considère que Exchange est déjà installé et peu recevoir et envoyer des mails.Tout se passe dans la console de gestion Exchange :
3.1 Configurer Exchange pour l'emission vers hMailserver
- Allez dans Configuration de l'organisation / Transport Hub / Onglet Connecteurs d'envoi
- Désactivez les connecteurs d'envoi existants
- Ajoutez un connecteur d'envoi
- Introduction :
- Nom : le nom du connecteur
- Utilisation prévue : Personnalisée
- Espace d'adressage :
- Type : SMTP
- Adresse : *
- Inclure tous les sous-répertoires - Paramètres du réseau :
- Router les messages via les hôtes actifs suivants
- Ajouter : Adresse IP : l'IP interne du serveur hMailServer (192.168.1.20 ici) - Paramètres d'authentification :
- Authentification de base
- Nom d'utilisateur : l'utilisateur précédemment créé dans hMailServer
- Mot de passe : le mot de passe associé à l'utilisateur créé dans hMailServer - Validez les autres écrans sans rien modifier.
3.2 Configurer Exchange pour la réception des messages venant d'hMailServer
- Allez dans Configuration du serveur / Transport Hub
- Désactiver les connecteurs de réception existants
- Ajouter un connecteur de réception
- Introduction :
- Nom : le nom donné au connecteur
- Utilisation : Personnalisé - Paramètres du réseau local :
- Supprimez les IP existantes (par défaut, toutes les IP)
- Ajoutez l'IP interne d'Exchange (ici, 192.168.1.21) et le port 25
- Spécifiez le nom de domaine pour la commande HELO : mail.mondomaine.com (FQDN externe). - Paramètres du serveur distant :
- Supprimez les IP présentes (par défaut, toutes les IP existantes)
- Ajoutez l'IP du serveur hMailServer (ici, 192.168.1.20) - Validez les autres écrans sans modifications.
Faites des tests pour être sûr que tout fonctionne correctement avant de passer à la suite.
4. Configurer l'antispam d'hMailServer
Nous arrivons à la dernière partie de ce billet : la mise en place de l'antispam.Nous en profiterons pour ajouter une fonction de log des messages entrant et sortant.
4.1 Paramétrage de l'antispam
Dans l'interface d'administration d'hMailServer :- Allez dans Settings / Antispam
- Onglet Général :
- Régler les paramètres suivants comme sur la capture ci-dessous : - Autres onglets :
- Tout doit être décoché - DNS Blacklists : utilisez les serveurs suivants :
- zen.spamhaus.org (score = 20)
- bl.spamcop.net (score = 20) - SURBL servers : utilisez les serveurs suivants :
- multi.surbl.org (score = 20)
4.2 Paramétrage de l'antivirus
- Allez dans Settings / Anti-virus et réglez les paramètres comme ci-dessous :
- Dans l'onglet External antivirus scanner, paramétrez votre antivirus.
- Voici un exemple de script pour Nod32 : hms-nod32.bat.txt
- Renommez-le en enlevant le .txt au bout et placez-le dans le dossier C:\applis\hMail-nod32 (ou autre, mais pensez à modifier le .bat pour le fichier de log)
- Ligne de commande pour hMailServer :
C:\applis\hMail-nod32\scan_nod32.bat "%FILE%"
- Code de retour : 1 - Dans l'onglet Block attachment, bloquez toutes les extensions potentiellement dangereuses.
- Dans Advanced / Server messages :
Dans le message VIRUS_FOUND, saisissez [VIRUS_FOUND].
Ceci est important pour le traitement des virus dans le script qui sera utilisé plus tard.
4.3 Activer le script de blocage des mails et des logs
Récupérez le fichier vbs qui se trouve ici et placez-le dans le dossier suivant :
C:\Program Files\hMailServer\EventsCe fichier a deux fonctions :
- Bloquer l'émission du mail si c'est un spam ou si il contient un virus.
- Enregistrer le message dans les logs (sujet, expéditeur, destinataire, état,...).
Adaptez-le à vos besoins :
- Ligne 5 : dossier du fichier log
- Ligne 7 : liste des domaines de messagerie installés sur Exchange (les mêmes que ceux configurés sur les routes dans hMailServer). Tout domaine non listé ici sera considéré comme un domaine externe et sera rejeté
- Ligne 89/90 : Commentez ou non les options choisies pour les logs : fichier et/ou base de données (MySQL).
- Créez un DSN vers votre serveur nommé hms_log (cf Ligne 117)
- Créez une table log_hms :Activez le script dans hMailServer :
CREATE TABLE IF NOT EXISTS `log_hms` (
`msgID` int(11) NOT NULL,
`msgDte` datetime NOT NULL,
`msgFrom` varchar(150) collate utf8_unicode_ci NOT NULL,
`msgTo` varchar(150) collate utf8_unicode_ci NOT NULL,
`msgSubject` varchar(200) collate utf8_unicode_ci NOT NULL,
`msgState` varchar(20) collate utf8_unicode_ci NOT NULL,
`msgStateInfos` varchar(150) collate utf8_unicode_ci NOT NULL,
`msgBlocked` tinyint(4) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
- Allez dans Settings / Advanced / Scripts
- Cochez la case "Enabled"
- Validez en cliquant sur "Save"
- A chaque modification du script, il faut cliquer sur le bouton "Reload script".
5. Quelques tests
5.1 Tester la bonne configuration de hMailServer
Faites des essais d'envoi / réception à partir d'Exchange vers des comptes externes pour s'assurer que les messages arrivent et partent bien.Vérifiez les logs du script dans hMailServer.
En cas de problème, activez et analysez les logs d'hMailServer (dans Settings / Logging).
5.2 Vérifier que hMailServer n'est pas un relai ouvert
Pour ce faire, j'utilise la page suivante qui effectue un ensemble de tests pour vérifier que seuls les serveurs autorisés (Exchange en l'occurrence) peuvent utiliser votre serveur :http://www.pagasa.net/test-smtp/
5.3 Vérifier que hMailServer détecte bien les virus.
Pour cela, j'utilise le virus de test Eicar :http://www.eicar.org/anti_virus_test_file.htm
Essayez avec les différents fichiers (txt, zip, com,...).
Il faudra peut-être désactiver votre antivirus en local pour éviter qu'il ne soit éradiquer quand vous testez les fichiers.
5.4 Vérifier que hMailServer détecte bien le spam.
Là, je n'ai pas trouvé de solution, à part utiliser un compte email déjà bien spammé.Les logs du script et d'hMailServer vous indiqueront si un spam a été détecté et par quelle méthode. A vous ensuite d'affiner les paramètres.
Commentaires