[Dovecot] sdbox to mdbox

Henrique Fernandes sf.rique at gmail.com
Sat Dec 25 02:47:42 EET 2010


Hey, sorry i confused in other post that is going on the list, but i guess
will be helpfull anyway!

[]'sf.rique


On Fri, Dec 24, 2010 at 10:43 PM, Henrique Fernandes <sf.rique at gmail.com>wrote:

> Gonna start over and try to be more simply.
>
>
>
>
> On Fri, Dec 24, 2010 at 9:57 PM, Stan Hoeppner <stan at hardwarefreak.com>wrote:
>
>> Joan Moreau put forth on 12/24/2010 5:41 PM:
>>
>> > 1 - plan to have all the new emails in a different folder (say
>> > "/data/mail2" )
>>
>
> No. Do not need to do anything.
>
>> > 2 - make a script that go through all users & domains
>>
>
> Yes.
>
>>  > 3 - for each user (and therefore dbox folder), run "dsync -o
>> > mail_location=sdbox:/data/mail/%d/%n mirror mdbox:/data/mail2/%d/%n"
>> > (where %d and %n are updated correctly for each user)
>>
>
> I did not, but you could!
>
>
>>  > 4 - move /data/mail to /data/mailold and move /data/mail2 /data/mail
>>
>> You don't have to move the mail "back".
>>
>
> No.
>
>>
>> > 5 - update dovecot.conf with "mail_location = mdbox:/data/mail/%d/%n"
>>
>> Simply change the mail location to the new directory in dovecot.conf.
>> After you've confirmed all the users' mail is safely in the new location
>> you can delete all the old mail folders/structure.
>>
>
> You could, or use it from mysql.
>
>>
>> > 6 - Only then, restart dovecot in production ?
>>
>> You can perform all of this without stopping Dovecot.  IMAP commands are
>> used for the mirror operation to the new directory/mailboxes not some
>> direct file manipulation that requires the mailboxes be offline.
>>
>> Shutting down dovecot simply makes sure you don't miss new mail that's
>> written by users or your MTA (new deliveries) while the mirror operation
>> is running (which can take a LONG time).  If you do it live, you simply
>> have to make a second run, which will be MUCH faster due to fewer "new"
>> mails to mirror.  Think of how rsync works--only new files are copied.
>> So the seconds run will be quick.  Immediately after the second run,
>> stop dovecot, change the mail location in dovecot.conf to the new
>> directory with the mdbox files and start dovecot.  Or, better, stop
>> dovecot before the 2nd mirror run, run the mirror op, change
>> dovecot.conf with new mail location, start dovecot.  Down time during
>> the 2nd run should/will be minimal.
>>
>
> I did with down time most part of it.  But a few hundres i did live.
>
>
> I have about 9k acount on my server.
>
>>
>> > ISn't there a way to do that keeping dovecot running ?
>>
>> Yes, see above.
>>
>
> As i will try to explain again!
>
> Let see.
>
> First some info.
>
> Dovecot can ether get this informations about gid and uid and mail location
> from mysql using user_query. If the return of query is an result this will
> be used, if it is null the conf file will be use.
>
> I don't know if what i used is the best way, but it worked for me.
>
> Right now, you can run this comand.
>
> # dsync -v -u user at domain.com  backup   mdbox:/Converted/mail/user1/mdbox
>
> And it will make exacly the same mail from user at domain.com in
> /Converted/mail/user/mdbox
>
> but with only this, you can not do anything, becase dovecot for imap
> process sees the location of mail in the conf file. and it still the other
> path.   This is why mysql with field "mail" goes. It tells dovecot that for
> that user, the maillocation is /Converted/mail/user/mdbox
>
> My user query tells me for each user.  uid gid home and mail_location
>
> Usualy my mail_location is maildir: ~/mail/  and home is
>  /some-storage/domain/user/
>
> And for other users it uses mail_location from the file that is
> mbox:/domaim/user:INBOX:/var/spoll/mail
>
> I mean, like this i have total control what each user will have it for
> conf.
>
> So once you have configured dovecot to user mysql you can run this steps.
>
> 1 - make the home of user unwriteble to dovecot.
> 2 - conver with dsync like this.  # dsync -v -u user at domain.commdbox:~/mdbox/
> 5 - make mdbox:~/mdbox writible to dovecot
> 4 - Change mail location of this user in mysql ( before it was null, so
> dovecot uses the file ) change it to mdbox:~/mdbox/
> 5 - Done. Now dovecot is already writing ( LDA ) and reading ( IMAP  POP3 )
>  from mdbox
>
> I guess it would be all
>
> Still any questions ?
>
>


More information about the dovecot mailing list