Configurer hMailServer en tant que relai antispam pour Exchange

Classé dans : Messagerie | 6 commentaires

mercredi 21 octobre 2009

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)
Après différents tests, il s'avère que les blacklists DNS et SURBL suffisent pour éliminer la plupart du spam, sans avoir besoin d'un paramétrage compliqué (contrairement à SpamAssassin qu'il faut "éduquer").

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
Le tutorial ci-dessous n'a été testé que sur une nouvelle installation d'Exchange, dans un contexte bien précis (un seul serveur Exchange, un seul domaine,...). Assurez-vous avant de le mettre en œuvre d'avoir pris toutes les précautions nécessaires.

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.
Les IP sont bien évidemment indicatives, le tout c'est qu'elles soient sur le réseau interne.

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"
Ajoutez un utilisateur à ce domaine :
  • 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".
Vous devriez avoir une fenêtre qui ressemble à ceci :

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.
Exchange est désormais configuré pour recevoir et émettre du courrier via hMailServer.
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\Events
Ce 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).
Si vous utilisez MySQL pour les logs :
  • 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

Le 09 novembre 2009 BTR a dit :

Bonjour,

Pour quelle raison votre entreprise opte-elle pour une migration hMailServer vers Exchange ? Nous sommes une PME de taille similaire, nous envisageons une migration Exchange2000 vers hMailServer ! pour des raisons de coûts ...

Cordialement.


Commentaire de l'auteur :
En fait, ce qui nous intéressait dans Exchange, c'était toute la
partie calendrier partagé et la gestion des boîtes couplé à l'Active
Directory.
Je n'ai pas trouvé de solution libre suffisament performante à notre goût.


Sinon, nous serions bien restés sur hMailServer (que nous utilisons toujours pour d'autres boites emails d'ailleurs ;-) ).

Le 19 janvier 2010 imel a dit :

Salut, ce sujet est tres interessant, deja ke les source sur hMailserver francisé sont un peu rare..., s'il vous plait puis je avoir des ressources vbscript pour hmail, merci



Commentaire de l'auteur  :
Il n'y a pas beaucoup de doc sur VBScript et hMailServer mais je me sers principalement de la doc et notamment les 2 pages suivantes :
Liste des évennements interceptables : http://www.hmailserver.com/documentation/latest/?page=reference_scripts
Liste des objets (message par ex) : http://www.hmailserver.com/documentation/latest/?page=com_objects


Le 27 août 2010 Amrai a dit :

Bonjour,

Juste une question concernant la possibilité de mettre en place une fonction webmail en plus du relai dans un environnement Windows 2003 Serveur, est-ce possible avec HmailServeur?

Merci.

Le 27 août 2010 fred a dit :

@Amrai :
hMailServer ne peut pas le fair directement car il ne dispose pas d'un webmail intégré et ne sait pas accéder directement aux comptes Exchange.

Le mieux reste l'utilisation d'Outlook Web Access.

Sinon, je pense que l'on doit pouvoir utiliser des webmails tels que Roundcube en activant l'IMAP sur Exchange, mais je ne l'ai pas testé.

Le 09 novembre 2010 Andrea a dit :

Bonjour,

Lorsque nous faisons votre configuration nous avons un problème.
Le mail s'envoit bien, seulement, nous recevons l'header mais pas le corps du mail.
Avez-vous déjà rencontré ce problème ?

Un grand merci d'avance pour votre aidrea

Le 16 janvier 2012 Jean Luc a dit :

Bonjour,

Pour un webmail couplé avec hMail j'utilise AfterLogic WebMail Lite codé en .NET. A mon avis le plus performant et le plus configurable sous window serveur.

Vous pouvez l'installer soit en intranet soit sur un serveur web externe avec pop SSL ou imap SSL vers le serveur de messagerie de votre entre prise.

Si vous le souhaitez je peux aussi vous faire passer la version francaise traduite par mes soins de hMail 5.3.2

Cordialement

Fil RSS des commentaires de cet article