[Haskell-cafe] who's in charge?

Jeremy Shaw jeremy at n-heptane.com
Fri Oct 29 00:52:47 EDT 2010


On Oct 27, 2010, at 10:08 AM, Günther Schmidt wrote:

> Dear Malcolm,
>
> since there is no mail client library even after 10+ years I suggest  
> to rethink the approach, because frankly, it's not working.

Hello!

I am in charge, sorry for the delay!

A number of years ago I tried to form a MIME strike force to create  a  
library that would be suitable for composing mail messages, decoding  
mail messages, or transforming mail messages. But received no real  
interest:

http://www.mail-archive.com/haskell-cafe@haskell.org/msg21872.html

The fact that it is now considered an oddity (by some) that there is  
no standard, well support mail library is a sign of great progress in  
my opinion.

The driving force is likely to be web development platforms such as  
happstack, snap, and yesod, because one often wants to integrate email  
with a web site. (such as send emails to members, etc).

That said, there have been many attempts at various portions of the  
mail infrastructure over the years.

As part of that strike force attempt I create this mime library (not  
on hackage):

http://src.seereason.com/haskell-mime/

It can parse and decode multipart messages. And it has the beginning  
of an interface for composing messages. One thing I attempted to do  
was create a mail composition DSL that only allowed you to construct  
valid messages. For example, some headers can only appear once, and  
others can appear multiple times. So I attempted to encode that into  
the DSL. I was successful to some degree.

There is also the mime-string library on hackage which does MIME  
parsing.

There is the new mime-mail library for creating and sending MIME  
messages.

happstack had the beginnings of a MTA at one point in time, but was  
removed until someone comes along with the desire and time to really  
implement it.

There is the Postmaster ESMTP server,

http://gitorious.org/postmaster

which acts as a MDA for receiving mail and filtering it into folders.  
It allows you to write your filtering rules in Haskell instead of some  
obtuse filter language (e.g., procmail).

And there are other projects I have not mentioned as well.

I guess part of the question is, do you specifically mean a 'mail  
client'. There are a lot of pieces to the mail puzzle including, MUA,  
MTA, MDA, MIME, etc.  And there is the reading of saved mail formats  
like mbox, Maildir, etc. And then there are the various protocols like  
SMTP, POP3,  IMAP4, etc. And things like GPG signatures and encryption.

Using the libraries that are available right now I can create a mime  
email and send it via sendmail or via an SMTP smart host. I can also  
use a well established program like dovecot to receive mail and then  
decode messages using mime-string on haskell-mime.  That gets me  
pretty far for what I need to do.

Writing a competitor to mutt or gmail would be more difficult due to  
some missing pieces. But, then again, I think most people are  
satisfied enough with mutt and gmail, so not many people have any  
motivation to replace them. Same thing with a competitor to qmail/ 
dovecot/etc. Those tools are in place and work pretty well. So,  
replacing any of those really only becomes interesting if you are  
going to do something really new -- not just implementing them in your  
favorite language.

Anyway, I do think there will be growth in the haskell mail library  
domain. Specifically the stuff that would be useful for integration  
with web applications.

  - jeremy


More information about the Haskell-Cafe mailing list