Referencing Issues
[LBBS-54] mod_mailscript: Add RECIPIENT condition
Feature capabilities
- Check for nonexistent folders during Sieve script validation and warn if the referenced mailbox does not exist.
- Ideally, cache the filtering script in memory and don't reparse each invocation by the SMTP server
- Need to be able to move messages to remote IMAP folders (in
.imapremote
). Challenge here is we can't use the imap_client
subsystem of the BBS (or at least we don't now, maybe we should)
- Client-side IMAP filtering, e.g. this kind of thing: https://github.com/lefcha/imapfilter - but fully transparent, using normal Sieve filtering script syntax, just a separate script for post-delivery processing
.forward
should be honored: https://www.man7.org/linux/man-pages/man5/forward.5.html
Pathway:
- Likely need my own library, since libsieve is not being maintained and won't build (will need to be compiled from source to fix bugs and add features). See https://github.com/sodabrew/libsieve/issues/4
- Deprecate MailScript, once we have a good Sieve implementation that can be fully extended with new features and do everything that MailScript can do (e.g. SMTP proxying, EXEC, etc.)
- For example, Sieve extension for external programs: https://github.com/dovecot/pigeonhole/blob/main/doc/rfc/spec-bosch-sieve-extprograms.txt
- Alternately, for the EXEC rule, run user rules inside their container instead of the system (use isoexec or isonetexec). The system-wide rules can still run using the system root. This way, "EXEC" is safe and users can edit their own MailScript rules, making this less kludgy and removing the main imperative for deprecating this filtering engine.
- MailScript: Since mproc->recipient is NULL for outgoing messages (in both mod_mailscript and mod_sieve), add a RECIPIENTS condition, which can be used for outgoing messages
Links:
https://github.com/simta/simvacation/blob/main/simvacation.c
Comments
You must be logged in to leave a comment.