"distribution" is a message and data processing tool. It can retrieve, edit, replicate and send messages or data in different ways.

"distribution" allows to define and process messages (mainly email) and data through a chain of processors described in simple XML. It may be used to build a mailing lists, fax gateways, email filters, PDF mailing combinators, report systems and many other processes.

"distribution" is extensible, so new message sources and operations can be added with less effort and without affecting the rest of the system.

What can I do with distribution?

There are many different scenarios where "distribution" can be used to do the job:

  • Distribution lists (mail replication)

    A Mailing List consists of, in a general form, of a set of recipients that receive every message sent to a particular mailbox.

    Representing this process in distribution is easy. Some examples are already included in the package so you can copy one of them and configure some properties to have your mailing list working in minutes.

  • Filtering

    Diverse filtering processes can be modelled used distribution. Using the Unified Expression Language is fast to express your filtering criteria.

  • Mailings

    Distribution can retrieve data from different sources. Combined with a common mailing list, you can generate mailings with a message stored in a text file, resumes from rss feeds or html pages, and many other resources. You can easily personalize a message for its recipient (in example, including his or her name in the message) with data retrieved from any other source.

    Furthermore, you can improve your list adding your company's logo in a footer to every message, attaching a signature, make a backup of the messages, generate statistics about the list...

    This kind of message replication is not restricted to mail messages. In example, you can use it to combinate a set of addresses or customer information from a database with a PDF document, obtaining a set of PDF documents personalized with the customer information.

  • ELT processes, data mining...

    Distribution provides different ways to fetch data and combine it to create messages. In a similar way in which a processing node is configured to fetch messages from a mail server, a node can be configured to make a SQL query to a database, read a CSV file, process XML or plain data from a HTTP source and create a report with that. The report message can then be sent or stored.

    This can be used to make queries on data from heterogeneous datasources.

    You can easily generate reports with "distribution". Combined with the scheduler handler, you can have reports sent in a regular basis.

Using "distribution"

Links to the quick-start and config examples.

Links to the plugins reference.

Links to the architecture documentation.

Running "distribution"

"distribution" is by default a CLI (Command Line Interface) application. When run, it performs a process (like fetching mail from a POP3 server and sending it to another mailbox).

It can be run from the command line or scheduled by the operating system. It can also be integrated into most MTA (like Postfix or Exim) using pipes.

Also, different options to run as a daemon (to improve performance) are being subject of study (proposals are welcome).

For information on installing and running "distribution" see Deploying distribution.

Distribution is not only about processing mail

The way in which the term 'message' is used along the documentation and the source code may lead the reader to think that only internet mail messages can be processed using "distribution".

Far from this, a message is in fact just a piece of information which is routed and processed through a set of operations. Many information processes can be modelled this way.

In this sense, distribution could probably fall in the category of ETL tools. ETL (Extract - Transform - Load) is a processing paradigm that defines processes that fetch data from various sources, operate with it, and store the results somewhere.

Distribution is oriented to help in "message" processing, so users will probably find it more suited to be used in this scenario. There are, however, many other situations where "distribution" can be an adequate tool to implement a solution.

Whenever you are using "distribution" to process mail or for any other purpose, we would love to hear from you and what you or your company are doing with it.

If you find distribution useful, please send a mail to jjmontes@users.sourceforge.net and tell us about your experience with distribution, this will help us make it a better product!

Related Work / Links