y10k / rims

Ruby IMap Server

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Mailbox dump/restore tool

y10k opened this issue · comments

  1. dump to/restore from cold backup of plain files and directories
  2. hot backup is not a scope
  3. plug-in system of any backup format (ex. tar, zip)

Tar is popular format that is easy to handle with streaming I/O, but
it is not chosen as the default to avoid to depend on an external gem.

Tar format may be provided as a plug-in.

Backup data format

Requirements

  • self-explanatory in text format
  • easy to handle with streaming I/O
  • provable of backup data integrity

Format

[header#1 size],[header#1 checksum]
[header#1]
[data#1]
[header#2 size],[header#2 checksum]
[data#2]
...
[header#last size],[header#last checksum]
[header#last]
[data#last]

Header

  • Content-Type: message/rfc822
  • Content-Type: text/plain
  • Content-Type: application/octet-stream
  • Content-Length: 123
  • Content-Transfer-Encoding: 7bit
  • Content-Transfer-Encoding: base64
  • Content-MD5: 1B2M2Y8AsgTpgAmY7PhCfg==\
  • Content-Disposition: attachment; filename="e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855/message/0"
  • Content-Disposition: attachment; filename="e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855/meta/cnum"
  • Content-Disposition: attachment; filename="e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855/mailbox_1/1"

Need a mechanism to enumerate all unique user IDs.
See #38.