hello, on the wiki, https://wiki2.dovecot.org/MailboxFormat/dbox, it says that one can use either doveadm fetch or doveadm import, however I can find no correct syntax with fetch that'll actually work. Is the idea to simply override the mail_location with -o ? That seems to work for doveadm mailbox but not for doveadm fetch or search # doveadm -f table mailbox status -u johan all dovecot mailbox messages recent uidnext uidvalidity unseen highestmodseq vsize guid firstsaved dovecot 0 0 1 1362145026 0 1 164208086 64bd9f0003af305190040000b9256959 1471825482 # doveadm -f table -o "mail_location=mdbox_deleted:~/mdbox" mailbox status -u johan all dovecot mailbox messages recent uidnext uidvalidity unseen highestmodseq vsize guid firstsaved dovecot 0 0 1 0 0 1 0 ddb9421479f0595bf21b0100b9256959 18446744073709551615 # doveadm -f flow fetch -u johan size.virtual mailbox dovecot size.virtual=2869 size.virtual=2960 size.virtual=8023 size.virtual=6683 ... # # doveadm -f flow -o "mail_location=mdbox_deleted:~/mdbox" fetch -u johan size.virtual mailbox dovecot # # doveadm search -u johan mailbox dovecot subject "LMTP Log" 64bd9f0003af305190040000b9256959 8642 64bd9f0003af305190040000b9256959 21302 64bd9f0003af305190040000b9256959 21373 64bd9f0003af305190040000b9256959 21420 64bd9f0003af305190040000b9256959 21434 64bd9f0003af305190040000b9256959 21435 64bd9f0003af305190040000b9256959 21460 64bd9f0003af305190040000b9256959 21461 64bd9f0003af305190040000b9256959 21463 64bd9f0003af305190040000b9256959 23684 # doveadm -o "mail_location=mdbox_deleted:~/mdbox" search -u johan mailbox dovecot subject "LMTP Log" # What I'm really trying to accomplish is see if a mail which a user deleted still exists in mdbox_deleted, so I wanted to do a fetch / search to see and then try to copy / import that message back. This is on OpenBSD 6.3-current with dovecot 2.2.36, doveconf -n below. thanks, .jh --- # 2.2.36 (1f10bfa63): /etc/dovecot/dovecot.conf # Pigeonhole version 0.4.24 (124e06aa) # OS: OpenBSD 6.3 amd64 # Hostname: www.example.com auth_mechanisms = plain login first_valid_gid = 0 first_valid_uid = 507 imap_client_workarounds = delay-newmail tb-extra-mailbox-sep tb-lsub-flags imap_id_log = * last_valid_uid = 1059 listen = 127.0.0.1 mail_home = /home/vmail/%d/%n mail_location = mdbox:~/mdbox mail_plugins = stats fts fts_solr mail_privileged_group = _dovecot mailbox_list_index = yes managesieve_notify_capability = mailto managesieve_sieve_capability = fileinto reject envelope encoded-character vacation subaddress comparator-i;ascii-numeric relational regex imap4flags copy include variables body enotify environment mailbox date index ihave duplicate mime foreverypart extracttext spamtest spamtestplus virustest mbox_write_locks = fcntl mmap_disable = yes namespace { inbox = yes location mailbox spam { auto = subscribe special_use = \Junk } mailbox drafts { auto = subscribe special_use = \Drafts } mailbox sent-mail { auto = subscribe special_use = \Sent } mailbox trash { auto = subscribe autoexpunge = 30 days special_use = \Trash } prefix separator = / subscriptions = yes type = private } passdb { args = /etc/dovecot/dovecot-pgsql.conf driver = sql } passdb { args = /etc/dovecot/dovecot-pgsql2.conf driver = sql } passdb { args = cache_key=%u%r%l * driver = bsdauth } plugin { antispam_backend = mailtrain antispam_mail_notspam = learn_ham antispam_mail_sendmail = /usr/local/bin/rspamc antispam_mail_sendmail_args = -h;127.0.0.1:11334;-P;q1 antispam_mail_spam = learn_spam antispam_spam = caughtspam antispam_trash = trash fts = solr fts_autoindex = yes fts_solr = url=http://127.0.0.1:8983/solr/dovecot/ recipient_delimiter = + sieve = file:~/sieve;active=~/.dovecot.sieve sieve_before = /var/dovecot/sieve/before/ sieve_default = /var/dovecot/sieve/default.sieve sieve_extensions = +spamtest +spamtestplus +virustest sieve_spamtest_max_header = X-Spamd-Result: default: [[:alnum:]]+ \[-?[[:digit:]]+\.[[:digit:]]+ / (-?[[:digit:]]+\.[[:digit:]]+)\] sieve_spamtest_status_header = X-Spamd-Result: default: [[:alnum:]]+ \[(-?[[:digit:]]+\.[[:digit:]]+) / -?[[:digit:]]+\.[[:digit:]]+\] sieve_spamtest_status_type = score sieve_virustest_status_header = X-Virus-Scan: Found to be (.+)\. sieve_virustest_status_type = text sieve_virustest_text_value1 = clean sieve_virustest_text_value5 = infected stats_refresh = 30 secs stats_track_cmds = yes } protocols = imap lmtp sieve service auth { unix_listener /var/spool/postfix/private/auth { group = _postfix mode = 0666 user = _postfix } } service imap-login { inet_listener imaps { port = 993 ssl = yes } process_limit = 200 } service lmtp { unix_listener /var/spool/postfix/private/dovecot-lmtp { group = _postfix user = _postfix } } service managesieve-login { inet_listener sieve { port = 4190 } } service stats { fifo_listener stats-mail { mode = 0666 user = _postfix } } ssl = required ssl_cert = </etc/ssl/acme/example.com/fullchain.pem ssl_key = # hidden, use -P to show it userdb { args = uid=507 gid=507 driver = static } userdb { driver = passwd } verbose_proctitle = yes protocol lmtp { mail_plugins = stats fts fts_solr sieve } protocol imap { mail_max_userip_connections = 50 mail_plugins = stats fts fts_solr antispam imap_stats }
Are you sure you have deleted mails and not just Trashed mails? Aki On 26.07.2018 19:23, Johan Huldtgren wrote:> hello, > > on the wiki, https://wiki2.dovecot.org/MailboxFormat/dbox, it says that one can > use either doveadm fetch or doveadm import, however I can find no correct syntax > with fetch that'll actually work. Is the idea to simply override the > mail_location with -o ? That seems to work for doveadm mailbox but not for > doveadm fetch or search > > # doveadm -f table mailbox status -u johan all dovecot > mailbox messages recent uidnext uidvalidity unseen highestmodseq vsize guid firstsaved > dovecot 0 0 1 1362145026 0 1 164208086 64bd9f0003af305190040000b9256959 1471825482 > > # doveadm -f table -o "mail_location=mdbox_deleted:~/mdbox" mailbox status -u johan all dovecot > mailbox messages recent uidnext uidvalidity unseen highestmodseq vsize guid firstsaved > dovecot 0 0 1 0 0 1 0 ddb9421479f0595bf21b0100b9256959 18446744073709551615 > > > # doveadm -f flow fetch -u johan size.virtual mailbox dovecot > size.virtual=2869 > size.virtual=2960 > size.virtual=8023 > size.virtual=6683 > ... > # > > # doveadm -f flow -o "mail_location=mdbox_deleted:~/mdbox" fetch -u johan size.virtual mailbox dovecot > # > > # doveadm search -u johan mailbox dovecot subject "LMTP Log" > 64bd9f0003af305190040000b9256959 8642 > 64bd9f0003af305190040000b9256959 21302 > 64bd9f0003af305190040000b9256959 21373 > 64bd9f0003af305190040000b9256959 21420 > 64bd9f0003af305190040000b9256959 21434 > 64bd9f0003af305190040000b9256959 21435 > 64bd9f0003af305190040000b9256959 21460 > 64bd9f0003af305190040000b9256959 21461 > 64bd9f0003af305190040000b9256959 21463 > 64bd9f0003af305190040000b9256959 23684 > > # doveadm -o "mail_location=mdbox_deleted:~/mdbox" search -u johan mailbox dovecot subject "LMTP Log" > # > > > What I'm really trying to accomplish is see if a mail which a user deleted still exists in mdbox_deleted, so I > wanted to do a fetch / search to see and then try to copy / import that message back. > > This is on OpenBSD 6.3-current with dovecot 2.2.36, doveconf -n below. > > thanks, > > .jh > > --- > > # 2.2.36 (1f10bfa63): /etc/dovecot/dovecot.conf > # Pigeonhole version 0.4.24 (124e06aa) > # OS: OpenBSD 6.3 amd64 > # Hostname: www.example.com > auth_mechanisms = plain login > first_valid_gid = 0 > first_valid_uid = 507 > imap_client_workarounds = delay-newmail tb-extra-mailbox-sep tb-lsub-flags > imap_id_log = * > last_valid_uid = 1059 > listen = 127.0.0.1 > mail_home = /home/vmail/%d/%n > mail_location = mdbox:~/mdbox > mail_plugins = stats fts fts_solr > mail_privileged_group = _dovecot > mailbox_list_index = yes > managesieve_notify_capability = mailto > managesieve_sieve_capability = fileinto reject envelope encoded-character vacation subaddress comparator-i;ascii-numeric relational regex imap4flags copy include variables body enotify environment mailbox date index ihave duplicate mime foreverypart extracttext spamtest spamtestplus virustest > mbox_write_locks = fcntl > mmap_disable = yes > namespace { > inbox = yes > location > mailbox spam { > auto = subscribe > special_use = \Junk > } > mailbox drafts { > auto = subscribe > special_use = \Drafts > } > mailbox sent-mail { > auto = subscribe > special_use = \Sent > } > mailbox trash { > auto = subscribe > autoexpunge = 30 days > special_use = \Trash > } > prefix > separator = / > subscriptions = yes > type = private > } > passdb { > args = /etc/dovecot/dovecot-pgsql.conf > driver = sql > } > passdb { > args = /etc/dovecot/dovecot-pgsql2.conf > driver = sql > } > passdb { > args = cache_key=%u%r%l * > driver = bsdauth > } > plugin { > antispam_backend = mailtrain > antispam_mail_notspam = learn_ham > antispam_mail_sendmail = /usr/local/bin/rspamc > antispam_mail_sendmail_args = -h;127.0.0.1:11334;-P;q1 > antispam_mail_spam = learn_spam > antispam_spam = caughtspam > antispam_trash = trash > fts = solr > fts_autoindex = yes > fts_solr = url=http://127.0.0.1:8983/solr/dovecot/ > recipient_delimiter = + > sieve = file:~/sieve;active=~/.dovecot.sieve > sieve_before = /var/dovecot/sieve/before/ > sieve_default = /var/dovecot/sieve/default.sieve > sieve_extensions = +spamtest +spamtestplus +virustest > sieve_spamtest_max_header = X-Spamd-Result: default: [[:alnum:]]+ \[-?[[:digit:]]+\.[[:digit:]]+ / (-?[[:digit:]]+\.[[:digit:]]+)\] > sieve_spamtest_status_header = X-Spamd-Result: default: [[:alnum:]]+ \[(-?[[:digit:]]+\.[[:digit:]]+) / -?[[:digit:]]+\.[[:digit:]]+\] > sieve_spamtest_status_type = score > sieve_virustest_status_header = X-Virus-Scan: Found to be (.+)\. > sieve_virustest_status_type = text > sieve_virustest_text_value1 = clean > sieve_virustest_text_value5 = infected > stats_refresh = 30 secs > stats_track_cmds = yes > } > protocols = imap lmtp sieve > service auth { > unix_listener /var/spool/postfix/private/auth { > group = _postfix > mode = 0666 > user = _postfix > } > } > service imap-login { > inet_listener imaps { > port = 993 > ssl = yes > } > process_limit = 200 > } > service lmtp { > unix_listener /var/spool/postfix/private/dovecot-lmtp { > group = _postfix > user = _postfix > } > } > service managesieve-login { > inet_listener sieve { > port = 4190 > } > } > service stats { > fifo_listener stats-mail { > mode = 0666 > user = _postfix > } > } > ssl = required > ssl_cert = </etc/ssl/acme/example.com/fullchain.pem > ssl_key = # hidden, use -P to show it > userdb { > args = uid=507 gid=507 > driver = static > } > userdb { > driver = passwd > } > verbose_proctitle = yes > protocol lmtp { > mail_plugins = stats fts fts_solr sieve > } > protocol imap { > mail_max_userip_connections = 50 > mail_plugins = stats fts fts_solr antispam imap_stats > } >
I do not know, the data shown below was me trying to understand the command and how it works, once I knew how the command worked I could then look at the user in question's mailbox and see how it looked. my question really boiled down to how do I use the mdbox_deleted storage in the correct way? This led me down the rabbit hole of fetch vs import. could you provide a correct example of using mdbox_deleted with doveadm fetch? thanks, .jh On 2018/07/29 23:48, Aki Tuomi wrote:> Are you sure you have deleted mails and not just Trashed mails? > > Aki > > > On 26.07.2018 19:23, Johan Huldtgren wrote: >> hello, >> >> on the wiki, https://wiki2.dovecot.org/MailboxFormat/dbox, it says that one can >> use either doveadm fetch or doveadm import, however I can find no correct syntax >> with fetch that'll actually work. Is the idea to simply override the >> mail_location with -o ? That seems to work for doveadm mailbox but not for >> doveadm fetch or search >> >> # doveadm -f table mailbox status -u johan all dovecot >> mailbox messages recent uidnext uidvalidity unseen highestmodseq vsize guid firstsaved >> dovecot 0 0 1 1362145026 0 1 164208086 64bd9f0003af305190040000b9256959 1471825482 >> >> # doveadm -f table -o "mail_location=mdbox_deleted:~/mdbox" mailbox status -u johan all dovecot >> mailbox messages recent uidnext uidvalidity unseen highestmodseq vsize guid firstsaved >> dovecot 0 0 1 0 0 1 0 ddb9421479f0595bf21b0100b9256959 18446744073709551615 >> >> >> # doveadm -f flow fetch -u johan size.virtual mailbox dovecot >> size.virtual=2869 >> size.virtual=2960 >> size.virtual=8023 >> size.virtual=6683 >> ... >> # >> >> # doveadm -f flow -o "mail_location=mdbox_deleted:~/mdbox" fetch -u johan size.virtual mailbox dovecot >> # >> >> # doveadm search -u johan mailbox dovecot subject "LMTP Log" >> 64bd9f0003af305190040000b9256959 8642 >> 64bd9f0003af305190040000b9256959 21302 >> 64bd9f0003af305190040000b9256959 21373 >> 64bd9f0003af305190040000b9256959 21420 >> 64bd9f0003af305190040000b9256959 21434 >> 64bd9f0003af305190040000b9256959 21435 >> 64bd9f0003af305190040000b9256959 21460 >> 64bd9f0003af305190040000b9256959 21461 >> 64bd9f0003af305190040000b9256959 21463 >> 64bd9f0003af305190040000b9256959 23684 >> >> # doveadm -o "mail_location=mdbox_deleted:~/mdbox" search -u johan mailbox dovecot subject "LMTP Log" >> # >> >> >> What I'm really trying to accomplish is see if a mail which a user deleted still exists in mdbox_deleted, so I >> wanted to do a fetch / search to see and then try to copy / import that message back. >> >> This is on OpenBSD 6.3-current with dovecot 2.2.36, doveconf -n below. >> >> thanks, >> >> .jh >> >> --- >> >> # 2.2.36 (1f10bfa63): /etc/dovecot/dovecot.conf >> # Pigeonhole version 0.4.24 (124e06aa) >> # OS: OpenBSD 6.3 amd64 >> # Hostname: www.example.com >> auth_mechanisms = plain login >> first_valid_gid = 0 >> first_valid_uid = 507 >> imap_client_workarounds = delay-newmail tb-extra-mailbox-sep tb-lsub-flags >> imap_id_log = * >> last_valid_uid = 1059 >> listen = 127.0.0.1 >> mail_home = /home/vmail/%d/%n >> mail_location = mdbox:~/mdbox >> mail_plugins = stats fts fts_solr >> mail_privileged_group = _dovecot >> mailbox_list_index = yes >> managesieve_notify_capability = mailto >> managesieve_sieve_capability = fileinto reject envelope encoded-character vacation subaddress comparator-i;ascii-numeric relational regex imap4flags copy include variables body enotify environment mailbox date index ihave duplicate mime foreverypart extracttext spamtest spamtestplus virustest >> mbox_write_locks = fcntl >> mmap_disable = yes >> namespace { >> inbox = yes >> location >> mailbox spam { >> auto = subscribe >> special_use = \Junk >> } >> mailbox drafts { >> auto = subscribe >> special_use = \Drafts >> } >> mailbox sent-mail { >> auto = subscribe >> special_use = \Sent >> } >> mailbox trash { >> auto = subscribe >> autoexpunge = 30 days >> special_use = \Trash >> } >> prefix >> separator = / >> subscriptions = yes >> type = private >> } >> passdb { >> args = /etc/dovecot/dovecot-pgsql.conf >> driver = sql >> } >> passdb { >> args = /etc/dovecot/dovecot-pgsql2.conf >> driver = sql >> } >> passdb { >> args = cache_key=%u%r%l * >> driver = bsdauth >> } >> plugin { >> antispam_backend = mailtrain >> antispam_mail_notspam = learn_ham >> antispam_mail_sendmail = /usr/local/bin/rspamc >> antispam_mail_sendmail_args = -h;127.0.0.1:11334;-P;q1 >> antispam_mail_spam = learn_spam >> antispam_spam = caughtspam >> antispam_trash = trash >> fts = solr >> fts_autoindex = yes >> fts_solr = url=http://127.0.0.1:8983/solr/dovecot/ >> recipient_delimiter = + >> sieve = file:~/sieve;active=~/.dovecot.sieve >> sieve_before = /var/dovecot/sieve/before/ >> sieve_default = /var/dovecot/sieve/default.sieve >> sieve_extensions = +spamtest +spamtestplus +virustest >> sieve_spamtest_max_header = X-Spamd-Result: default: [[:alnum:]]+ \[-?[[:digit:]]+\.[[:digit:]]+ / (-?[[:digit:]]+\.[[:digit:]]+)\] >> sieve_spamtest_status_header = X-Spamd-Result: default: [[:alnum:]]+ \[(-?[[:digit:]]+\.[[:digit:]]+) / -?[[:digit:]]+\.[[:digit:]]+\] >> sieve_spamtest_status_type = score >> sieve_virustest_status_header = X-Virus-Scan: Found to be (.+)\. >> sieve_virustest_status_type = text >> sieve_virustest_text_value1 = clean >> sieve_virustest_text_value5 = infected >> stats_refresh = 30 secs >> stats_track_cmds = yes >> } >> protocols = imap lmtp sieve >> service auth { >> unix_listener /var/spool/postfix/private/auth { >> group = _postfix >> mode = 0666 >> user = _postfix >> } >> } >> service imap-login { >> inet_listener imaps { >> port = 993 >> ssl = yes >> } >> process_limit = 200 >> } >> service lmtp { >> unix_listener /var/spool/postfix/private/dovecot-lmtp { >> group = _postfix >> user = _postfix >> } >> } >> service managesieve-login { >> inet_listener sieve { >> port = 4190 >> } >> } >> service stats { >> fifo_listener stats-mail { >> mode = 0666 >> user = _postfix >> } >> } >> ssl = required >> ssl_cert = </etc/ssl/acme/example.com/fullchain.pem >> ssl_key = # hidden, use -P to show it >> userdb { >> args = uid=507 gid=507 >> driver = static >> } >> userdb { >> driver = passwd >> } >> verbose_proctitle = yes >> protocol lmtp { >> mail_plugins = stats fts fts_solr sieve >> } >> protocol imap { >> mail_max_userip_connections = 50 >> mail_plugins = stats fts fts_solr antispam imap_stats >> } >> >