Hi All,
Will start using an "update" tag in my subject just to not cause confusion (mainly for yours truly).
Pursuant to my victory in finding Maildir and mbox being used if either exist (and if both still seems to favour Maildir - a mistake my end: "rmdir -f mail" fixed it), I have found one issue with not declaring the mailbox location: it won't import your new e-mail from your Inbox (/var/spool/mail/user in my case). If I run the conversion script mb2md with a '-m', I get duplicate entries in Outlook's Inbox - I understand why, just a shame it doesn't sync with what 'isn't' already there.
So yesterday and today I have done additional testing as the customer uses RoundCube and mobile devices - so attacking the same Linux server I have Thunderbird and a couple of Android e-mail clients. Outlook is the only stick in the mud with needing to manually subscribe to folders when I create them on other devices - again could be me as I don't use Outlook. (Thunderbird and other e-mail clients, all good with immediate auto-sync).
I looked at the wiki to try and run both mail_location settings with the wiki suggested:
##namespace { ## separator = / ## prefix = "#mbox/" ## location = mbox:~/mail:INBOX=/var/mail/%u ## inbox = yes ## hidden = yes ## list = no ##} ##namespace { ## separator = / ## prefix = "Maildir/" ## location = maildir:~/Maildir ## list = yes ##}
in 10-mail.conf but as you can see, I have commented it out now as it introduced some more layers of errors which I have to get back to - "Duplicate namespace prefix" was one issue.
The goal is to run the server with the existing mbox users blissfully unaware they are being converted one-by-one so it looks like I 'can' run both formats but just need to get the configs right. Was hoping the mb2md would just sync new stuff so I could cron script the Inbox check for the users that are converted to Maildir until I can throw the switch and be done with the cut-over..... or I could be dangerous and remove and import each time.... but that could lead to more dramas at the user end.
Looks like more R&D is needed so will persevere - annoying to get so close though, might see if I can just sync in the Inbox items that are 'new' - that means I am ready to roll on the customer site......
On 09/10/17 00:12, David.M.Clark wrote:
Wow excellent feedback Joseph, Philon and Aki,
You have all pointed me in the right direction. Tonight I have tested Dovecot with just the minor configs I do for Dovecot setup and I have commented out the mbox/Maildir lines in 10-mail.conf from my testing:
#mail_location = #mail_location = mbox:~/mail:INBOX=/var/spool/mail/%u #mail_location = maildir:~/Maildir
I had run up some test files (folders) under mbox using "/u/home/user/mail_test" and then renamed this to 'mail' (so /u/home/user/mail). Ran some tests with sends/receives, created folders - all good. Created mbox text folders.
Then had my initial test 'Maildir_test' populated with test folders which I renamed to /u/home/user/Maildir - and each time I restarted Outlook it was obeying the folder 'format' based on whether I had 'mail' or 'Maildir' in place.
I did see in the posts and docs on-line somewhere that someone mentioned the later implementations of Dovecot, without hard-setting either mbox or Maildir in the 10-mail.conf file, Dovecot, based on the presence of the particular directory in the user's $HOME directory obeys the rules based on mbox/Maildir respectively.
I haven't needed to touch the namespace rules as per:
https://wiki2.dovecot.org/Namespaces
so the only files that bear any changes from the installed config in conf.d are:
-rw-r--r-- 1 root root 14531 Oct 8 23:28 10-mail.conf -rw-r--r-- 1 root root 2965 Oct 7 08:49 10-master.conf -rw-r--r-- 1 root root 1728 Oct 7 08:52 10-ssl.conf
This will make migration so much easier with converting one user at a time and then getting them to start Outlook and re-sync things again.
This will save a massive job from being just that and can be done in batches of users to suit time constraints.
I will post here once again to let you all know how I fare but just proves to me over and over again the power of the Linux e-mail server with Dovecot for IMAP and being able to keep with the older SendMail MTA (been working with Sendmail since 1996 so....).
Thank you all so much for taking time to respond.
On 08/10/17 20:32, Aki Tuomi wrote:
You can give mail location and home directory from userdb or passdb.
For userdb, return mail=something:~/something and for home use home=/path/to/home
For passdb, you can return userdb_mail and userdb_home
Aki
On October 8, 2017 at 1:14 PM Philon <bytesplit@gmail.com> wrote:
Hi David,
I somehow remember that there is a way to get the mail_location from per-user-settings. I had this once when migrating from maildir to mdbox.
You might want to use Google and the mailing list archives for the details but in summary it went like this:
- set Dovecot to grab the mail_location from user-settings (I think we used MySQL db field - or check docs for auto:)
- have login script which converts maildir from setup A to B and update the user setting
- kick the user once again to apply the setting (I’m not sure about this)
This then automates the conversion process to happen on next user login.
Be warned though that today with all the idle phones, probably many users will re-login after you restart the server. Perhaps the scripting could handle a timer which randomizes this a little.
Philon
Am 07.10.2017 um 02:22 schrieb David.M.Clark <david@davrom.com>:
Hi All,
Thanks to MJ for the suggestion as my only hope, and I have tested this with Outlook 2016 and Thunderbird today - seamless creation of folders.
Now the mammoth task of converting customers with masses of mbox folders to MailDir format using the on-line perl script: mb2md-3.20.pl
Works nicely and will be what gets us out of trouble. My only sadness is that Outlook then has to be 're-subscribed' to the folders again.... which makes sense or maybe I didn't give it long enough - its IMAP folder syncs are extremely slow compared to Thunderbird which I also tested in parallel. Thunderbird didn't need any re-sync, it just found the new subscription setup and was ready to go. But in all fairness, Outlook is still really only an Exchange compatible product for the most part.
Would be great to run both mbox and MailDir at the same time so we can do the slow user-by-user process rather than having them all down at some point completely - might look at running Dovecot on a different port maybe with a different ".conf" but thinking this may not work anyway or cause issues.... back to my server tests to see :-)
I use additional ports to 143 for external IMAP restrictions anyway so might be able to do this method somehow.
Anyway, for those interested in where I got to in my testing so far...
- Download perl script "mb2md-3.20.pl" from:
http://batleth.sapienti-sat.org/projects/mb2md
- Changed Dovecot /etc/dovecot/conf.d/10-mail.conf mbox entry to MailDir:
#mail_location = mbox:~/mail:INBOX=/var/spool/mail/%u mail_location = maildir:~/Maildir
Restarted Dovecot
su as user and in their home (/u/home/user on my setup):
/u/packages/mb2md-3.20.pl -m
then:
mv mail mail_old
then:
/u/packages/mb2md-3.20.pl -s mail_old -R
then:
Login with Outlook and subscribe to IMAP folders again.
Not a big fan of gazillions of little eml based text mail files in directories but hey, if it fixes our issues, maybe I need to stop wambulancing about it all and do as I am told :-)
Hope this helps - will keep this e-mail updated on findings if anything else comes to light.
--
As always, I remain at your service.