Protocol for Sieve script exchange

    Please note that this document is not authoritative and may well be out
    of date, you should look at specs.html for the current authoritative
    document for the MANAGESIEVE protocol. Note: This is not a standards
    track protocol. If you decide to base a program upon it you have been
    warned. This is a simple text-based protocol for getting user sieve
    scripts onto the (presumably sealed) IMAP server. The requirements for
    this process are: 

      * the user must authenticate to gain access, preferably via a secure
        SASL mechanism. 
      * 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 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. 
    sievename is a string where only certain characters are allowed and it
    must be at least 1 character long. 

Commands

    AUTHENTICATE SP string [SP string] EOL 
            SASL authentication; the parameters are the mechanism and
            optionally the initial data. 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, terminates connection. OK, NO replies. 
    GETSCRIPT SP sievename EOL 
            The parameter is the name of the requested script. Returns:
            string EOL containing the script data. Get the script with name
            sievename from the server. OK, NO replies 
    PUTSCRIPT SP sievename SP string EOL 
            Puts sievename with data data onto the server if possible. OK,
            NO replies. 
    SETACTIVE SP 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 SP sievename EOL 
            Delete the script with sievename. OK or NO replies. 
    LISTSCRIPTS EOL 
            returns zero or more: sievename EOL. where the active script
            has a '*' at the end of it's name OK or NO replies 

