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!"
Enough is enough!
I am cutting my hair!
Zip it up and put in on a Jazz disk.
piyvp9vpvgvotrvfkvv9619;æjnjujnjutr Ã¥ou798up pykÃpo8tvkugpjhipiyvp 9 vpvgvotrvfkvv9619;æjnjujnjutr▓ ; Ã¥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Ã` 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Ãρ 9; po8tvkugpjhipiyvp9vpvgvotrvfk vv9619;æjnjujnjutrÃ¥ou798uppykÃ	 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▓ ; Ã¥ou798uppykÃpo8tvkug pj hipiyvp9vpvgvotrvfkvv9619;æj n jujnjutrÃ¥ou798uppykà po8tvkugpjhipiyvp9vpvgvot vfkvv9619;æjnjujnjutrÃ¥ou798upρ 9; pykÃpo8tvkugpjhipiyvp9vpvgvo trvfkvv9619;æjnjujnjutrÃ¥ou798u ppykÃpo8tvkugpjhipiyv p9vpvgvotrvfkvv9619;æjnjujnjut rÃ¥ou798uppykÃp▓ ; 8tvkugpjhipiyvp9vpvgvotrvfkvv 9619;æjnjujnjutrÃ¥ou798uppyk Ãpo8tvkugpjhipiyvp9vpvgv otrvfkvv9619;æjnjujnjutrÃ¥ou798up&# 9619;pykÃpo8tvkugpjhipiy vp9vpvgvotrvfkvv9619;æjnjujnjutrÃ¥o u798uppykÃpo8tvku gpjhipiyvp9vpvgvotrvfkvv9619; æjnjujnjutr
Ã¥ou798uppykà o8tvkugpjhipiyvp9vpvgvotrvfkv v9619;æjnjujnjutrÃ¥ou798uppykÃ` 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Ãρ 9; po8tvkugpjhipiyvp9vpvgvotrvfk vv9619;æjnjujnjutrÃ¥ou798uppykÃ	 619;po8tvkugpjhipiyvp9vpv gvotrvfkvv9619;æjnjujnjutrÃ¥ ou 798u
ppykÃpo8tvkugpjhipiyvp9vpv&# 9619;gvotrvfkvv9619;æjnjuj njutrÃ¥ou798uppykÃpo8 tvkugpjhipiyvp9vpv
it's the wave of the future!!
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.
fuck you you assmuching piece fo slaskhdot crap motherfucker
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!
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!
I sense hostility, captain...
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
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!
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/
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
Just edit your .procmailrc:
:0
/dev/null
And all your problems are solved.
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.
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.