astrotrain

NOTE: Astrotrain is a full gem now. If you're looking for the old Astrotrain on merb: http://github.com/entp/astrotrain/tree/merb git://github.com/entp/astrotrain.git (merb branch)

Scans incoming emails for mapped recipients and sends an HTTP POST somewhere.

# setup a config file.
# Point the queue_path at a directory that your mail server dumps each raw incoming mail.
require 'astrotrain'

Astrotrain.load path do
DataMapper.setup(:default, {
  :adapter  => "mysql",
  :database => "astrotrain",
  :username => "root",
  :host     => "localhost"
})
end
Astrotrain::Message.queue_path = "/path/to/maildir"
Astrotrain::Mapping::Transport.processing = true

# start up IRB
irb -I /var/astrotrain/lib -r config.rb

# manage mappings
LIB=/var/astrotrain/lib CONFIG=config.rb rake at:mappings
LIB=/var/astrotrain/lib CONFIG=config.rb rake at:map EMAIL=support@foo.com DEST=http://foo.com/email
LIB=/var/astrotrain/lib CONFIG=config.rb rake at:unmap MAP=123

# start the server that runs over the queue directory
LIB=/var/astrotrain/lib CONFIG=config.rb rake at:process

# start the sinatra API
ruby -I /var/astrotrain/lib /var/astrotrain/lib/astrotrain/api.rb config.rb

A single Astrotrain process currently handles email for two production applications, processing thousands daily. It's far from perfect, but definitely usable.

TODO

Docs bounced emails (i've been rolling with http://github.com/whatcould/bounce-email for now) Mail gem, TMail is old school