Filtrage du courrier éléctronique
L'un des plus gros problèmes avec le courrier électronique à l'heure actuelle sont les courriers électroniques non sollicités envoyés en masse (ou UBE en anglais). Également connus sous le nom de SPAM, ces messages peuvent également transmettre des virus et d'autres formes de logiciels malveillants. Selon certains rapports, ces messages constituent l'essentiel de l'ensemble du trafic e-mail sur Internet.
This section will cover integrating Amavisd-new, Spamassassin, and ClamAV with the Postfix Mail Transport Agent (MTA). Postfix can also check email validity by passing it through external content filters. These filters can sometimes determine if a message is spam without needing to process it with more resource intensive applications. Two common filters are opendkim and python-policyd-spf.
-
Amavisd-new est un programme enveloppe qui peut appeler différents programmes de filtrage de contenu pour la détection de courrier indésirable (spam), anti-virus, etc.
-
Spamassassin utilise divers mécanismes pour filtrer les courriers en se basant sur leur contenu.
-
ClamAV est anti-virus libre.
-
opendkim implements a Sendmail Mail Filter (Milter) for the DomainKeys Identified Mail (DKIM) standard.
-
python-policyd-spf active la vérification Sender Policy Framework (SPF) avec Postfix.
Voici comment ces applications collaborent :
-
Un courriel est accepté par Postfix.
-
Dans ce cas, le message passe via les filtres externes opendkim et python-policyd-spf.
-
Amavisd-new traite ensuite le message.
-
ClamAV est utilisé pour nalyser le message. Si le message contient un virus alors Postfix le rejettera.
-
Les messages propres seront ensuite analysés par Spamassassin pour savoir si le courrier est indésirable (spam). Spamassassin ajoutera alors des lignes X-Header permettant à Amavisd-new de manipuler le message par la suite.
Par exemple, si un message a un score Spam de plus de cinquante le message pourrait être automatiquement sorti de la file sans que le destinataire ne soit jamais embêté. Un autre moyen de traiter les messages signalés est de les remettre au client de messagerie électronique (MUA) autorisant l'utilisateur à gérer le message comme il le souhaite.
Installation
Consultez Postfix pour les instructions d'installation et de configuration de Postfix.
Pour installer le reste des applications saisissez ce qui suit dans un terminal :
sudo apt install amavisd-new spamassassin clamav-daemon sudo apt install opendkim postfix-policyd-spf-python
Il existe des paquets facultatifs qui s'intègrent avec Spamassassin pour une meilleure détection des spams :
sudo apt install pyzor razor
Avec les principales applications de filtrage, des utilitaires de compression sont nécessaires pour traiter certaines pièces jointes :
sudo apt install arj cabextract cpio lha nomarch pax rar unrar unzip zip
Si certains paquets sont introuvables, vérifiez que le dépôt multiverse est activé dans /etc/apt/sources.list
If you make changes to the file, be sure to run sudo apt update before trying to install again.
Configuration
Configurez maintenant cela pour que tou fonctionne ensemble et flitre les courriers.
ClamAV
L'installation par défaut de ClamAV nous conviendra. Regardez son fichier de configuration dans /etc/clamav pour avoir accès à plus d'options.
Ajoutez l'utilisateur clamav au groupe amavis de manière à ce que Amavisd-new ait les droits suffisants pour lire les fichiers :
sudo adduser clamav amavis sudo adduser amavis clamav
Spamassassin
Spamassassin détecte automatiquement les composants supplémentaires et les utilisera s'ils sont présents. Ceci veut donc dire qu'il n'est pas nécessaire de configurer pyzor et razor.
Modifiez /etc/default/spamassassin pour activer le démon Spamassassin. Changez ENABLED=0 par :
ENABLED=1
Lancez maintenant le démon :
sudo systemctl start spamassassin.service
Amavisd-new
D'abord, activez la détection de spam et de virus dans Amavisd-new en éditant /etc/amavis/conf.d/15-content_filter_mode :
use strict; # You can modify this file to re-enable SPAM checking through spamassassin # and to re-enable antivirus checking. # # Default antivirus checking mode # Uncomment the two lines below to enable it # @bypass_virus_checks_maps = ( \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re); # # Default SPAM checking mode # Uncomment the two lines below to enable it # @bypass_spam_checks_maps = ( \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re); 1; # insure a defined return
Bouncing spam can be a bad idea as the return address is often faked. The default behaviour is to instead discard. This is configured in /etc/amavis/conf.d/20-debian_defaults where $final_spam_destiny is set to D_DISCARD rather than D_BOUNCE.
De plus, vous devriez peut-être ajuster les options suivantes afin d'étiqueter plus de messages comme indésirables :
$sa_tag_level_deflt = -999; # ajoute les entêtes d'informations de courrier indésirable si supérieur ou égal à ce niveau $sa_tag2_level_deflt = 6.0; # ajoute l'entête 'courrier indésirable détecté' à ce niveau $sa_kill_level_deflt = 21.0; # déclenche les actions d'évitement de de courrier indésirable $sa_dsn_cutoff_level = 4; # le niveau de courrier indésirable en dessous duquel un DSN n'est pas envoyé
Si le nom d'hôte (hostname) du serveur est différent de l'enregistrement MX du domaine vous devrez fixer vous-même l'option $myhostname. De même, si le serveur sert de multiples domaines, l'option @local_domains_acl devra être personnalisée. Modifiez le fichier /etc/amavis/conf.d/50-user :
$myhostname = 'mail.example.com'; @local_domains_acl = ( "example.com", "example.org" );
Si vous voulez couvrir plusieurs domaines, vous pouvez utiliser ce qui suit dans le fichier /etc/amavis/conf.d/50-user
@local_domains_acl = qw(.);
Après sa configuration, Amavisd-new doit être redémarré :
sudo systemctl restart amavis.service
Liste blanche DKIM
Amavisd-new peut être configuré pour mettre automatiquement les adresses des domaines ayant des clés correctes en liste blanche. Des domaines pré configurés se trouvent dans /etc/amavis/conf.d/40-policy_banks.
Il existent plusieurs manières de configurer la liste blanche d'un domaine :
-
'example.com' => 'WHITELIST', : ajoute toutes les adresses du domaine « example.com » à la liste blanche .
-
'.example.com' => 'WHITELIST', : ajoute n'importe quelle adresse de n'importe quel sous-domaine de « example.com » s'ils ont une signature valable.
-
'.example.com/@example.com' => 'WHITELIST', : ajoute les sous-domaines de « example.com » qui utilisent la signature du domaine parent example.com.
-
'./@example.com' => 'WHITELIST',: adds addresses that have a valid signature from "example.com". This is usually used for discussion groups that sign their messages.
Un domaine peut aussi avoir plusieurs configurations de liste blanche. Après avoir modifié le fichier, redémarrez amavisd-new :
sudo systemctl restart amavis.service
Dans ce contexte, une fois qu'un domaine a été ajouté à la liste blanche, le message ne sera pas filtré par un anti-virus quelconque ou un anti-spam. Ceci peut ne pas vous convenir.
Postfix
Pour l'intégration dans Postfix, saisissez la commande suivant dans un terminal :
sudo postconf -e 'content_filter = smtp-amavis:[127.0.0.1]:10024'
Ouvrez ensuite le fichier /etc/postfix/master.cf et ajoutez ce qui suit tout à la fin :
smtp-amavis unix - - - - 2 smtp -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes -o disable_dns_lookups=yes -o max_use=20 127.0.0.1:10025 inet n - - - - smtpd -o content_filter= -o local_recipient_maps= -o relay_recipient_maps= -o smtpd_restriction_classes= -o smtpd_delay_reject=no -o smtpd_client_restrictions=permit_mynetworks,reject -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o smtpd_data_restrictions=reject_unauth_pipelining -o smtpd_end_of_data_restrictions= -o mynetworks=127.0.0.0/8 -o smtpd_error_sleep_time=0 -o smtpd_soft_error_limit=1001 -o smtpd_hard_error_limit=1000 -o smtpd_client_connection_count_limit=0 -o smtpd_client_connection_rate_limit=0 -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks,no_milters
Ajoutez aussi les deux lignes suivantes immédiatement en dessous du service de transport "pickup"
-o content_filter= -o receive_override_options=no_header_body_checks
Ceci empêchera la classification en tant que pourriel des messages de rapport de pourriels.
Maintenant, redémarrez Postfix :
sudo systemctl restart postfix.service
Le filtrage anti-spam et anti-virus est maintenant activé.
Amavisd-new et Spamassassin
When integrating Amavisd-new with Spamassassin, if you choose to disable the bayes filtering by editing /etc/spamassassin/local.cf and use cron to update the nightly rules, the result can cause a situation where a large amount of error messages are sent to the amavis user via the amavisd-new cron job.
Il y a plusieurs façons de traiter cette situation :
-
Configurez votre MDA (agent de distribution de courriel) pour filtrer les messages que vous ne souhaitez pas voir.
-
Changez /usr/sbin/amavisd-new-cronjob pour vérifier use_bayes 0. Par exemple, modifiez /usr/sbin/amavisd-new-cronjob et ajoutez ce qui suit en haut, avant les instructions test :
egrep -q "^[ \t]*use_bayes[ \t]*0" /etc/spamassassin/local.cf && exit 0
Tests
D'abord, testez que l'application Amavisd-new écoute bien sur le port 10024 :
telnet localhost 10024 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 [127.0.0.1] ESMTP amavisd-new service ready ^]
Dans l'en-tête des messages qui passent par le filtre de contenu, vous devriez lire :
X-Spam-Level: X-Virus-Scanned: Debian amavisd-new at example.com X-Spam-Status: No, hits=-2.3 tagged_above=-1000.0 required=5.0 tests=AWL, BAYES_00 X-Spam-Level:
Votre sortie variera, mais l'important c'est qu'il existe des entrées X-Virus-Scanned et X-Spam-Status.
Dépannage
La meilleure façon de savoir pourquoi quelque chose ne fonctionne pas est vérifier les fichiers journaux.
-
Pour les instructions sur la journalisation dans Postfix, voyez la section Dépannage.
-
Amavisd-new utilise Syslog pour envoyer des messages dans /var/log/mail.log. Le niveau de détails peut être augmenté en ajoutant l'option $log_level dans /etc/amavis/conf.d/50-user, et en réglant la valeur de 1 à 5.
$log_level = 2;
Lorsque le niveau de journalisation de Amavisd-new est augmenté, celui de Spamassassin l'est aussi.
-
La quantité d'informations enregistrée dans le journal de ClamAV peut être augmentée en modifiant /etc/clamav/clamd.conf et en réglant l'option suivante :
LogVerbose true
Par défaut, ClamAV enverra les messages de journalisation (logs) dans /var/log/clamav/clamav.log.
Après avoir modifié les paramètres de journal d'une application, n'oubliez pas de redémarrer le service pour que les changements soient pris en compte. De plus, une fois le problème résolu, il est judicieux de revenir aux paramètres initiaux.
Références
Pour plus d'informations sur le filtrage des emails, voyez les liens suivants:
De plus, n'hésitez pas à poser vos questions (en anglais) sur le canal IRC #ubuntu-server du réseau freenode.