Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 hmm

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

bruno a écrit :

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 hmm
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 hmm
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.. sad

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

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 hmm
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 big_smile