move mails between mailboxes
Hello,
i am using dovecot 2.3.4.1
I am tyring to make a script using the doveadm move command to move old emails into a subfolder of the users INBOX ; say all mails from 2016 into INBOX/2016. Selecting and moving is not the issue; everything works just i am amazed that the (test) mail client Thunderbird downloads all mails in INBOX/2016 after the move.
When i make an IMAP move of all 2016-mails in Thunderbird; mails are moved between the mailboxes without any mails being (re-)downloaded. So what am i missing here?
Thank for the tip :) Kind regards, Tom
the doveadm move debug output is :
Debug: Loading modules from directory: /usr/lib/dovecot/modules Debug: Module loaded: /usr/lib/dovecot/modules/lib10_quota_plugin.so Debug: Module loaded: /usr/lib/dovecot/modules/lib20_listescape_plugin.so Debug: Module loaded: /usr/lib/dovecot/modules/lib20_zlib_plugin.so Debug: Loading modules from directory: /usr/lib/dovecot/modules/doveadm Debug: Skipping module doveadm_acl_plugin, because dlopen() failed: /usr/lib/dovecot/modules/doveadm/lib10_doveadm_acl_plugin.so: undefined symbol: acl_user_module (this is usually intentional, so just ignore this message) Debug: Skipping module doveadm_expire_plugin, because dlopen() failed: /usr/lib/dovecot/modules/doveadm/lib10_doveadm_expire_plugin.so: undefined symbol: expire_set_deinit (this is usually intentional, so just ignore this message) Debug: Module loaded: /usr/lib/dovecot/modules/doveadm/lib10_doveadm_quota_plugin.so Debug: Module loaded: /usr/lib/dovecot/modules/doveadm/lib10_doveadm_sieve_plugin.so Debug: Skipping module doveadm_fts_lucene_plugin, because dlopen() failed: /usr/lib/dovecot/modules/doveadm/lib20_doveadm_fts_lucene_plugin.so: undefined symbol: lucene_index_iter_deinit (this is usually intentional, so just ignore this message) Debug: Skipping module doveadm_fts_plugin, because dlopen() failed: /usr/lib/dovecot/modules/doveadm/lib20_doveadm_fts_plugin.so: undefined symbol: fts_user_get_language_list (this is usually intentional, so just ignore this message) Debug: Skipping module doveadm_mail_crypt_plugin, because dlopen() failed: /usr/lib/dovecot/modules/doveadm/libdoveadm_mail_crypt_plugin.so: undefined symbol: mail_crypt_box_get_pvt_digests (this is usually intentional, so just ignore this message) doveadm(tom@somedomain.org)<17541><>: Debug: auth USER input: tom@somedomain.org uid=5000 gid=5000 home=/mailstore/somedomain.org/to/tom/ doveadm(tom@somedomain.org): Debug: Effective uid=5000, gid=5000, home=/mailstore/somedomain.org/to/tom/ doveadm(tom@somedomain.org): Debug: Quota root: name=User quota backend=maildir args= doveadm(tom@somedomain.org): Debug: Quota rule: root=User quota mailbox=* bytes=8589934592 messages=0 doveadm(tom@somedomain.org): Debug: Quota rule: root=User quota mailbox=Trash bytes=+104857600 messages=0 doveadm(tom@somedomain.org): Debug: Quota warning: bytes=8589934592 (100%) messages=0 reverse=no command=quota-warning 100 tom@somedomain.org doveadm(tom@somedomain.org): Debug: Quota warning: bytes=8504035246 (99%) messages=0 reverse=no command=quota-warning 99 tom@somedomain.org doveadm(tom@somedomain.org): Debug: Quota warning: bytes=8418135900 (98%) messages=0 reverse=no command=quota-warning 98 tom@somedomain.org doveadm(tom@somedomain.org): Debug: Quota warning: bytes=8246337208 (96%) messages=0 reverse=no command=quota-warning 96 tom@somedomain.org doveadm(tom@somedomain.org): Debug: Quota warning: bytes=8074538516 (94%) messages=0 reverse=no command=quota-warning 94 tom@somedomain.org doveadm(tom@somedomain.org): Debug: Quota warning: bytes=7902739824 (92%) messages=0 reverse=no command=quota-warning 92 tom@somedomain.org doveadm(tom@somedomain.org): Debug: Quota warning: bytes=7730941132 (90%) messages=0 reverse=no command=quota-warning 90 tom@somedomain.org doveadm(tom@somedomain.org): Debug: Quota warning: bytes=7301444403 (85%) messages=0 reverse=no command=quota-warning 85 tom@somedomain.org doveadm(tom@somedomain.org): Debug: Quota warning: bytes=6871947673 (80%) messages=0 reverse=no command=quota-warning 80 tom@somedomain.org doveadm(tom@somedomain.org): Debug: Quota warning: bytes=6012954214 (70%) messages=0 reverse=no command=quota-warning 70 tom@somedomain.org doveadm(tom@somedomain.org): Debug: Quota warning: bytes=8589934592 (100%) messages=0 reverse=yes command=quota-warning 0 tom@somedomain.org doveadm(tom@somedomain.org): Debug: Quota grace: root=User quota bytes=47185920 doveadm(tom@somedomain.org): Debug: Namespace inbox: type=private, prefix=, sep=/, inbox=yes, hidden=no, list=yes, subscriptions=yes location=maildir:/mailstore/somedomain.org/to/tom:INDEX=/indexes/somedomain.org/to/tom:INBOX=/mailstore/somedomain.org/to/tom/.INBOX:VOLATILEDIR=/tmp/dovecot:NO-NOSELECT:UTF-8 doveadm(tom@somedomain.org): Debug: maildir++: root=/mailstore/somedomain.org/to/tom, index=/indexes/somedomain.org/to/tom, indexpvt=, control=, inbox=/mailstore/somedomain.org/to/tom/.INBOX, alt= doveadm(tom@somedomain.org): Debug: quota: quota_over_flag check: quota_over_script unset - skipping doveadm(tom@somedomain.org): Debug: Mailbox INBOX/2016: Mailbox opened because: move doveadm(tom@somedomain.org): Debug: Mailbox INBOX: Mailbox opened because: move doveadm(tom@somedomain.org): Debug: Mailbox INBOX/2016: saving UID 0: Opened mail because: mail stream doveadm(tom@somedomain.org): Debug: Mailbox INBOX: UID 52642: Opened mail because: mail stream doveadm(tom@somedomain.org): Debug: Mailbox INBOX/2016: saving UID 0: Opened mail because: mail stream doveadm(tom@somedomain.org): Debug: Mailbox INBOX: UID 52643: Opened mail because: mail stream doveadm(tom@somedomain.org): Debug: Mailbox INBOX/2016: saving UID 0: Opened mail because: mail stream doveadm(tom@somedomain.org): Debug: Mailbox INBOX: UID 52644: Opened mail because: mail stream doveadm(tom@somedomain.org): Debug: Mailbox INBOX/2016: saving UID 0: Opened mail because: mail stream doveadm(tom@somedomain.org): Debug: Mailbox INBOX: UID 52645: Opened mail because: mail stream doveadm(tom@somedomain.org): Debug: Mailbox INBOX/2016: saving UID 0: Opened mail because: mail stream doveadm(tom@somedomain.org): Debug: Mailbox INBOX: UID 52646: Opened mail because: mail stream doveadm(tom@somedomain.org): Debug: Mailbox INBOX/2016: saving UID 0: Opened mail because: mail stream doveadm(tom@somedomain.org): Debug: Mailbox INBOX: UID 52963: Opened mail because: mail stream doveadm(tom@somedomain.org): Debug: Mailbox INBOX/2016: saving UID 0: Opened mail because: mail stream doveadm(tom@somedomain.org): Debug: Mailbox INBOX: UID 52964: Opened mail because: mail stream doveadm(tom@somedomain.org): Debug: Mailbox INBOX/2016: saving UID 0: Opened mail because: mail stream doveadm(tom@somedomain.org): Debug: Mailbox INBOX: UID 52965: Opened mail because: mail stream doveadm(tom@somedomain.org): Debug: Mailbox INBOX/2016: saving UID 0: Opened mail because: mail stream doveadm(tom@somedomain.org): Debug: Mailbox INBOX: UID 52967: Opened mail because: mail stream doveadm(tom@somedomain.org): Debug: Mailbox INBOX/2016: saving UID 0: Opened mail because: mail stream doveadm(tom@somedomain.org): Debug: Mailbox INBOX: UID 52968: Opened mail because: mail stream doveadm(tom@somedomain.org): Debug: Mailbox INBOX/2016: saving UID 0: Opened mail because: mail stream doveadm(tom@somedomain.org): Debug: Mailbox INBOX: UID 52969: Opened mail because: mail stream doveadm(tom@somedomain.org): Debug: Mailbox INBOX/2016: saving UID 0: Opened mail because: mail stream doveadm(tom@somedomain.org): Debug: Mailbox INBOX: UID 52970: Opened mail because: mail stream doveadm(tom@somedomain.org): Debug: Mailbox INBOX/2016: saving UID 0: Opened mail because: mail stream doveadm(tom@somedomain.org): Debug: Mailbox INBOX: UID 52972: Opened mail because: mail stream
etc etc... obscured config :
# 2.3.4.1 (f79e8e7e4): /etc/dovecot/dovecot.conf # Pigeonhole version 0.5.4 () # OS: Linux 4.19.194-rt81 x86_64 Debian 10.0 ext4 # Hostname: hardy.somedomain.org auth_cache_negative_ttl = 7 mins auth_cache_size = 20 M auth_cache_ttl = 12 mins auth_cache_verify_password_with_worker = yes auth_failure_delay = 9 secs auth_mechanisms = plain login auth_username_chars = auth_worker_max_count = 90 default_client_limit = 2500 default_process_limit = 500 default_vsz_limit = 4 G hostname = post.somedomain.org imap_capability = +SPECIAL_USE imap_fetch_failure = no-after imap_hibernate_timeout = 15 secs imap_idle_notify_interval = 4 mins imap_max_line_length = 512 k lda_mailbox_autocreate = yes lda_mailbox_autosubscribe = yes lda_original_recipient_header = X-Original-To listen = * lmtp_rcpt_check_quota = yes login_log_format_elements = user=<%u> method=%m rip=%r lip=%l mpid=%e %c %k mail_cache_min_mail_count = 15 mail_fsync = never mail_location = maildir:/mailstore/%d/%2n/%n:INDEX=/indexes/%d/%2n/%n:INBOX=/mailstore/%d/%2n/%n/.INBOX:VOLATILEDIR=/tmp/dovecot:NO-NOSELECT:UTF-8 mail_max_keyword_length = 100 mail_plugins = quota zlib listescape mail_prefetch_count = 20 mail_privileged_group = mail mail_temp_scan_interval = 0 mailbox_idle_check_interval = 55 secs mailbox_list_index_include_inbox = yes mailbox_list_index_very_dirty_syncs = yes maildir_broken_filename_sizes = yes maildir_very_dirty_syncs = yes namespace inbox { inbox = yes location = mailbox Concepts { auto = no special_use = \Drafts } mailbox "Deleted Messages" { auto = no special_use = \Trash } mailbox Drafts { auto = subscribe special_use = \Drafts } mailbox Junk { auto = no special_use = \Junk } mailbox Sent { auto = subscribe special_use = \Sent } mailbox "Sent Messages" { auto = no special_use = \Sent } mailbox Trash { auto = subscribe special_use = \Trash } prefix = separator = / type = private } passdb { args = /etc/dovecot/passwd--%d driver = passwd-file } plugin { listescape_char = } quota = maildir:User quota quota_grace = 45M quota_rule = *:storage=8G quota_rule2 = Trash:storage=+100M quota_status_overquota = 552 5.2.2 User mailbox is full.. quota_status_succes = DUNNO quota_warning = storage=100%% quota-warning 100 %u quota_warning10 = storage=70%% quota-warning 70 %u quota_warning11 = -storage=100%% quota-warning 0 %u quota_warning2 = storage=99%% quota-warning 99 %u quota_warning3 = storage=98%% quota-warning 98 %u quota_warning4 = storage=96%% quota-warning 96 %u quota_warning5 = storage=94%% quota-warning 94 %u quota_warning6 = storage=92%% quota-warning 92 %u quota_warning7 = storage=90%% quota-warning 90 %u quota_warning8 = storage=85%% quota-warning 85 %u quota_warning9 = storage=80%% quota-warning 80 %u sieve = ~/dovecot.sieve sieve_extensions = +notify +imapflags +envelope +vacation +fileinto +date +relational +vacation-seconds sieve_user_log = /dev/null sieve_vacation_min_period = 1h sieve_vacation_send_from_recipient = yes virtual_overquota_bounce = yes zlib_save = gz zlib_save_level = 3 } pop3_fast_size_lookups = yes protocols = imap lmtp pop3 service auth-worker { user = $default_internal_user } service auth { unix_listener /var/spool/postfix/private/auth { group = postfix mode = 0660 user = postfix } } service imap-hibernate { unix_listener imap-hibernate { group = $default_internal_group mode = 0660 } } service imap-login { inet_listener imap { port = 0 } inet_listener imaps { address = 100.100.100.104 port = 993 ssl = yes } process_min_avail = 20 service_count = 0 } service imap { extra_groups = $default_internal_group process_limit = 5000 unix_listener imap-master { user = $default_internal_user } } service lmtp { unix_listener /var/spool/postfix/private/dovecot-lmtp { group = postfix mode = 0600 user = postfix } } service pop3-login { inet_listener pop3 { port = 0 } inet_listener pop3s { address = 100.100.100.99 port = 995 ssl = yes } process_min_avail = 10 service_count = 0 } service pop3 { process_limit = 1000 } service quota-warning { executable = script /etc/dovecot/quota-warning.sh unix_listener quota-warning { user = vmail } user = vmail } service submission-login { inet_listener submission { address = 127.0.0.1 port = 587 ssl = yes } process_min_avail = 5 service_count = 1 } service submission { process_limit = 150 } ssl = required ssl_cert = </etc/ssl/private/somedomain.org.crta ssl_cipher_list = ALL:!SSLv2:!SSLv3:!DH:!kRSA:!SRP:!kDHd:!DSS:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!PSK:!RC4:!ADH:!LOW@STRENGTH:!EXP:!SEED:!IDEA:!RSA:!CAMELLIA:!SHA1:!SHA256:!SHA384 ssl_client_ca_dir = /etc/ssl/certs ssl_dh = # hidden, use -P to show it ssl_key = # hidden, use -P to show it ssl_min_protocol = TLSv1.2 ssl_prefer_server_ciphers = yes submission_host = 127.0.0.1 syslog_facility = local2 userdb { args = /etc/dovecot/passwd--%d driver = passwd-file result_failure = return-fail result_internalfail = return-fail } valid_chroot_dirs = /var/spool/vmail verbose_proctitle = yes protocol lmtp { mail_fsync = optimized mail_plugins = quota zlib listescape quota sieve zlib postmaster_address = postmaster@somedomain.org } protocol lda { mail_fsync = optimized } protocol imap { mail_max_userip_connections = 25 mail_plugins = quota zlib listescape imap_quota zlib } protocol pop3 { mail_max_userip_connections = 6 }
Citeren Tom Doenen <tom@inkblu.org>:
Hello,
i am using dovecot 2.3.4.1
I am tyring to make a script using the doveadm move command to move
old emails into a subfolder of the users INBOX ; say all mails from
2016 into INBOX/2016. Selecting and moving is not the issue; everything works just i am
amazed that the (test) mail client Thunderbird downloads all mails
in INBOX/2016 after the move.When i make an IMAP move of all 2016-mails in Thunderbird; mails are
moved between the mailboxes without any mails being (re-)downloaded. So what am i missing here?
That's because in that case Thunderbird will know that the mails are
moved between the mailboxes and will tell the server to move the
messages and then do the move locally (without downloading the
messages again). If you do this on the server, the client has no idea
these are the same mesasages and will procede to delete them from the
original location and download them again from the new location. The
same happens if you move them in Thunderbird on one device and you
have a second device. Even if it also uses Thunderbird, it will have
to download them again.
participants (2)
-
Arjen de Korte
-
Tom Doenen