Exterminez-les tous, combattez le spam directement chez PlanetHoster - N0C
Automatisez votre lutte contre le spam sur PlanetHoster N0C ! Découvrez comment générer et déployer des règles Sieve personnalisées avec RoundCube et un script pour bloquer efficacement de grandes quantités d'emails indésirables.
Traduction automatique
Cet article a plus d'un an, mais il a été relu le 30 juillet 2026 — son contenu est toujours exact.

Cet article explique comment combattre le spam sur l'hébergement N0C de PlanetHoster, où SpamAssassin n'est pas accessible aux clients : les règles doivent être créées dans l'interface Filtres de RoundCube, qui génère un fichier roundcube.sieve en syntaxe Sieve. Il montre le format des règles Sieve et où se trouve ce fichier sur le serveur FTP, comme première étape vers l'automatisation de la génération des règles.
Il y a quelques jours, j'ai publié un article sur comment lutter contre le spam si vous avez un cpanel. Si vous êtes hébergé sur l'infrastructure N0C de PlanetHoster, ça ne fonctionnera pas.
Après discussion avec eux, ils nous ont dit que SpamAssassin est géré de leur côté (PH) et n'est plus accessible pour nous (les clients). Nous ne pouvons plus créer nos propres règles comme expliqué dans l'article mentionné ci-dessus.
Ok, voici donc comment gérer le spam sur la plateforme PlanetHoster - N0C.
Créer ces règles une par une dans RoundCube devient vite pénible ; Exterminez-les tous : tuer le spam avec GitHub Actions génère l'intégralité du fichier roundcube.sieve à partir d'une simple liste JSON et l'uploade pour vous.
Vous devez utiliser RoundCube pour le filtrage
Le support de PlanetHoster m'a indiqué qu'il faut utiliser le client mail RoundCube présent dans leur hébergement PH (lien direct : https://mg.n0c.com/email/accounts).
Vous n'êtes pas obligé d'utiliser RoundCube comme client mail.
Les règles définies dans RoundCube seront exécutées au niveau du serveur même si vous ne l'ouvrez pas. Quel que soit votre client mail, peu importe lequel, les règles RoundCube seront exécutées.
La documentation officielle de PH est, en anglais : https://kb.n0c.com/en/knowledge-base/redirecting-emails-with-a-filter-in-roundcube-2/ ou, en français, https://kb.n0c.com/knowledge-base/creation-et-redirection-de-tous-les-courriels-avec-un-filtre-dans-roundcube/#marche-a-suivre
Cliquez ensuite sur l'icône mail à droite d'un de vos comptes et vous démarrerez normalement RoundCube.
Dans la partie droite de l'écran, cliquez sur l'icône Settings puis Filters et enfin sur le bouton Create en haut à droite de l'écran.
Remplissez l'écran avec votre propre règle ; par exemple pour identifier comme spam tous les emails provenant de *.su (Union soviétique) :

Emails non sollicités
Dans mon cas, tous les emails venant de .su ne peuvent être que des emails non sollicités.
Une fois enregistrée, vous pouvez créer d'autres règles.
Trop d'actions manuelles
Nous serons tous d'accord : pour arriver au bouton « Save », il a fallu cliquer au moins 13 fois, voire plus. Et pour créer une deuxième règle, il faudrait cliquer au moins 8 fois. Non, ce n'est vraiment pas possible.
Si besoin, cliquez à nouveau sur le menu Settings puis Filters. Maintenant que vous avez au moins une règle, cliquez sur le bouton Actions en haut de l'écran et vous y trouverez une action Download.
Ouvrez le fichier téléchargé et vous obtiendrez quelque chose comme ceci :
# rule:[Identify as spam: *.su]
if allof (header :contains "from" "*.su")
{
fileinto "spam";
}
Cette syntaxe s'appelle Sieve (plus d'infos sur wiki).
La syntaxe est plutôt simple, non ? En fait, on peut la reproduire avec une boucle en PHP, Bash, Python ou le langage que vous préférez.
Il y a une seule variable et c'est *.su. Donc, si je veux aussi bloquer .india (aussi, parce que je n'ai aucun contact en Inde), il me suffit de coder une boucle avec un tableau de deux entrées et j'obtiens :
# rule:[Identify as spam: *.india]
if allof (header :contains "from" "*.india")
{
fileinto "spam";
}
# rule:[Identify as spam: *.su]
if allof (header :contains "from" "*.su")
{
fileinto "spam";
}
Où placer notre fichier
Une fois que vous avez un fichier .sieve correctement formaté (pensez à l'enregistrer pour Linux, càd CR et non CRLF), vous devez copier le fichier sur votre host, très probablement via un client FTP.
L'emplacement se trouve, à la racine de mon FTP, dans le dossier /mail/DOMAIN.TLD/ACCOUNT/sieve (pour moi, DOMAIN.TLD est avonture.be et ACCOUNT est christophe) puis, je ne sais pas pourquoi, le chemin est doublé (donc, pour moi, c'est /mail/avonture.be/christophe/mail/avonture.be/christophe/sieve).
Dans ce dossier, vous trouverez un fichier roundcube.sieve.
Créez une première règle si le chemin n'existe pas encore
Au cas où vous ne trouveriez pas ce chemin ou ce fichier, allez simplement dans RoundCube et créez un filtre manuellement comme vu au chapitre précédent. Retournez ensuite sur votre FTP, le fichier devrait maintenant s'y trouver.
Restez connecté
Comme vous me connaissez, je ne peux pas me contenter d'une solution manuelle. Aller dans RoundCube et créer un filtre demande 13 actions. Aïe.
Comme nous l'avons vu, avec un peu de programmation, il est possible d'automatiser la création du fichier roundcube.sieve.
J'ai commencé à programmer un petit script en bash Linux qui prendra un fichier JSON en entrée (comme montré ci-dessous) et écrira le fichier roundcube.sieve.
{ "patterns": [ "*.india", "*.ru", "*.su", "*@newsletter.*", "newsletter@*", "newsletters-noreply@*", "newsletters@*" ]}Ce fichier de configuration définit une liste de motifs pour filtrer les messages électroniques dans Sieve. Les motifs ciblent les domaines spécifiques (Inde, Russie), les adresses de bulletins d'information et les adresses de réponse automatique, probablement pour les organiser, les bloquer ou les gérer automatiquement.
Le code, en mode preuve de concept, est déjà écrit (voir ci-dessous), mais il doit être affiné et, surtout, son exécution automatisée.
Laissez-moi un peu de temps pour le faire et dès que ce sera prêt, je publierai ma solution.
#!/usr/bin/env bashset -euo pipefail
clear
if [[ ! -f patterns.json ]]; then echo "Please create a patterns.json file." echo "Run 'cp patterns.json.dist patterns.js' to use an example." exit 1fi
rm -f roundcube.sieve && touch roundcube.sieve
cat patterns.json \ | jq '.patterns[]' \ | sort \ | while read -r pattern; do \ # Trim quotes pattern=$(echo "$pattern" | tr -d '"') # Read the spam.template file, make the replace and append in file roundcube.sieve sed "s/{{ pattern }}/${pattern}/g" spam.template >>roundcube.sieve; \ done
echo "File roundcube.sieve has been created. Now, you've to publish it on your FTP."Ce script génère un fichier de filtres Sieve pour Roundcube en lisant des motifs depuis patterns.json, en les triant, et en les injectant dans un template pour créer des règles de spam. Il vérifie d'abord que le fichier de configuration existe, puis reconstruit le fichier de sortie à partir de zéro.
Information
L'article Exterminez-les tous : tuer le spam avec GitHub Actions est maintenant écrit ; n'hésitez pas à le lire.
Remerciements
Pour cet article, je voudrais remercier Marc Dechèvre car c'est Marc qui a identifié le fichier .sieve et où l'enregistrer via FTP. Merci maestro 👏.




