[Dovecot] mailboxes missing after upgrade from 2.1.4 to 2.1.7

Micah Anderson micah at riseup.net
Mon Jul 2 17:25:25 EEST 2012


Hi all,

I mentioned this on the #dovecot irc channel, but I thought I would post
here so I can provide more details.

The basic problem is that when I upgraded from 2.1.4 to 2.1.7, some
users no longer are able to see their folders in pine/alpine. The
folders are actually there, and are subscribed (according to doveadm)
and its possible to do operations on those folders, if you know the
name (for example, opening the folder works fine if you know the name).

When I downgrade to 2.1.4 again, the folders appear again, so its
clearly something that changed between the two versions. I looked
through the changelog, and found a few possibile culprits, I think
pine/alpine use imapc, so that could be related:

. imapc: Use imapc_list_prefix also for listing subscriptions
. Fixed looking up parent mailbox name with different namespace vs. layout separators.
. imapc: Don't list mailboxes that don't match list patterns.
. layout=fs: Fixed listing mailboxes with prefix=INBOX/
. LIST with mailbox {} settings incorrectly set subscribed-flags.

Here is my dovecot -n output:

# OS: Linux 2.6.32-5-amd64 x86_64 Debian 6.0.5 
auth_default_realm = example.net
auth_verbose = yes
default_process_limit = 256
default_vsz_limit = 512 M
dict {
  expire = mysql:/etc/dovecot/dovecot-dict-sql.conf
  quota = mysql:/etc/dovecot/dovecot-dict-sql.conf
}
disable_plaintext_auth = no
first_valid_gid = 8
first_valid_uid = 8
last_valid_gid = 8
last_valid_uid = 8
listen = *
login_greeting = howdy, ready.
mail_location = mdbox:~/mdbox:INDEX=/srv/dovecot_indexes/%d/%1n/%n
mail_plugins = expire quota zlib stats
maildir_very_dirty_syncs = yes
namespace {
  inbox = yes
  location = 
  prefix = 
  separator = .
}
namespace {
  alias_for = 
  hidden = yes
  inbox = no
  list = no
  location = 
  prefix = INBOX.
  separator = .
}
passdb {
  args = /etc/dovecot/dovecot-sql.conf
  driver = sql
}
plugin {
  antispam_allow_append_to_spam = yes
  antispam_backend = pipe
  antispam_debug_target = syslog
  antispam_pipe_program = /usr/local/bin/train_spam
  antispam_pipe_program_args = -d;10.0.1.109
  antispam_pipe_program_notspam_arg = ham
  antispam_pipe_program_spam_arg = spam
  antispam_pipe_tmpdir = /var/tmp
  antispam_signature = X-Spam-Flag
  antispam_signature_missing = error
  antispam_spam_pattern_ignorecase = SPAM
  antispam_trash_pattern = trash;Trash;Deleted *
  expire = Trash
  expire2 = Trash/*
  expire3 = Spam
  expire_dict = proxy::expire
  quota = dict:Your mail quota::proxy::quota
  quota_rule = *:bytes=100663296
  quota_rule2 = Trash:bytes=+20%%
  quota_rule3 = Spam:bytes=+10%%
  quota_rule4 = INBOX.Trash:bytes=+20%%
  quota_rule5 = INBOX.Spam:bytes=+10%%
  quota_rule6 = INBOX.restored_from_backups:bytes=+500%%
  sieve = ~/.dovecot.sieve
  sieve_after = /var/lib/dovecot/sieve/after.sieve
  sieve_before = /var/lib/dovecot/sieve/default.sieve
  sieve_dir = ~/sieve
  stats_refresh = 30 secs
  stats_track_cmds = yes
  zlib_save = gz
  zlib_save_level = 6
}
postmaster_address = postmaster at example.net
protocols = " imap pop3"
service anvil {
  unix_listener anvil {
    group = dovecot
    mode = 0660
    user = root
  }
}
service auth {
  unix_listener auth-userdb {
    group = mail
    mode = 0600
    user = mail
  }
}
service dict {
  unix_listener dict {
    group = mail
    mode = 0600
    user = mail
  }
}
service imap-login {
  process_min_avail = 10
  service_count = 0
  vsz_limit = 512 M
}
service imap-postlogin {
  executable = script-login /usr/local/sbin/postlogin_imap
}
service imap {
  executable = imap imap-postlogin
  process_limit = 2048
}
service pop3-login {
  process_min_avail = 10
  service_count = 0
  vsz_limit = 512 M
}
service pop3-postlogin {
  executable = script-login /usr/local/sbin/postlogin_pop
}
service pop3 {
  executable = pop3 pop3-postlogin
}
service stats {
  fifo_listener stats-mail {
    mode = 0600
    user = mail
  }
}
ssl_cert = </etc/certs/wildcard/cert.pem
ssl_cipher_list = HIGH:-ADH:-aNULL
ssl_key = </etc/certs/wildcard/key.pem
userdb {
  args = /etc/dovecot/dovecot-sql.conf
  driver = sql
}
verbose_proctitle = yes
protocol lda {
  mail_plugins = expire quota zlib stats sieve
  plugin {
    quota_exceeded_message = Sorry, your message cannot be delivered to that person because their mailbox is full. If you can contact them another way, you may wish to tell them of this problem.
    quota_rule7 = INBOX:bytes=+10%%
  }
}
protocol imap {
  imap_client_workarounds = delay-newmail tb-extra-mailbox-sep
  mail_max_userip_connections = 20
  mail_plugins = expire quota zlib stats imap_quota imap_zlib antispam imap_stats
  plugin {
    quota_exceeded_message = You are over quota. To avoid losing mail, immediately empty your Trash and Sent folders and delete emails with large attachments. Visit https://help.example.net/quota for more help.
  }
}
protocol pop3 {
  mail_plugins = expire quota zlib stats
  pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
  pop3_uidl_format = %g
}

As requested by tss in #dovecot, I attempted to add 'rawlog' to:

service imap-postlogin {
  executable = script-login /usr/local/sbin/postlogin_imap
}

to get:

service imap-postlogin {
  executable = script-login rawlogin /usr/local/sbin/postlogin_imap
}

but with that, it doesn't even open the INBOX folder, and there is
nothing in the user's rawlog folder, I get this error:

dovecot: imap-postlogin: Error: Fatal: This process must not be run as root
it didn't open even the INBOX imap folder

I went over the http://wiki2.dovecot.org/Debugging/Rawlog and made sure
everything was correct there, but it still didn't work right.

Any ideas or suggestions of things to try would be greatly appreciated!

thanks,
micah
-- 





More information about the dovecot mailing list