Ceci est une ancienne révision du document !
Partie 5 : lutter contre le spam
Le spam est la plaie des e-mails. Si vous ne faites rien pour lutter contre, vous allez crouler sous les spams. Heureusement, il y a plusieurs moyens de lutter contre le spam.
Plusieurs logiciels vont nous aider dans cette tâche :
- Postgrey : à chaque e-mail reçu, Postgrey va vérifier la combinaison adresse IP de l'envoyeur, adresse e-mail de l'envoyeur et adresse e-mail du destinataire. Si cette combinaison n'a jamais été vu, il va rejeter l'e-mail. Les serveur e-mail légitimes vont renvoyer l'e-mail alors que la plupart des serveurs envoyant du spam ne renvoi rien en cas de rejet
- SpamAssassin : filtre les e-mails et détecte les spams à l'aide de règles
- ClamAV : un antivirus
- Amavis : fait le lien entre SpamAssassin, ClamAV et Postfix
Installation
Lancez la commande pour installer ces logiciels et leurs dépendances :
sudo aptitude install amavisd-new arj bzip2 cabextract cpio rpm2cpio file gzip lhasa nomarch pax rar unrar p7zip-full unzip zip lrzip lzip liblz4-tool lzop unrar-free clamav clamav-daemon spamassassin libnet-dns-perl libmail-spf-perl pyzor razor postgrey
Configuration
Passons à la configuration.
Amavis
Ouvrez le fichier 15-content_filter_mode avec la commande :
sudo nano /etc/amavis/conf.d/15-content_filter_mode
Décommentez les lignes suivantes pour activer la recherche de virus :
#@bypass_virus_checks_maps = ( # \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);
Redémarrez Amavis :
sudo systemctl restart amavis
Postfix
Il va falloir indiquer à Postfix qu'il doit transférer les e-mails à Amavis et ensuite les récupérer après analyse.
Ouvrez le fichier main.cf :
sudo nano /etc/postfix/main.cf
Ajoutez la ligne suivante pour indiquer à Postfix qu'il doit transmettre chaque mail à Amavis, qui écoute sur le port 10024 :
content_filter = smtp-amavis:[127.0.0.1]:10024
Ouvrez le fichier master.cf :
sudo nano /etc/postfix/master.cf
Ajoutez les lignes suivantes :
#Connexion de Postfix à Amavis smtp-amavis unix - - n - 2 smtp -o syslog_name=postfix/amavis -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes -o disable_dns_lookups=yes -o max_use=20 -o smtp_tls_security_level=none
Explication des lignes :
- syslog_name=postfix/amavis → Change le nom du processus dans les logs et le remplace par postfix/amavis
- smtp_data_done_timeout=1200 → Temps limite pour recevoir une réponse du serveur
- smtp_send_xforward_command=yes → Transfére le nom, l'adresse, le protocole et le nom HELO du client original au filtre, qui apparaissent également dans les logs au lieu de 127.0.0.1…
- disable_dns_lookups=yes → Désactive la recherche de DNS pour se connecter à Amavis
- max_use=20 → Nombre maximum de requête
- smtp_tls_security_level=none → Désactive TLS pour se connecter à Amavis
Ajoutez également les lignes suivantes pour pouvoir récupérer les e-mails analysés par Amavis : #Ajout d'un processus Postfix pour recevoir les e-mails analysés par Amavis 10025 inet n - n - - smtpd
- o syslog_name=postfix/10025
- o content_filter=
- o mynetworks_style=host
- o mynetworks=127.0.0.0/8
- o local_recipient_maps=
- o relay_recipient_maps=
- o strict_rfc821_envelopes=yes
- o smtp_tls_security_level=none
- o smtpd_tls_security_level=none
- 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_end_of_data_restrictions=
- 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_address_mappings
ClamAV
Ouvrez le fichier 15-content_filter_mode :
sudo nano /etc/amavis/conf.d/15-content_filter_mode
Décommentez les lignes suivantes pour activer la recherche de virus :
#@bypass_virus_checks_maps = ( # \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);
Amavis va avoir besoin d'accéder au fichier /var/run/clamav/clamd.ctl pour communiquer avec ClamAV. On va donc ajouter l'utilisateur clamav au groupe amavis :
sudo adduser clamav amavis
Par défaut, Amavis écoute sur le port 10024 à la fois pour les e-mails entrant et sortant. Il est conseillé d'avoir un port pour les e-mails entrant et un autre pour les sortant.
Ouvrez le fichier 50-user :
sudo nano /etc/amavis/conf.d/50-user
Ajoutez la ligne suivante entre use “strict;” et “1;” pour ajouter un processus écoutant sur le port 10026 :
# Ajouter un processus sur le port 10026 $inet_socket_port = [10024,10026];
Ajoutez ensuite la ligne suivante pour appliquer la règle “ORIGINATING” à ce processus :
# Appliquer la règle ORIGINATING au processus écoutant sur le port 10026 $interface_policy{'10026'} = 'ORIGINATING';
Enfin, ajoutez les lignes suivantes pour définir la règle “ORIGINATING” :
# Configuration de la règle ORIGINATING $policy_bank{'ORIGINATING'} = { # e-mails provenant apparemment d'un utilisateur enregistré ou local originating => 1, # on déclare que cet e-mail provient de notre client smtp allow_disclaimers => 1, # on active l'insertion d'un avertissement si pris en charge # on notifie l'administrateur de l'apparition d'un malware dont la provenance est interne virus_admin_maps => ["virusalert\@$mydomain"], spam_admin_maps => ["virusalert\@$mydomain"], warnbadhsender => 1, # on force la conversion MTA sur 7-bit smtpd_discard_ehlo_keywords => ['8BITMIME'], bypass_banned_checks_maps => [1], # permet d'envoyer n'importe quel type ou nom de fichier terminate_dsn_on_notify_success => 0, # on conserve l'option NOTIFY=SUCCESS activée };
Ouvrez le fichier master.cf de Postfix :
sudo nano /etc/postfix/master.cf
Afin que les e-mails provenant d'utilisateurs enregistrés soient transférés au processus Amavis sur le port 10026, après “smtps inet n - y - - smtpd”, ajoutez à la fin la ligne suivante :
-o content_filter=smtp-amavis:[127.0.0.1]:10026
SpamAssassin
Ouvrez le fichier 15-content_filter_mode :
sudo nano /etc/amavis/conf.d/15-content_filter_mode
Décommentez les lignes suivantes pour activer le filtre anti-spam :
#@bypass_spam_checks_maps = ( # \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);
Les options par défaut se trouvent dans le fichier
/etc/amavis/conf.d/20-debian_defaults
Si vous souhaitez modifier des valeurs, il vous faut modifier le fichier
/etc/amavis/conf.d/50-user
Si par exemple vous voulez que soit affiché pour tous les e-mails, spam et non spam, l'entête X-Spam-Status, il vous faut ajouter la ligne suivante :
# Toujours ajouter l'entête X-Spam-Status $sa_tag_level_deflt = -9999;
Pour que les modifications dans ce fichier soient prises en compte, il faut que $mydomain dans le fichier 05-domain_id correspondent bien à votre nom de domaine. La valeur par défaut de $mydomain est “head -n 1 /etc/mailname”. Si cette commande ne renvoi pas “domaine.fr” (correspondant donc à votre nom de domaine), il faudra remplacer la ligne
chomp($mydomain = `head -n 1 /etc/mailname`);
par
$mydomain = "domaine.fr";
Redémarrez Amavis, ClamAV et Postfix :
sudo systemctl restart amavis clamav-daemon postfix