diff --git a/docs/core/config/mailbox_formats/overview.md b/docs/core/config/mailbox_formats/overview.md index 1d13ed2df..bddefb56f 100644 --- a/docs/core/config/mailbox_formats/overview.md +++ b/docs/core/config/mailbox_formats/overview.md @@ -109,7 +109,7 @@ that you are comfortable with data loss. Example: mail_fsync = optimized protocol pop3 { - # Enable fsyncing for POP3 + # Disable fsyncing for POP3 mail_fsync = never } ``` diff --git a/docs/core/man/include/doveadm-backup-sync.inc b/docs/core/man/include/doveadm-backup-sync.inc index 4f7acc6ce..f0b79e9e9 100644 --- a/docs/core/man/include/doveadm-backup-sync.inc +++ b/docs/core/man/include/doveadm-backup-sync.inc @@ -200,9 +200,13 @@ parameters. **-t** *start date* : Skip any mails whose received-timestamp is older than the specified time. + The format follows IMAP4rev1 standard format, e.g. "13-Apr-2007 14:23:05 + +0200" **-e** *end date* : Skip any mails whose received-timestamp is newer than the specified time. + The format follows IMAP4rev1 standard format, e.g. "13-Apr-2007 14:23:05 + +0200" **-O** *sync flag* : Sync only mails that have the specified flag. If the flag name begins diff --git a/docs/core/man/include/doveadm-fs.inc b/docs/core/man/include/doveadm-fs.inc index 813314ac5..7537a3473 100644 --- a/docs/core/man/include/doveadm-fs.inc +++ b/docs/core/man/include/doveadm-fs.inc @@ -150,7 +150,7 @@ doveadm -o fs=compress,posix -o fs/compress/fs_driver=compress -o fs/posix/fs_dr Using a named filter. ```sh -doveadm mail fs -u testuser get obox path/to/file +doveadm mail fs get -u testuser obox path/to/file ``` ## SEE ALSO diff --git a/docs/core/man/sieve-test.1.md b/docs/core/man/sieve-test.1.md index 0a019eab5..29853be80 100644 --- a/docs/core/man/sieve-test.1.md +++ b/docs/core/man/sieve-test.1.md @@ -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 +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* 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 5c6c7c887..9d3eb72ba 100644 --- a/docs/core/settings/syntax.md +++ b/docs/core/settings/syntax.md @@ -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 + } + } +} + +@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