Exécuter un script sieve sur une condition

Hello,

Dans mon serveur de mail, je dois faire un routage automatique des mails reçus sur des boîte dites de fonctions, vers les bal perso de mes utilisateurs.

L’idée de cette feature est de laisser à l’utilisateur dans l’assoc, le choix, si il ne veut pas consulter sa bal de fonction (une bal de l’assoc lui étant créée en rapport à sa fonction), d’au moins recevoir les mails sur sa boîte personnelle (orange, free, etc…).

J’ai donc un script qui va parcourir les choix des users, et si actif ou non, recréé à la volée un /var/mail/vhost/%d/%u/automate.sieve dans lequel je mets ceci :

require [« fileinto », « mailbox », « copy »];
if header :contains « To » « mail_pro » { redirect :copy « mail_perso »; }

ça marche du feu de dieu, mais un peu trop bien…

Maintenant, admettons que mon user reçoive des pourriels du fin fond de l’enfer, c’est à dire que ceux-ci ont traversé les RBL, postscreen, les filtres postfix, et Rspamd. Boom ça arrive dans sa boîte et là, que se passe-t-il ? Il arrose à son tour sa boîte perso free, orange ou je sais quoi d’autre… et on se retrouve malgré nous à émettre du spam. Un coup à finir dans les dnsbl.

Je voudrais donc éviter ce phénomène, mais j’avoue ne pas savoir comment faire.

Ma conf dovecot ressemble à ceci :
cat /etc/dovecot/conf.d/90-sieve.conf

plugin {

sieve_global_dir = /etc/dovecot/sieve-global/

sieve = file:~/sieve;active=~/.dovecot.sieve
sieve_before = /etc/dovecot/sieve-global
sieve_before1 = /var/mail/vhost/%d/%u/automate.sieve

sieve_plugins = sieve_imapsieve sieve_extprograms

imapsieve_mailbox1_name = Junk
imapsieve_mailbox1_causes = COPY
imapsieve_mailbox1_before = file:/etc/dovecot/sieve/report-spam.sieve

imapsieve_mailbox2_name = *
imapsieve_mailbox2_from = Junk
imapsieve_mailbox2_causes = COPY
imapsieve_mailbox2_before = file:/etc/dovecot/sieve/report-ham.sieve

sieve_pipe_bin_dir = /etc/dovecot/sieve

sieve_global_extensions = +vnd.dovecot.pipe
}

L’idée serait de dire que si je dois exécuter /etc/dovecot/sieve/report-spam.sieve (car un spam a été détecté), alors je n’exécute pas /var/mail/vhost/%d/%u/automate.sieve

Une idée ?

Réponse de moi à moi, plutôt que d’exécuter plusieurs scripts, autant imbriquer la condition directement dans le script sieve :

require ["fileinto", "mailbox", "copy"];


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

elsif  header :contains "To" "test@domaine1.net" {
        redirect :copy "titi@domaine2.net";
}