[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