This documentation is for Dovecot v2.x, see wiki1 for v1.x documentation.
Differences between revisions 5 and 6
Revision 5 as of 2010-02-07 15:53:57
Size: 1590
Editor: TimoSirainen
Comment:
Revision 6 as of 2021-09-24 15:29:39
Size: 67
Editor: TimoSirainen
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
= 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. Instead of opening a mailbox, you can also create it with {{{mailbox_create()}}}.
  * If you're immediately syncing the mailbox, you don't need to open it, because it's done implicitly. This reduces your code and error handling a bit.
 * {{{mailbox_close()}}} closes the mailbox, so that it needs to be opened again if it's wanted to be accessed. This is rarely needed.
 * {{{mailbox_free()}}} 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.
 * [[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.
Moved to https://doc.dovecot.org/developer_manual/design/mailbox/

None: Design/Storage/Mailbox (last edited 2021-09-24 15:29:39 by TimoSirainen)