How to use virtual "All" and "Flagged" mailbox?
Hello,
I'm trying to use the virtual "All" and "Flagged" mailboxes as described in 15-mailboxes.conf.
The information here ( https://doc.dovecot.org/configuration_manual/virtual_plugin/) doesn't really touch on how to actually interact with the virtual mailboxes.
My presumption is that when I mark an email message in the Inbox as FLAGGED (and I can confirm the \Flagged flag has been set) then I should then be able to either (1) see a copy of that message in the virtual.Flagged folder, or (2) when I use an imap command to get the message nums or whatever from the virtual.Flagged folder/mailbox, it should return the message that is flagged in the inbox as a result.
Additionally, I'm presuming that for each new user that automatically gets added, I would have to create my own script that would add the dovecot-virtual file, dovecot doesn't do that on its own.
When I view the user's directory I see these folders were created:
[snippet] drwxrwx---. 5 vmail vmail 135 Jan 25 17:01 .virtual.All/ drwxrwx---. 5 vmail vmail 158 Jan 25 17:14 .virtual.Flagged/ [.virtual.Flagged]# ll total 20 drwxrwx---. 5 vmail vmail 158 Jan 25 17:14 ./ drwxrwx---. 20 vmail vmail 4096 Jan 25 17:33 ../ drwxrwx---. 2 vmail vmail 6 Jan 25 16:58 cur/ -rw-rw----. 1 vmail vmail 868 Jan 25 16:58 dovecot.index.cache -rw-rw----. 1 vmail vmail 384 Jan 25 17:01 dovecot.index.log -rw-rw----. 1 vmail vmail 51 Jan 25 17:01 dovecot-uidlist -rw-r--r--. 1 vmail vmail 8 Jan 25 17:14 dovecot-virtual -rw-rw----. 1 vmail vmail 0 Jan 25 16:58 maildirfolder drwxrwx---. 2 vmail vmail 6 Jan 25 16:58 new/ drwxrwx---. 2 vmail vmail 6 Jan 25 16:58 tmp [.virtual.Flagged]# cat dovecot-virtual * flagged
Side note: This set-up uses the php-imap library to interact with Dovecot.
Any help, or just concept of how the virtual/All virtual/Flagged directories work would be really appreciated.
CONFIGURATION:
dovecot -n # 2.3.8 (9df20d2db): /etc/dovecot/dovecot.conf # OS: Linux 4.18.0-348.2.1.el8_5.x86_64 x86_64 CentOS Linux release 8.5.2111 xfs # Hostname: [DOMAIN REDACTED] auth_debug = yes auth_verbose = yes auth_verbose_passwords = yes first_valid_uid = 1000 lda_mailbox_autocreate = yes log_timestamp = "%Y-%m-%d %H:%M:%S " mail_location = maildir:/home/vmail/%d/%n/Maildir mail_plugins = " quota" mbox_write_locks = fcntl namespace { location = virtual:/home/vmail/%d/%n/Maildir/virtual:LAYOUT=maildir++ prefix = virtual. separator = . type = private } namespace inbox { inbox = yes location = mailbox Archive { auto = subscribe special_use = \Archive } mailbox Drafts { auto = subscribe special_use = \Drafts } mailbox Junk { auto = subscribe special_use = \Junk } mailbox Sent { auto = subscribe special_use = \Sent } mailbox "Sent Messages" { auto = subscribe special_use = \Sent } mailbox Trash { auto = subscribe special_use = \Trash } mailbox virtual.All { auto = create comment = All my messages special_use = \All } mailbox virtual.Flagged { auto = create comment = All my flagged messages special_use = \Flagged } prefix = INBOX. separator = . type = private } passdb { args = /etc/dovecot/dovecot-sql.conf.ext driver = sql } passdb { driver = pam } plugin { quota = maildir:User quota quota_grace = 10%% quota_max_mail_size = 30M quota_rule = *:storage=100M quota_rule2 = INBOX.Trash:storage=+10M quota_status_nouser = DUNNO quota_status_overquota = 552 5.2.2 Mailbox is full quota_status_success = DUNNO } protocols = imap pop3 service auth-worker { user = root } service auth { unix_listener /var/spool/postfix/private/auth { group = postfix mode = 0666 user = postfix } unix_listener auth-master { mode = 0600 user = vmail } unix_listener auth-userdb { mode = 0600 user = vmail } user = dovecot } service imap-login { inet_listener imaps { port = 993 ssl = yes } } service pop3-login { inet_listener pop3s { port = 995 ssl = yes } } service quota-status { client_limit = 1 executable = quota-status -p postfix inet_listener { port = 12340 } } service stats { unix_listener stats-reader { group = vmail mode = 0660 user = vmail } unix_listener stats-writer { group = vmail mode = 0660 user = vmail } } ssl = required ssl_cert = </etc/letsencrypt/live/[DOMAIN REDACTED]/fullchain.pem ssl_cipher_list = PROFILE=SYSTEM ssl_key = # hidden, use -P to show it userdb { args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes driver = static } userdb { driver = passwd } protocol lda { auth_socket_path = /var/run/dovecot/auth-master log_path = /home/vmail/dovecot-deliver.log postmaster_address = postmaster@[DOMAIN REDACTED] } protocol pop3 { pop3_uidl_format = %08Xu%08Xv } protocol imap { mail_plugins = " quota imap_quota virtual" }
On 26/01/2022 19:48 A B <alex.bryant@trancos.com> wrote:
Hello,
I'm trying to use the virtual "All" and "Flagged" mailboxes as described in 15-mailboxes.conf.
The information here (https://doc.dovecot.org/configuration_manual/virtual_plugin/) doesn't really touch on how to actually interact with the virtual mailboxes.
My presumption is that when I mark an email message in the Inbox as FLAGGED (and I can confirm the \Flagged flag has been set) then I should then be able to either (1) see a copy of that message in the virtual.Flagged folder, or (2) when I use an imap command to get the message nums or whatever from the virtual.Flagged folder/mailbox, it should return the message that is flagged in the inbox as a result.
Additionally, I'm presuming that for each new user that automatically gets added, I would have to create my own script that would add the dovecot-virtual file, dovecot doesn't do that on its own.
When I view the user's directory I see these folders were created:
<snip/>
You usually use these global virtual folders like this:
namespace virtual { location = virtual:/etc/dovecot/virtual:INDEX=~/.virtual:CONTROL=~/.virtual:VOLATILEDIR=~/.virtual/ ... rest of the settings }
Then you create the dovecot-virtual files under /etc/dovecot/virtual like
/etc/dovecot/virtual/Flagged/dovecot-virtual
This lets you creat them automatically for all users.
Aki
Thank you Aki.
I have updated as you suggested:
10-mail.conf namespace virtual { location = virtual:/etc/dovecot/virtual:INDEX=~/.virtual:CONTROL=~/.virtual:VOLATILEDIR=~/.virtual/ type = private #prefix = virtual. separator = . }
I manually added the directory structure and files: [dovecot]# ll total 32 drwxr-xr-x. 5 root root 121 Jan 31 14:41 ./ drwxr-xr-x. 115 root root 8192 Jan 31 11:05 ../ drwxr-xr-x. 3 root root 57 Jan 7 10:27 bak/ drwxr-xr-x. 2 root root 4096 Jan 25 15:05 conf.d/ -rw-r--r--. 1 root root 2658 Jan 25 16:52 dovecot.conf -rw-r--r--. 1 root root 4391 Oct 8 2019 dovecot.conf-backup -rw-r-----. 1 root dovecot 280 Jan 25 10:41 dovecot-sql.conf.ext drwxr-xr-x. 4 root root 32 Jan 31 14:41 virtual/ [dovecot]# ll virtual/ total 0 drwxr-xr-x. 4 root root 32 Jan 31 14:41 ./ drwxr-xr-x. 5 root root 121 Jan 31 14:41 ../ drwxr-xr-x. 2 root root 29 Jan 31 14:41 All/ drwxr-xr-x. 2 root root 29 Jan 31 14:41 Flagged/ [dovecot]# ll virtual/All/ total 4 drwxr-xr-x. 2 root root 29 Jan 31 14:41 ./ drwxr-xr-x. 4 root root 32 Jan 31 14:41 ../ -rw-r--r--. 1 root root 10 Jan 31 14:31 dovecot-virtual []# cat virtual/All/dovecot-virtual * all
I restarted the dovecot service. When I request to see the emails in the virtual "All" folder (e.g. virtual.All), just like I would do with say the Inbox or Trash folder, the virtual* folder gets created in the user directory, but no emails are "found" or returned.
[Maildir]# pwd /home/vmail/example.com/user.name/Maildir [Maildir]# ll total 80 drwxrwx---. 20 vmail vmail 4096 Jan 31 14:31 ./ drwxrwx---. 4 vmail vmail 37 Jan 31 14:19 ../ drwxrwx---. 5 vmail vmail 135 Jan 25 11:26 .Archive/ drwx------. 2 vmail vmail 4096 Jan 31 14:28 cur/ -rw-rw----. 1 vmail vmail 896 Jan 25 17:10 dovecot.index -rw-rw----. 1 vmail vmail 22596 Jan 31 14:01 dovecot.index.cache -rw-rw----. 1 vmail vmail 11160 Jan 31 14:28 dovecot.index.log -rw-rw----. 1 vmail vmail 1896 Jan 28 17:15 dovecot.list.index -rw-rw----. 1 vmail vmail 7752 Jan 31 14:36 dovecot.list.index.log -rw-rw----. 1 vmail vmail 384 Jan 25 15:32 dovecot.mailbox.log -rw-rw----. 1 vmail vmail 1887 Jan 25 11:35 dovecot-uidlist -rw-rw----. 1 vmail vmail 8 Jan 31 14:31 dovecot-uidvalidity -r--r--r--. 1 vmail vmail 0 Jan 24 16:35 dovecot-uidvalidity.61ef29a3 drwxrwx---. 5 vmail vmail 183 Jan 28 17:22 .Drafts/ drwxrwx---. 5 vmail vmail 135 Jan 25 11:24 .Junk/ -rw-rw----. 1 vmail vmail 1130 Jan 28 17:37 maildirsize drwx------. 2 vmail vmail 6 Jan 25 11:34 new/ drwxrwx---. 5 vmail vmail 135 Jan 31 04:29 .Sent/ drwxrwx---. 5 vmail vmail 135 Jan 25 10:51 '.Sent Messages'/ -rw-rw----. 1 vmail vmail 43 Jan 25 10:50 subscriptions drwx------. 2 vmail vmail 6 Jan 25 11:35 tmp/ drwxrwx---. 5 vmail vmail 135 Jan 25 13:23 .Trash/ drwxrwx---. 5 vmail vmail 135 Jan 31 14:36 .virtual.All/ drwxrwx---. 5 vmail vmail 135 Jan 31 14:28 .virtual.Flagged/ [Maildir]ll .virtual.All/ total 16 drwxrwx---. 5 vmail vmail 135 Jan 31 14:36 ./ drwxrwx---. 20 vmail vmail 4096 Jan 31 14:31 ../ drwxrwx---. 2 vmail vmail 6 Jan 31 14:31 cur/ -rw-rw----. 1 vmail vmail 868 Jan 31 14:31 dovecot.index.cache -rw-rw----. 1 vmail vmail 472 Jan 31 14:36 dovecot.index.log -rw-rw----. 1 vmail vmail 51 Jan 31 14:36 dovecot-uidlist -rw-rw----. 1 vmail vmail 0 Jan 31 14:31 maildirfolder drwxrwx---. 2 vmail vmail 6 Jan 31 14:31 new/ drwxrwx---. 2 vmail vmail 6 Jan 31 14:31 tmp/
Any suggestions what I should work on next to troubleshoot? Again, my goal is to be able to "fetch" all emails with the virtual.All, and all "flagged" emails with virtual.Flagged.
Thank you.
[]# doveconf -n # 2.3.8 (9df20d2db): /etc/dovecot/dovecot.conf # OS: Linux 4.18.0-348.2.1.el8_5.x86_64 x86_64 CentOS Linux release 8.5.2111 xfs # Hostname: example.com auth_debug = yes auth_verbose = yes auth_verbose_passwords = yes first_valid_uid = 1000 lda_mailbox_autocreate = yes log_timestamp = "%Y-%m-%d %H:%M:%S " mail_location = maildir:/home/vmail/%d/%n/Maildir mail_plugins = " quota" mbox_write_locks = fcntl namespace inbox { inbox = yes location = mailbox Archive { auto = subscribe special_use = \Archive } mailbox Drafts { auto = subscribe special_use = \Drafts } mailbox Junk { auto = subscribe special_use = \Junk } mailbox Sent { auto = subscribe special_use = \Sent } mailbox "Sent Messages" { auto = subscribe special_use = \Sent } mailbox Trash { auto = subscribe special_use = \Trash } mailbox virtual.All { auto = subscribe comment = All my messages special_use = \All } mailbox virtual.Flagged { auto = subscribe comment = All my flagged messages special_use = \Flagged } prefix = INBOX. separator = . type = private } namespace virtual { location = virtual:/etc/dovecot/virtual:INDEX=~/.virtual:CONTROL=~/.virtual:VOLATILEDIR=~/.virtual/ prefix = separator = . type = private } passdb { args = /etc/dovecot/dovecot-sql.conf.ext driver = sql } passdb { driver = pam } plugin { quota = maildir:User quota quota_grace = 10%% quota_max_mail_size = 30M quota_rule = *:storage=100M quota_rule2 = INBOX.Trash:storage=+10M quota_status_nouser = DUNNO quota_status_overquota = 552 5.2.2 Mailbox is full quota_status_success = DUNNO } protocols = imap pop3 service auth-worker { user = root } service auth { unix_listener /var/spool/postfix/private/auth { group = postfix mode = 0666 user = postfix } unix_listener auth-master { mode = 0600 user = vmail } unix_listener auth-userdb { mode = 0600 user = vmail } user = dovecot } service imap-login { inet_listener imaps { port = 993 ssl = yes } } service pop3-login { inet_listener pop3s { port = 995 ssl = yes } } service quota-status { client_limit = 1 executable = quota-status -p postfix inet_listener { port = 12340 } } service stats { unix_listener stats-reader { group = vmail mode = 0660 user = vmail } unix_listener stats-writer { group = vmail mode = 0660 user = vmail } } ssl = required ssl_cert = </etc/letsencrypt/live/example.com/fullchain.pem ssl_cipher_list = PROFILE=SYSTEM ssl_key = # hidden, use -P to show it userdb { args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes driver = static } userdb { driver = passwd } protocol lda { auth_socket_path = /var/run/dovecot/auth-master log_path = /home/vmail/dovecot-deliver.log postmaster_address = postmaster@example.com } protocol pop3 { pop3_uidl_format = %08Xu%08Xv } protocol imap { mail_plugins = " quota imap_quota virtual" }
On Mon, Jan 31, 2022 at 12:30 AM Aki Tuomi <aki.tuomi@open-xchange.com> wrote:
On 26/01/2022 19:48 A B <alex.bryant@trancos.com> wrote:
Hello,
I'm trying to use the virtual "All" and "Flagged" mailboxes as described in 15-mailboxes.conf.
The information here ( https://doc.dovecot.org/configuration_manual/virtual_plugin/) doesn't really touch on how to actually interact with the virtual mailboxes.
My presumption is that when I mark an email message in the Inbox as FLAGGED (and I can confirm the \Flagged flag has been set) then I should then be able to either (1) see a copy of that message in the virtual.Flagged folder, or (2) when I use an imap command to get the message nums or whatever from the virtual.Flagged folder/mailbox, it should return the message that is flagged in the inbox as a result.
Additionally, I'm presuming that for each new user that automatically gets added, I would have to create my own script that would add the dovecot-virtual file, dovecot doesn't do that on its own.
When I view the user's directory I see these folders were created:
<snip/>
You usually use these global virtual folders like this:
namespace virtual { location = virtual:/etc/dovecot/virtual:INDEX=~/.virtual:CONTROL=~/.virtual:VOLATILEDIR=~/.virtual/ ... rest of the settings }
Then you create the dovecot-virtual files under /etc/dovecot/virtual like
/etc/dovecot/virtual/Flagged/dovecot-virtual
This lets you creat them automatically for all users.
Aki
Why did you leave the prefix uncommented? Also you already have maildir++ folders virtual.all and virtual.flagged, they are not related to this, and you should remove them.
uncomment the prefix, and you'll see virtual.All and virtual.Flagged folders.
Aki
On 31/01/2022 23:04 A B <alex.bryant@trancos.com> wrote:
Thank you Aki.
I have updated as you suggested:
10-mail.conf namespace virtual { location = virtual:/etc/dovecot/virtual:INDEX=~/.virtual:CONTROL=~/.virtual:VOLATILEDIR=~/.virtual/ type = private #prefix = virtual. separator = . }
I manually added the directory structure and files: [dovecot]# ll total 32 drwxr-xr-x. 5 root root 121 Jan 31 14:41 ./ drwxr-xr-x. 115 root root 8192 Jan 31 11:05 ../ drwxr-xr-x. 3 root root 57 Jan 7 10:27 bak/ drwxr-xr-x. 2 root root 4096 Jan 25 15:05 conf.d/ -rw-r--r--. 1 root root 2658 Jan 25 16:52 dovecot.conf -rw-r--r--. 1 root root 4391 Oct 8 2019 dovecot.conf-backup -rw-r-----. 1 root dovecot 280 Jan 25 10:41 dovecot-sql.conf.ext drwxr-xr-x. 4 root root 32 Jan 31 14:41 virtual/ [dovecot]# ll virtual/ total 0 drwxr-xr-x. 4 root root 32 Jan 31 14:41 ./ drwxr-xr-x. 5 root root 121 Jan 31 14:41 ../ drwxr-xr-x. 2 root root 29 Jan 31 14:41 All/ drwxr-xr-x. 2 root root 29 Jan 31 14:41 Flagged/ [dovecot]# ll virtual/All/ total 4 drwxr-xr-x. 2 root root 29 Jan 31 14:41 ./ drwxr-xr-x. 4 root root 32 Jan 31 14:41 ../ -rw-r--r--. 1 root root 10 Jan 31 14:31 dovecot-virtual []# cat virtual/All/dovecot-virtual * all
I restarted the dovecot service. When I request to see the emails in the virtual "All" folder (e.g. virtual.All), just like I would do with say the Inbox or Trash folder, the virtual* folder gets created in the user directory, but no emails are "found" or returned.
[Maildir]# pwd /home/vmail/example.com/user.name/Maildir (http://example.com/user.name/Maildir) [Maildir]# ll total 80 drwxrwx---. 20 vmail vmail 4096 Jan 31 14:31 ./ drwxrwx---. 4 vmail vmail 37 Jan 31 14:19 ../ drwxrwx---. 5 vmail vmail 135 Jan 25 11:26 .Archive/ drwx------. 2 vmail vmail 4096 Jan 31 14:28 cur/ -rw-rw----. 1 vmail vmail 896 Jan 25 17:10 dovecot.index -rw-rw----. 1 vmail vmail 22596 Jan 31 14:01 dovecot.index.cache -rw-rw----. 1 vmail vmail 11160 Jan 31 14:28 dovecot.index.log -rw-rw----. 1 vmail vmail 1896 Jan 28 17:15 dovecot.list.index -rw-rw----. 1 vmail vmail 7752 Jan 31 14:36 dovecot.list.index.log -rw-rw----. 1 vmail vmail 384 Jan 25 15:32 dovecot.mailbox.log -rw-rw----. 1 vmail vmail 1887 Jan 25 11:35 dovecot-uidlist -rw-rw----. 1 vmail vmail 8 Jan 31 14:31 dovecot-uidvalidity -r--r--r--. 1 vmail vmail 0 Jan 24 16:35 dovecot-uidvalidity.61ef29a3 drwxrwx---. 5 vmail vmail 183 Jan 28 17:22 .Drafts/ drwxrwx---. 5 vmail vmail 135 Jan 25 11:24 .Junk/ -rw-rw----. 1 vmail vmail 1130 Jan 28 17:37 maildirsize drwx------. 2 vmail vmail 6 Jan 25 11:34 new/ drwxrwx---. 5 vmail vmail 135 Jan 31 04:29 .Sent/ drwxrwx---. 5 vmail vmail 135 Jan 25 10:51 '.Sent Messages'/ -rw-rw----. 1 vmail vmail 43 Jan 25 10:50 subscriptions drwx------. 2 vmail vmail 6 Jan 25 11:35 tmp/ drwxrwx---. 5 vmail vmail 135 Jan 25 13:23 .Trash/ drwxrwx---. 5 vmail vmail 135 Jan 31 14:36 .virtual.All/ drwxrwx---. 5 vmail vmail 135 Jan 31 14:28 .virtual.Flagged/ [Maildir]ll .virtual.All/ total 16 drwxrwx---. 5 vmail vmail 135 Jan 31 14:36 ./ drwxrwx---. 20 vmail vmail 4096 Jan 31 14:31 ../ drwxrwx---. 2 vmail vmail 6 Jan 31 14:31 cur/ -rw-rw----. 1 vmail vmail 868 Jan 31 14:31 dovecot.index.cache -rw-rw----. 1 vmail vmail 472 Jan 31 14:36 dovecot.index.log -rw-rw----. 1 vmail vmail 51 Jan 31 14:36 dovecot-uidlist -rw-rw----. 1 vmail vmail 0 Jan 31 14:31 maildirfolder drwxrwx---. 2 vmail vmail 6 Jan 31 14:31 new/ drwxrwx---. 2 vmail vmail 6 Jan 31 14:31 tmp/
Any suggestions what I should work on next to troubleshoot? Again, my goal is to be able to "fetch" all emails with the virtual.All, and all "flagged" emails with virtual.Flagged.
Thank you.
[]# doveconf -n # 2.3.8 (9df20d2db): /etc/dovecot/dovecot.conf # OS: Linux 4.18.0-348.2.1.el8_5.x86_64 x86_64 CentOS Linux release 8.5.2111 xfs # Hostname: example.com (http://example.com) auth_debug = yes auth_verbose = yes auth_verbose_passwords = yes first_valid_uid = 1000 lda_mailbox_autocreate = yes log_timestamp = "%Y-%m-%d %H:%M:%S " mail_location = maildir:/home/vmail/%d/%n/Maildir mail_plugins = " quota" mbox_write_locks = fcntl namespace inbox { inbox = yes location = mailbox Archive { auto = subscribe special_use = \Archive } mailbox Drafts { auto = subscribe special_use = \Drafts } mailbox Junk { auto = subscribe special_use = \Junk } mailbox Sent { auto = subscribe special_use = \Sent } mailbox "Sent Messages" { auto = subscribe special_use = \Sent } mailbox Trash { auto = subscribe special_use = \Trash } mailbox virtual.All { auto = subscribe comment = All my messages special_use = \All } mailbox virtual.Flagged { auto = subscribe comment = All my flagged messages special_use = \Flagged } prefix = INBOX. separator = . type = private } namespace virtual { location = virtual:/etc/dovecot/virtual:INDEX=~/.virtual:CONTROL=~/.virtual:VOLATILEDIR=~/.virtual/ prefix = separator = . type = private } passdb { args = /etc/dovecot/dovecot-sql.conf.ext driver = sql } passdb { driver = pam } plugin { quota = maildir:User quota quota_grace = 10%% quota_max_mail_size = 30M quota_rule = *:storage=100M quota_rule2 = INBOX.Trash:storage=+10M quota_status_nouser = DUNNO quota_status_overquota = 552 5.2.2 Mailbox is full quota_status_success = DUNNO } protocols = imap pop3 service auth-worker { user = root } service auth { unix_listener /var/spool/postfix/private/auth { group = postfix mode = 0666 user = postfix } unix_listener auth-master { mode = 0600 user = vmail } unix_listener auth-userdb { mode = 0600 user = vmail } user = dovecot } service imap-login { inet_listener imaps { port = 993 ssl = yes } } service pop3-login { inet_listener pop3s { port = 995 ssl = yes } } service quota-status { client_limit = 1 executable = quota-status -p postfix inet_listener { port = 12340 } } service stats { unix_listener stats-reader { group = vmail mode = 0660 user = vmail } unix_listener stats-writer { group = vmail mode = 0660 user = vmail } } ssl = required ssl_cert = </etc/letsencrypt/live/example.com/fullchain.pem (http://example.com/fullchain.pem) ssl_cipher_list = PROFILE=SYSTEM ssl_key = # hidden, use -P to show it userdb { args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes driver = static } userdb { driver = passwd } protocol lda { auth_socket_path = /var/run/dovecot/auth-master log_path = /home/vmail/dovecot-deliver.log postmaster_address = postmaster@example.com } protocol pop3 { pop3_uidl_format = %08Xu%08Xv } protocol imap { mail_plugins = " quota imap_quota virtual" }
On Mon, Jan 31, 2022 at 12:30 AM Aki Tuomi <aki.tuomi@open-xchange.com> wrote:
On 26/01/2022 19:48 A B <alex.bryant@trancos.com> wrote:
Hello,
I'm trying to use the virtual "All" and "Flagged" mailboxes as described in 15-mailboxes.conf.
The information here (https://doc.dovecot.org/configuration_manual/virtual_plugin/) doesn't really touch on how to actually interact with the virtual mailboxes.
My presumption is that when I mark an email message in the Inbox as FLAGGED (and I can confirm the \Flagged flag has been set) then I should then be able to either (1) see a copy of that message in the virtual.Flagged folder, or (2) when I use an imap command to get the message nums or whatever from the virtual.Flagged folder/mailbox, it should return the message that is flagged in the inbox as a result.
Additionally, I'm presuming that for each new user that automatically gets added, I would have to create my own script that would add the dovecot-virtual file, dovecot doesn't do that on its own.
When I view the user's directory I see these folders were created:
<snip/>
You usually use these global virtual folders like this:
namespace virtual { location = virtual:/etc/dovecot/virtual:INDEX=~/.virtual:CONTROL=~/.virtual:VOLATILEDIR=~/.virtual/ ... rest of the settings }
Then you create the dovecot-virtual files under /etc/dovecot/virtual like
/etc/dovecot/virtual/Flagged/dovecot-virtual
This lets you creat them automatically for all users.
Aki
Thank you Aki! :) :)
Uncommenting the prefix, and removing the maildir++ virtual.all & virtual.flagged got it working as expected. I don't think I would have realized that the maildir++ virtual.* is for a different use.
Really appreciate your time and explanation.
On Mon, Jan 31, 2022 at 11:54 PM Aki Tuomi <aki.tuomi@open-xchange.com> wrote:
Why did you leave the prefix uncommented? Also you already have maildir++ folders virtual.all and virtual.flagged, they are not related to this, and you should remove them.
uncomment the prefix, and you'll see virtual.All and virtual.Flagged folders.
Aki
On 31/01/2022 23:04 A B <alex.bryant@trancos.com> wrote:
Thank you Aki.
I have updated as you suggested:
10-mail.conf namespace virtual { location = virtual:/etc/dovecot/virtual:INDEX=~/.virtual:CONTROL=~/.virtual:VOLATILEDIR=~/.virtual/ type = private #prefix = virtual. separator = . }
I manually added the directory structure and files: [dovecot]# ll total 32 drwxr-xr-x. 5 root root 121 Jan 31 14:41 ./ drwxr-xr-x. 115 root root 8192 Jan 31 11:05 ../ drwxr-xr-x. 3 root root 57 Jan 7 10:27 bak/ drwxr-xr-x. 2 root root 4096 Jan 25 15:05 conf.d/ -rw-r--r--. 1 root root 2658 Jan 25 16:52 dovecot.conf -rw-r--r--. 1 root root 4391 Oct 8 2019 dovecot.conf-backup -rw-r-----. 1 root dovecot 280 Jan 25 10:41 dovecot-sql.conf.ext drwxr-xr-x. 4 root root 32 Jan 31 14:41 virtual/ [dovecot]# ll virtual/ total 0 drwxr-xr-x. 4 root root 32 Jan 31 14:41 ./ drwxr-xr-x. 5 root root 121 Jan 31 14:41 ../ drwxr-xr-x. 2 root root 29 Jan 31 14:41 All/ drwxr-xr-x. 2 root root 29 Jan 31 14:41 Flagged/ [dovecot]# ll virtual/All/ total 4 drwxr-xr-x. 2 root root 29 Jan 31 14:41 ./ drwxr-xr-x. 4 root root 32 Jan 31 14:41 ../ -rw-r--r--. 1 root root 10 Jan 31 14:31 dovecot-virtual []# cat virtual/All/dovecot-virtual * all
I restarted the dovecot service. When I request to see the emails in the virtual "All" folder (e.g. virtual.All), just like I would do with say the Inbox or Trash folder, the virtual* folder gets created in the user directory, but no emails are "found" or returned.
[Maildir]# pwd /home/vmail/example.com/user.name/Maildir ( http://example.com/user.name/Maildir) [Maildir]# ll total 80 drwxrwx---. 20 vmail vmail 4096 Jan 31 14:31 ./ drwxrwx---. 4 vmail vmail 37 Jan 31 14:19 ../ drwxrwx---. 5 vmail vmail 135 Jan 25 11:26 .Archive/ drwx------. 2 vmail vmail 4096 Jan 31 14:28 cur/ -rw-rw----. 1 vmail vmail 896 Jan 25 17:10 dovecot.index -rw-rw----. 1 vmail vmail 22596 Jan 31 14:01 dovecot.index.cache -rw-rw----. 1 vmail vmail 11160 Jan 31 14:28 dovecot.index.log -rw-rw----. 1 vmail vmail 1896 Jan 28 17:15 dovecot.list.index -rw-rw----. 1 vmail vmail 7752 Jan 31 14:36 dovecot.list.index.log -rw-rw----. 1 vmail vmail 384 Jan 25 15:32 dovecot.mailbox.log -rw-rw----. 1 vmail vmail 1887 Jan 25 11:35 dovecot-uidlist -rw-rw----. 1 vmail vmail 8 Jan 31 14:31 dovecot-uidvalidity -r--r--r--. 1 vmail vmail 0 Jan 24 16:35 dovecot-uidvalidity.61ef29a3 drwxrwx---. 5 vmail vmail 183 Jan 28 17:22 .Drafts/ drwxrwx---. 5 vmail vmail 135 Jan 25 11:24 .Junk/ -rw-rw----. 1 vmail vmail 1130 Jan 28 17:37 maildirsize drwx------. 2 vmail vmail 6 Jan 25 11:34 new/ drwxrwx---. 5 vmail vmail 135 Jan 31 04:29 .Sent/ drwxrwx---. 5 vmail vmail 135 Jan 25 10:51 '.Sent Messages'/ -rw-rw----. 1 vmail vmail 43 Jan 25 10:50 subscriptions drwx------. 2 vmail vmail 6 Jan 25 11:35 tmp/ drwxrwx---. 5 vmail vmail 135 Jan 25 13:23 .Trash/ drwxrwx---. 5 vmail vmail 135 Jan 31 14:36 .virtual.All/ drwxrwx---. 5 vmail vmail 135 Jan 31 14:28 .virtual.Flagged/ [Maildir]ll .virtual.All/ total 16 drwxrwx---. 5 vmail vmail 135 Jan 31 14:36 ./ drwxrwx---. 20 vmail vmail 4096 Jan 31 14:31 ../ drwxrwx---. 2 vmail vmail 6 Jan 31 14:31 cur/ -rw-rw----. 1 vmail vmail 868 Jan 31 14:31 dovecot.index.cache -rw-rw----. 1 vmail vmail 472 Jan 31 14:36 dovecot.index.log -rw-rw----. 1 vmail vmail 51 Jan 31 14:36 dovecot-uidlist -rw-rw----. 1 vmail vmail 0 Jan 31 14:31 maildirfolder drwxrwx---. 2 vmail vmail 6 Jan 31 14:31 new/ drwxrwx---. 2 vmail vmail 6 Jan 31 14:31 tmp/
Any suggestions what I should work on next to troubleshoot? Again, my goal is to be able to "fetch" all emails with the virtual.All, and all "flagged" emails with virtual.Flagged.
Thank you.
[]# doveconf -n # 2.3.8 (9df20d2db): /etc/dovecot/dovecot.conf # OS: Linux 4.18.0-348.2.1.el8_5.x86_64 x86_64 CentOS Linux release 8.5.2111 xfs # Hostname: example.com (http://example.com) auth_debug = yes auth_verbose = yes auth_verbose_passwords = yes first_valid_uid = 1000 lda_mailbox_autocreate = yes log_timestamp = "%Y-%m-%d %H:%M:%S " mail_location = maildir:/home/vmail/%d/%n/Maildir mail_plugins = " quota" mbox_write_locks = fcntl namespace inbox { inbox = yes location = mailbox Archive { auto = subscribe special_use = \Archive } mailbox Drafts { auto = subscribe special_use = \Drafts } mailbox Junk { auto = subscribe special_use = \Junk } mailbox Sent { auto = subscribe special_use = \Sent } mailbox "Sent Messages" { auto = subscribe special_use = \Sent } mailbox Trash { auto = subscribe special_use = \Trash } mailbox virtual.All { auto = subscribe comment = All my messages special_use = \All } mailbox virtual.Flagged { auto = subscribe comment = All my flagged messages special_use = \Flagged } prefix = INBOX. separator = . type = private } namespace virtual { location = virtual:/etc/dovecot/virtual:INDEX=~/.virtual:CONTROL=~/.virtual:VOLATILEDIR=~/.virtual/ prefix = separator = . type = private } passdb { args = /etc/dovecot/dovecot-sql.conf.ext driver = sql } passdb { driver = pam } plugin { quota = maildir:User quota quota_grace = 10%% quota_max_mail_size = 30M quota_rule = *:storage=100M quota_rule2 = INBOX.Trash:storage=+10M quota_status_nouser = DUNNO quota_status_overquota = 552 5.2.2 Mailbox is full quota_status_success = DUNNO } protocols = imap pop3 service auth-worker { user = root } service auth { unix_listener /var/spool/postfix/private/auth { group = postfix mode = 0666 user = postfix } unix_listener auth-master { mode = 0600 user = vmail } unix_listener auth-userdb { mode = 0600 user = vmail } user = dovecot } service imap-login { inet_listener imaps { port = 993 ssl = yes } } service pop3-login { inet_listener pop3s { port = 995 ssl = yes } } service quota-status { client_limit = 1 executable = quota-status -p postfix inet_listener { port = 12340 } } service stats { unix_listener stats-reader { group = vmail mode = 0660 user = vmail } unix_listener stats-writer { group = vmail mode = 0660 user = vmail } } ssl = required ssl_cert = </etc/letsencrypt/live/example.com/fullchain.pem ( http://example.com/fullchain.pem) ssl_cipher_list = PROFILE=SYSTEM ssl_key = # hidden, use -P to show it userdb { args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes driver = static } userdb { driver = passwd } protocol lda { auth_socket_path = /var/run/dovecot/auth-master log_path = /home/vmail/dovecot-deliver.log postmaster_address = postmaster@example.com } protocol pop3 { pop3_uidl_format = %08Xu%08Xv } protocol imap { mail_plugins = " quota imap_quota virtual" }
On Mon, Jan 31, 2022 at 12:30 AM Aki Tuomi <aki.tuomi@open-xchange.com> wrote:
On 26/01/2022 19:48 A B <alex.bryant@trancos.com> wrote:
Hello,
I'm trying to use the virtual "All" and "Flagged" mailboxes as
The information here (
https://doc.dovecot.org/configuration_manual/virtual_plugin/) doesn't really touch on how to actually interact with the virtual mailboxes.
My presumption is that when I mark an email message in the Inbox as
FLAGGED (and I can confirm the \Flagged flag has been set) then I should
Additionally, I'm presuming that for each new user that
automatically gets added, I would have to create my own script that would add the dovecot-virtual file, dovecot doesn't do that on its own.
When I view the user's directory I see these folders were created:
<snip/>
You usually use these global virtual folders like this:
namespace virtual { location = virtual:/etc/dovecot/virtual:INDEX=~/.virtual:CONTROL=~/.virtual:VOLATILEDIR=~/.virtual/ ... rest of the settings }
Then you create the dovecot-virtual files under /etc/dovecot/virtual
described in 15-mailboxes.conf. then be able to either (1) see a copy of that message in the virtual.Flagged folder, or (2) when I use an imap command to get the message nums or whatever from the virtual.Flagged folder/mailbox, it should return the message that is flagged in the inbox as a result. like
/etc/dovecot/virtual/Flagged/dovecot-virtual
This lets you creat them automatically for all users.
Aki
participants (2)
-
A B
-
Aki Tuomi