E-mail / Debian 12 : 2/3

Mémento 11.2 - Postscreen / Rspamd

Le filtrage du courrier indésirable fera de nouveau appel aux outils antispam Postscreen et Rspamd plus récents que SpamAssassin ainsi qu'à l'antivirus ClamAV.

10 - Filtrage du courrier indésirable

Le filtrage exigera de la ressource mémoire, ClamAV en sera le principal consommateur.

Vérifiez la mémoire de base actuellement utilisée :

[srvdmz@srvdmz:~$] free --mega -t
totalutilisélibre
Mem:100784866
Partition d'échange:102298924
Total2029946990

Constat : ≈ 1Go de libre incluant la partition d'échange.

Augmentez, si possible, la RAM actuelle de 1Go à 4 Go.

Les 3 Go d'écart seront utilisés par ClamAV, à défaut celui-ci ne fonctionnera pas bien ou pas du tout et il sera préférable de ne pas traiter la partie antivirus.

Vous revérifierez cette ressource à la fin du mémento.

10.1 - Installation de l'antispam Postscreen

Postscreen, placé en amont du démon smtpd, rejettera entre autres les connexions issues des spambots avant que celles-ci ne viennent polluer le serveur Postfix.

Les spambots sont des robots à l'origine de la majorité des SPAM émis sur Internet.

Pour activer Postscreen, éditez le fichier master.cf :

[srvdmz@srvdmz:~$] sudo nano /etc/postfix/master.cf

Commentez la ligne suivante (# devant la ligne) :

smtp  inet          n     -     y     -     -     smtpd

et décommentez celles-ci (suppression du #) :

smtp  inet       n     -     y     -      1    postscreen
smtpd pass       -     -     y     -      -    smtpd
dnsblog  unix    -     -     y     -      0    dnsblog
tlsproxy unix    -     -     y     -      0    tlsproxy

10.2 - Postscreen : Configuration

Pour le configurer, éditez le fichier main.cf :

[srvdmz@srvdmz:~$] sudo nano /etc/postfix/main.cf

et entrez le contenu suivant en fin de fichier :

# Filtrage avec Postscreen
postscreen_access_list = permit_mynetworks, cidr:/etc/postfix/postscreen_access.cidr

postscreen_denylist_action = drop

postscreen_greet_wait = 3s
postscreen_greet_banner = Bienvenue,merci de patienter..
postscreen_greet_action = enforce

postscreen_dnsbl_threshold = 3
postscreen_dnsbl_action = enforce
postscreen_dnsbl_sites =
        zen.spamhaus.org*3
        b.barracudacentral.org=127.0.0.[2..11]*2
        bl.spameatingmonkey.net*2
        bl.spamcop.net
        #dnsbl.sorbs.net
        swl.spamhaus.org*-4,
        list.dnswl.org=127.[0..255].[0..255].0*-2,
        list.dnswl.org=127.[0..255].[0..255].1*-4,
        list.dnswl.org=127.[0..255].[0..255].[2..3]*-6

postscreen_dnsbl_allowlist_threshold = -2

postscreen_non_smtp_command_enable = yes
postscreen_non_smtp_command_action = enforce

postscreen_pipelining_enable = yes
postscreen_pipelining_action = enforce

postscreen_bare_newline_enable = yes
postscreen_bare_newline_action = enforce

Le test access_list permettra de filtrer les clients SMTP selon la valeur des IP contenues dans le paramètre mynetworks et le fichier postscreen_access.cidr.

Ce dernier doit être créé et rempli manuellement :

[srvdmz@srvdmz:~$] cd /etc/postfix/
[srvdmz@srvdmz:~$] sudo touch postscreen_access.cidr

Ci-dessous, un exemple de contenu (vide par défaut) :

# Adresses IP autorisées
192.168.2.2	permit

# Adresses IP rejetées
164.52.24.168	reject
71.6.158.166	reject
71.6.146.186	reject
101.36.106.89	reject
87.236.176.0/24  reject
...

Le test greet permettra de rejeter les clients SMTP qui parleront avant que le serveur ne les y autorise comme l'exige le protocole SMTP.

Les tests dnsbl (Black List DNS) et dnswl (White List DNS) permettront de filtrer à l'aide de listes fournies sur Internet les clients SMTP considérés comme fiables ou susceptibles de transmettre des SPAMS.

Nota : Postscreen maintient une liste blanche dynamique dans le fichier postscreen_cache.db situé dans /var/lib/postfix.

Le test non_smtp permettra de rejeter les clients qui useront de Cdes non SMPT telles connect, get et post.

Le test pipelining permettra de rejeter les clients ne respectant pas le protocole d'envoi de Cdes SMTP par lot.

Le test bare_newline permettra de rejeter les clients ne respectant pas la syntaxe SMTP de fin de ligne.

Pour terminer, redémarrez Postfix :

[srvdmz@srvdmz:~$] sudo systemctl restart postfix

Vous devriez rapidement constater le travail de Postscreen en éditant les logs de Postfix :

[srvdmz@srvdmz:~$] sudo journalctl -n 100 | grep postfix

Retour :

...
oct. 02 10:59:54 srvdmz postfix/postscreen[11713]: CONNECT from [71.6.232.28]:53354 to [192.168.4.2]:25

oct. 02 10:59:54 srvdmz postfix/postscreen[11713]: PREGREET 27 after 0 from [71.6.232.28]:53354: EHLO zx18.quadmetrics.com\r\n

oct. 02 10:59:54 srvdmz postfix/postscreen[11713]: DISCONNECT [71.6.232.28]:53354
...

...
oct. 02 12:06:22 srvdmz postfix/postscreen[12309]: CONNECT from [101.36.106.89]:33098 to [192.168.4.2]:25

oct. 02 12:06:22 srvdmz postfix/dnsblog[12312]: addr 101.36.106.89 listed by domain zen.spamhaus.org as 127.0.0.2

oct. 02 12:06:22 srvdmz postfix/postscreen[12309]: PREGREET 10 after 0.05 from [101.36.106.89]:33098: EHLO ABC\r\n

oct. 02 12:06:22 srvdmz postfix/postscreen[12309]: DNSBL rank 3 for [101.36.106.89]:33098

oct. 02 12:06:24 srvdmz postfix/postscreen[12309]: DISCONNECT [101.36.106.89]:33098
...

Si IP rejetée dans le fichier postscreen_access.cidr :

...
oct. 05 21:34:36 srvdmz postfix/postscreen[3200]: CONNECT from [101.36.106.89]:46110 to [192.168.4.2]:25

oct. 05 21:34:36 srvdmz postfix/postscreen[3200]: DENYLISTED [101.36.106.89]:46110

oct. 05 21:34:36 srvdmz postfix/postscreen[3200]: DISCONNECT [101.36.106.89]:46110
...

10.3 - Installation de l'antispam Rspamd

Rspamd, plus récent et moderne que SpamAssassin, viendra compléter la lutte antispam.

Installez le paquet rspamd :

[srvdmz@srvdmz:~$] sudo apt install rspamd

Son installation inclut celle d'un serveur de Bdd Redis.

Tous les fichiers de configuration ont été créés dans le dossier /etc/rspamd/.

Vérifiez enfin le statut des services rspamd et redis :

[srvdmz@srvdmz:~$] sudo systemctl status rspamd
[srvdmz@srvdmz:~$] sudo systemctl status redis

Retours :

L'intégration du logiciel Rspamd dans Postfix se fera via le protocole Milter.

Pour activer celle-ci, éditez le fichier main.cf de Postfix :

[srvdmz@srvdmz:~$] sudo nano /etc/postfix/main.cf

et ajoutez la section suivante en fin de fichier :

# Applications Milter (RSPAMD, ...)
smtpd_milters = inet:127.0.0.1:11332
non_smtpd_milters = $smtpd_milters
milter_protocol = 6
milter_default_action = accept
milter_mail_macros = i {mail_addr} {client_addr} {client_name} {auth_authen}

Rechargez enfin la nouvelle configuration de Postfix :

[srvdmz@srvdmz:~$] sudo systemctl reload postfix

er redémarrez Rspamd :

[srvdmz@srvdmz:~$] sudo systemctl restart rspamd

10.4 - Rspamd : Auto-apprentissage bayésien

Activez l'auto-apprentissage bayésien en créant le fichier classifier-bayes.conf :

[srvdmz@srvdmz:~$] cd /etc/rspamd/override.d
[srvdmz@srvdmz:~$] sudo nano classifier-bayes.conf

et en y insérant les lignes suivantes :

autolearn = true;

# Envoi des données statistiques vers le serveur Redis
users_enabled = true;
backend = "redis";

Le filtrage bayésien est une technique de probabilité permettant de traiter le courrier indésirable.

Créez ensuite un fichier redis.conf :

[srvdmz@srvdmz:~$] sudo nano redis.conf

et indiquez la localisation du serveur Redis comme suit :

servers = "127.0.0.1";

Demandez à Rspamd de taguer le courrier indésirable en créant un fichier milter_headers.conf :

[srvdmz@srvdmz:~$] sudo nano milter_headers.conf

et en y insérant l'instruction suivante :

extended_spam_headers = true;

Pour classer automatiquement ce courrier tagué X-Spam: Yes, vous ferez appel au plugin sieve de Dovecot.

Editez, pour cela, le fichier 90-sieve.conf de Dovecot :

[srvdmz@srvdmz:~$] cd /etc/dovecot/conf.d
[srvdmz@srvdmz:~$] sudo nano 90-sieve.conf

et ajoutez ceci sous la ligne #sieve_after = :

sieve_after = /etc/dovecot/sieve-after

Créez ensuite le dossier sieve-after :

[srvdmz@srvdmz:~$] sudo mkdir /etc/dovecot/sieve-after

et ajoutez dans celui-ci un fichier 10-spam.sieve :

[srvdmz@srvdmz:~$] cd /etc/dovecot/sieve-after
[srvdmz@srvdmz:~$] sudo nano 10-spam.sieve

contenant la règle Sieve suivante :

require ["fileinto","mailbox"];

if header :contains "X-Spam" "Yes" {
fileinto :create "Junk";
stop;
}

L'utilisation de la règle implique de compiler celle-ci :

[srvdmz@srvdmz:~$] sudo sievec 10-spam.sieve

Un fichier binaire 10-spam.svbin a été généré.

Redémarrez maintenant Dovecot et Rspamd :

[srvdmz@srvdmz:~$] sudo systemctl restart dovecot
[srvdmz@srvdmz:~$] sudo systemctl restart rspamd

La syntaxe des fichiers de configuration de Rspamd peut être contrôlée comme suit :

[srvdmz@srvdmz:~$] sudo rspamadm configtest

Retour :

Syntax OK

10.5 - Rspamd : Apprentissage selon actions ...

Si un utilisateur déplace un courrier dans le dossier des spams, Rspamd apprendra que c’est un spam et si un utilisateur déplace un courrier du dossier des spams vers un dossier autre que la corbeille, Rspamd apprendra que c'est un ham soit le contraire d'un spam.

Cet apprentissage impose l'usage du plugin imap_sieve, éditez pour cela le fichier 20-imap.conf :

[srvdmz@srvdmz:~$] cd /etc/dovecot/conf.d
[srvdmz@srvdmz:~$] sudo nano 20-imap.conf

et ajoutez ceci sous #mail_plugins = $mail_plugins :

protocol imap {          # Ligne existante

mail_plugins = $mail_plugins imap_sieve

}                        # Ligne existante

Editez ensuite le fichier 90-sieve.conf :

[srvdmz@srvdmz:~$] sudo nano 90-sieve.conf

et entrez le contenu suivant à la fin du fichier :

plugin {          # Ligne existante

# Apprentissage selon actions utilisateurs

  sieve_plugins = sieve_imapsieve sieve_extprograms

 # Si déplacé dans dossier spam > script learn-spam.sieve
 imapsieve_mailbox1_name = Junk
 imapsieve_mailbox1_causes = COPY
 imapsieve_mailbox1_before = file:/etc/dovecot/sieve/learn-spam.sieve

 # Si retiré du dossier spam > script learn-ham.sieve
 imapsieve_mailbox2_name = *
 imapsieve_mailbox2_from = Junk
 imapsieve_mailbox2_causes = COPY
 imapsieve_mailbox2_before = file:/etc/dovecot/sieve/learn-ham.sieve

 # Dossier contenant les fichiers de scripts
 sieve_pipe_bin_dir = /etc/dovecot/sieve

 # Autoriser l'envoi d'e-mails vers un programme externe
 sieve_global_extensions = +vnd.dovecot.pipe +vnd.dovecot.environment

}                 # Ligne existante

Créez le dossier sieve dédié aux scripts Sieve/Rspamd :

[srvdmz@srvdmz:~$] sudo mkdir /etc/dovecot/sieve

Générez le 1er script Sieve learn-spam.sieve :

[srvdmz@srvdmz:~$] cd /etc/dovecot/sieve/
[srvdmz@srvdmz:~$] sudo nano learn-spam.sieve

et entrez le contenu suivant proposé par Dovecot :

require ["vnd.dovecot.pipe", "copy", "imapsieve", "environment", "variables"];

if environment :matches "imap.user" "*" {
  set "username" "${1}";
}

pipe :copy "rspamd-learn-spam.sh" [ "${username}" ];

Générez enfin le 2ème script Sieve learn-ham.sieve :

[srvdmz@srvdmz:~$] sudo nano learn-ham.sieve

et entrez le contenu suivant proposé par Dovecot :

require ["vnd.dovecot.pipe", "copy", "imapsieve", "environment", "variables"];

if environment :matches "imap.mailbox" "*" {
  set "mailbox" "${1}";
}

if string "${mailbox}" "Trash" {
  stop;
}

if environment :matches "imap.user" "*" {
  set "username" "${1}";
}

pipe :copy "rspamd-learn-ham.sh" [ "${username}" ];

Redémarrez Dovecot avant de continuer :

[srvdmz@srvdmz:~$] sudo systemctl restart dovecot

puis compilez les scripts Sieve et modifiez leurs droits :

[srvdmz@srvdmz:~$] sudo sievec learn-spam.sieve
[srvdmz@srvdmz:~$] sudo sievec learn-ham.sieve

[srvdmz@srvdmz:~$] sudo chmod u=rw,go= /etc/dovecot/sieve/learn-{spam,ham}.{sieve,svbin}

[srvdmz@srvdmz:~$] sudo chown vmail:vmail /etc/dovecot/sieve/learn-{spam,ham}.{sieve,svbin}

Générez le 1er script Rspamd rspamd-learn-spam.sh :

[srvdmz@srvdmz:~$] sudo nano rspamd-learn-spam.sh

et entrez le contenu suivant :

#!/bin/sh
exec /usr/bin/rspamc learn_spam

Générez le 2ème script Rspamd rspamd-learn-ham.sh :

[srvdmz@srvdmz:~$] sudo nano rspamd-learn-ham.sh

et entrez le contenu suivant :

#!/bin/sh
exec /usr/bin/rspamc learn_ham

Modifiez les droits des 2 fichiers et relancez Dovecot :

[srvdmz@srvdmz:~$] sudo chmod u=rwx,go= /etc/dovecot/sieve/rspamd-learn-{spam,ham}.sh

[srvdmz@srvdmz:~$] sudo chown vmail:vmail /etc/dovecot/sieve/rspamd-learn-{spam,ham}.sh

[srvdmz@srvdmz:~$] sudo systemctl restart dovecot

Pour tester la configuration, respectez ces 6 étapes :

1) Affichez le dossier Indésirables sur les Thunderbird.
-> Clic droit sur les comptes ...@loupvirtuel.fr
-> Paramètres -> Paramètres des indésirables
-> Cochez Déplacer les nouv... indésirables vers
-> Sélectionnez Dossier << Indésirables >> sur
-> ...@loupvirtuel.fr

Faites de même pour le compte x.y@zzz.freeddns.org.

2) Activez le mail_debug de /etc/dovecot/conf.d/10-logging.conf à yes et relancez Dovecot.

3) Envoyez un mail de srvdmz vers srvlan et déplacez le mail reçu dans le dossier Indésirables.

4) Déplacez ensuite ce mail du dossier Indésirables vers le dossier Courrier entrant de srvlan.

5) Observez enfin le contenu des logs de /var/log/mail.log et /var/log/rspamd/rspamd.log.

Capture - Logs : Lignes présentes de Dovecot et Rspamd
Logs : Lignes présentes de Dovecot et Rspamd

6) Terminez en remettant la valeur du paramètre mail_debug à no et relancez Dovecot.

10.6 - Rspamd : Interface Web

Rspamd est fourni avec une interface Web permettant de contrôler les courriers marqués comme spam, d'avoir des statistiques, etc...

Il est nécessaire, pour accéder à celle-ci, d'éditer l'hôte virtuel loupvirtuel.conf :

[srvdmz@srvdmz:~$] cd /etc/apache2/sites-available
[srvdmz@srvdmz:~$] sudo nano loupvirtuel.conf

et d'ajouter ceci dans la section <VirtualHost *:443> :

ProxyPass "/rspamd" "http://localhost:11334"
ProxyPassReverse "/rspamd" "http://localhost:11334"

Redémarrez le serveur Web Apache :

[srvdmz@srvdmz:~$] sudo systemctl restart apache2

Créez enfin le MDP d'accès exigé par l'interface Web :

[srvdmz@srvdmz:~$] sudo rspamadm pw

Exemple de retour :

Enter passphrase: Entrez votre MDP
$2$z777ywazwfxww636chfnmyifd83wb1p4$8b8c...

Créez maintenant un fichier worker-controller.inc :

[srvdmz@srvdmz:~$] cd /etc/rspamd/local.d
[srvdmz@srvdmz:~$] sudo nano worker-controller.inc

Entrez le hachage du MDP comme suit :

password = "$2$z777ywazwfxww636chfnmyifd83wb1p4$8b8c..."

et relancez rspamd :

[srvdmz@srvdmz:~$] sudo systemctl restart rspamd

Pour finir, testez l'URL https://loupvirtuel.fr/rspamd/

10.7 - Installation du scanner de virus ClamAV

Par curiosité, contrôlez de nouveau les ressources disponibles qui ont du peu évoluer :

[srvdmz@srvdmz:~$] free --mega -t
[srvdmz@srvdmz:~$] df /dev/sda1 -H

Installez maintenant les paquets ClamAV suivants :

[srvdmz@srvdmz:~$] sudo apt install clamav clamav-daemon
[srvdmz@srvdmz:~$] sudo apt install clamav-unofficial-sigs

Un groupe/utilisateur clamav et 2 services ont été créés.

Le paquet clamav-unofficial-sigs installe une base virale fournie par la société SaneSecurity, base qui vient compléter celles de ClamAV.

Attendez 5 à 10 minutes et vérifiez le statut du service de MAJ des Bdd ClamAV :

[srvdmz@srvdmz:~$] sudo systemctl restart clamav-freshclam
[srvdmz@srvdmz:~$] sudo systemctl status clamav-freshclam
[srvdmz@srvdmz:~$] sudo systemctl enable clamav-freshclam

Les Bdd daily, main et bytecode doivent être up to date.

Si Bdd up to date, démarrez le service clamav-daemon :

[srvdmz@srvdmz:~$] sudo systemctl start clamav-daemon
[srvdmz@srvdmz:~$] sudo systemctl status clamav-daemon

Au prochain boot système, le service clamav-daemon démarrera automatiquement.

Le scan d'un dossier peut déjà s'effectuer comme suit :

[srvdmz@srvdmz:~$] sudo clamscan /home/srvdmz

Les logs sont consultables dans /var/log/clamav/.

Le bon traitement de la base virale clamav-unofficial-sigs peut être vérifié comme suit :

[srvdmz@srvdmz:~$] cd /home/srvdmz
[srvdmz@srvdmz:~$] sudo clamscan --debug 2>&1 /dev/null | grep "sanesecurity"

Retour :

LibClamAV debug: /var/lib/clamav/sanesecurity.ftm loaded

10.8 - ClamAV : Configuration

Les fichiers sont situés dans le dossier /etc/clamav/.

Il est possible de réduire la fréquence de MAJ des Bdd en éditant le fichier freshclam.conf :

[srvdmz@srvdmz:~$] sudo nano /etc/clamav/freshclam.conf

et en modifiant la valeur 24 du paramètre Checks à 3 :

Checks 3

Les MAJ seront effectuées 3 fois par jour au lieu de 24.

Nota : Comme pour root, créez depuis l'interface de PostfixAdmin un alias de l'utilisateur clamav vers postmaster afin que ce dernier puisse recevoir les notifications par e-mail de ClamAV.

10.9 - ClamAV : Liaison avec Rspamd

Afin que Rspamd utilise ClamAV, créez le fichier suivant :

[srvdmz@srvdmz:~$] sudo nano /etc/rspamd/local.d/antivirus.conf

et entrez le contenu ci-dessous :

clamav {
    scan_mime_parts = false;
    symbol = "CLAM_VIRUS";
    type = "clamav";
    action = "reject";
    servers = "/var/run/clamav/clamd.ctl";
}

Pour finir rechargez la configuration de Rspamd :

[srvdmz@srvdmz:~$] sudo systemctl reload rspamd

11 - Tests

11.1 - Test de détection d'un SPAM

Au préalable, créez un fichier temporaire options.inc :

[srvdmz@srvdmz:~$] cd /etc/rspamd/local.d
[srvdmz@srvdmz:~$] sudo nano options.inc

et entrez le contenu suivant :

enable_test_patterns = true;

Ceci permettra d'effectuer le test attendu, voir les explications sur le site rspamd.com.

Redémarrez ensuite Rspamd :

[srvdmz@srvdmz:~$] sudo systemctl restart rspamd

et envoyez, depuis le Thunderbird de srvlan, un courrier de postmaster vers clientmail-vm2 contenant ceci :

Début
YJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-\
ANTI-UBE-TEST-EMAIL*C.34X

Ce courrier doit normalement être traité comme spam.
La source de celui-ci sera complété du tag X-Spam: Yes.
Fin

Le caractère \ indique d'écrire le tout sur une seule ligne.

Si tout se passe bien, le courrier sera, pour le compte clientmail-vm2, stocké automatiquement dans le dossier des Indésirables de Thunderbird.

Vérifiez sur debian12-vm2 que clientmail-vm2 le reçoit bien notifié du tag X-Spam: Yes :

Sur srvdmz, le courrier a été stocké dans :

[srvdmz@srvdmz:~$] sudo ls -la /var/mail/vmail/loupvirtuel.fr/clientmail-vm2/Maildir/.Junk/cur/

Le groupe date/heure correspond avec celui du mail reçu sur le compte virtuel clientmail-vm2.

Si OK, vous pouvez supprimer le fichier options.inc.

11.2 - Test de détection d'un VIRUS

Au préalable, éditez le fichier antivirus.conf :

[srvdmz@srvdmz:~$] cd /etc/rspamd/local.d
[srvdmz@srvdmz:~$] sudo nano antivirus.conf

et modifiez son contenu comme suit :

clamav {
    scan_mime_parts = false;
    symbol = "CLAM_VIRUS";
    type = "clamav";
    action = "reject";
    servers = "/var/run/clamav/clamd.ctl";

patterns {
    JUST_EICAR = '^Eicar-Test-Signature$';
                }
}

Ceci permettra d'effectuer le test attendu, voir les explications sur le site rspamd.com.

Redémarrez ensuite Rspamd :

[srvdmz@srvdmz:~$] sudo systemctl restart rspamd

Envoyez à présent, depuis srvlan, un courrier de srvlan vers clientmail-vm1 contenant ceci :

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-\
ANTIVIRUS-TEST-FILE!$H+H*

Le caractère \ indique d'écrire le tout sur une seule ligne.

Ce contenu est téléchargeable depuis le site Eicar (European Institute for Computer Antivirus Research) en utilisant l'URL https://secure.eicar.org/eicar.com.txt.

Résultat, le virus sera détecté lors de la phase d'envoi du mail depuis srvlan et rejeté (paramètre action = "reject"; du fichier antivirus.conf).

11.3 - Contrôle de la mémoire utilisée

ClamAV est gourmand :

[srvdmz@srvdmz:~$] free --mega -t
totalutilisélibre
Mem:41052456803
Partition d'échange:1022620401
Total512730771205

Constat : ≈ 1Go de libre incluant la partition d'échange.

ClamAV exigera parfois plus que le 2456 Mo affiché ci-dessus d'où le besoin de 4 Go de RAM. A défaut n'utilisez pas le logiciel antivirus.

11.4 - Contrôle des logs

Consultez le journal des logs (Cde journalctl) et le fichier /var/log/rspamd/rspamd.log, le premier permettant notamment d'observer l'efficacité de l'outil Postscreen.

Vous allez vite comprendre que l'ouverture du port 25 sur votre box Internet sera rapidement exploitée par divers scanners et robots spammeurs.

Image - Rédacteur satisfait


Voilà !
Le courrier indésirable est géré.
La partie 3 vous attend pour
traiter le WebMail avec Roundcube ...

Laisser un commentaire