[Dovecot] Maildir POP3 "UID larger than next_uid" bug
Alexander Moisseev
moiseev at mezonplus.ru
Mon May 14 16:36:01 EEST 2007
dovecot 1.0.0; Free BSD 6.2; x86; UFS; no NFS
IMAP not uses at all, POP3 only
Problem description:
POP3 client can't fetch second e-mail message from Maildir if first POP3 connect occurs before any message placed in Maildir.
Details:
1. POP3-client first time tries to receive mail:
May 14 16:17:36 host dovecot: pop3-login: Login: user=<user at mydomain.ru>, method=PLAIN, rip=192.168.0.100, lip=192.168.0.3
May 14 16:17:36 host dovecot: POP3(user at mydomain.ru): Disconnected: Logged out top=0/0, retr=0/0, del=0/0, size=0
dovecot creates Maildir for that user:
/var/mail/virtual/mydomain.ru/user/Maildir/
/cur
/new
/tmp
dovecot.index
dovecot.index.cache
dovecot.index.log
2. Postfix MTA receives message for that user and places it at
/var/mail/virtual/mydomain.ru/user/Maildir/new/1179145269.V43I3f5a4M116738.host.mydomain.local
3. POP3-client tries to receive mail:
May 14 16:23:09 host dovecot: pop3-login: Login: user=<user at mydomain.ru>, method=PLAIN, rip=192.168.0.100, lip=192.168.0.3
May 14 16:23:09 host dovecot: POP3(user at mydomain.ru): Disconnected: Logged out top=0/0, retr=1/786, del=1/1, size=770
>>>>> dovecot creates file dovecot-uidlist with next_uid=1 (!!!):
1 1179145056 1
1 1179145269.V43I3f5a4M116738.host.mydomain.local:2,
Message fetched successfully.
4. POP3-client tries to receive mail:
May 14 16:23:29 host dovecot: pop3-login: Login: user=<user at mydomain.ru>, method=PLAIN, rip=192.168.0.100, lip=192.168.0.3
May 14 16:23:29 host dovecot: POP3(user at mydomain.ru): UID larger than next_uid in file /var/mail/virtual/mydomain.ru/user/Maildir/dovecot-uidlist (1 >= 1)
May 14 16:23:29 host dovecot: POP3(user at mydomain.ru): Disconnected: Logged out top=0/0, retr=0/0, del=0/0, size=0
File dovecot-uidlist disappears.
5. Postfix MTA receives message for that user and places it at
/var/mail/virtual/mydomain.ru/user/Maildir/new/1179145534.V43I3f5a4M116827.host.mydomain.local
6. POP3-client tries to receive mail:
May 14 16:47:20 host dovecot: pop3-login: Login: user=<user at mydomain.ru>, method=PLAIN, rip=192.168.0.100, lip=192.168.0.3
May 14 16:47:20 host dovecot: POP3(user at mydomain.ru): Disconnected: Logged out top=0/0, retr=0/0, del=0/0, size=0
Dovecot creates file dovecot-uidlist:
1 1179145056 2
1 1179145534.V43I3f5a4M116827.host.mydomain.local
Dovecot moves message from new to cur directory and adds flag ":2,":
/var/mail/virtual/mydomain.ru/user/Maildir/cur/1179145534.V43I3f5a4M116827.host.mydomain.local:2,
Message not fetched. And POP3 client can't fetch it at all.
All next messages fetches normally as they arrives.
# /usr/local/etc/dovecot.conf
protocols: pop3 pop3s
ssl_cert_file: /etc/ssl/certs/host.mydomain.ru.crt
ssl_key_file: /etc/ssl/private/host.mydomain.ru.key
disable_plaintext_auth: no
login_dir: /var/run/dovecot/login
login_executable: /usr/local/libexec/dovecot/pop3-login
login_greeting: POP3 server ready
verbose_proctitle: yes
first_valid_gid: 0
mail_extra_groups: mail
mail_location: maildir:~/Maildir
mail_executable: /usr/local/libexec/dovecot/pop3
mail_plugin_dir: /usr/local/lib/dovecot/pop3
pop3_uidl_format: %08Xu%08Xv
pop3_client_workarounds: outlook-no-nuls oe-ns-eoh
auth default:
mechanisms: plain login digest-md5 cram-md5 apop ntlm
default_realm: mydomain.ru
passdb:
driver: pam
passdb:
driver: passwd-file
args: /etc/auth/%d/passwd
userdb:
driver: passwd
userdb:
driver: static
args: uid=5000 gid=5000 home=/var/mail/virtual/%d/%n
socket:
type: listen
client:
path: /var/spool/postfix/private/auth
mode: 432
user: postfix
group: postfix
master:
More information about the dovecot
mailing list