#1 Le 11/12/2020, à 20:16
- dodo.deejay
Créer son propre filtre sieve
Bonjour,
J'aimerais créer mon propre filtre avec sieve.
j'ai vu : https://docs.gandi.net/fr/gandimail/sie … sieve.html
ou
https://tools.ietf.org/html/rfc5435
Mais je ne sais pas trop comment l'adapter.
require ["enotify"];
# rule:[test]
if true
{
notify :importance "1" :message "NOUVEAU MESSAGE DE" "mailto:mail@unepersonne.fr
Mon problème c'est que je ne peux pas mettre de message dans le corps avec ce filtre, es que je peux rajouter Boby quelque part ? Car NOUVEAU MESSAGE DE : c'est en faite le Sujet.
De plus es t'il possible de mettre du Gras, une couleur ?
Min but final est que je mes dans un user, un filtre qui envoi une notification a une adresse xxxx comme quoi il a reçu un mail. J'aimerais aussi mettre une mise en forme
J'utilise postfix, dovecot, sieve...
Merci a vous
Ou je penser faire peu être autrement, exécuter un script a l'arrivée du message sur un compte, qui envoie un mail vers xxx@xxxx.fr, mais comment faire ?
Dernière modification par dodo.deejay (Le 11/12/2020, à 21:43)
Hors ligne
#2 Le 12/12/2020, à 00:21
- dodo.deejay
Re : Créer son propre filtre sieve
J'ai réussi a cree un script :
mailx -a 'Content-Type: text / html' -s "NOUVEAU MESSAGE " < test.html "tech@xxx.xx"
Qui faudra que j'améliore avec votre aide.
Le message part bien.
Question, comment exécuter ce script a l'arriver d'un message sur un compte ?
Sachant que j'utilise dovecot, roundcube, RainLoop. Peut t'on faire un filtre sieve personnaliser pour executer ce script sur une boite mail ? Sinon comment faire ?
Merci d'avance.
Hors ligne
#3 Le 12/12/2020, à 11:00
- bruno
Re : Créer son propre filtre sieve
Je pense qu'il faut activer et configurer l'extension sieve extprograms pour faire cela. Regarde les exemples en fin de doc.
#4 Le 13/12/2020, à 12:18
- dodo.deejay
Re : Créer son propre filtre sieve
Bonjour
dans
/etc/dovecot/conf.d/90-sieve.conf
sieve_plugins = sieve_extprograms
sieve_global_extensions = +vnd.dovecot.pipe +vnd.dovecot.filter +vnd.dovecot.execute
sieve_pipe_bin_dir = /usr/lib/dovecot/sieve-pipe
sieve_filter_bin_dir = /usr/lib/dovecot/sieve-filter
sieve_execute_bin_dir = /usr/lib/dovecot/sieve-execute
J'ai crée :
/var/mail/vhosts/ad-xxx.fr/contact/sieve/test.sieve
require ["variables", "vnd.dovecot.execute"];
{
if execute :output "test.sh" "test.sh" ["${from}","300"]
}
Je pense que le problème est ici je ne sais pas trop adapter le filtre...
puis
/usr/lib/dovecot/test.sh
Le script fontionne bien en manuelle.
Dernière modification par dodo.deejay (Le 13/12/2020, à 12:18)
Hors ligne
#5 Le 13/12/2020, à 12:44
- bruno
Re : Créer son propre filtre sieve
Dans ton script sieve la variable ${from} ne correspond à rien.
#6 Le 13/12/2020, à 14:23
- dodo.deejay
Re : Créer son propre filtre sieve
Je ne comprend pas plusieurs chose :
Pour mon filtre sieve j'ai mis :
/var/mail/vhosts/adxxxx.fr/contact/sieve/test.sieve
:
require ["vnd.dovecot.execute", "variables"];
# rule:[test]
if execute :output "test.sh" "${recipient}"
J'ai cree le dossier /usr/lib/dovecot/sieve-execute et mis mon scrip suivant dedans :
Es que c'est bien dans se dossier que je doit mettre mes script a utiliser pour mes user ?
mailx -a 'Content-Type: text / html' -s "NOUVEAU MESSAGE" < test.html "contact@xxxxxx.fr"
Si je lance manuellement sa fonctionne.
et dans
/etc/dovecot/conf.d/90-sieve.conf
j'ai mis :
sieve_plugins = sieve_extprograms
sieve_global_extensions = + vnd.dovecot.pipe + vnd.dovecot.filter + vnd.dovecot.execute
sieve_pipe_bin_dir = /usr/lib/dovecot/sieve-pipe
sieve_filter_bin_dir = /usr/lib/dovecot/sieve-filter
sieve_execute_bin_dir = /usr/lib/dovecot/sieve-execute
Dans /usr/lib/dovecot/sieve-filter et /usr/lib/dovecot/sieve-pipe je n'est pas les fichier sieve-filter et sieve-pipe es que n'est normal ?
Comment je peux voir si deja l'option extprogram es activer dans quelle log ?
Pour le moment quand la boite contact reçois un mail le script ne fonctionne pas.
J'ai suivi : https://forum.iredmail.org/topic9696-ir … lease.html
Pouvez vous m'aider ?
Dernière modification par dodo.deejay (Le 13/12/2020, à 18:16)
Hors ligne
#7 Le 13/12/2020, à 18:56
- dodo.deejay
Re : Créer son propre filtre sieve
Voici les log :
ebug: sieve: Pigeonhole version 0.5.4 () initializing
Dec 13 18:52:05 lmtp(contact@ad-info31.fr)<18204><3H+pI8VU1l8cRwAArbW9Ew>: Debug: sieve: include: sieve_global is not set; it is currently not possible to include `:global' scripts.
Dec 13 18:52:05 lmtp(contact@ad-info31.fr)<18204><3H+pI8VU1l8cRwAArbW9Ew>: Debug: sieve: Sieve Extprograms plugin for Pigeonhole version 0.5.4 () loaded
Dec 13 18:52:05 lmtp(contact@ad-info31.fr)<18204><3H+pI8VU1l8cRwAArbW9Ew>: Debug: sieve: file storage: Using active Sieve script path: /var/mail/vhosts/ad-xxxx.fr/contact/.dovecot.sieve
Dec 13 18:52:05 lmtp(contact@ad-info31.fr)<18204><3H+pI8VU1l8cRwAArbW9Ew>: Debug: sieve: file storage: Using script storage path: /var/mail/vhosts/ad-xxx.fr/contact/sieve
Dec 13 18:52:05 lmtp(contact@ad-info31.fr)<18204><3H+pI8VU1l8cRwAArbW9Ew>: Debug: sieve: file storage: Relative path to sieve storage in active link: sieve/
Dec 13 18:52:05 lmtp(contact@ad-info31.fr)<18204><3H+pI8VU1l8cRwAArbW9Ew>: Debug: sieve: file storage: Using Sieve script path: /var/mail/vhosts/ad-xxxx.fr/contact/.dovecot.sieve
Dec 13 18:52:05 lmtp(contact@ad-info31.fr)<18204><3H+pI8VU1l8cRwAArbW9Ew>: Debug: sieve: file storage: Storage path `/var/mail/vhosts/ad-xxxxx.fr/contact/.dovecot.sieve' not found
Dec 13 18:52:05 lmtp(contact@ad-info31.fr)<18204><3H+pI8VU1l8cRwAArbW9Ew>: Debug: sieve: User has no active script in storage `/var/mail/vhosts/ad-xxxx.fr/contact/sieve'
Dec 13 18:52:05 lmtp(contact@ad-info31.fr)<18204><3H+pI8VU1l8cRwAArbW9Ew>: Debug: sieve: User has no personal script
Dec 13 18:52:05 lmtp(contact@ad-info31.fr)<18204><3H+pI8VU1l8cRwAArbW9Ew>: Debug: sieve: No scripts to execute: reverting to default delivery.
Dec 13 18:52:05 lmtp(contact@ad-info31.fr)<18204><3H+pI8VU1l8cRwAArbW9Ew>: Debug: Mailbox INBOX: Mailbox opened because: lib-lda delivery
Dec 13 18:52:07 imap(contact@ad-info31.fr)<18172><yG3nGly2ttRW0v7t>: Debug: Mailbox INBOX: UID 101: Opened mail because: prefetch
Dec 13 18:52:07 imap(contact@ad-info31.fr)<18172><yG3nGly2ttRW0v7t>: Debug: Mailbox INBOX: UID 101: Opened mail because: access
Dec 13 18:52:07 imap(contact@ad-info31.fr)<18172><yG3nGly2ttRW0v7t>: Debug: Mailbox INBOX: UID 101: Opened mail because: full mail
Hors ligne
#8 Le 13/12/2020, à 19:27
- dodo.deejay
Re : Créer son propre filtre sieve
j'ai l'impression que ce script ne veux pas charger aussi :
require ["vnd.dovecot.execute", "variables"];
# rule:[test]
if execute :output "test.sh" "${recipient}"
Impossible d'activer le filtre :
impossible d'activer le jeu de filtre sélectionner une erreur de serveur est survenu
Dernière modification par dodo.deejay (Le 13/12/2020, à 19:33)
Hors ligne
#9 Le 14/12/2020, à 10:23
- bruno
Re : Créer son propre filtre sieve
Tu ne peux pas balancer n'importe quel script n'importe où. L'emplacement du script sieve est déterminé par la configuration de dovecot sieve. Lire : https://doc.dovecot.org/configuration_m … ieve/file/
Quand bien même ton script serait exécuté, tu utilises des variables qui ne sont pas définies : ${recipient} dans le dernier.
#10 Le 14/12/2020, à 10:37
- dodo.deejay
Re : Créer son propre filtre sieve
Mes script qui sont dans :
/var/mail/vhosts/adxxxx.fr/contact/sieve/test.sieve
fonctionne bien, mais ce que je sais pas faire c'est un script avec
"vnd.dovecot.execute"
A la place de
if execute :output "test.sh" "${recipient}"
il faut mettre le chemin du script a exécuter ?
Je n'ai aucune idée comment l’écrire si c'est le cas
Hors ligne
#11 Le 14/12/2020, à 12:37
- bruno
Re : Créer son propre filtre sieve
Le script bash doit être dans le dossier défini par la directive sieve_execute_bin_dir. C4est dans la doc.
#12 Le 14/12/2020, à 12:42
- dodo.deejay
Re : Créer son propre filtre sieve
C'est le cas :
/usr/lib/dovecot/sieve-execute/test
dans test :
mailx -a 'Content-Type: text / html' -s "NOUVEAU MESSAGE" < test.html "contact@xxxxxx.fr"
Hors ligne
#13 Le 14/12/2020, à 12:44
- bruno
Re : Créer son propre filtre sieve
Il vaudrait mieux mettre /usr/bin/mailx … et de même l'emplacement complet de test.html
Le script bash est-il exécutable ? Et le shebang ?
Et dans le script sieve la variable ${recipient}, où est-elle définie, à quoi sert-elle ?
Dernière modification par bruno (Le 14/12/2020, à 12:48)
#14 Le 14/12/2020, à 12:56
- dodo.deejay
Re : Créer son propre filtre sieve
D'accord
Le script est excutable :
./test
: pas d'erreur je reçois bien le mail
Le fichier test.html est au même endroit que le le script test.
Et dans le script sieve la variable ${recipient}, où est-elle définie, à quoi sert-elle ?
J'ai repris cette ligne sur un forum, je ne sais pas du tout l'adapter...
Hors ligne
#15 Le 15/12/2020, à 21:22
- dodo.deejay
Re : Créer son propre filtre sieve
Il vaudrait mieux mettre /usr/bin/mailx … et de même l'emplacement complet de test.html
Le script bash est-il exécutable ? Et le shebang ?
Et dans le script sieve la variable ${recipient}, où est-elle définie, à quoi sert-elle ?
Une idée comment je pourrais faire ce filtre valable ?
merci
Hors ligne
#16 Le 16/12/2020, à 10:58
- bruno
Re : Créer son propre filtre sieve
Oui en arrêtant de copier des bout de code récupérés au hasard et en essayant de comprendre ce que tu fais.
Essaie au moins de respecter la syntaxe de base :
if condition {
instructions;
}
Exemple : si l'adresse de l'expéditeur contient toto@exemple.com on exécute truc.sh
if header :contains "from" "toto@example.com" {
execute 'truc.sh";
}
#17 Le 16/12/2020, à 11:30
- dodo.deejay
Re : Créer son propre filtre sieve
Salut,
require ["vnd.dovecot.execute"];
{
execute "test.sh";
}
Je ne rajoute pas de condition car c'est pour tous les messages.
Le script ne s’exécute pas
Portant il est bien dans
/usr/lib/dovecot/sieve-execute/test.sh
Et si je le lance manuellement il s’exécute correctement.
Dernière modification par dodo.deejay (Le 16/12/2020, à 11:31)
Hors ligne
#18 Le 16/12/2020, à 12:46
- bruno
Re : Créer son propre filtre sieve
Si c'est sans conditions il n'y a pas besoin des accolades.
#19 Le 16/12/2020, à 13:07
- dodo.deejay
Re : Créer son propre filtre sieve
require ["vnd.dovecot.execute"];
execute "test.sh";
Non toujours rien
Je le vois aussi dans les filtre de rouncube qu'il n'est pas activer, quand je tente de l'activer, sa mes un erreur, c'est que le filtre n'est pas bon il me semble..
Hors ligne
#20 Le 16/12/2020, à 13:14
- bruno
Re : Créer son propre filtre sieve
Est-ce qu'un filtre sieve « classique » fonctionne, exemple :
require ["fileinto"];
if header :contains "Subject" "*****SPAM*****" {
fileinto "Junk";
}
Tu envoies un courriel avec *****SPAM***** comme objet. Tu devrais le retrouver dans le dossier « Junk » de l'utilisateur.
#21 Le 16/12/2020, à 13:16
- dodo.deejay
Re : Créer son propre filtre sieve
Oui ce filtre la fonctionne parfaitement
Hors ligne
#22 Le 16/12/2020, à 13:21
- dodo.deejay
Re : Créer son propre filtre sieve
Regarde :
Hors ligne
#23 Le 16/12/2020, à 13:44
- bruno
Re : Créer son propre filtre sieve
Alors c'est que ta configuration sieve-extprograms est incorrecte.
en #6 les modifications n'aurait pas dû être faites dans /etc/dovecot/conf.d/90-sieve.conf mais essentiellement dans /etc/dovecot/conf.d/90-sieve-exprograms.conf (pas grave, mais pas propre). Tu n'a besoin que de execute, pas de filter ni de pipe et il faut définir sieve_extensions pas sieve_global_extensions; il y une espace en trop après le signe+.
Tu n'as pas lu la doc ou tu ne l'as pas compris.
Ces deux directives devraient suffire :
sieve_extensions = +vnd.dovecot.execute
sieve_execute_bin_dir = /usr/lib/dovecot/sieve-execute
#24 Le 16/12/2020, à 16:50
- dodo.deejay
Re : Créer son propre filtre sieve
Ok, merci
Je n'ai plus d'erreur sur le script, par contre je ne reçois pas le mail
Voici les log :
ec 16 16:47:39 lmtp(contact@xxxx)<33891><ru4KNxss2l9jhAAArbW9Ew>: Debug: sieve: Sieve Extprograms plugin for Pigeonhole version 0.5.4 () loaded
Dec 16 16:47:39 lmtp(contact@xxxx)<33891><ru4KNxss2l9jhAAArbW9Ew>: Debug: sieve: file storage: Using active Sieve script path: /var/mail/vhosts/xxxx/contact/.dovecot.sieve
Dec 16 16:47:39 lmtp(contact@xxxx)<33891><ru4KNxss2l9jhAAArbW9Ew>: Debug: sieve: file storage: Using script storage path: /var/mail/vhosts/xxxx/contact/sieve
Dec 16 16:47:39 lmtp(contact@xxxx)<33891><ru4KNxss2l9jhAAArbW9Ew>: Debug: sieve: file storage: Relative path to sieve storage in active link: sieve/
Dec 16 16:47:39 lmtp(contact@xxxx)<33891><ru4KNxss2l9jhAAArbW9Ew>: Debug: sieve: file storage: Using Sieve script path: /var/mail/vhosts/xxxx/contact/.dovecot.sieve
Dec 16 16:47:39 lmtp(contact@xxxx)<33891><ru4KNxss2l9jhAAArbW9Ew>: Debug: sieve: file script: Opened script `dovecot' from `/var/mail/vhosts/xxxx/contact/.dovecot.sieve'
Dec 16 16:47:39 lmtp(contact@xxxx)<33891><ru4KNxss2l9jhAAArbW9Ew>: Debug: sieve: Using the following location for user's Sieve script: /var/mail/vhosts/xxxx/contact/.dovecot.sieve
Dec 16 16:47:39 lmtp(contact@xxxx)<33891><ru4KNxss2l9jhAAArbW9Ew>: Debug: sieve: Opening script 1 of 1 from `/var/mail/vhosts/xxxx/contact/.dovecot.sieve'
Dec 16 16:47:39 lmtp(contact@xxxx)<33891><ru4KNxss2l9jhAAArbW9Ew>: Debug: sieve: Loading script /var/mail/vhosts/xxxx/contact/.dovecot.sieve
Dec 16 16:47:39 lmtp(contact@xxxx)<33891><ru4KNxss2l9jhAAArbW9Ew>: Debug: sieve: Script binary /var/mail/vhosts/xxxx/contact/.dovecot.svbin successfully loaded
Dec 16 16:47:39 lmtp(contact@xxxx)<33891><ru4KNxss2l9jhAAArbW9Ew>: Debug: sieve: binary save: not saving binary /var/mail/vhosts/xxxx/contact/.dovecot.svbin, because it is already stored
Dec 16 16:47:39 lmtp(contact@xxxx)<33891><ru4KNxss2l9jhAAArbW9Ew>: Debug: sieve: Executing script from `/var/mail/vhosts/xxxx/contact/.dovecot.svbin'
Dec 16 16:47:39 lmtp(contact@xxxx)<33891><ru4KNxss2l9jhAAArbW9Ew>: Debug: sieve: action execute: running program: test.sh
Dec 16 16:47:39 lmtp(contact@xxxx)<33891><ru4KNxss2l9jhAAArbW9Ew>: Debug: Mailbox INBOX: Mailbox opened because: lib-lda delivery
Dec 16 16:47:42 imap(contact@xxxx)<33894><DfW6y5a2YogAAAAAAAAAAAAAAAAAAAAB>: Debug: Effective uid=5000, gid=5000, home=/var/mail/vhosts/xxxx/contact
Dec 16 16:47:42 imap(contact@xxxx)<33894><DfW6y5a2YogAAAAAAAAAAAAAAAAAAAAB>: Debug: Namespace inbox: type=private, prefix=, sep=, inbox=yes, hidden=no, list=yes, subscriptions=yes location=maildir:/var/mail/vhosts/xxxx/contact/mail
Hors ligne
#25 Le 16/12/2020, à 16:57
- bruno
Re : Créer son propre filtre sieve
Attention à ne pas envoyer le courriel de notification sur la même adresse sinon tu vas avoir un gros problème