Configuration · 6 min read · Jan 03, 2026

Mailscanner/Exim Gateway Avec Communigate PRO Guide - Page 2

Anti Spam

Si vous souhaitez rejeter les messages des serveurs sans DNS inverse, ajoutez ceci sous acl_check_rcpt : cela a une liste d’exceptions à laquelle vous pouvez ajouter des domaines où l’acl ne doit pas être appliqué et essaie de livrer un message de test à l’adresse d’envoi pour vérifier si l’expéditeur est valide.

drop  message   = REJECTED - Nous n'acceptons pas les messages des hôtes sans DNS inverse
        log_message = Pas de DNS inverse
        domains = ! lsearch;/etc/exim/checks_exempt_hosts
        !verify = reverse_host_lookup
        !verify = sender/callout=2m,defer_ok
        !condition =  ${if eq{$sender_verify_failure}{} }

Pour rejeter les messages des clients qui ne fournissent pas de HELO/EHLO, ajoutez ceci à acl_check_rcpt :

drop  message  = REFUSED - pas de salutation HELO/EHLO
        log_message = l'hôte distant n'a pas présenté de salutation
        condition = ${if def:sender_helo_name {false}{true}}

Vous pouvez limiter le nombre de connexions à votre serveur, ajoutez ceci à acl_check_connect : pour ce faire (lisez la documentation d’exim sur les paramètres si vous souhaitez l’ajuster pour votre site).

deny ratelimit = 250 / 15m / strict
       message = Vous ne pouvez envoyer que $sender_rate par $sender_rate_period
       log_message = RATE: $sender_rate/$sender_rate_period (max $sender_rate_limit)
accept

Arrêtez les bots de spam malveillants de détruire votre machine.

smtp_accept_max_nonmail = 30
smtp_max_unknown_commands = 1

Autorisez le pipelining uniquement depuis localhost pour vous permettre d’utiliser plus tard mailfeeder pour libérer le courrier.

pipelining_advertise_hosts = 127.0.0.1

Vérification d’Adresse

Cela utilise le routeur check_backend pour communiquer avec votre système communigate pro via ldap afin de s’assurer qu’une adresse existe avant d’accepter le courrier pour cette adresse.

Ajoutez vos serveurs ldap par défaut à la configuration exim.

ldap_default_servers = xxx.xxx.xxx.xxx

Configurez les domaines qui ont un compte catchall (pas de vérification si l’adresse existe avant d’accepter le courrier.

# exemple /etc/exim/catchall_domains
somedomain.com

Spécifiez ceci dans la configuration exim.

domainlist domains_with_catchall = lsearch;/etc/exim/catchall_domains

Créez et ajoutez les domaines CGP activés par ldap au fichier /etc/exim/ldap-domains. La première colonne est l’alias de domaine ou le domaine et la seconde est le domaine réel tel qu’il existe dans ldap, car lorsque vous synchronisez les domaines CGP avec ldap, il ne copie pas les alias de domaine également.

#exemple  /etc/exim/ldap-domains
example.com: example.com
example.co.za: example.com

Créez le routeur check_backend, cela devrait être le premier routeur dans votre configuration.

check_backend:
 driver = redirect
 domains = ! +domains_with_catchall : +relay_to_domains
 allow_fail
 allow_defer
 forbid_file
 forbid_pipe
 data = ${lookup ldap{ldap:///uid=${local_part},cn=${lookup{$domain}lsearch{/etc/exim/ldap-domains}}?mail}{$value}{:fail: Utilisateur inconnu}}
 #version 5.x utilisez ceci à la place
 #data = ${lookup ldap{ldap:///cn=${lookup{$domain}lsearch{/etc/exim/ldap-domains}}?uid?sub?(uid=$local_part)}{$local_part@$domain}{:fail: Utilisateur inconnu}}

Livraison Propre Exim

C’est la configuration qui est utilisée pour livrer le courrier propre que mailscanner a déjà scanné. Le fichier de configuration est /etc/exim/exim_out.conf. Pour cela, vous pouvez utiliser la configuration par défaut avec tous les contrôles et acls retirés.

Vous devez ajouter ce routeur pour livrer le courrier nettoyé aux serveurs CGP réels. Si vous exécutez un cluster, ce routeur est capable de répartir les livraisons sur les serveurs que vous avez configurés dans /etc/exim/mail-routes, ce qui le rend entièrement redondant.

deliver_clean:
  driver = manualroute
  domains = +relay_to_domains
  transport = remote_smtp
  hosts_randomize = true
  route_data = ${lookup{$domain}lsearch{/etc/exim/mail-routes}}

Configurer MySQL

Ajoutez ceci au fichier de configuration /etc/my.cnf :

socket=/var/lib/mysql/mysql.sock
skip-networking

Cela configure mysql pour ne communiquer que via le socket et non tcp, ce qui est meilleur pour la sécurité et pour les performances.

Démarrez mysql, cela initialisera les bases de données par défaut.

service mysqld start

Définissez le mot de passe de l’utilisateur root :

mysqladmin -u root password NEWPASSWORD

Créez la base de données mailwatch et remplissez les tables :

mysql -p < /usr/local/src/mailwatch-1.0.4/create.sql

Créez l’utilisateur mysql pour mailwatch et la journalisation de mailscanner :

mysql  
mysql> GRANT ALL ON mailscanner.* TO mailwatch@localhost IDENTIFIED BY 'password';

Créez l’utilisateur admin mailwatch :

mysql mailscanner -u mailwatch -p  
Entrez le mot de passe : ******  
mysql> INSERT INTO users VALUES ('',md5(' '),'','A','0','0','0','0','0'); 

Configurer MailScanner

Intro

Mailscanner a plusieurs options de configuration, je ne vais m’attarder que sur celles qui sont nécessaires pour faire fonctionner le système. Pour personnaliser davantage le système, veuillez lire la documentation de mailscanner ou consulter les fichiers de configuration d’exemple que j’ai fournis.

Configuration de Base

Veuillez modifier les variables de configuration suivantes dans /etc/MailScanner/MailScanner.conf :

Run As User = exim
Run As Group = exim
Incoming Queue Dir = /var/spool/exim.in/input
Outgoing Queue Dir = /var/spool/exim/input
MTA = exim
Sendmail = /usr/sbin/exim -C /etc/exim/exim_out.conf
Sendmail2 = /usr/sbin/exim -C /etc/exim/exim_out.conf
Quarantine User = exim
Quarantine Group = apache
Quarantine Permissions = 0660
Quarantine Infections = yes
Quarantine Whole Message = yes
Quarantine Whole Messages As Queue Files = no
Keep Spam And MCP Archive Clean = yes
Spam Actions = store
High Scoring Spam Actions = store
Detailed Spam Report = yes
Include Scores In SpamAssassin Report = yes
  • Définir les permissions
chown exim.exim -R /var/spool/MailScanner/incoming  
mkdir -p /var/spool/exim.in/{input,msglog,scan,db}  
chown exim.exim /var/spool/exim.in/{input,msglog,scan,db}

Anti Virus

Si vous avez un deuxième scanner de virus, définissez

Virus Scanning = yes
Virus Scanners = "nom du scanner de virus"

Listes Noires Et Listes Blanches

Nous allons utiliser le filtrage basé sur SQL(mysql) pour intégrer facilement avec l’interface web de mailwatch afin de permettre aux utilisateurs de mettre en liste blanche et noire les expéditeurs depuis l’interface web.

Modifiez le fichier de configuration de mailscanner et ajoutez :

Is Definitely Not Spam = &SQLWhitelist
Is Definitely Spam = &SQLBlacklist
Ignore Spam Whitelist If Recipients Exceed = 20

Modifiez le fichier /usr/lib/MailScanner/MailScanner/CustomFunctions/SQLBlackWhiteList.pm :

sub CreateList {
  my($type, $BlackWhite) = @_;
  my($dbh, $sth, $sql, $to_address, $from_address, $count);
  my($db_name) = 'mailscanner';
  my($db_host) = 'localhost';
  my($db_user) = 'mailwatch';
  my($db_pass) = 'password';

Intégration Mailwatch

Modifiez le fichier de configuration de mailscanner et ajoutez :

Always Looked Up Last = &MailWatchLogging

Modifiez le fichier /usr/lib/MailScanner/MailScanner/CustomFunctions/MailWatch.pm :

my($db_name) = 'mailscanner';
my($db_host) = 'localhost';
my($db_user) = 'mailwatch';
my($db_pass) = 'password';

Configurer Spamassassin

Cette configuration utilisera une base de données mysql pour stocker les informations bayesiennes. Nous allons donc créer une base de données et un utilisateur qui seront utilisés pour se connecter à la base de données. Nous utiliserons également des règles supplémentaires (SARE hébergées par Daryl C. W. O’Shea http://www.dostech.ca/) donc nous allons configurer sa-update pour les télécharger automatiquement.

Créer la Base de Données MySQL

mysqladmin -p create bayes

Remplissez la base de données :

mysql -p bayes < /usr/share/doc/spamassassin-3.2.3/sql/bayes_mysql.sql

Créez l’utilisateur :

mysql -p  
mysql> GRANT ALL ON bayes.* TO bayes@localhost IDENTIFIED BY 'password';

Configurer Pour Utiliser DB

Modifiez le fichier /etc/mail/spamassassin/local.cf et ajoutez :

bayes_store_module  Mail::SpamAssassin::BayesStore::MySQL
bayes_sql_dsn       DBI:mysql:bayes:localhost
bayes_sql_override_username bayes
bayes_sql_username  bayes
bayes_sql_password  password

Mises à Jour des Règles SARE

Importez la clé GPG utilisée pour signer les règles :

wget http://daryl.dostech.ca/sa-update/sare/GPG.KEY sa-update --import GPG.KEY

Créez le fichier des canaux /etc/mail/spamassassin/sare-sa-update-channels.txt :

updates.spamassassin.org
72_sare_redirect_post3.0.0.cf.sare.sa-update.dostech.net
70_sare_evilnum0.cf.sare.sa-update.dostech.net
70_sare_bayes_poison_nxm.cf.sare.sa-update.dostech.net
70_sare_html0.cf.sare.sa-update.dostech.net
70_sare_html_eng.cf.sare.sa-update.dostech.net
70_sare_header0.cf.sare.sa-update.dostech.net
70_sare_header_eng.cf.sare.sa-update.dostech.net
70_sare_specific.cf.sare.sa-update.dostech.net
70_sare_adult.cf.sare.sa-update.dostech.net
72_sare_bml_post25x.cf.sare.sa-update.dostech.net
99_sare_fraud_post25x.cf.sare.sa-update.dostech.net
70_sare_spoof.cf.sare.sa-update.dostech.net
70_sare_random.cf.sare.sa-update.dostech.net
70_sare_oem.cf.sare.sa-update.dostech.net
70_sare_genlsubj0.cf.sare.sa-update.dostech.net
70_sare_genlsubj_eng.cf.sare.sa-update.dostech.net
70_sare_unsub.cf.sare.sa-update.dostech.net
70_sare_uri0.cf.sare.sa-update.dostech.net
70_sare_obfu0.cf.sare.sa-update.dostech.net
70_sare_stocks.cf.sare.sa-update.dostech.net

Créez un script de mise à jour /usr/local/bin/update-sa :

#!/bin/bash
#
#
sa-update -D --channelfile /etc/mail/spamassassin/sare-sa-update-channels.txt --gpgkey 856AA88A

Rendez-le exécutable et ajoutez-le à cron :

chmod +x /usr/local/bin/update-sa  
ln -s /usr/local/bin/update-sa /etc/cron.daily/  
ln -s /usr/local/bin/update-sa /etc/cron.hourly
Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.