"mbox" is a family of several mutually incompatible mailbox formats
homepage.ntlworld.com.
homepage.ntlworld.com.
That's actually how it's supposed to be done:
http://www.dns-sd.org/TrailingDotsInDomainNames.html
"It's a little-known fact, but fully-qualified (unambiguous) DNS domain names have a dot at the end. People running DNS servers usually know this (if you miss the trailing dots out, your DNS configuration is unlikely to work) but the general public usually doesn't. A domain name that doesn't have a dot at the end is not fully-qualified and is potentially ambiguous. This was documented in the DNS specification, RFC 1034, way back in 1987 ..."
but the site works just fine without the trailing dot as well.
In your current environment! And probably in all the environments connected to the Internet. But potentially without the dot it would be perfect valid for this to route elsewhere in someone's environment. :)
EDIT: I learned something new today, adding the trailing dot can be a good idea:
http://homepage.ntlworld.com./jonathan.deboynepollard/FGA/we...
Chrome doesn't accept the certificate when the trailing dot is in the request.
I bet if you configured your site to redirect to a URL with a trailing dot, it would break a lot of badly written robots. I'd be interested to hear about how it affects the major search engines before I'd want to implement it on any important sites.
1) Fast looking up messages sent/received by a particular email address, time, tag, priority, and a handful other properties
and
2) Appending thousands of new messages per second at peak?
As for (2), I know a lot less about indexing messages than I do about storing them, but I would try out an off the shelf SQL or noSQL system and measure the performance, before trying to build anything fancy.
If not for the continuous addition of messages, I'd suggest notmuch (http://notmuchmail.org/), which does a great job of indexing in any way you could want. Unfortunately, as far as I know notmuch does not have an "online" indexing mechanism; someone wrote a notmuch-deliver that adds a message and indexes it, but I doubt it would meet your performance requirements. You could probably make notmuch do what you want, but you might want a new indexing mechanism instead.
I still think you want something very similar to Maildir underneath though.
As for listing and manipulating, I'd suggest not ever listing all the files. Access them by name only, which should require near-constant time no matter how many files you have. Manipulating the files should take similarly little time. On the occasions that you do need to list all the files, you might find https://www.olark.com/spw/2011/08/you-can-list-a-directory-w... interesting.
A pile of RAM helps, to keep as many directory entries in the dcache as possible.
(Or you could always encrypt each email and throw it at an object storage system similar to S3. ;) )
If there's a better term to describe this I'd be glad to learn it.
The biggest problem is read bandwidth for your disks. Write IO is likely to be constrained by available network bandwidth unless you do something stupid. Read bandwidth constraints for e-mail are generally easily mitigated by creating an index (so you only need to open or stat the message files when opening individual messages, not to, say, list message sizes in a POP3 server or present an index view on a web interface).
If you need to list/manipulate those files other than writing them once and reading them when a user actually opens that specific message, or deleting them when the user actually deletes the message, then you're doing something wrong (e.g. you didn't create a sufficiently flexible index).
[1] http://www.djcbsoftware.nl/code/mu, or 'maildir-utils' in debian/ubuntu
I've received received e-mails that were formatted this way, though I'm not sure exactly which software, whether client or server, is responsible for doing it.
As a side effect, this breaks every reader which is unaware of it and handling binary content in mail (many, many messages) or languages or encodings which are space sensitive.
Anyaway, I'm not endorsing the leading-space technique. I'm just observing that it's out there in the wild.
But it beats mdir handily in one way: if you're dealing with mailboxes with 100s of thousands of messages it is way more efficient.
Doing time-machine style rsync backups is also dramatically more space efficient in the maildir case.
A mail-dir, on the other hand, works nicely with this type of backup. All the old mails never change so they get hard-linked and only the new mails take up any new space on the backup.
Do you mean a hard link style backup? Where diffs are never stored, you just keep making hard links of the files? And if they change even one byte you store the file fresh?
There are plenty of solutions to this, the simplest being storing reverse diffs - so the latest file is stored plain, but older ones can be generated from diffs (since doing so is rare).
You can also use modern filesystems like btrfs that can do COW and block de-duplication and store only changed blocks in such a way that the file appears to be complete, but actually stores only what changed.