62 lines
2.6 KiB
Markdown
62 lines
2.6 KiB
Markdown
# Sieve filtering and ManageSieve
|
|
|
|
Bongo stores each user's server-side mail rules independently from the mail
|
|
payloads. `bongosieve` provides the ManageSieve management protocol, while
|
|
`bongorules` evaluates the active script as mail passes through the Queue.
|
|
Thunderbird and other ManageSieve clients can therefore maintain filters
|
|
without editing server files.
|
|
|
|
## Listener and authentication
|
|
|
|
ManageSieve is disabled by the base template until it is required. Its
|
|
suffixless `sieve` document has conservative loopback defaults:
|
|
|
|
```json
|
|
{
|
|
"enabled": false,
|
|
"listen_address": "127.0.0.1",
|
|
"port": 4190,
|
|
"allow_legacy_tls": false,
|
|
"proxy_protocol_enabled": false,
|
|
"proxy_protocol_networks": [],
|
|
"maximum_script_size": 1048576,
|
|
"maximum_connections": 64
|
|
}
|
|
```
|
|
|
|
The greeting offers `STARTTLS`; GNU GSASL mechanisms are advertised only
|
|
after TLS. Authentication uses the same Bongo user and app-password policy as
|
|
the mail protocols, with the Sieve service scope. Cleartext received after a
|
|
`STARTTLS` command is discarded before negotiation. PROXY protocol has the
|
|
same source-restricted rules as the other mail listeners.
|
|
|
|
## Management protocol
|
|
|
|
The RFC 5804 service implements `CAPABILITY`, `STARTTLS`, `AUTHENTICATE`,
|
|
`HAVESPACE`, `PUTSCRIPT`, `CHECKSCRIPT`, `LISTSCRIPTS`, `GETSCRIPT`,
|
|
`SETACTIVE`, `RENAMESCRIPT`, `DELETESCRIPT`, `NOOP`, and `LOGOUT`. Script
|
|
names and literals are bounded, syntax is validated before activation, an
|
|
active script cannot be deleted accidentally, and scripts are isolated by
|
|
authenticated user.
|
|
|
|
The implementation advertises `fileinto`, `envelope`, `body`, `variables`,
|
|
`vacation`, and `vacation-seconds`. Actions include keep, discard, file into a
|
|
folder, redirect, reject, and vacation response. Vacation history is durable
|
|
so repeated delivery does not generate an immediate reply loop. Scripts and
|
|
vacation state live in `/var/lib/bongo/dbf/sieve.sqlite`; include that database
|
|
and its SQLite sidecars in backups.
|
|
|
|
## Filters in Webmail
|
|
|
|
The Web filter editor and ManageSieve are two interfaces to the same intended
|
|
user rule model. A filter may match senders or other message properties and
|
|
deliver matching messages to a folder such as `Family`. Mailing-list
|
|
recognition is one possible filter condition, not a separate replacement for
|
|
the filter system. Future JMAP support must map to the same rules rather than
|
|
creating a third incompatible store.
|
|
|
|
Test script upload, syntax rejection, activation, rename, retrieval, deletion,
|
|
folder delivery, redirect, reject, vacation deduplication, and quota limits
|
|
before exposing the service. The 0.7 release cases are SIEVE-01 through
|
|
SIEVE-05 in [release-testing-0.7.md](release-testing-0.7.md).
|