Overview
This article covers the raw storage structure of email on your account. All email is stored in a Maildir format, which stores email in separate files in a directory named Mail
within a user’s home directory.
Sample structure
Directories in bold:
. ├── cur │ └── 1440231926.M975332P7880V05000DAI00000000000001D1_0.sol.apnscp.com,S=1254:2, ├── dovecot-acl-list ├── dovecot.index ├── dovecot.index.cache ├── dovecot.index.log ├── dovecot-keywords ├── dovecot.mailbox.log ├── dovecot-uidlist ├── dovecot-uidvalidity ├── dovecot-uidvalidity.4cb493c8 ├── new ├── old |-- .Spam | |-- cur | |-- dovecot.index | |-- dovecot.index.log | |-- dovecot-keywords | |-- dovecot-uidlist | |-- new | `-- tmp ├── subscriptions └── tmp
Component breakdown
- Mail storage directories:
new
,cur
, andtmp
serves as a scratch directory for messages as they are written to disk. New messages are delivered to
tmpnew
, and once downloaded by a mail client, moved tocur
. - Additional IMAP folders:
.Spam
Any directory, prefix with a dot (“.”) is a separate IMAP folder. Each IMAP folder has its own set of mail storage directories (new,
cur
,tmp
). IMAP folders may be virtually nested by separating each level with another dot. For example, take the following mailbox layout:INBOX |-- Billing | |-- Bills | | `-- Paid | `-- Orders `-- Personal
This is represented, on the server as a collection of directories in
Mail/
like this:. |-- .Billing |-- .Billing.Bills |-- .Billing.Bills.Paid |-- .Billing.Orders `-- .Personal
- Dovecot data:
dovecot*
files:
These are used internally by the IMAP/POP3 server (Dovecot) to keep track of email. Of importance are cache files, ending in.cache
, which may become corrupted if you exceed your storage usage, resulting in an empty mailbox. - IMAP subscriptions:
subscriptions
Subscriptions are all folders that appear once you login to an IMAP server. When a folder is subscribed to by an IMAP client, the folder name is written on a separate line. These are not used by POP3. - Email: all files under
cur/
ornew/
Lastly, each file under these directories represents a single email. Each file consists of metadata embedded in its name.1440231926.M975332P7880V05000DAI00000000000001D1_0.sol.apnscp.com,S=1254:2,S ^- delivery in unixtime ^ ^ | ^ `- internal id | | | `- receiving hostname | | `- size | `- flags
An email may be named anything; the filename provided above is a convention of our hosting platform. An email may be named anything; these files will be reconciled to Dovecot’s cache and treated as email if present in
cur/
. In fact, during server migrations, these email files are copied verbatim from the old server, which given the example above, will always have a completely different hostname in the filename. Still, these emails are accessible within any email client and display like any other email.Of interest, unixtime delivery is the date a message was delivered, so all files are presented chronologically. Flags, if specified, include specific IMAP commands, such as whether a message was relocated to trash (“T” flag), starred (“F” flag), or viewed (“S” flag). The latter two are used for our approach to Inbox Zero, which by the bye, is used religiously for support tickets.
Migrating Email
As touched upon above in the email component breakdown, filenames are inconsequential and only provide a means to optimize IMAP access. Therefore, when migrating email from a previous hosting provider, email may be named anything, provided it is located within the cur/
directory of the respective IMAP folder.
See also
- KB: POP3 vs IMAP Protocols
- Dovecot wiki: Mailbox Format > Maildir