README.rdoc

You pipe from here, to a process that runs over there. Pipemaster forks,
redirects and runs your command.

Why

I've got a short task I want to perform. To validate an incoming
email, parse the message and store the results in the database(*). I setup
Postfix to pipe incoming emails into a Ruby script.

Ruby processes are fairly cheap, until you get into loading the mail
library, the database library, the ORM, the application logic, the … you
get the picture.

I use Pipemaster to fire up the main process once, and the Pipemaster
client to run commands on that server. Still have to make sure the code is
light and fast, but I did eliminate the significant initialization
overhead.

As you can guess, Pipemaster supports piping input and output streams, and
uses forking (sorry Windows; for JRuby see Nailgun).

Processing emails as they come allows the application to reject
unauthorized senders immediately by replying with an SMTP code. The
alternative, accepting the email and later on sending a bounce, leads to
backscatter (see en.wikipedia.org/wiki/Backscatter_(e-mail)).