Slashdot Mirror


Improving Unix Mail Storage?

At first, there was mbox, then there was Maildir, and Bill begat Outlook and .mbx. CaraCalla wonders if there is a better way to store mail than the way we currently store it today. I admit, with the changes that email has undergone over the past 5 years (changes in what is being sent, not necessarily in how it is sent), it may be time to reinvent the mail format. Read on for CaraCalla's analysis of the current mail options, and his thoughts on where we may go in the future. If you were to design your own MUA, how would you design its mail storage? CaraCalla asks: "Does anybody know a good, free solution for storing mail on unix hosts? The reason that I ask this question is my discontent with available techniques:
  • mbox: There are problems with locking, corruption, access-times, and bloat.
  • Maildir: Do you really want to clutter your system with millions of small files? That's waste of inodes, space (unless perhaps you use Linux/ReiserFS or SGi) and just try to open a Maildir with 1000+ mails and see how long it takes your favorite Mailprogram to only display the subjects.
  • Cyrus: Basically the same as Maildir with database features.
  • UW-Imap mbx: That's classical mbox with extensions allowing multiple access.
  • Evolution: Basically mbox with database features.
  • Windows clients: Typically some proprietary db-format. Pathetic.

But the thing that bugs me most is disk space. Typical inboxes are made of 5% to 10% of Text including Headers and HTML. The rest are BASE64- (or UU-) encoded pictures, word documents, zip archives and so on. The problem here is the encoding which wastes considerable amounts of space (at least one third).

Some ideas about the ideal mail-storage:

  • One file per Mailbox-folder, allowing multiple folders per user. Should those files reside in one central location or in users Homedirs?
  • Compression: Should messages be broken into pieces and the MIME-attachments stored separately (thus searching of the text parts would still be possible without decompressing the whole file)?
  • File format: gdbm, Sleepycat db? Something new?
  • Should the security model allow users to directly access their files, grep them, copy them around?
  • Shared folders, virtual domains?
  • Unicode support in folder names? Imap message-IDs, flags, useragent specific state-information?
  • How would MTAs deliver mail? How would clients access? File-locking (NFS)?
  • What about backwards-compatibility? Writing libmailstore (anyone)? adopting UW c-client?

Does my ideal mailstorage exist somewhere? Is somebody working on a project addressing this? Does anybody have some other hints? And please no mbox/Maildir flamewar!"

19 of 554 comments (clear)

  1. Time to cut my hair by Anonymous Coward · · Score: -1, Offtopic

    Enough is enough!
    I am cutting my hair!

    1. Re:Time to cut my hair by raiyu · · Score: -1, Offtopic

      Mullets arent in?! Well shit Im gonna get a cut tomorrow. ^_^

  2. Better storage. by Anonymous Coward · · Score: -1, Offtopic

    Zip it up and put in on a Jazz disk.

    1. Re:Better storage. by Anonymous Coward · · Score: -1, Offtopic

      OR jazz it up and put it on a Zip disk?

  3. First Crapflood! by Anonymous Coward · · Score: -1, Offtopic
    gvotrvfkvv9619;æjnjujnjutrÃ¥ou798up pykÃpo8tvkugpjhip iyvp9vpvgvotrvfkvv9619;

    piyvp9vpvgvotrvfkvv9619;æjnjujnjutr Ã¥ou798up pykÃpo8tvkugpjhipiyvp 9 vpvgvotrvfkvv9619;æjnjujnjutr&#9619 ; Ã¥ou798uppykÃpo8tvkug pj hi

    piyvp9vpvgvotrvfkvv9619;æjn jujnjutråou798uppykà po8tvkugpjhipiyvp9vpvgvot vfkvv9619;

    æjnjujnjutrÃ¥ou798up pykÃpo8tvkugpjhipiyvp9vpvgvo trvfkvv9619;æjnjujnjutrÃ¥ou798u ppykÃpo8tvkugpjhipiyv p9vpvgvotrvfkvv9619;æjnjujnjut r

    Ã¥ou798uppykÃpo 8tvkugpjhipiyvp9vpvgvotrvfkvv 9619;æjnjujnjutrÃ¥ou798uppyk Ãpo8tvkugpjhipiyvp9vpvgv otrvfkvv9619;æjnjujnjutrÃ¥ou798u

    ppykÃpo8tvkugpjhipiy vp9vpvgvotrvfkvv9619;æjnjujnjutrÃ¥o u798uppykÃpo8tvku gpjhipiyvp9vpvgvotrvfkvv9619; æjnjujnjutr

    Ã¥ou798uppykà o8tvkugpjhipiyvp9vpvgvotrvfkv v9619;æjnjujnjutrÃ¥ou798uppykÃ&#96 19;po8tvkugpjhipiyvp9vpvgvotr vfkvv9619;æjnjujnjutrÃ¥ou7 98uppykÃpo8tvkugpjhip iyvp9vpvgvotrvfkvv9619;æjnjujn jutrÃ¥ou798uppykÃpo8t vkugpjhipiyvp9vpvgvotrvf kvv9619;æjnjujnjutrÃ¥ou798up py kÃpo8tvkugpjhipiyvp9vpv votrvfkvv9619;æjnjujnjutrÃ¥ou798up& #9619;pykÃ

    po8tvkugpjhipi yvp9vpvgvotrvfkvv9619;æjnjujnjutrÃ¥ ou798uppykÃpo8tvk ugpjhipiyvp9vpvgvotrvfkvv9619 ; jnjujnjutrÃ¥ou798uppykÃ&#961 9; po8tvkugpjhipiyvp9vpvgvotrvfk vv9619;æjnjujnjutrÃ¥ou798uppykÃ&#9 619;po8tvkugpjhipiyvp9vpv gvotrvfkvv9619;æjnjujnjutrÃ¥ ou 798uppykÃpo8tvkugpjhi piyvp9vpvgvotrvfkvv9619;æjnjuj njutrÃ¥ou798uppykÃpo8 tvkugpjhi

    piyvp9vpvgvotrvfkvv9619;æjnjujnjutr Ã¥ou798uppykÃpo8tvkug pjhip iyvp9vpvgvotrvfkvv9619;æjnjujnjutrà ¥ou798uppykÃpo8tv kugpjhipiyvp9vpvgvotrvfkvv961 9;æjnjujnjutrÃ¥ou798uppykÃp o8tvkugpjhipiyvp9vpvgvotrvfkv v9619;æjnjujnjutr

    Ã¥ou798up pykÃpo8tvkugpjhipiyvp 9 vpvgvotrvfkvv9619;æjnjujnjutr&#9619 ; Ã¥ou798uppykÃpo8tvkug pj hipiyvp9vpvgvotrvfkvv9619;æj n jujnjutrÃ¥ou798uppykà po8tvkugpjhipiyvp9vpvgvot vfkvv9619;æjnjujnjutrÃ¥ou798up&#961 9; pykÃpo8tvkugpjhipiyvp9vpvgvo trvfkvv9619;æjnjujnjutrÃ¥ou798u ppykÃpo8tvkugpjhipiyv p9vpvgvotrvfkvv9619;æjnjujnjut rÃ¥ou798uppykÃp&#9619 ; 8tvkugpjhipiyvp9vpvgvotrvfkvv 9619;æjnjujnjutrÃ¥ou798uppyk Ãpo8tvkugpjhipiyvp9vpvgv otrvfkvv9619;æjnjujnjutrÃ¥ou798up&# 9619;pykÃpo8tvkugpjhipiy vp9vpvgvotrvfkvv9619;æjnjujnjutrÃ¥o u798uppykÃpo8tvku gpjhipiyvp9vpvgvotrvfkvv9619; æjnjujnjutr

    Ã¥ou798uppykà o8tvkugpjhipiyvp9vpvgvotrvfkv v9619;æjnjujnjutrÃ¥ou798uppykÃ&#96 19;po8tvkugpjhipiyvp9vpvgvotr vfkvv9619;æjnjujnjutrÃ¥ou7 98uppykÃpo8tvkugpjhip iyvp9vpvgvotrvfkvv9619;æjnjujn jutrÃ¥ou798uppykÃpo8t vkugpjhipiyvp9vpvgvotrvf kvv9619;æjnjujnjutrÃ¥ou798up py kÃpo8tvkugpjhipiyvp9vpv votrvfkvv9619;æjnjujnjutrÃ¥ou798up& #9619;pykÃpo8tvkugpjhipi yvp9vpvgvotrvfkvv9619;æjnjujnjutrÃ¥ ou798uppykÃpo8tvk ugpjhipiyvp9vpvgvotrvfkvv9619 ; jnjujnjutrÃ¥ou798uppykÃ&#961 9; po8tvkugpjhipiyvp9vpvgvotrvfk vv9619;æjnjujnjutrÃ¥ou798uppykÃ&#9 619;po8tvkugpjhipiyvp9vpv gvotrvfkvv9619;æjnjujnjutrÃ¥ ou 798u

    ppykÃpo8tvkugpjhipiyvp9vpv&# 9619;gvotrvfkvv9619;æjnjuj njutrÃ¥ou798uppykÃpo8 tvkugpjhipiyvp9vpv

  4. xml of course! by Anonymous Coward · · Score: -1, Offtopic

    it's the wave of the future!!

  5. and now for some politeness. by Anonymous Coward · · Score: -1, Offtopic

    Good evening, how do you do? I would be most appreciative if you could offer me some suggestions on how to improve this post.
    Thank you very much.

  6. LICK MY BALLS FUCKTARD by Anonymous Coward · · Score: -1, Offtopic

    fuck you you assmuching piece fo slaskhdot crap motherfucker

  7. HEY NOW! GOD DAMN YOU FUCKTARD!!!!! by Anonymous Coward · · Score: -1, Offtopic

    how dare you reply to me, using the orijinal subgect! fucktard is my word, i fucking clpyrighted it u piece of shit, and i'm gonna find out who the fuck you are and sue u till u cream uncle u piece of shit! fuck you! just fuck you! god damn you! i hate you you piece of dogshit! you are fucking scum! fuck you! fuck you!

  8. HEY NIGGER FUCKTARD! by Anonymous Coward · · Score: -1, Offtopic

    nigger! i ain't no goddamn nigger u fucking moron! if i was a nigger i wouldn't hace a fucking cimputer and be fucking on slashdhot pisting u piece of dogshit! fuck off! u stupid shit! i hate your! lick dogshit! fuck you! u are a piece of putrid stench!

    1. Re:HEY NIGGER FUCKTARD! by Anonymous Coward · · Score: -1, Offtopic

      Grow up punk.

      And next time I drive through the pickup window, NO PICKLES retard. And give me some fucking ketchup with my fries.

  9. Re:morons by Anonymous Coward · · Score: -1, Offtopic

    I sense hostility, captain...

  10. THE POOR FUCKTARD! by Anonymous Coward · · Score: -1, Offtopic

    i have more fucking money thal u'll ever see in ur entire life u stupid fucktard my daddy is ruich and u are a poor IT motherfucker out of a job ! fuck

  11. NEGROIDAL FUCKTARD by Anonymous Coward · · Score: -1, Offtopic

    is that even a fucking word you piece of shit?! fuck you! i'm coming out of the boooooth! piece of shit! you fucking lush!

  12. Spam Assassin!!! by swimfastom · · Score: 1, Offtopic

    SPAM is a burden to everyone. As a system admin, I was told to do something about it. After some research, the best solution was to impliment SpamAssassin on our linux mail server. I tried sendmail SPAM filters, procmail rules, etc. SpamAssassin is undoubtedly the best solution and I recommend it to everyone. It needs to be implimented at the server level, so email your ISP if you don't have root access. It is a simple perl script that can be run with sendmail (using a C++ version) or in procmail (perl). It is very easy to setup using perl CMOS.

    How does it work so well? Spamassassin checks the headers and body of every email passing in to the mail server. It searches the email for certain keywords and phrases and other SPAM characteristics and assigns points to the email based on these. It works very well and has many options --including the ability to have "black lists" and "white lists" in file glob format.

    So far I have blocked about 94% of the SPAM coming in through our mail server. It only misses a couple and is highly configurable! Download and install it!

    Cheers,
    Tom

    --
    http://tomgould.com/
  13. Re:Stench by Anonymous Coward · · Score: -1, Offtopic


    Dear:
    [ ] Clueless Newbie [X ] Lamer [ ] AOLer
    [ ] "Me too" er [X ] Pervert [ ] Geek
    [ ] Spammer [ ] Nerd [ ] Elvis
    [ ] Fed [X ] Freak [ ] Cryogenic
    [ ] Scammer [ ] Troller [ ] Pre-teen

    You Are Being Flamed Because:
    [ ] You posted MODs in pieces LESS than 5000 lines
    [ ] You posted something asking for warez sites
    [ ] You quoted an ENTIRE post in your reply
    [ ] You continued a long, stupid thread
    [X ] You started an off-topic thread
    [ ] You posted a "YOU ALL SUCK" message
    [ ] You posted a blatently obvious troll
    [ ] You posted pretending to be someone famous (See "troll" above)
    [ ] You replied to the above message type believing it was someone famous
    [ ] You said "me too" to something
    [X ] You make no sense
    [ ] Your sig/alias/server is dreadful
    [ ] You posted a phone-sex ad
    [ ] You posted a stupid pyramid money making scheme and claimed it was legal
    [ ] I think you might be a fed
    [ ] You posted in ElItE CaPiTaLs because you think that makes you cool
    [ ] You didn't do anything specific, but appear to be so generally
    worthless that you are being flamed anyway

    To Repent, You Must:

    [X ] Stop masterbating
    [X ] Give up your AOL account
    [X ] Bust up your modem with a hammer and eat it
    [X ] Tell your Mommy to up your medication
    [X ] Jump into a bathtub while holding your monitor
    [ ] Actually post something relevant
    [ ] Read the FAQ
    [X ] Be the guest of honor in alt.flame for a month

    In Closing, I'd Like to Say:

    [X ] Get Wrecked
    [X ] Get a life
    [X ] Never post again
    [ ] Age 10 more years before you post again
    [X ] I pity your dog
    [X ] Go tell your mother/father/test tube they failed
    [X ] Yer momma's so fat/stupid/ugly that etc...
    [X ] Take your gibberish somewhere else
    [X ] Get a clue, you pathetic loser
    [X ] Learn to post or get off slashdot
    [X ] All of the above

  14. Perfect file format by kinthalas · · Score: 1, Offtopic

    Just edit your .procmailrc:

    :0
    /dev/null

    And all your problems are solved.

  15. The trouble with e-mail by os2fan · · Score: 1, Offtopic
    The main hassle I have with email is that there is little thought given to official positions. Under snail mail, I could write to "recruitment" or "finances", and expect my mail to get to the right area.

    Very few systems give alternate functional views to different views. In order to send a letter to a section, I'd have to find out a name of a person in the section, send it to that person's email, and then hope that person is in.

    What is needed is a parallel view where people can add functions to their role (at user level, for example).

    So an email to recruitment@sample.com will get to the recruitment folder, and any of the recruitment officers can deal with it.

    The only way around this is then to look at the issue of spam. If everyone has a "recruitment" address, then one could send out mail to "recruitment@[each domain]" a lot easier than getting the right name for each domain.

    The idea is that a section inbox should be available to a section, and not an individual, and that people in the section should be given access when appropriate. A section would then retain the same name, regardless of the personnel making it up.

    None of the mail systems that I see grasp this point.

    One could have view sets, which are alternate tree structures, with the accounts at the leaf objects. One could be in the flat "name" tree, or access the personnel\recruitment intray, or whatever.

    --
    OS/2 - because choice is a terrible thing to waste.
  16. Re:begat by Anonymous Coward · · Score: -1, Offtopic

    Fucktard's a pissa word, but it should be spelt like it's pronounced in Boston, Fucktahd. Ex. "Go pahk the cah you fucktahd."

    Too bad "begat" really is a word, and the fucktard is you.