Gnus development mailing list
 help / color / mirror / Atom feed
* Sieve support?
@ 2001-10-21 13:01 Simon Josefsson
  2001-10-21 14:02 ` Kai Großjohann
                   ` (3 more replies)
  0 siblings, 4 replies; 23+ messages in thread
From: Simon Josefsson @ 2001-10-21 13:01 UTC (permalink / raw)


Does anyone think adding NAGY Andras and my Sieve stuff [1] to Gnus
would be a good idea?  It isn't specific to Gnus, but I guess most
people who use IMAP in Emacs uses Gnus, so maybe it isn't such a bad
place for it.  (And Sieve seem to be fairly IMAP-centric so far.)

[1] http://josefsson.org/sieve/




^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: Sieve support?
  2001-10-21 13:01 Sieve support? Simon Josefsson
@ 2001-10-21 14:02 ` Kai Großjohann
  2001-10-22  1:21 ` Daniel Pittman
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 23+ messages in thread
From: Kai Großjohann @ 2001-10-21 14:02 UTC (permalink / raw)
  Cc: ding

It would be great to have Sieve support in Gnus.  Then it will be part
of Emacs shortly (for some definitions of short), so that other
packages (Wanderlust, MEW?) can use it, too.

kai
-- 
Lisp is kinda like tpircstsoP



^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: Sieve support?
  2001-10-21 13:01 Sieve support? Simon Josefsson
  2001-10-21 14:02 ` Kai Großjohann
@ 2001-10-22  1:21 ` Daniel Pittman
  2001-11-01  0:53 ` Simon Josefsson
  2001-11-03 18:58 ` possible gnus-sieve bug NAGY Andras
  3 siblings, 0 replies; 23+ messages in thread
From: Daniel Pittman @ 2001-10-22  1:21 UTC (permalink / raw)


On Sun, 21 Oct 2001, Simon Josefsson wrote:
> Does anyone think adding NAGY Andras and my Sieve stuff [1] to Gnus
> would be a good idea?  

Yup.

> It isn't specific to Gnus, but I guess most people who use IMAP in
> Emacs uses Gnus, so maybe it isn't such a bad place for it. (And Sieve
> seem to be fairly IMAP-centric so far.)

Maybe not ... but it's certainly very strongly related to being an IMAP
client, which Gnus is, and it's not ideal to have to source closely
related tools from somewhere else. :)

        Daniel

-- 
I was born when she kissed me.
I died when she left me.
I lived a few weeks while she loved me.
        -- Dixon Steele (Humphrey Bogart), _In a lonely place_



^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: Sieve support?
  2001-10-21 13:01 Sieve support? Simon Josefsson
  2001-10-21 14:02 ` Kai Großjohann
  2001-10-22  1:21 ` Daniel Pittman
@ 2001-11-01  0:53 ` Simon Josefsson
  2001-11-01 16:08   ` Kai Großjohann
  2001-11-03 18:58 ` possible gnus-sieve bug NAGY Andras
  3 siblings, 1 reply; 23+ messages in thread
From: Simon Josefsson @ 2001-11-01  0:53 UTC (permalink / raw)


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset=iso-2022-7bit-dos, Size: 7551 bytes --]

Simon Josefsson <jas@extundo.com> writes:

> Does anyone think adding NAGY Andras and my Sieve stuff [1] to Gnus
> would be a good idea?

Noone complained so I added it.  Unless you press `D u' or `D g' in
the group buffer, you should never see it.  Kudos to NAGY Andras for
the work on gnus-sieve.el!

Some documentation:
\f
In the "Group Parameters" section:

`sieve'
     This parameter contains a Sieve test that should match incoming
     mail that should be placed in this group.  From this group
     parameter, a Sieve `IF' control structure is generated, having the
     test as the condition and `fileinto "group.name";' as the body.

     For example, if the INBOX.list.sieve group has the `(sieve address
     "sender" "sieve-admin@extundo.com")' group parameter, when
     translating the group parameter into a Sieve script (*note Sieve
     Commands::) the following Sieve code is generated:

            if address \"sender\" \"sieve-admin@extundo.com\" {
                    fileinto \"INBOX.list.sieve\";
            }

     The Sieve language is described in RFC 3028.  *Note Top:
     (sieve)Top.
\f
In the "Misc Group Stuff" chapter, a new node was added:

Sieve Commands
--------------

   Sieve is a server-side mail filtering language.  In Gnus you can use
the `sieve' group parameter (*note Group Parameters::) to specify sieve
rules that should apply to each group.  Gnus provides two commands to
translate all these group parameters into a proper Sieve script that
can be transfered to the server somehow.

   The generated Sieve script is placed in `gnus-sieve-file' (by
default `~/.sieve').  The code Gnus generates is placed between two
delimiters, `gnus-sieve-region-start' and `gnus-sieve-region-end', so
you may write additional Sieve code outside these delimiters that will
not be removed the next time you regenerate the Sieve script.

   *Note Top: (sieve)Top.

`D g'
     Regenerate a Sieve script from the `sieve' group parameters and
     put you into the `gnus-sieve-file' without saving it.

`D u'
     Regenerates the Gnus managed part of `gnus-sieve-file' using the
     `sieve' group parameters, save the file and upload it to the
     server using the `sieveshell' program.
\f
And a new texi file was added that document the Sieve package
separately from Gnus:

Sieve Support for Emacs
***********************

   This manual documents the Emacs Sieve package.

   It is intended as a users manual for Sieve Mode and Manage Sieve, and
as a reference manual for the `sieve-manage' protocol Emacs Lisp API.

   Sieve is a language for server-side filtering of mail.  The language
is documented in RFC 3028.  This manual does not attempt to document
the language, so keep RFC 3028 around.

* Menu:

* Installation::          Getting ready to use the package.
* Sieve Mode::            Editing Sieve scripts.
* Managing Sieve::        Managing Sieve scripts on a remote server.
* Manage Sieve API ::     Interfacing to the Manage Sieve Protocol API.
* Standards::             A summary of RFCs and working documents used.
* Index::                 Function and variable index.

Installation
************

   The Sieve package should come with your Emacs version, and should be
ready for use directly.

   However, to manually set up the package you can put the following
commands in your `~/.emacs':

     (autoload 'sieve-mode "sieve-mode")
     (setq auto-mode-alist (cons '("\\.si\\(v\\|eve\\)\\'" . sieve-mode)
                                 auto-mode-alist))

Sieve Mode
**********

   Sieve mode provides syntax-based indentation, font-locking support
and other handy functions to make editing Sieve scripts easier.

   Use `M-x sieve-mode' to switch to this major mode.  This command
runs the hook `sieve-mode-hook'.

   Sieve mode is derived from `c-mode', and is very similar except for
the syntax of comments.  The keymap (`sieve-mode-map') is inherited
from `c-mode', as are the the variables for customizing indentation.
Sieve mode has its own abbrev table (`sieve-mode-abbrev-table') and
syntax table (`sieve-mode-syntax-table').

   In addition to the editing utility functions, Sieve mode also
contains bindings to manage Sieve scripts remotely. *note Managing
Sieve::.

`C-c RET'
     Open a connection to a remote server using the Managesieve
     protocol.

`C-c C-l'
     Upload the Sieve script to the currently open server.

Managing Sieve
**************

   Manage Sieve is a special mode used to display Sieve scripts
available on a remote server.  It can be invoked with `M-x sieve-manage
RET', which queries the user for a server and if necessary, user
credentials to use.

   When a server has been succesfully contacted, the Manage Sieve buffer
looks something like:

     Server  : mailserver:2000
     
     2 scripts on server, press RET on a script name edits it, or
     press RET on <new script> to create a new script.
             <new script>
      ACTIVE .sieve
             template.siv

   One of the scripts are highlighted, and standard point navigation
commands (`<up>', `<down>' etc) can be used to navigate the list.

   The following commands are available in the Manage Sieve buffer:

`m'
     Activates the currently highlighted script.

`u'
     Deactivates the currently highlighted script.

`M-C-?'
     Deactivates all scripts.

`r'
     Remove currently highlighted script.

`RET'

`mouse-2'

`f'
     Bury the server buffer and download the currently highlighted
     script into a new buffer for editing in Sieve mode (*note Sieve
     Mode::).

`o'
     Create a new buffer in another window containing the currently
     highlighted script for editing in Sieve mode (*note Sieve Mode::).

`q'
     Bury the Manage Sieve buffer without closing the connection.

`?'

`h'
     Displays help in the minibuffer.

Manage Sieve API
****************

   The `sieve-manage.el' library contains low-level functionality for
talking to a server with the MANAGESIEVE protocol.

   A number of user-visible variables exist, which all can be customized
in the `sieve' group (`M-x customize-group RET sieve RET'):

`sieve-manage-default-user'
     Sets the default username.

`sieve-manage-default-port'
     Sets the default port to use, the suggested port number is `2000'.

`sieve-manage-log'
     If non-nil, should be a string naming a buffer where a protocol
     trace is dumped (for debugging purposes).

   The API functions include:

`sieve-manage-open'
     Open connection to managesieve server, returning a buffer to be
     used by all other API functions.

`sieve-manage-opened'
     Check if a server is open or not.

`sieve-manage-close'
     Close a server connection.

`sieve-manage-authenticate'
     Authenticate to the server.

`sieve-manage-capability'
     Return a list of capabilities the server support.

`sieve-manage-listscripts'
     List scripts on the server.

`sieve-manage-havespace'
     Returns non-nil iff server have roam for a script of given size.

`sieve-manage-getscript'
     Download script from server.

`sieve-manage-putscript'
     Upload script to server.

`sieve-manage-setactive'
     Indicate which script on the server should be active.

Standards
*********

   The Emacs Sieve package implements all or parts of a small but
hopefully growing number of RFCs and drafts documents.  This chapter
lists the relevant ones.  They can all be fetched from
`http://quimby.gnus.org/notes/'.

"RFC3028"
     Sieve: A Mail Filtering Language.

"draft-martin-managesieve-03"
     A Protocol for Remotely Managing Sieve Scripts





^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: Sieve support?
  2001-11-01  0:53 ` Simon Josefsson
@ 2001-11-01 16:08   ` Kai Großjohann
  2001-11-01 16:50     ` Simon Josefsson
  0 siblings, 1 reply; 23+ messages in thread
From: Kai Großjohann @ 2001-11-01 16:08 UTC (permalink / raw)


Simon Josefsson <jas@extundo.com> writes:

>             if address \"sender\" \"sieve-admin@extundo.com\" {
>                     fileinto \"INBOX.list.sieve\";
>             }

My hand-crafted script looks similar, but adds "stop" after
"fileinto".  Thoughts?

kai
-- 
Lisp is kinda like tpircstsoP



^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: Sieve support?
  2001-11-01 16:08   ` Kai Großjohann
@ 2001-11-01 16:50     ` Simon Josefsson
  2001-11-02  8:25       ` Kai Großjohann
  2001-11-03  0:35       ` NAGY Andras
  0 siblings, 2 replies; 23+ messages in thread
From: Simon Josefsson @ 2001-11-01 16:50 UTC (permalink / raw)
  Cc: ding

Kai.Grossjohann@CS.Uni-Dortmund.DE (Kai Großjohann) writes:

> Simon Josefsson <jas@extundo.com> writes:
>
>>             if address \"sender\" \"sieve-admin@extundo.com\" {
>>                     fileinto \"INBOX.list.sieve\";
>>             }
>
> My hand-crafted script looks similar, but adds "stop" after
> "fileinto".  Thoughts?

I don't think the automatically generated code should ever invoke
"stop", since you may want to put Sieve code after the Gnus generated
code block.  Do you agree?

If you're thinking about crossposting, there is `gnus-sieve-crosspost'.




^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: Sieve support?
  2001-11-01 16:50     ` Simon Josefsson
@ 2001-11-02  8:25       ` Kai Großjohann
  2001-11-02  8:50         ` Simon Josefsson
  2001-11-02 17:48         ` Amos Gouaux
  2001-11-03  0:35       ` NAGY Andras
  1 sibling, 2 replies; 23+ messages in thread
From: Kai Großjohann @ 2001-11-02  8:25 UTC (permalink / raw)


Simon Josefsson <jas@extundo.com> writes:

> I don't think the automatically generated code should ever invoke
> "stop", since you may want to put Sieve code after the Gnus generated
> code block.  Do you agree?

Well, err, it would invoke stop only inside the if...

> If you're thinking about crossposting, there is `gnus-sieve-crosspost'.

Does that mean I get something like

    if foo {
        fileinto "bar";
        stop;
    }

when crossposting is off and

    if foo {
        fileinto "bar";
    }

when crossposting is on?  That's what I wanted to suggest, too.

kai
-- 
Lisp is kinda like tpircstsoP



^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: Sieve support?
  2001-11-02  8:25       ` Kai Großjohann
@ 2001-11-02  8:50         ` Simon Josefsson
  2001-11-02  9:14           ` Kai Großjohann
  2001-11-02 17:48         ` Amos Gouaux
  1 sibling, 1 reply; 23+ messages in thread
From: Simon Josefsson @ 2001-11-02  8:50 UTC (permalink / raw)
  Cc: ding

On Fri, 2 Nov 2001, Kai Großjohann wrote:

> > I don't think the automatically generated code should ever invoke
> > "stop", since you may want to put Sieve code after the Gnus generated
> > code block.  Do you agree?
> 
> Well, err, it would invoke stop only inside the if...

Really?  I don't know Sieve, but the following seems to be the only
explanation about "stop" in the RFC, and it looks like it quits the whole
script.  I've never used "stop" though, so I may be misreading the RFC.

3.3.     Control Structure Stop

   Syntax:   stop

   The "stop" action ends all processing.  If no actions have been
   executed, then the keep action is taken.

> > If you're thinking about crossposting, there is `gnus-sieve-crosspost'.
> 
> Does that mean I get something like
> 
>     if foo {
>         fileinto "bar";
>         stop;
>     }
> 
> when crossposting is off and
> 
>     if foo {
>         fileinto "bar";
>     }
> 
> when crossposting is on?  That's what I wanted to suggest, too.

Right now you get

if foo {
	fileinto "foo"
}
elsif bar {
	fileinto "bar
}

if `gnus-sieve-crosspost' is nil, and

if foo {
	fileinto "foo";
}
if bar {
	fileinto "bar";
}

otherwise.




^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: Sieve support?
  2001-11-02  8:50         ` Simon Josefsson
@ 2001-11-02  9:14           ` Kai Großjohann
  2001-11-02 12:39             ` Simon Josefsson
  0 siblings, 1 reply; 23+ messages in thread
From: Kai Großjohann @ 2001-11-02  9:14 UTC (permalink / raw)
  Cc: ding

Simon Josefsson <jas@extundo.com> writes:

>> Well, err, it would invoke stop only inside the if...
>
> Really?  I don't know Sieve, but the following seems to be the only
> explanation about "stop" in the RFC, and it looks like it quits the whole
> script.  I've never used "stop" though, so I may be misreading the RFC.

I meant: it only invokes `stop' if the condition matches.

>> Does that mean I get something like
>> 
>>     if foo {
>>         fileinto "bar";
>>         stop;
>>     }
>> 
>> when crossposting is off and
>> 
>>     if foo {
>>         fileinto "bar";
>>     }
>> 
>> when crossposting is on?  That's what I wanted to suggest, too.
>
> Right now you get
>
> if foo {
> 	fileinto "foo"
> }
> elsif bar {
> 	fileinto "bar
> }
>
> if `gnus-sieve-crosspost' is nil, and
>
> if foo {
> 	fileinto "foo";
> }
> if bar {
> 	fileinto "bar";
> }
>
> otherwise.

Ah, yes, I think I used to have your style, too.  But then somewhere
I read about problems with nesting depths.  So I converted your
if/elseif style into mine.

Hm.  But you're right -- in your case it would be possible to add
more action after the whole if/elseif/else statement.  Hm.

To learn more, I'd have to know more about how your idea constructs
the whole Sieve script -- where are the group specific rules inserted
and what happens when the user changes group rules and how is the
other part of the script preserved...

I can't test your sieve mechanism because I'm using an old Cyrus
version which uses an old sieve protocol.

Though of course I could test your rule-generating part.  Hm.  But
I've already got so many useful rules :-)

kai
-- 
Lisp is kinda like tpircstsoP



^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: Sieve support?
  2001-11-02  9:14           ` Kai Großjohann
@ 2001-11-02 12:39             ` Simon Josefsson
  2001-11-02 16:24               ` Kai Großjohann
  0 siblings, 1 reply; 23+ messages in thread
From: Simon Josefsson @ 2001-11-02 12:39 UTC (permalink / raw)
  Cc: ding

On Fri, 2 Nov 2001, Kai Großjohann wrote:

> Ah, yes, I think I used to have your style, too.  But then somewhere
> I read about problems with nesting depths.  So I converted your
> if/elseif style into mine.

Hm, using a large if/elsif-block shouldn't count as nesting?  Or maybe the 
implementation just rewrites the elseif into a else + if.  Hm, RFC 3028 
says implementations should support 15 levels of nesting, and I got one or 
two magnitude more rules than that, so I think it's ok.

> To learn more, I'd have to know more about how your idea constructs
> the whole Sieve script -- where are the group specific rules inserted
> and what happens when the user changes group rules and how is the
> other part of the script preserved...
> 
> I can't test your sieve mechanism because I'm using an old Cyrus
> version which uses an old sieve protocol.
> 
> Though of course I could test your rule-generating part.  Hm.  But
> I've already got so many useful rules :-)

No problemo -- just D g and then insert your current Sieve script
before/after the Gnus generated block.  Then you can migrate some of the 
rules into group parameters incrementally.

Maybe the old Cyrus protocol is "close" enough to the current protocol. 
I'll look in the archives to see how your server reacted, maybe only the 
greeting is different..

Or use `D u' which doesn't use the sieve protocol, but rather the
installsieve program that comes with Cyrus IMAPD to talk to the server.  
This parts need some more documentation though, you probably need to frob
`gnus-sieve-method'. (Perhaps the `gnus-sieve-method' variable should be
removed, maybe this should be solved differently -- e.g. D g / D u asking
the user which method to generate the rules on, or add the commands to 
the server buffer where the method to use is implicit.)




^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: Sieve support?
  2001-11-02 12:39             ` Simon Josefsson
@ 2001-11-02 16:24               ` Kai Großjohann
  2001-11-02 17:52                 ` Amos Gouaux
  0 siblings, 1 reply; 23+ messages in thread
From: Kai Großjohann @ 2001-11-02 16:24 UTC (permalink / raw)
  Cc: ding

Simon Josefsson <jas@extundo.com> writes:

> Or use `D u' which doesn't use the sieve protocol, but rather the
> installsieve program that comes with Cyrus IMAPD to talk to the server.  

Ah!  That would be fine.  I do

    installsieve -p 2000 -m cram-md5 -i $FILE $IMAP_HOST

And then I see this prompt:

    Please enter your password: 

After that, I type the passwd and Bob's my uncle.  If the current
installsieve program behaves the same, then I could indeed use `D u'.

Now on to the real work to do the group parameters.

kai
-- 
Lisp is kinda like tpircstsoP



^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: Sieve support?
  2001-11-02  8:25       ` Kai Großjohann
  2001-11-02  8:50         ` Simon Josefsson
@ 2001-11-02 17:48         ` Amos Gouaux
  2001-11-02 19:59           ` Simon Josefsson
  1 sibling, 1 reply; 23+ messages in thread
From: Amos Gouaux @ 2001-11-02 17:48 UTC (permalink / raw)


>>>>> On Fri, 02 Nov 2001 09:25:16 +0100,
>>>>> Kai Großjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE> (kg) writes:

kg>     if foo {
kg>         fileinto "bar";
kg>         stop;
kg>     }

I've tended to do this for mailing list folder stuffing.  Main
reason for it is out of paranoia that if I've got a vacation item at
the bottom of the script, there's no way at all that a list or list
admin will have to deal with it.

-- 
Amos




^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: Sieve support?
  2001-11-02 16:24               ` Kai Großjohann
@ 2001-11-02 17:52                 ` Amos Gouaux
  2001-11-02 22:29                   ` Kai Großjohann
  0 siblings, 1 reply; 23+ messages in thread
From: Amos Gouaux @ 2001-11-02 17:52 UTC (permalink / raw)


>>>>> On Fri, 02 Nov 2001 17:24:57 +0100,
>>>>> Kai Großjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE> (kg) writes:

kg>     installsieve -p 2000 -m cram-md5 -i $FILE $IMAP_HOST

Actually, in the CVS for Cyrus 2.1 installsieve is depreciated,
being replaced by an interactive sieveshell command.  I would think
it would be better to talk the protocol to the timsieved server.
Just because you upload a script doesn't mean it has to be made
active.... 

-- 
Amos




^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: Sieve support?
  2001-11-02 17:48         ` Amos Gouaux
@ 2001-11-02 19:59           ` Simon Josefsson
  0 siblings, 0 replies; 23+ messages in thread
From: Simon Josefsson @ 2001-11-02 19:59 UTC (permalink / raw)
  Cc: ding

Amos Gouaux <amos+lists.ding@utdallas.edu> writes:

>>>>>> On Fri, 02 Nov 2001 09:25:16 +0100,
>>>>>> Kai Großjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE> (kg) writes:
>
> kg>     if foo {
> kg>         fileinto "bar";
> kg>         stop;
> kg>     }
>
> I've tended to do this for mailing list folder stuffing.  Main
> reason for it is out of paranoia that if I've got a vacation item at
> the bottom of the script, there's no way at all that a list or list
> admin will have to deal with it.

I guess this is what most people want so I changed it to use "stop"
when not crossposting -- I also changed the default to do
crossposting, to be consistent with the rest of Gnus.  Thanks to Kai
for bringing this up.




^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: Sieve support?
  2001-11-02 17:52                 ` Amos Gouaux
@ 2001-11-02 22:29                   ` Kai Großjohann
  2001-11-04 14:49                     ` Steinar Bang
  0 siblings, 1 reply; 23+ messages in thread
From: Kai Großjohann @ 2001-11-02 22:29 UTC (permalink / raw)
  Cc: ding

Amos Gouaux <amos+lists.ding@utdallas.edu> writes:

>>>>>> On Fri, 02 Nov 2001 17:24:57 +0100,
>>>>>> Kai Großjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE> (kg) writes:
>
> kg>     installsieve -p 2000 -m cram-md5 -i $FILE $IMAP_HOST
>
> Actually, in the CVS for Cyrus 2.1 installsieve is depreciated,
> being replaced by an interactive sieveshell command.  I would think
> it would be better to talk the protocol to the timsieved server.
> Just because you upload a script doesn't mean it has to be made
> active.... 

But I'm still using Cyrus 1.6 which speaks a way outdated version of
the protocol, so the stuff in Simon's Sieve code which speaks the
protocol does not work for me.

Once I get the Powers That Be to upgrade our Cyrus, I'll be happy to
use the protocol.

kai
-- 
Lisp is kinda like tpircstsoP



^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: Sieve support?
  2001-11-01 16:50     ` Simon Josefsson
  2001-11-02  8:25       ` Kai Großjohann
@ 2001-11-03  0:35       ` NAGY Andras
  1 sibling, 0 replies; 23+ messages in thread
From: NAGY Andras @ 2001-11-03  0:35 UTC (permalink / raw)


On Thu, 01 Nov 2001, at 17:50, Simon Josefsson <jas@extundo.com> wrote:

> I don't think the automatically generated code should ever invoke
> "stop", since you may want to put Sieve code after the Gnus generated
> code block.  Do you agree?

Yes, that's why I would still prefer the elsif way.


On Fri, 02 Nov 2001, at 18:48, Amos Gouaux <amos+lists.ding@utdallas.edu> wrote:

> kg>     if foo {
> kg>         fileinto "bar";
> kg>         stop;
> kg>     }
>
> I've tended to do this for mailing list folder stuffing.  Main
> reason for it is out of paranoia that if I've got a vacation item at
> the bottom of the script, there's no way at all that a list or list
> admin will have to deal with it.

Well, you can set crosspost to nil, and add something like

else {
   # vacation stuff, storing in "mail.misc", etc
}

after the generated part.


How about a trade-off? :-) Let's introduce a new variable instead of
-crosspost, defining which control structures to use when building the
script?  Say,

gnus-sieve-script-flavour:
  if (default):  [if () { fileinto }]*, crossposting
  elsif:         `if ... [elsif () { fileinto } ]*', no crossposting, no stop
  stop:          [if () { fileinto; stop; }]*, no crossposting, with stop



Andras



^ permalink raw reply	[flat|nested] 23+ messages in thread

* possible gnus-sieve bug
  2001-10-21 13:01 Sieve support? Simon Josefsson
                   ` (2 preceding siblings ...)
  2001-11-01  0:53 ` Simon Josefsson
@ 2001-11-03 18:58 ` NAGY Andras
  2001-11-03 19:06   ` Simon Josefsson
  3 siblings, 1 reply; 23+ messages in thread
From: NAGY Andras @ 2001-11-03 18:58 UTC (permalink / raw)


Gnus-sieve has this function:

(defun gnus-sieve-guess-rule-for-article ()
  "Guess a sieve rule based on RFC822 article in buffer.
  Return NIL if no rule could be guessed."
    (when (message-fetch-field "sender")
        `(sieve address "sender" ,(regexp-quote (message-fetch-field "sender")))))

AFAIK, the default `comparator' in Sieve tests is `:is' (exact match),
therefore the regexp-quote is not required here; actually I think
rules generated this way should not work at all.  What do you think?


Andras



^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: possible gnus-sieve bug
  2001-11-03 18:58 ` possible gnus-sieve bug NAGY Andras
@ 2001-11-03 19:06   ` Simon Josefsson
  2001-11-04 13:17     ` NAGY Andras
  0 siblings, 1 reply; 23+ messages in thread
From: Simon Josefsson @ 2001-11-03 19:06 UTC (permalink / raw)
  Cc: ding

On Sat, 3 Nov 2001, NAGY Andras wrote:

> Gnus-sieve has this function:
> 
> (defun gnus-sieve-guess-rule-for-article ()
>   "Guess a sieve rule based on RFC822 article in buffer.
>   Return NIL if no rule could be guessed."
>     (when (message-fetch-field "sender")
>         `(sieve address "sender" ,(regexp-quote (message-fetch-field "sender")))))
> 
> AFAIK, the default `comparator' in Sieve tests is `:is' (exact match),
> therefore the regexp-quote is not required here; actually I think
> rules generated this way should not work at all.  What do you think?

Arhm, erhm, well, Cyrus Sieve uses fnmatch() even with :is (I believe)
which is sort of like regexps, so I escaped the rule.  Now, future version 
will probably do the escaping in the server (this was recently discussed 
on the cyrus-imap list) so maybe we should remove it.  (But I haven't 
upgraded yet...)

But yes, it is wrong.  OTOH it would be nice to rewrite the function into 
something much more intelligent and with a nicer interface.




^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: possible gnus-sieve bug
  2001-11-03 19:06   ` Simon Josefsson
@ 2001-11-04 13:17     ` NAGY Andras
  0 siblings, 0 replies; 23+ messages in thread
From: NAGY Andras @ 2001-11-04 13:17 UTC (permalink / raw)


On Sat, 03 Nov 2001, at 20:06, Simon Josefsson <jas@extundo.com> wrote:

> On Sat, 3 Nov 2001, NAGY Andras wrote:
>
>> Gnus-sieve has this function:
>> 
>> (defun gnus-sieve-guess-rule-for-article ()
>>   "Guess a sieve rule based on RFC822 article in buffer.
>>   Return NIL if no rule could be guessed."
>>     (when (message-fetch-field "sender")
>>         `(sieve address "sender" ,(regexp-quote (message-fetch-field "sender")))))
>> 
>> AFAIK, the default `comparator' in Sieve tests is `:is' (exact match),
>> therefore the regexp-quote is not required here; actually I think
>> rules generated this way should not work at all.  What do you think?
>
> Arhm, erhm, well, Cyrus Sieve uses fnmatch() even with :is (I believe)
> which is sort of like regexps, so I escaped the rule.  Now
> will probably do the escaping in the server (this was recently discussed 
> on the cyrus-imap list) so maybe we should remove it.  (But I haven't 
> upgraded yet...)
>
> But yes, it is wrong.  OTOH it would be nice to rewrite the function into 
> something much more intelligent and with a nicer interface.



^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: Sieve support?
  2001-11-02 22:29                   ` Kai Großjohann
@ 2001-11-04 14:49                     ` Steinar Bang
  2001-11-04 17:35                       ` Amos Gouaux
  0 siblings, 1 reply; 23+ messages in thread
From: Steinar Bang @ 2001-11-04 14:49 UTC (permalink / raw)


>>>>> Kai.Grossjohann@CS.Uni-Dortmund.DE (Kai Großjohann):

> But I'm still using Cyrus 1.6 which speaks a way outdated version of
> the protocol, so the stuff in Simon's Sieve code which speaks the
> protocol does not work for me.

Hm... debian woody has 1.5.19, and it's categorized as non-free.
I'm wondering if there are unofficial .deb packages somewhere?

Hmm... looks like Cyrus 2 is on the way, for the one who waits
       <http://bugs.debian.org/108942>

The problem with a manual install of 2.x would be upgrading the mail
spool, as I understand...?



^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: Sieve support?
  2001-11-04 14:49                     ` Steinar Bang
@ 2001-11-04 17:35                       ` Amos Gouaux
  2001-11-04 18:06                         ` Simon Josefsson
  0 siblings, 1 reply; 23+ messages in thread
From: Amos Gouaux @ 2001-11-04 17:35 UTC (permalink / raw)


>>>>> On Sun, 04 Nov 2001 15:49:22 +0100,
>>>>> Steinar Bang <sb@dod.no> (sb) writes:

sb> Hmm... looks like Cyrus 2 is on the way, for the one who waits
sb>        <http://bugs.debian.org/108942>

If not yet running 2.x, I would wait until 2.1 is released.  Many
bugs have been fixed in this up-coming release.  I'd even say that
2.x out of CVS would be better than one of the 2.0 releases.
Rapidly evolving stuff, but then folks here know all about that.

sb> The problem with a manual install of 2.x would be upgrading the mail
sb> spool, as I understand...?

Not the spool, but yes, the mailboxes file.  The state information
in the spool is updated as folders are accessed.

Personally, I think folks are also better off doing the compiles
themself instead of using pre-compiled packages.  Seems like many
folks run into problems because the pre-compiled stuff isn't always
in sync with the numerous dependencies, most particularly Berkeley DB.

-- 
Amos




^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: Sieve support?
  2001-11-04 17:35                       ` Amos Gouaux
@ 2001-11-04 18:06                         ` Simon Josefsson
  2001-11-04 18:44                           ` Amos Gouaux
  0 siblings, 1 reply; 23+ messages in thread
From: Simon Josefsson @ 2001-11-04 18:06 UTC (permalink / raw)
  Cc: ding

Amos Gouaux <amos+lists.ding@utdallas.edu> writes:

>>>>>> On Sun, 04 Nov 2001 15:49:22 +0100,
>>>>>> Steinar Bang <sb@dod.no> (sb) writes:
>
> sb> Hmm... looks like Cyrus 2 is on the way, for the one who waits
> sb>        <http://bugs.debian.org/108942>
>
> If not yet running 2.x, I would wait until 2.1 is released.  Many
> bugs have been fixed in this up-coming release.  I'd even say that
> 2.x out of CVS would be better than one of the 2.0 releases.
> Rapidly evolving stuff, but then folks here know all about that.

I've been running the same 2.x release for almost a year...

> Personally, I think folks are also better off doing the compiles
> themself instead of using pre-compiled packages.  Seems like many
> folks run into problems because the pre-compiled stuff isn't always
> in sync with the numerous dependencies, most particularly Berkeley DB.

Are you saying that if you compile the package yourself, you _won't_
get Berkeley DB problems?  Wow! :-)

(I'm stuck at the 2.x release I'm using just because of libdb
problems, all db utilities crash when I export the SASL db, and no
matter which version of libdb I compile with, the new Cyrus doesn't
like my current db.  I have working binaries but no way of compiling
new working ones.  Libdb is double-plus ungood.)




^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: Sieve support?
  2001-11-04 18:06                         ` Simon Josefsson
@ 2001-11-04 18:44                           ` Amos Gouaux
  0 siblings, 0 replies; 23+ messages in thread
From: Amos Gouaux @ 2001-11-04 18:44 UTC (permalink / raw)


>>>>> On Sun, 04 Nov 2001 19:06:21 +0100,
>>>>> Simon Josefsson <jas@extundo.com> (sj) writes:

sj> I've been running the same 2.x release for almost a year...

In production, been running a CVS pull from 20010930 (we had a
requirement for the altnamespace).  I know 2.x worked prior to that
because we've been running them on our development box.  However, it
looks like 2.1 will have more loose ends wrapped up, at least from
what I've seen/heard.

sj> Are you saying that if you compile the package yourself, you _won't_
sj> get Berkeley DB problems?  Wow! :-)

Well, no.  Just seems like many folks have gotten snagged by version
mis-matches.  Though, can't say I've seen Berkeley DB problems myself.
(Fingers crossed.)

sj> (I'm stuck at the 2.x release I'm using just because of libdb
sj> problems, all db utilities crash when I export the SASL db, and no
sj> matter which version of libdb I compile with, the new Cyrus doesn't
sj> like my current db.  I have working binaries but no way of compiling
sj> new working ones.  Libdb is double-plus ungood.)

Hmmm... don't know if it would help, but I found the SASL sources
out of CVS to be a bit more stable than the 1.5.24 release.  I think
what's in CVS under the cyrus-sasl name is something like a post 1.5.27.

-- 
Amos




^ permalink raw reply	[flat|nested] 23+ messages in thread

end of thread, other threads:[~2001-11-04 18:44 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-10-21 13:01 Sieve support? Simon Josefsson
2001-10-21 14:02 ` Kai Großjohann
2001-10-22  1:21 ` Daniel Pittman
2001-11-01  0:53 ` Simon Josefsson
2001-11-01 16:08   ` Kai Großjohann
2001-11-01 16:50     ` Simon Josefsson
2001-11-02  8:25       ` Kai Großjohann
2001-11-02  8:50         ` Simon Josefsson
2001-11-02  9:14           ` Kai Großjohann
2001-11-02 12:39             ` Simon Josefsson
2001-11-02 16:24               ` Kai Großjohann
2001-11-02 17:52                 ` Amos Gouaux
2001-11-02 22:29                   ` Kai Großjohann
2001-11-04 14:49                     ` Steinar Bang
2001-11-04 17:35                       ` Amos Gouaux
2001-11-04 18:06                         ` Simon Josefsson
2001-11-04 18:44                           ` Amos Gouaux
2001-11-02 17:48         ` Amos Gouaux
2001-11-02 19:59           ` Simon Josefsson
2001-11-03  0:35       ` NAGY Andras
2001-11-03 18:58 ` possible gnus-sieve bug NAGY Andras
2001-11-03 19:06   ` Simon Josefsson
2001-11-04 13:17     ` NAGY Andras

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).