Re: [Dovecot] FreeBSD maintainer ?
On Sunday, February 26, 2012 at 07:22:48 UTC, f.bon...@esiee.fr confabulated: Hello Does the FreeBSD Dovecot's port maintainer read this mailing-list ? Thanks Have you tried sending message to the maintainer? The email address can be found by: cd /usr/ports/mail/dovecot make maintainer or cd /usr/ports/mail/dovecot2 make maintainer There appears to be two different email addresses between maintainers for version 1.2.x and 2.0.x. -- If at first you don't succeed... ...so much for skydiving.
[Dovecot] IMAP NOTIFY extension
http://hg.dovecot.org/dovecot-2.2-notify/ contains the initial implementation of IMAP NOTIFY extension. It's less than half-working, but the difficult part of it is done I think. If I give it a command like: x notify set (personal (messagenew messageexpunge flagchange)) and then in another session I copy a message to another mailbox, it sends: * STATUS foobar (MESSAGES 77 UIDNEXT 78 UIDVALIDITY 1329431281 UNSEEN 75) This requires mailbox_list_index=yes to work. It works by following the dovecot.list.index.log changes, so it's going to be pretty efficient. Some TODO that I've so far noticed: - NOTIFY is handled currently only for non-selected mailboxes. (handling the new features for selected mailbox should be simple) - initial STATUS sending isn't done with STATUS option - only MessageNew, MessageExpunge and FlagChange notifications are sent currently - MailboxName handling probably needs to be able to get old and new views, figure out what changed in them and send those changes (dsync has similar code) - mailbox list indexes seem to be adding too much stuff, which results in: - STATUS duplicates, but there should already be code to avoid these so I'm not sure what's going on - ACLs and shared mailboxes don't work right - add 0.5s delay before notifying IMAP code, so multiple changes can be bundled into one
Re: [Dovecot] v2.0.13 problems after kernel patch for CVE-2011-1083 applied on Centos 5
On 26.02.2012 03:55, Doug Henderson wrote: On Feb 25, 2012, at 3:15 AM, Morten Stevens wrote: Try it without ksplice. (yum update and reboot) I don't know if I'll be permitted to do that in a production environment - possibly a test one. I'll need to get some opinions from our Ops people as to if/how they might want to go about it. Which kernel is running exactly? 2.6.18-274.3.1.el5 That is probably the problem. The current RHEL 5.8 kernel is 2.6.18-308.el5. There are many changes between 2.6.18-274 (EL 5.7) and 2.6.18-308 (EL 5.8). So I do not know if it is a good idea to apply ksplice patches between minor 5.x releases. Best regards, Morten
Re: [Dovecot] remove messages once downloaded
On 25/02/2012 00:39, Timo Sirainen wrote: On 24.2.2012, at 19.44, julio...@fisica.uh.cu wrote: I need some help with the dovecot configuration. I want to remove downloaded messages from Mail Server once the messages have been successfully downloaded by pop3-clients, even when the clients have been configured to save copy of messages in the Server. Not possible. If you were thinking about longer term TODOs then I have a similar problem (just adding a me too...) In my industry, competing solutions offer a kind of server side been downloaded notification when customers have actually downloaded (ie read via POP) the message. The customers are all on the far side of expensive satellite links, so this serves as an inexpensive proxy for message read notifications. Is it feasible to implement both of these solutions using the current plugin architecture? I think our competition implement such features because they are Exchange based and I believe you can write server side hooks in various scripting languages quite easily (I personally don't like the idea, but someone obviously did it once and it rolled from there...) - this obviously harking to the is it feasible to imagine some higher level hook solution for simpler plugin creation suggestion from a few days ago? All these do something when it's accessed or do something when it's deleted problems all feel kind of related to me (ie we need some hook which runs on a per message basis). Perhaps someone smarter than me can think of a better way to unify them? Cheers Ed W
Re: [Dovecot] FreeBSD maintainer ?
On Sun, 26 Feb 2012 08:54:56 + Duane Hill articulated: On Sunday, February 26, 2012 at 07:22:48 UTC, f.bon...@esiee.fr confabulated: Hello Does the FreeBSD Dovecot's port maintainer read this mailing-list ? Thanks Have you tried sending message to the maintainer? The email address can be found by: cd /usr/ports/mail/dovecot make maintainer or cd /usr/ports/mail/dovecot2 make maintainer There appears to be two different email addresses between maintainers for version 1.2.x and 2.0.x. That is because there are two different maintainers: dovecot-1.2.17 == y...@coolrat.org dovecot-2.0.16_1 == b...@fsn.hu If you are having a problem with the port, I would suggest that you post on the FreeBSD Ports forum: freebsd-po...@freebsd.org and CC the maintainer of the port in question. It works quite effectively. -- Jerry ♔ Disclaimer: off-list followups get on-list replies or get ignored. Please do not ignore the Reply-To header. __
Re: [Dovecot] remove messages once downloaded
On 26.2.2012, at 13.52, Ed W wrote: On 25/02/2012 00:39, Timo Sirainen wrote: On 24.2.2012, at 19.44, julio...@fisica.uh.cu wrote: I need some help with the dovecot configuration. I want to remove downloaded messages from Mail Server once the messages have been successfully downloaded by pop3-clients, even when the clients have been configured to save copy of messages in the Server. Not possible. If you were thinking about longer term TODOs then I have a similar problem (just adding a me too...) In my industry, competing solutions offer a kind of server side been downloaded notification when customers have actually downloaded (ie read via POP) the message. The customers are all on the far side of expensive satellite links, so this serves as an inexpensive proxy for message read notifications. What does the notification do? Is it feasible to implement both of these solutions using the current plugin architecture? Yes. I think our competition implement such features because they are Exchange based and I believe you can write server side hooks in various scripting languages quite easily (I personally don't like the idea, but someone obviously did it once and it rolled from there...) - this obviously harking to the is it feasible to imagine some higher level hook solution for simpler plugin creation suggestion from a few days ago? All these do something when it's accessed or do something when it's deleted problems all feel kind of related to me (ie we need some hook which runs on a per message basis). Perhaps someone smarter than me can think of a better way to unify them? Dovecot has a notify plugin that makes things like this pretty easy to implement, but it still needs C coding.
Re: [Dovecot] remove messages once downloaded
On 26/02/2012 12:31, Timo Sirainen wrote: On 26.2.2012, at 13.52, Ed W wrote: On 25/02/2012 00:39, Timo Sirainen wrote: On 24.2.2012, at 19.44, julio...@fisica.uh.cu wrote: I need some help with the dovecot configuration. I want to remove downloaded messages from Mail Server once the messages have been successfully downloaded by pop3-clients, even when the clients have been configured to save copy of messages in the Server. Not possible. If you were thinking about longer term TODOs then I have a similar problem (just adding a me too...) In my industry, competing solutions offer a kind of server side been downloaded notification when customers have actually downloaded (ie read via POP) the message. The customers are all on the far side of expensive satellite links, so this serves as an inexpensive proxy for message read notifications. What does the notification do? Sends another email... (you know like the annoying message read indicators that lots of mail readers support)... (Several of our competitors have implemented these solutions very badly and we get mail loops and other nasties...) I think our competition implement such features because they are Exchange based and I believe you can write server side hooks in various scripting languages quite easily (I personally don't like the idea, but someone obviously did it once and it rolled from there...) - this obviously harking to the is it feasible to imagine some higher level hook solution for simpler plugin creation suggestion from a few days ago? All these do something when it's accessed or do something when it's deleted problems all feel kind of related to me (ie we need some hook which runs on a per message basis). Perhaps someone smarter than me can think of a better way to unify them? Dovecot has a notify plugin that makes things like this pretty easy to implement, but it still needs C coding. Thanks - it's off my radar for a while due to other pressures, but the hint is appreciated and I will look into it in the future - many thanks! Ed W
[Dovecot] deliver(test@[***domain_name***]): Fatal: setgid(5000) failed with ... Operation not permitted
Hi, I am relatively new to linux, and have set up my first lamp server around a month ago. The server is housed in a data centre a few miles from my house, and is working as a web server (with apache, tomcat, mysql) just fine. I have now been trying for a week to get Postfix and Dovecot working with postfixadmin and mysql. (below I have replaced my test domain name with [***domain_name***]) The story so far; I can send 'welcome' emails from within postfix admin to an external email address... and they are received by the mail client on my computer at home no problem. I can set up alias email addresses within postfix admin, such as webmaster@[***domain_name***], and emails sent to this address are redirected to the proper address as expected. But - if I set up a standard mailbox within postfix admin - test@[***domain_name***] , and email it from my home system, nothing appear in postfixadmin (after a fetch request) or the mysql database. Here is the fail point in my mail.log file ; Feb 26 12:50:27 quantum dovecot: deliver(test@[***domain_name***]): Fatal: setgid(5000) failed with euid=8(mail), gid=8(mail), egid=8(mail): Operation not permitted I don't know what the setguid(5000) is, or where it is being set, or what it should be! I have been changing permissions with the 'socket listen' section of my /etc/dovecot/dovecot.conf file, and when I restart dovecot it creates the auth-master file with the permissions as expected; socket listen { master { path = /var/run/dovecot/auth-master mode = 0777 user = vmail group = mail } client { path = /var/spool/postfix/private/auth mode = 432 #user = postfix #group = postfix } } my mail folders should be located at /var/vmail, but the folder is empty. I have chmod the permissions to be as follows; me@myserver: ls -ld /var/vmail drwxrwxrwx 2 vmail mail 4096 2012-02-11 08:40 /var/vmail Can anyone spot where this is going wrong? Thanks in advance for any help, it is very very much appreciated!!! My hosts file is as follows; 127.0.0.1 localhost [**server_ip***]quantum.[***domain_name***] quantum # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ...and 'dovecot -n' replies as follows; me@myserver: dovecot -n # 1.2.9: /etc/dovecot/dovecot.conf # OS: Linux 2.6.32-38-server x86_64 Ubuntu 10.04.4 LTS ext4 log_timestamp: %Y-%m-%d %H:%M:%S protocols: imap imaps pop3 pop3s login_dir: /var/run/dovecot/login login_executable(default): /usr/lib/dovecot/imap-login login_executable(imap): /usr/lib/dovecot/imap-login login_executable(pop3): /usr/lib/dovecot/pop3-login mail_location: maildir:/var/vmail/%d/%n mbox_write_locks: fcntl dotlock mail_executable(default): /usr/lib/dovecot/imap mail_executable(imap): /usr/lib/dovecot/imap mail_executable(pop3): /usr/lib/dovecot/pop3 mail_plugin_dir(default): /usr/lib/dovecot/modules/imap mail_plugin_dir(imap): /usr/lib/dovecot/modules/imap mail_plugin_dir(pop3): /usr/lib/dovecot/modules/pop3 lda: log_path: /var/log/dovecot-deliver.log auth_socket_path: /var/run/dovecot/auth-master postmaster_address: fxc...@me.com mail_plugins: sieve auth default: mechanisms: plain login passdb: driver: sql args: /etc/dovecot/dovecot-sql.conf userdb: driver: static args: uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes userdb: driver: sql args: /etc/dovecot/dovecot-sql.conf socket: type: listen client: path: /var/spool/postfix/private/auth mode: 432 master: path: /var/run/dovecot/auth-master mode: 511 user: vmail group: mail
[Dovecot] Deny create folders
Hi all, is it possible to configure dovecot in that way that special folders do not create automatically by some imap clients? i.e: outlook or thunderbird creates a folder junk-mail i would like that such folders are not created automatically or by users Best regards Stefan
Re: [Dovecot] Deny create folders
On 26.2.2012, at 17.54, S. Kremer wrote: is it possible to configure dovecot in that way that special folders do not create automatically by some imap clients? i.e: outlook or thunderbird creates a folder junk-mail i would like that such folders are not created automatically or by users You could maybe create a global ACL that denies the access to create them. The clients might not be happy about it though. It's not a very good idea to go doing things like this I think.
Re: [Dovecot] Deny create folders
On Sun, 26 Feb 2012 16:54:22 +0100 S. Kremer articulated: Hi all, is it possible to configure dovecot in that way that special folders do not create automatically by some imap clients? i.e: outlook or thunderbird creates a folder junk-mail i would like that such folders are not created automatically or by users Exactly what problem are you attempting to alleviate? In the short term you might seriously upset some of your clients and in the long term cause a stability problem. -- Jerry ♔ Disclaimer: off-list followups get on-list replies or get ignored. Please do not ignore the Reply-To header. __
Re: [Dovecot] deliver(test@[***domain_name***]): Fatal: setgid(5000) failed with ... Operation not permitted
Hi, I have fixed this fault - the following line in my /etc/dovecot/dovecot.conf file was setting the setgid to 5000, and the user id to 5000 also auth default { ... userdb static { args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes } ... } I changed these two values to 8 ( the id of mail on my system) and emails are now being delivered to the proper folders thanks Christy
Re: [Dovecot] Deny create folders
Ok, thanks for answer. Every user's mailbox has a directory called Spam and Ham. I scan this two folders by a script to learn my spamassassin database. This script does not scan folders like spam, ham, junk-email etc. But some users have such folders in their mailbox so spamassassin does not learn from these folders. My aim is to force users to use the folders Spam and Ham and not other folders for spam or ham messages. Am 26.02.2012 17:41, schrieb Jerry: On Sun, 26 Feb 2012 16:54:22 +0100 S. Kremer articulated: Hi all, is it possible to configure dovecot in that way that special folders do not create automatically by some imap clients? i.e: outlook or thunderbird creates a folder junk-mail i would like that such folders are not created automatically or by users Exactly what problem are you attempting to alleviate? In the short term you might seriously upset some of your clients and in the long term cause a stability problem. Greetings Stefan
Re: [Dovecot] Deny create folders
On Sun, 26 Feb 2012 22:31:35 +0100 S. Kremer articulated: Am 26.02.2012 17:41, schrieb Jerry: On Sun, 26 Feb 2012 16:54:22 +0100 S. Kremer articulated: Hi all, is it possible to configure dovecot in that way that special folders do not create automatically by some imap clients? i.e: outlook or thunderbird creates a folder junk-mail i would like that such folders are not created automatically or by users Exactly what problem are you attempting to alleviate? In the short term you might seriously upset some of your clients and in the long term cause a stability problem. Ok, thanks for answer. Every user's mailbox has a directory called Spam and Ham. I scan this two folders by a script to learn my spamassassin database. This script does not scan folders like spam, ham, junk-email etc. But some users have such folders in their mailbox so spamassassin does not learn from these folders. My aim is to force users to use the folders Spam and Ham and not other folders for spam or ham messages. Please don't top post. It makes following a thread a lot harder than it needs to be. Couldn't you just make a soft link between the two folders and save yourself and your clientele a lot of trouble? I have not messed with spamassassin in years; however, I thought it was configurable on what it scans. -- Jerry ♔ Disclaimer: off-list followups get on-list replies or get ignored. Please do not ignore the Reply-To header. __
Re: [Dovecot] upgrade to dovecot 2.1.1 any question
Le samedi 25 février 2012 à 07:18 +0200, Timo Sirainen a écrit : On 25.2.2012, at 6.51, ml wrote: Try if it starts up without antispam plugin enabled? If not, gdb backtrace would be helpful: http://dovecot.org/bugreport.html I have not succeeded well I got a son of fakessh I attached with gdb-p but bt full no me back stack Did you try without antispam plugin? My guess is that is the reason it crashes. Or if it still crashes, try disabling all plugins. I'm in front of a problem. despite having to disable the antispam plugin as it appears in dovecot.conf always load so I did not succeed to disable I do not know how can you tell me that I continue my tests without the antispam plugin -- http://pgp.mit.edu:11371/pks/lookup?op=getsearch=0xC2626742 gpg --keyserver pgp.mit.edu --recv-key C2626742 http://urlshort.eu fakessh @ http://gplus.to/sshfake http://gplus.to/sshswilting http://gplus.to/john.swilting https://lists.fakessh.eu/mailman/ This list is moderated by me, but all applications will be accepted provided they receive a note of presentation signature.asc Description: Ceci est une partie de message numériquement signée
[Dovecot] testing fts-solr?
hi everyone, However, how can I verify that solr is working properly? Background: - I'm trying to setup 2.1 with fts_solr and eventually test maildir/mdbox. - I used the following webpage as reference to setup solr: http://www.roessner-network-solutions.com/2012/02/19/full-text-search-with-solr-and-dovecot-on-ubuntu-10-04/ I'm looking at /var/log/tomcat6/catalina.out file, but see nothing telling me that it's being used (same for /var/log/mail.log, etc.) Any tips? Thanks
Re: [Dovecot] upgrade to dovecot 2.1.1 any question
Le samedi 25 février 2012 à 07:18 +0200, Timo Sirainen a écrit : On 25.2.2012, at 6.51, ml wrote: Try if it starts up without antispam plugin enabled? If not, gdb backtrace would be helpful: http://dovecot.org/bugreport.html I have not succeeded well I got a son of fakessh I attached with gdb-p but bt full no me back stack Did you try without antispam plugin? My guess is that is the reason it crashes. Or if it still crashes, try disabling all plugins. I managed dovecot 2.1. 1 works well in removing completely antispam plugin work well and fine -- http://pgp.mit.edu:11371/pks/lookup?op=getsearch=0xC2626742 gpg --keyserver pgp.mit.edu --recv-key C2626742 http://urlshort.eu fakessh @ http://gplus.to/sshfake http://gplus.to/sshswilting http://gplus.to/john.swilting https://lists.fakessh.eu/mailman/ This list is moderated by me, but all applications will be accepted provided they receive a note of presentation signature.asc Description: Ceci est une partie de message numériquement signée
[Dovecot] Dovecot altmove questions
Hello We are using Dovecot 2.0.17 with mdbox+zlib and we are evaluating alternative storage. These are the relevant settings mdbox_rotate_interval = 1d mdbox_rotate_size=60m [...] zlib_save_level = 9 # 1..9 zlib_save = gz # or bz2 [...] zlib plugin enabled in dovecot-lda These are my questions: 1º General mdbox question. We are happy usings zlib_save, but we would like to try bzip2 compression. Can we change zlib to bzlib without problems? In other words, can we mix match gzipped and bzipped messages in the same mdbox file ? 2º With doveadm altmove we can move messages matching a pattern to alternate storage. I have read an older post in this mailing list about passing specific mdbox options to doveadm altmove. Should be a good idea to have a main mdbox area with zlib 9 and mdbox_rotate=1d and mdox_rotate_size=60m and an alternate area with bzip9, mdbox_rotate=1 week and rotate_size 60 MB? In the alternate area should only be old mail (1 year older). 3º We have separate raids for indexes (raid 1+0) and mdboxes (raid 5). We have almost 3 TB of gzipped mdboxes, and our backup (bacula) is taking almost 16 hours to make a full backup. Our main problem is that indexes are backupd hours before mdboxes, and that bring us some inconsistencies. What is the right way of backing up for separate indexes and mdboxes? Thank you for your support. Maria
Re: [Dovecot] Dovecot altmove questions
Maria Arrea maria_ar...@gmx.com wrote: 3º We have separate raids for indexes (raid 1+0) and mdboxes (raid 5). We have almost 3 TB of gzipped mdboxes, and our backup (bacula) is taking almost 16 hours to make a full backup. Our main problem is that indexes are backupd hours before mdboxes, and that bring us some inconsistencies. What is the right way of backing up for separate indexes and mdboxes? Bacula? Excellent! If you put your indexes and mdboxes on a LVM (seperate volume group obviously, because of the different storages both reside on), you can snapshot both volumes at the same time, using an FD-based script, mount them somewhere else (like /backup/data and /backup/index) and then you have (nearly) all the time you want to backup them. And because of the snapshots taken at the same time, no inconsistencies can happen. (OK, not entirely true, since both snapshots are taken with a minimal gap between them, but if you start the backup during off-hours the inconsistencies should be minimal.) If you don't use a LVM but have a storage which is able to do snapshots on its own, you can also use this. If you don't have a LVM and no storage with such functionality, then you are kind of lost, as far as I can see. My additional advise on the long time of full backups: don't do them! Switch to accurate backups and only do incremental and differential backups, replacing the full backups with virtual full ones. This will greatly reduce the load on your mail systems and speed up the backup operation at the same time. But you have to use accurate type backups, or your virtual full backup will grow and grow and grow, since Bacula without accurate is unable to know about deleted files and will include them in every virtual full backup. Grüße, Sven. -- Sigmentation fault. Core dumped.
Re: [Dovecot] v2.0.13 problems after kernel patch for CVE-2011-1083 applied on Centos 5
On Feb 26, 2012, at 2:44 AM, Morten Stevens wrote: On 26.02.2012 03:55, Doug Henderson wrote: On Feb 25, 2012, at 3:15 AM, Morten Stevens wrote: Try it without ksplice. (yum update and reboot) I don't know if I'll be permitted to do that in a production environment - possibly a test one. I'll need to get some opinions from our Ops people as to if/how they might want to go about it. Which kernel is running exactly? 2.6.18-274.3.1.el5 That is probably the problem. The current RHEL 5.8 kernel is 2.6.18-308.el5. There are many changes between 2.6.18-274 (EL 5.7) and 2.6.18-308 (EL 5.8). So I do not know if it is a good idea to apply ksplice patches between minor 5.x releases. Best regards, Morten Thanks Morten, We'll install the latest kernel on a test machine tomorrow and see how things go - we'll probably also attempt to reinstall the patch (if appropriate) and see if it still breaks things. Doug
[Dovecot] GSSAPI auth failing for kmail
Hi, have dovecot 2.0.13 running fine on a NetBSD box, with lots of clients happily authenticating to it with GSSAPI. I've just updated an ArchLinux box to latest new version which has meant its switched from using heimdal to using mit krb5 and its kmail is now also slightly newer. Thunderbird successfully authenticates to dovecot from this machine but kmail now fails. Kmail reports: Unable to authenticate via GSSAPI. The server ... replied: SASL(-1): generic failure: GSSAPI Error: Invalid token was supplied (Token header is malformed or corrupt) The dovecot log reports: Feb 27 13:42:18 bats dovecot: auth: GSSAPI(m...@ecs.vuw.ac.nz,130.195.5.88): Invalid base64 data in continued response Any suggestions on how to track down what specifically has changed and how to fix it? cheers mark
Re: [Dovecot] FreeBSD maintainer ?
On 02/26/12 08:22, Frank Bonnet wrote: Does the FreeBSD Dovecot's port maintainer read this mailing-list ? If you read it, you may know the answer (depending on which port do you use).
Re: [Dovecot] FreeBSD maintainer ?
hello I'm wondering when you will port 2.1.1 version ? ;-) Thanks Le 27/02/2012 08:07, Attila Nagy a écrit : On 02/26/12 08:22, Frank Bonnet wrote: Does the FreeBSD Dovecot's port maintainer read this mailing-list ? If you read it, you may know the answer (depending on which port do you use).
[Dovecot] [PATCH] Pop3 order in courier migration script
Hi, I found a problem in the courier conversion script (courier-dovecot-migrate.pl). In some cases, it does not correctly preserve the order of POP3 UIDLs. Consider the following case, when courierpop3dsizelist contains: /2 9000 1327481629 AAA1:2,S 1 21:1327481629 AAA2:2,S 1 22:1327481629 AAA3:2,S 1 23:1327481629 AAA4:2,S 1 24:1327481629 AAA5:2,S 1 25:1327481629 BBB11:2,S 1 11:1327481629 BBB12:2,S 1 12:1327481629 BBB13:2,S 1 13:1327481629 BBB14:2,S 1 14:1327481629 BBB15:2,S 1 15:1327481629 and courierimapuiddb contains: 1 1327480919 9000 11 BBB11 12 BBB12 13 BBB13 14 BBB14 15 BBB15 16 CCC16 17 CCC17 18 CCC18 19 CCC19 20 CCC20 21 AAA1 22 AAA2 23 AAA3 24 AAA4 25 AAA5 then call courier-dovecot-migrate.pl --to-dovecot --convert and it will create dovecot-uidlist: 3 V1327480919 N9010 21 PUID21-1327481629 W1 :AAA1:2,S 22 PUID22-1327481629 W1 :AAA2:2,S 23 PUID23-1327481629 W1 :AAA3:2,S 24 PUID24-1327481629 W1 :AAA4:2,S 25 PUID25-1327481629 W1 :AAA5:2,S 9000 :CCC17 9001 PUID12-1327481629 W1 :BBB12:2,S 9002 :CCC16 9003 PUID15-1327481629 W1 :BBB15:2,S 9004 :CCC20 9005 PUID14-1327481629 W1 :BBB14:2,S 9006 PUID13-1327481629 W1 :BBB13:2,S 9007 :CCC18 9008 PUID11-1327481629 W1 :BBB11:2,S 9009 :CCC19 The problem here is that the BBB files are not in the same order as in courierpop3dsizelist, and will therefore have a different order in the UIDL response in POP3. Also, the CCC files are interleaved while they should appear at the end. The reason is how the script assigns new UIDs: It does not do this in the order of courierpop3dsizelist. In fact the order is random because it depends on how perl traverses hashes. The attached patch fixes this by sorting the messages: First the POP3 messages get their new UIDs in order of their appearance in courierpop3dsizelist (so that the UIDL order will really be the same as in Courier), after that, the IMAP-only messages will be checked for UID clashes. The patch also changes how the $prev_uid variable is handled because that was also needed to always get the order right. The algorithm could probably be optimized to reduce the number of UID re-assignments to a minimum, however this would complicate the code and would only be noticed in a few cases. The patched courier-dovecot-migrate.pl will create dovecot-uidlist like this: 3 V1327480919 N9010 21 PUID21-1327481629 W1 :AAA1:2,S 22 PUID22-1327481629 W1 :AAA2:2,S 23 PUID23-1327481629 W1 :AAA3:2,S 24 PUID24-1327481629 W1 :AAA4:2,S 25 PUID25-1327481629 W1 :AAA5:2,S 9000 PUID11-1327481629 W1 :BBB11:2,S 9001 PUID12-1327481629 W1 :BBB12:2,S 9002 PUID13-1327481629 W1 :BBB13:2,S 9003 PUID14-1327481629 W1 :BBB14:2,S 9004 PUID15-1327481629 W1 :BBB15:2,S 9005 :CCC16 9006 :CCC17 9007 :CCC18 9008 :CCC19 9009 :CCC20 Cheers, Christoph -- Christoph Bußenius Rechnerbetriebsgruppe der Fakultäten Informatik und Mathematik Technische Universität München +49 89-289-18519 Raum 00.05.055 Boltzmannstr. 3 Garching --- ../courier-dovecot-migrate.pl.orig 2012-02-24 18:06:44.086350208 +0100 +++ ../courier-dovecot-migrate.pl 2012-02-25 20:36:14.206362124 +0100 @@ -331,15 +331,31 @@ } } +# Sort POP3 messages by their Courier-POP3 order. +my @pop3 = sort { +$filename_map-{$a}[4] = $filename_map-{$b}[4] +} grep { $filename_map-{$_}[4] } keys %$filename_map; + +# Sort non-POP3 messages by their UID. +# Those that have UID==0 come last since they have been marked to get a new UID. +my @imaponly = sort { +($filename_map-{$a}[0] || 'inf') = ($filename_map-{$b}[0] || 'inf') +} grep { ! $filename_map-{$_}[4] } keys %$filename_map; + +$prev_uid = 0; my %uidlist_map; -foreach my $fname ( keys %{$filename_map} ) { +foreach my $fname ( @pop3, @imaponly ) { my $file_ar = $filename_map-{ $fname }; my $uid = $file_ar-[0]; -if ($uid == 0 || ($file_ar-[4] == 0 $uid = $prev_uid)) { -# in pop3 list only, assign a new IMAP UID. +if ($uid == 0 # only in pop3 list or marked for new UID +# OR: other ill-ordered UID message +|| $uid = $prev_uid) +{ +# Assign a new IMAP UID: $uid = $nextuid; $nextuid++; } +$prev_uid = $uid; $uidlist_map{$uid} = $fname; }