This documentation is for Dovecot v1.x, see wiki2 for v2.x documentation.
Differences between revisions 1 and 2
Revision 1 as of 2009-12-16 02:03:03
Size: 1136
Editor: TimoSirainen
Comment:
Revision 2 as of 2009-12-16 23:01:49
Size: 1315
Editor: TimoSirainen
Comment:
Deletions are marked like this. Additions are marked like this.
Line 12: Line 12:
 * {{{mailbox_sync_*()}}} to synchronize changes from the backend to memory.
 * {{{mailbox_transaction_*()}}} for transaction handling. All message reads and writes are done in a transaction
 * {{{mailbox_search_*()}}} is used for searching messages. Even simple operations like "get all messages" go through this API, it'll then simply do "search all".
 * {{{mailbox_save_*()}}} and {{{mailbox_copy()}}} is used for saving/copying new messages to mailbox.
 * [[Design/Storage/Mailbox/Sync|Syncing]]: {{{mailbox_sync_*()}}} to synchronize changes from the backend to memory.
 * [[Design/Storage/Mailbox/Transaction|Transactions]]: {{{mailbox_transaction_*()}}} for transaction handling. All message reads and writes are done in a transaction
 * [[Design/Storage/Mailbox/Search|Searching]]: {{{mailbox_search_*()}}} is used for searching messages. Even simple operations like "get all messages" go through this API, it'll then simply do "search all".
 * [[Design/Storage/Mailbox/Save|Saving]]: {{{mailbox_save_*()}}} and {{{mailbox_copy()}}} is used for saving/copying new messages to mailbox.

Mailbox

src/lib-storage/mail-storage.h and mail-storage-private.h describes mailbox API, among others. Mailbox life cycle often goes like:

  • mailbox_alloc() allocates memory for the mailbox and initializes some internal settings, but doesn't actually try to open it.

  • mailbox_open() opens the mailbox. It's not necessary to always call this, for example syncing implicitly opens unopened mailboxes.

  • mailbox_close() closes and frees the mailbox.

There are a lot of functions to deal with mailboxes. The most important ones are:

  • mailbox_get_status() to get a summary of mailbox, such as number of messages in it.

  • Syncing: mailbox_sync_*() to synchronize changes from the backend to memory.

  • Transactions: mailbox_transaction_*() for transaction handling. All message reads and writes are done in a transaction

  • Searching: mailbox_search_*() is used for searching messages. Even simple operations like "get all messages" go through this API, it'll then simply do "search all".

  • Saving: mailbox_save_*() and mailbox_copy() is used for saving/copying new messages to mailbox.

None: Design/Storage/Mailbox (last edited 2010-02-07 15:53:57 by TimoSirainen)