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)
acceptArrêtez les bots de spam malveillants de détruire votre machine.
smtp_accept_max_nonmail = 30
smtp_max_unknown_commands = 1Autorisez le pipelining uniquement depuis localhost pour vous permettre d’utiliser plus tard mailfeeder pour libérer le courrier.
pipelining_advertise_hosts = 127.0.0.1Vé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.xxxConfigurez 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.comSpécifiez ceci dans la configuration exim.
domainlist domains_with_catchall = lsearch;/etc/exim/catchall_domainsCré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.comCré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-networkingCela 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 startDéfinissez le mot de passe de l’utilisateur root :
mysqladmin -u root password NEWPASSWORDCréez la base de données mailwatch et remplissez les tables :
mysql -p < /usr/local/src/mailwatch-1.0.4/create.sqlCré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 = 20Modifiez 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 = &MailWatchLoggingModifiez 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 bayesRemplissez la base de données :
mysql -p bayes < /usr/share/doc/spamassassin-3.2.3/sql/bayes_mysql.sqlCré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 passwordMises à 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.KEYCré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.netCré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 856AA88ARendez-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.hourlyRecevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.