-
Notifications
You must be signed in to change notification settings - Fork 75
Changes mostly related to virtual and imapsieve parts #1289
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
0adbad9
caf47dc
14bcb82
ea969d0
5985454
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -31,6 +31,10 @@ and it can provide more detailed information about script execution | |
| problems that are reported by the Sieve plugin, for example by tracing | ||
| the execution and evaluation of commands and tests respectively. | ||
|
|
||
| The tool does not parse the userdb database. If virtual users have different | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
|
||
| user and group IDs, these should be specified on the command line using the | ||
| following syntax: **-o mail_uid=5000 -o mail_gid=5000**. | ||
|
|
||
| ## OPTIONS | ||
|
|
||
| **-a** *orig-recipient-address* | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -68,7 +68,7 @@ which requires no additional configuration. | |
|
|
||
| Script storages for administrator scripts are defined in | ||
| [[setting,sieve_script]] blocks with [[setting,sieve_script_type]] | ||
| [[link,sieve_storage_type_before,before]] or | ||
| [[link,sieve_storage_type_before,before]] or | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. unnecessary whitespace change? |
||
| [[link,sieve_storage_type_after,after]]. These execute administrator scripts | ||
| before or after the user's personal script, respectively. The | ||
| [[setting,sieve_script_cause]] setting for the administrator storages used by | ||
|
|
@@ -81,7 +81,7 @@ The applicability of administrator scripts can be limited to a destination | |
| mailbox by placing the corresponding [[setting,sieve_script]] blocks inside | ||
| a [[setting,mailbox]] block for that mailbox. For a source mailbox, limiting the | ||
| applicability of administrator scripts can similarly be achieved by placing the | ||
| corresponding [[setting,sieve_script]] blocks inside a | ||
| corresponding [[setting,sieve_script]] blocks inside an | ||
| [[setting,imapsieve_from]] block with that mailbox name. The [[setting,mailbox]] | ||
| and [[setting,imapsieve_from]] blocks can be nested when both are required. | ||
|
|
||
|
|
@@ -108,9 +108,12 @@ This plugin registers the `imapsieve` extension with the Sieve | |
| interpreter. This extension is enabled implicitly, which means that it | ||
| does not need to be added to the [[setting,sieve_extensions]] setting. | ||
|
|
||
| Additional information about using the plugin with virtual mailboxes can be | ||
| found at [[link,plugin_virtual_imapsieve,virtual mailbox plugin]]. | ||
|
|
||
| ## Example Configuration | ||
|
|
||
| ```[dovecot.conf]]] | ||
| ```[dovecot.conf] | ||
| imapsieve_from Spam { | ||
| sieve_script ham { | ||
| type = before | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,6 +1,10 @@ | ||
| --- | ||
| layout: doc | ||
| title: virtual | ||
| dovecotlinks: | ||
| plugin_virtual_imapsieve: | ||
| hash: imapsieve | ||
| text: IMAPSieve script for virtual plugins | ||
| --- | ||
|
|
||
| # Virtual Mailbox Plugin (`virtual`) | ||
|
|
@@ -32,27 +36,33 @@ Then, you'll have to create a [[link,namespaces,namespace]] for the virtual | |
| mailboxes, for example: | ||
|
|
||
| ```[dovecot.conf] | ||
| namespace { | ||
| namespace virtual { | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Looks like there are a ton of these missing. Fixing them all in #1376 |
||
| prefix = virtual/ | ||
| separator = / | ||
| mail_driver = virtual | ||
| mail_path = ~/Maildir/virtual | ||
|
|
||
| mailbox All { | ||
| auto = no | ||
| special_use = \All | ||
| } | ||
| [...] | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think better not include |
||
| } | ||
| ``` | ||
|
|
||
| After this you can create virtual mailboxes under `~/Maildir/virtual`. By | ||
| default it uses the `fs` layout, so you can create directories such as: | ||
|
|
||
| * INBOX: `~/Maildir/virtual/INBOX/` | ||
| * All: `~/Maildir/virtual/All/` | ||
| * Sub/mailbox: `~/Maildir/virtual/Sub/mailbox/` | ||
|
|
||
| If you prefer to use the Maildir++ layout instead, set | ||
| [[setting,mailbox_list_layout,maildir++]]. | ||
|
|
||
| ### Virtual Mailboxes | ||
|
|
||
| For each virtual directory you need to create a `dovecot-virtual` file. Its | ||
| syntax is like: | ||
| For each directory (virtual mailbox) you need to create a `dovecot-virtual` file. | ||
| Its syntax is like: | ||
|
|
||
| ``` | ||
| <1+ mailbox patterns> | ||
|
|
@@ -71,14 +81,16 @@ aren't noticed. | |
| prefix. For example if you have namespaces with an empty prefix and a prefix | ||
| `mail/`: | ||
|
|
||
| * `*` matches only mailboxes from the namespace with empty prefix | ||
| * `mail*` matches mailboxes beginning with name `mail` from the namespace | ||
| with empty prefix | ||
| * `mail/*` matches only mailboxes from the `mail/` namespace | ||
| * `*` only matches mailboxes from the namespace with an empty prefix. | ||
| * `mail*` matches mailboxes that begin with `mail` from the namespace with | ||
| an empty prefix. | ||
| * `mail/*` only matches mailboxes from the `mail/` namespace. | ||
|
|
||
| Beware that `*` will not match any mailbox which already has a more | ||
| Beware that `*` will not match any mailbox that already has a more | ||
| specialized match! | ||
|
|
||
| Currently, `*` doesn't match INBOX. | ||
|
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We can debug that further in the mailing list why you're seeing that, but this definitely is not generally true, so can't include it in documentation. |
||
|
|
||
| The mailbox names have special prefixes: | ||
|
|
||
| * `-`: Don't include this mailbox. | ||
|
|
@@ -120,7 +132,7 @@ The `!-prefixed` virtual mailbox is also selected from; you don't need to | |
| list it again without an ! or you'll get two copies of your messages in the | ||
| virtual mailbox. | ||
|
|
||
| ## IMAPSieve Filters | ||
| ## IMAPSieve Filters {#imapsieve} | ||
|
|
||
| [[added,imapsieve_filters]] | ||
|
|
||
|
|
@@ -131,14 +143,22 @@ Virtual/All folder was configured with INBOX as the save destination, this | |
| Virtual/All folder: | ||
|
|
||
| ```[sieve.before] | ||
| imapsieve_mailbox_name = INBOX # Virtual/All would NOT work | ||
| imapsieve_mailbox_causes = COPY | ||
| imapsieve_mailbox_before = /etc/dovecot/sieve.before | ||
| mailbox INBOX { # Virtual/All would NOT work | ||
| sieve_script before-copy { | ||
| type = before | ||
| cause = copy | ||
| path = /etc/dovecot/sieve.before | ||
| } | ||
| } | ||
| ``` | ||
|
|
||
| Also, the `imap.mailbox` environment always contains INBOX, even when | ||
| Also, the `imap.mailbox` Sieve `environment` variable always contains INBOX, even when | ||
| saving via Virtual/All folder. | ||
|
|
||
| ::: warning | ||
| Currently, imapsieve scripts that are defined within a virtual mailbox are not being called. | ||
|
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Isn't this just restating what the text above is trying to say? "When saving to a virtual mailbox is configured, imapsieve scripts act as if the save was done directly to the physical destination mailbox". Maybe it could be further clarified, but now this sounds like a separate issue, while I think it's the same. I.e. Sieve scripts work only on physical mailboxes, not virtual mailboxes. |
||
| ::: | ||
|
|
||
| ## Mailbox Selection Based on METADATA | ||
|
|
||
| Instead of a mailbox name, you can specify a metadata filter: | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -367,6 +367,37 @@ group @mailboxes finnish { | |
| @mailboxes = finnish # Does not work - name is still Trash | ||
| ``` | ||
|
|
||
| Within one `group` it's not possible to enumerate different kind of settings, | ||
| like `prefix`, `separator`, and multiple `mailboxes`. For these cases, group | ||
| the hierarchy one above, like `namespace`. For example: | ||
|
|
||
| ```[dovecot.conf] | ||
| group @namespaces-virtual english { | ||
| namespace virtual { | ||
| prefix = virtual/ | ||
|
|
||
| mail_driver = virtual | ||
| mail_path = /var/lib/dovecot/virtual/en | ||
| mail_index_path = %{home}/index/virtual/en | ||
|
|
||
| mailbox All { | ||
| auto = no | ||
| special_use = \All | ||
| } | ||
| mailbox Flagged { | ||
| auto = no | ||
| special_use = \Flagged | ||
| } | ||
| } | ||
| } | ||
|
Comment on lines
+375
to
+392
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. There is something wrong in group handling here, but if it is documented, it needs to be clearer what is wrong. This is both a too specific example of what doesn't work, and also at the same time it's too wide, like I don't think the mailbox { .. } are relevant. I'll see if I can understand what is going wrong there. |
||
|
|
||
| @namespaces-virtual = english | ||
| ``` | ||
|
|
||
| ::: warning | ||
| Currently, indices are not created for namespaces that are defined within groups. | ||
|
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think this is the same bug as above. Something's not working right in group handling. |
||
| ::: | ||
|
|
||
| It's possible to override groups using the command line parameter `-o` or | ||
| userdb. For example above you can return `namespace/inbox/@mailboxes=finnish` | ||
| from userdb to change mailbox names to Finnish language. Note that groups can't | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is only partially true. Better would be to add a reference to the full syntax possibilities:
For the timestamp format, see the DATE SPECIFICATION in [[man,doveadm-search-query,,7]].