Auteur: Michael Haardt Datum: Aan: exim-users Onderwerp: Re: [exim] Re: Enhancing Seive definitions in the Exim environment
On Mon, Oct 25, 2004 at 05:57:03PM +0200, Kjetil Torgrim Homme wrote:
> On Mon, 2004-10-25 at 12:18 +0200, Michael Haardt wrote:
> > Well, standards don't care about minds and changing 'keep', implicit or
> > not, to do something different than 'fileinto "inbox"' *does* violate
> > RFC 3028, so it's not Sieve anymore. > I don't think there is any such requirement. remember that "fileinto"
> is optional. furthermore, there is nothing in Sieve about the syntax of
> the mailbox names. you could even do
The "keep" action is whatever action is taken in lieu of all other
actions, if no filtering happens at all; generally, this simply means
to file the message into the user's main mailbox. This command
provides a way to execute this action without needing to know the
name of the user's main mailbox, providing a way to call it without
needing to understand the user's setup, or the underlying mail
system.
For instance, in an implementation where the IMAP server is running
scripts on behalf of the user at time of delivery, a keep command is
equivalent to a fileinto "INBOX".
To me, that means if fileinto is available and if the standard inbox is
called "inbox", then keep means 'fileinto "inbox"'. But you are right,
the RFC allows for uncommon setups to define this differently. Please
quote RFC 3028, should I ever tell crap about it again. ;-)
Looking at Exim, I don't see an alternative. Whenever an implicit keep
is executed, you could return FF_NOTDELIVERED, like the Exim filter does
in absence of significant deliveries. But what should an explicit keep
do? What should an explicit 'keep :copy' do?
Implementations SHOULD NOT deliver a message to the same folder more
than once, even if a script explicitly asks for a message to be
written to a mailbox twice.
SHOULD is a strong recommendation, not something you don't follow just
because it is not a MUST.
Right now, a 'keep :copy' adds "inbox" to the address list. In case
nothing else resets the implicit keep flags, Sieve would execute a keep
at the end of processing, just to find that "inbox" is already on the
address list, so add_addr() does not add it again.