Friday, July 13, 2007

(Pre-)announcement: transport-smtpin, an embedded e-mail server for Mule

I am proud to (pre-)announce the open source project: transport-smtpin. Transport-smtpin acts as an embedded e-mail SMTP server for the Mule ESB implementation. Under the cover transport-smtpin uses SubEthaSMTP Mail Server (the last freaking java SMTP implementation).

I'll post a download location as soon as I am convinced the implementation is stable (should not take long). Please let me know if you are interested. It will be released under something like the Mozilla Public License Version 1.1.

Update 2007-07-16: This code was sponsored by Uzorg BV.

Update 2007-07-17: A project proposal was made on MuleForge.

Update 2007-8-12: The project has been accepted by MuleForge: mule-transport-smtpin project page. There is no code there yet. It seems to work for me, but not all features are thoroughly tested, nevertheless I'll try to upload the code this week so that more people can play with it.

A bit of history
Transport-smtpin came about when I was searching for a way to directly receive e-mails. In the Dutch health-care a much used standard (mis-)uses e-mail as a request-response protocol: the OZIS standard. The actual messages are in an attachment and are defined by one of many Edifact variants.

In the system I am currently working on, there is actually a person waiting for the answer in such a OZIS request-response cycle. So receiving the responses by polling a POP server would incur an unacceptable overhead.

In an earlier attempt to get e-mail directly we used Apache James. Our mailet installed in James passes received e-mails immediately to our ESB with a Hessian web service. Though writing a mailet is quite easy, this set-up has some serious disadvantages:

  • Installing and configuring James for this task is not easy nor straightforward.
  • In a cluster, we need to either install one James per cluster node, or devise some way to redirect e-mails to the right cluster node.
In an attempt to get rid of James I stumbled upon SubEthaSMTP Mail Server. SubEthaSMTP is a quite easy to use SMTP server implementation.

As we are using Mule, it would be neat if SubEthaSMTP could be configured as a transport. It took me 3 days (mostly to read Mule documentation), but the result is there: my very first open source project.

8 comments:

  1. Hi, This sounds interesting. We have a MuleForge in the works that would be a good place to host this project. If you're interested please send an email to support@muleforge.org (Please note that we are cleaning up and re-skinning the MuleForge web site)

    ReplyDelete
  2. For those interested, I reacted positively as I believe that MuleForge sounds like an excellent place for collecting Mule contributions.

    ReplyDelete
  3. Eric,

    Have you hosted this project already? If yes, could you post a link?

    ReplyDelete
  4. Mohan,

    Nice to know someone is interested! I'll try to post the code early this week. You can find the URL in an update of the post.

    ReplyDelete
  5. I'd use that. I'm trying to use mule as an email proxy and that would be just the thing.

    ReplyDelete
  6. Hi Erik,

    Very interesting ! This is the kind of development I need for my project.

    Do you know if there is a chance that this transport can be bring to mule 2.x ?

    Thanks in advance

    ReplyDelete
  7. Hello taharqa. It should be easy, feel welcome to grab the code and do it yourself.

    ReplyDelete
  8. Hi Erik,

    yep you're right yesterday after seeing your source code and the mule 2.x documentation the "portage" (if any) should be easy. From what I see perhaps your code is always good.

    I don't know I will do this now but in the next month yes. I will keep you informed in this thread.

    Taharqa

    ReplyDelete