On 2015-02-12 01:01, Stephan Bosch wrote:> On 2/11/2015 10:37 PM, Portase Florin wrote: On 2/11/2015 8:41 PM, Stephan Bosch wrote: On 2/11/2015 7:34 PM, Florin Portase wrote: Hello guys, > > I'm having troubles making "script_after" to exec sieve scripts:: > > Keep in mind that the sieve_after script is only executed when the > "keep" action [1 [1]] is executed or when the implicit "keep" [2 [2]] is still > active, meaning that the user didn't give the mail an explicit destination. > > If the user does perform actions like fileinto or redirect without a > `:copy' argument [3 [3]] and without performing an explicit "keep" [2 [2]] > anywhere, the subsequent sieve_after scripts are not executed [4 [4]]. > > Therefore sieve_after is only useful to provide default behavior for > when the user has no explicit rule for what should happen to the e-mail. > > `/home/vpopmail/domains/medianetork.ro/portase.florin/Maildir/sieve/dovecot1.sieve;name=lters' > Feb 11 19:16:10 lda(portase.florin at medianetork.ro): Info: sieve: > msgid=AAa=MneAO6+wwLh3M8nz1z6Mi2Ae2aDMdrSakJA_-PYCwCvbCA at mail.gmail.com>: > stored mail into mailbox 'INBOX.Gmail' This was probably done using a `fileinto "INBOX.Gmail";' command. This > cancels the implicit keep. > > To force executing sieve_after, the user needs to add a `:copy' argument > to that fileinto command or a `keep;' action should be executed. > > Administrator policies that always need to be executed must be placed > in a sieve_before script. > > For more information: > > [1]: https://tools.ietf.org/html/rfc5228#section-4.3 [1] > [2]: https://tools.ietf.org/html/rfc5228#section-2.10.2 [2] > [3]: https://tools.ietf.org/html/rfc3894 [3] > [4]: http://tools.ietf.org/html/draft-degener-sieve-multiscript-00 [4] > > Regards, > > Stephan.Thanks Stephan, However still have one small issue: fileter.sieve ========= # rule:[amavis] if anyof (address :contains "From" "amavis", address :contains "Cc" "amavis-users at amavis.org", address :contains "To" "amavis-users at amavis.org") { fileinto "INBOX.lists.amavisd-new"; } # rule:[xxx_gmail] elsif anyof (header :contains "From" "xxx at gmail") { setflag "\\Flagged"; fileinto "INBOX.Gmail"; keep; } In this case, both all 3 sieve are executed: global one + filters + vacation. But as side note: when mail come from gmail account, - 1st message is sent to inbox.gmail - 2nd vacation response is sent -3rd message is copied once more directly into INBOX Now, if I modify: fileinto :copy INBOX.Gmail; The message is sent to INBOX.Gmail and also copied to INBOX How can I avoid such behavior ? Why do you have the vacation script in a sieve_after rule? Regards, Stephan. Well, I'm using roundcube with 2 plugins ( sieverules + vacation_sieve) 1st one used to create filters for incoming messages and 2nd one just "out of office" response. Because of the limitation of sieverules plugin related to definition of "out of office" response I'm using 2nd one. So, I will have 2 .sieve files ( filters.sieve + vacation.sieve) Just to resume, when I'm activating vacation, the incoming message will be moved/copied to designated folder and vacation will be triggered after. As you can see here :: dovecot1.sieve -> filters.sieve vacation plugin has a build-in function to activate itself as a _default_ rule. But as I mentioned before, incoming messaged will be filtered by filter.sieve and after ( if activated ) to trigger vacation response. Hope, i wasn't to ambiguous :) Links: ------ [1] https://tools.ietf.org/html/rfc5228#section-4.3 [2] https://tools.ietf.org/html/rfc5228#section-2.10.2 [3] https://tools.ietf.org/html/rfc3894 [4] http://tools.ietf.org/html/draft-degener-sieve-multiscript-00
On 2/12/2015 2:12 AM, Florin Portase wrote:> > On 2015-02-12 01:01, Stephan Bosch wrote: > >> On 2/11/2015 10:37 PM, Portase Florin wrote: >>> On 2/11/2015 8:41 PM, Stephan Bosch wrote: >>>> On 2/11/2015 7:34 PM, Florin Portase wrote: >>>>> Hello guys, >>>>> >>>>> I'm having troubles making "script_after" to exec sieve scripts:: >>>>> >>>> Keep in mind that the sieve_after script is only executed when the >>>> "keep" action [1 <https://tools.ietf.org/html/rfc5228#section-4.3>] >>>> is executed or when the implicit "keep" [2 >>>> <https://tools.ietf.org/html/rfc5228#section-2.10.2>] is still >>>> active, meaning that the user didn't give the mail an explicit >>>> destination. >>>> >>>> If the user does perform actions like fileinto or redirect without a >>>> `:copy' argument [3 <https://tools.ietf.org/html/rfc3894>] and >>>> without performing an explicit "keep" [2 >>>> <https://tools.ietf.org/html/rfc5228#section-2.10.2>] >>>> anywhere, the subsequent sieve_after scripts are not executed [4 >>>> <http://tools.ietf.org/html/draft-degener-sieve-multiscript-00>]. >>>> >>>> Therefore sieve_after is only useful to provide default behavior for >>>> when the user has no explicit rule for what should happen to the >>>> e-mail. >>>> >>>>> `/home/vpopmail/domains/medianetork.ro/portase.florin/Maildir/sieve/dovecot1.sieve;name=lters' >>>>> Feb 11 19:16:10 lda(portase.florin at medianetork.ro >>>>> <mailto:portase.florin at medianetork.ro>): Info: sieve: >>>>> msgid=AAa=MneAO6+wwLh3M8nz1z6Mi2Ae2aDMdrSakJA_-PYCwCvbCA at mail.gmail.com >>>>> <mailto:msgid=AAa=MneAO6+wwLh3M8nz1z6Mi2Ae2aDMdrSakJA_-PYCwCvbCA at mail.gmail.com>>: >>>>> stored mail into mailbox 'INBOX.Gmail' >>>> This was probably done using a `fileinto "INBOX.Gmail";' command. This >>>> cancels the implicit keep. >>>> >>>> To force executing sieve_after, the user needs to add a `:copy' >>>> argument >>>> to that fileinto command or a `keep;' action should be executed. >>>> >>>> Administrator policies that always need to be executed must be placed >>>> in a sieve_before script. >>>> >>>> For more information: >>>> >>>> [1]: https://tools.ietf.org/html/rfc5228#section-4.3 >>>> [2]: https://tools.ietf.org/html/rfc5228#section-2.10.2 >>>> [3]: https://tools.ietf.org/html/rfc3894 >>>> [4]: http://tools.ietf.org/html/draft-degener-sieve-multiscript-00 >>>> >>>> Regards, >>>> >>>> Stephan. >>>> >>> Thanks Stephan, >>> >>> However still have one small issue: >>> >>> fileter.sieve >>> =========>>> >>> # rule:[amavis] >>> if anyof (address :contains "From" "amavis", >>> address :contains "Cc" "amavis-users at amavis.org >>> <mailto:amavis-users at amavis.org>", >>> address :contains "To" "amavis-users at amavis.org >>> <mailto:amavis-users at amavis.org>") >>> { >>> fileinto "INBOX.lists.amavisd-new"; >>> } >>> # rule:[xxx_gmail] >>> elsif anyof (header :contains "From" "xxx at gmail <mailto:xxx at gmail>") >>> { >>> setflag "\\Flagged"; >>> fileinto "INBOX.Gmail"; >>> keep; >>> } >>> >>> In this case, both all 3 sieve are executed: global one + filters + >>> vacation. >>> But as side note: when mail come from gmail account, >>> - 1st message is sent to inbox.gmail >>> - 2nd vacation response is sent >>> -3rd message is copied once more directly into INBOX >>> >>> Now, if I modify: >>> fileinto :copy INBOX.Gmail; >>> >>> The message is sent to INBOX.Gmail and also copied to INBOX >>> >>> How can I avoid such behavior ? >>With your configuration, the vacation script is responsible for the final delivery decision. If that script only executes the vacation command, the message is stored into INBOX by default (implicit keep).>> Why do you have the vacation script in a sieve_after rule? >> > > I'm using roundcube with 2 plugins ( sieverules + vacation_sieve) > > 1st one used to create filters for incoming messages and 2nd one just > "out of office" response. > > Because of the limitation of sieverules plugin related to definition > of "out of office" response I'm using 2nd one. > > So, I will have 2 .sieve files ( filters.sieve + vacation.sieve) > > Just to resume, when I'm activating vacation, the incoming message > will be moved/copied to designated folder and vacation will be > triggered after. > > As you can see here :: dovecot1.sieve -> filters.sieve > > vacation plugin has a build-in function to activate itself as a > _default_ rule. > > But as I mentioned before, incoming messaged will be filtered by > filter.sieve and after ( if activated ) to trigger vacation response. > > Hope, i wasn't to ambiguous :) >If you want to force execution of the vacation rule, it should be in sieve_before (or in you case that would be sieve_before2). As a bonus, the user's main active script (filters.sieve) will have responsibility for the final delivery. So if there's no (implicit) keep, there will be no message in INBOX. Regards, Stephan.
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On 02/16/2015 12:01 AM, Stephan Bosch wrote:> On 2/12/2015 2:12 AM, Florin Portase wrote: >> >> On 2015-02-12 01:01, Stephan Bosch wrote: >> >>> On 2/11/2015 10:37 PM, Portase Florin wrote: >>>> On 2/11/2015 8:41 PM, Stephan Bosch wrote: >>>>> On 2/11/2015 7:34 PM, Florin Portase wrote: >>>>>> Hello guys, >>>>>> >>>>>> I'm having troubles making "script_after" to exec sieve >>>>>> scripts:: >>>>>> >>>>> Keep in mind that the sieve_after script is only executed >>>>> when the "keep" action [1 >>>>> <https://tools.ietf.org/html/rfc5228#section-4.3>] is >>>>> executed or when the implicit "keep" [2 >>>>> <https://tools.ietf.org/html/rfc5228#section-2.10.2>] is >>>>> still active, meaning that the user didn't give the mail an >>>>> explicit destination. >>>>> >>>>> If the user does perform actions like fileinto or redirect >>>>> without a `:copy' argument [3 >>>>> <https://tools.ietf.org/html/rfc3894>] and without >>>>> performing an explicit "keep" [2 >>>>> <https://tools.ietf.org/html/rfc5228#section-2.10.2>] >>>>> anywhere, the subsequent sieve_after scripts are not >>>>> executed [4 >>>>> <http://tools.ietf.org/html/draft-degener-sieve-multiscript-00>]. >>>>> >>>>> >>>>>Therefore sieve_after is only useful to provide default behavior for>>>>> when the user has no explicit rule for what should happen >>>>> to the e-mail. >>>>> >>>>>> `/home/vpopmail/domains/medianetork.ro/portase.florin/Maildir/sieve/dovecot1.sieve;name=lters' >>>>>> >>>>>>Feb 11 19:16:10 lda(portase.florin at medianetork.ro>>>>>> <mailto:portase.florin at medianetork.ro>): Info: sieve: >>>>>> msgid=AAa=MneAO6+wwLh3M8nz1z6Mi2Ae2aDMdrSakJA_-PYCwCvbCA at mail.gmail.com >>>>>> >>>>>><mailto:msgid=AAa=MneAO6+wwLh3M8nz1z6Mi2Ae2aDMdrSakJA_-PYCwCvbCA at mail.gmail.com>>:>>>>>> stored mail into mailbox 'INBOX.Gmail' >>>>> This was probably done using a `fileinto "INBOX.Gmail";' >>>>> command. This cancels the implicit keep. >>>>> >>>>> To force executing sieve_after, the user needs to add a >>>>> `:copy' argument to that fileinto command or a `keep;' >>>>> action should be executed. >>>>> >>>>> Administrator policies that always need to be executed >>>>> must be placed in a sieve_before script. >>>>> >>>>> For more information: >>>>> >>>>> [1]: https://tools.ietf.org/html/rfc5228#section-4.3 [2]: >>>>> https://tools.ietf.org/html/rfc5228#section-2.10.2 [3]: >>>>> https://tools.ietf.org/html/rfc3894 [4]: >>>>> http://tools.ietf.org/html/draft-degener-sieve-multiscript-00 >>>>> >>>>> >>>>>Regards,>>>>> >>>>> Stephan. >>>>> >>>> Thanks Stephan, >>>> >>>> However still have one small issue: >>>> >>>> fileter.sieve =========>>>> >>>> # rule:[amavis] if anyof (address :contains "From" "amavis", >>>> address :contains "Cc" "amavis-users at amavis.org >>>> <mailto:amavis-users at amavis.org>", address :contains "To" >>>> "amavis-users at amavis.org <mailto:amavis-users at amavis.org>") >>>> { fileinto "INBOX.lists.amavisd-new"; } # rule:[xxx_gmail] >>>> elsif anyof (header :contains "From" "xxx at gmail >>>> <mailto:xxx at gmail>") { setflag "\\Flagged"; fileinto >>>> "INBOX.Gmail"; keep; } >>>> >>>> In this case, both all 3 sieve are executed: global one + >>>> filters + vacation. But as side note: when mail come from >>>> gmail account, - 1st message is sent to inbox.gmail - 2nd >>>> vacation response is sent -3rd message is copied once more >>>> directly into INBOX >>>> >>>> Now, if I modify: fileinto :copy INBOX.Gmail; >>>> >>>> The message is sent to INBOX.Gmail and also copied to INBOX >>>> >>>> How can I avoid such behavior ? >>> > > With your configuration, the vacation script is responsible for > the final delivery decision. If that script only executes the > vacation command, the message is stored into INBOX by default > (implicit keep). > >>> Why do you have the vacation script in a sieve_after rule? >>> >> >> I'm using roundcube with 2 plugins ( sieverules + >> vacation_sieve) >> >> 1st one used to create filters for incoming messages and 2nd one >> just "out of office" response. >> >> Because of the limitation of sieverules plugin related to >> definition of "out of office" response I'm using 2nd one. >> >> So, I will have 2 .sieve files ( filters.sieve + vacation.sieve) >> >> Just to resume, when I'm activating vacation, the incoming >> message will be moved/copied to designated folder and vacation >> will be triggered after. >> >> As you can see here :: dovecot1.sieve -> filters.sieve >> >> vacation plugin has a build-in function to activate itself as a >> _default_ rule. >> >> But as I mentioned before, incoming messaged will be filtered by >> filter.sieve and after ( if activated ) to trigger vacation >> response. >> >> Hope, i wasn't to ambiguous :) >> > > If you want to force execution of the vacation rule, it should be > in sieve_before (or in you case that would be sieve_before2). > > As a bonus, the user's main active script (filters.sieve) will > have responsibility for the final delivery. So if there's no > (implicit) keep, there will be no message in INBOX. > > Regards, > > Stephan. > > >Thanks Stephan, yes, everything is working well :) -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQEcBAEBAgAGBQJU4cnxAAoJECEzxtLP+2049uIH/3llT4xv+YbzG+F8WKejNC4D sgjTFgroLywXNR147CHgAuDgkdCT3HqKxcgp/U4VpupWd0cXVasEIgArKVGlL6Zh fJxmAeJZaPxa4AxL9VAT4gEvwDO4LReoneTrKMQ0I3Y80FgA0tOQ8Q6ZaTllUi6n R61mabZJ6x7RDEAdYr/lm2r5c1X5QLJoC4Q8McXfeB6jrVfyVoR23s3dWgG0rer4 I+cEsBh7wzpNYxs3JYNYLf0H9EpTggsLGUfqs2RwApi8p7fjWrohF60zbNammiFS HQQqlR4JKqx+Bv8z/oPqQe+DpYRdqVNMxbJDb/bJbpbTLKtSaqRyr9DsNlGlxPk=F4Bk -----END PGP SIGNATURE-----