Mailman Midterm Update
Mailman is my Ruby Summer of Code project. It’s an incoming email processing microframework. The basic functionality is to receive messages, and route them to blocks of code based on conditions.
Before Mailman, there was no standard way of processing incoming emails in Ruby. Many Rails apps use one-off IMAP or POP3 pollers. Mailman aims to replace them with its Rails integration, and upcoming ActionMailer integration.
The DSL is inspired by Sinatra. For example, here is a Mailman route that takes a reply via email to a support ticket, and adds it to the database:
to 'ticket-%id%@vipsupport.com' do
Ticket.find(params[:id]).add_reply(message)
end
Conditions (like to) and matchers like the StringMatcher above are all
modular, and it is very easy to write more. Currently there are String and
Regexp matchers and conditions for most basic email components.
Features
Complete
- Router
- Basic Conditions
- Matchers
- DSL
- Configuration system
- POP3 Receiver
- Standard input receiver
- Maildir receiver
- Rails environment loading
- Basic Documentation
- Debug logging
Incomplete
- ActionMailer integration
- Bounce Detection
Thanks
I’d like to thank these organizations/people:
Ruby Summer of Code and all their sponsors for the financial support that allows me to put time into the project.
My mentor Steven Soroka for the motivation and advice that has helped me get this far.
Shopify for providing a desk to work at and great developers to bounce ideas off of.
Engine Yard for their donation of RailsConf tickets to RSoC.