diff --git a/docs/core/plugins/imap_sieve.md b/docs/core/plugins/imap_sieve.md index ae6bb3505..88340e9af 100644 --- a/docs/core/plugins/imap_sieve.md +++ b/docs/core/plugins/imap_sieve.md @@ -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 [[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 diff --git a/docs/core/plugins/virtual.md b/docs/core/plugins/virtual.md index 6ebe4b706..678240738 100644 --- a/docs/core/plugins/virtual.md +++ b/docs/core/plugins/virtual.md @@ -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,18 +36,24 @@ Then, you'll have to create a [[link,namespaces,namespace]] for the virtual mailboxes, for example: ```[dovecot.conf] -namespace { +namespace virtual { prefix = virtual/ separator = / mail_driver = virtual mail_path = ~/Maildir/virtual + + mailbox All { + auto = no + special_use = \All + } + [...] } ``` 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 @@ -51,8 +61,8 @@ If you prefer to use the Maildir++ layout instead, set ### 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. + 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. +::: + ## Mailbox Selection Based on METADATA Instead of a mailbox name, you can specify a metadata filter: diff --git a/docs/core/settings/syntax.md b/docs/core/settings/syntax.md index bdba2e270..3a3140de8 100644 --- a/docs/core/settings/syntax.md +++ b/docs/core/settings/syntax.md @@ -349,9 +349,39 @@ after it. For example: ```[dovecot.conf] @mysql = default mysql_host = mysql2.example.com # override the default mysql_host +``` + +Within one group it's not possible to enumerate different kind of settings, like +`prefix`, `separator`, and multiple `mailboxes`. For these cases, include 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 + } + } +} +@namespaces-virtual = english ``` +::: warning +Currently, indices are not created for namespaces that are defined within groups. +::: + 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