The Cyrus Imapd currently gives two options of where to store users'
sieve scripts. In the user's home directory or within the /usr/sieve
directory on the Cyrus Imapd server. Since Cyrus is a closed system
this presents the problem of how do users get their sieve scripts onto
the server. We have come up with the protocol listed below and plan to
release code based on it in the next version of Cyrus. We hope in the
future for users to submit their scripts to an ACAP server but we need
a solution until that is possible.
Some others have expressed interest in this. Do people think it would be
worthwhile to write this protocol up formally?
Of course any comments or suggestions on the protocol would be greatly
appreciated.
Thanks,
Tim
----------------------------------------------------------------------
This is a protocol for getting user sieve scripts onto the server. The
requirments for this process are:
-the user must authenticate to gain access
-only valid sieve scripts may be accepted
Additional "features" provided:
-the ability to manage multiple scripts on the server with zero or one
of them being the "active" sieve script
Types
-----
This is a line oriented protocol much like [IMAP] or [ACAP]. There
are two types: ATOMS and strings. Strings may be quoted or
literal. See [ACAP] for detailed descriptions.
Commands
--------
AUTHENTICATE <string (mechanism)> <string(initial data)> EOL
SASL authentication. Initial data is base64 encoded. The server
replies with a OK or NO response, or a string base64 encoded followed
by an EOL. Client then replies with a string base64 encoded followed
by an EOL and the procedure is repeated.
NOOP EOL
No side affects. OK, NO replies
LOGOUT EOL
Logout of server. OK, NO replies
GETSCRIPT <sievename> EOL
returns: <string (data of script)> EOL
Get the script with name 'sievename' from the server. OK, NO replies
PUTSCRIPT <sievename> <string (data)> EOL
Puts 'sievename' with data 'data' onto the server if possible. OK, NO replies
SETACTIVE <sievename> EOL
Set the script with the name 'sievename' as the active script. Any
other script that was active is no longer. OK, NO replies
DELETESCRIPT <sievename> EOL
Delete the script with 'sievename'. OK or NO replies
LISTSCRIPTS EOL
returns zero or more: <tag> <sivename> EOL
where the active script has a '*' at the end of it's name
OK or NO replies
<sievename> is a string where only certain characters are
allowed and it must be at least 1 character long