[Dovecot] Integrating Dovecot with Amazon Web Services
Timo Sirainen
tss at iki.fi
Thu Jun 28 21:12:30 EEST 2012
On 28.6.2012, at 21.04, Gary Mort wrote:
> mdbox though is different, multiple messages are stored in a single file.
> The index indicates in which file each message is located. When the data
> is moved to alt storage, the filename can change in which case the index is
> updated.
> IE:
> Primary/Msg06282012 -- contains Msg007, Msg008, Msg009
> Primary/Msg06272012 -- contains Msg004, Msg005, Msg006
> Primary/Msg06262012 -- contains Msg001, Msg002, Msg003
>
> along comes archiving and the new format is:
> Primary/Msg06292012 -- contains Msg010, Msg011, Msg012
> Primary/Msg06282012 -- contains Msg007, Msg009
> Primary/Msg06272012 -- contains Msg004, Msg006
> Primary/Msg06262012 -- contains Msg003
> Alt/Msg06292012 00 contains Msg001, Msg002, Msg005, Msg008
Yes, doveadm altmove works like this now.
> Since the archive rules can be based on a lot of different scenarios[and a
> message can even be archived from the command line], the filenames between
> Primary and Alternate are not the same - and in fact the same filename in
> each place could have different messages. For example: if messages are
> archived when a user sets an imap flag on them.
There shouldn't normally ever be a situation where the same filename is used in both storages, because every time a new file is created to either of the storages a new unique number is used.
> So with the way it's written now, it's not possible to have a simple
> fallback by filename.
>
> It would be possible if the naming convention was strictly enforced, ie
> after archiving you have:
> Primary/Msg06292012 -- contains Msg010, Msg011, Msg012
> Primary/Msg06282012 -- contains Msg007, Msg009
> Primary/Msg06272012 -- contains Msg004, Msg006
> Primary/Msg06262012 -- contains Msg003
> Alt/Msg06282012 -- contains Msg008
> Alt/Msg06272012 -- contains Msg005
> Alt/Msg06262012 -- contains Msg001, Msg002
>
> Now the index can simply say what file a message is in and doesn't have to
> specify primary or secondary, and the primary file with that name can be
> checked first, and then if it is not there check the alternate.
This already works like that in the reading side. If you did altmoving by "mv m.123 /altstorage/..." instead of doveadm it would work.
More information about the dovecot
mailing list