PIPE Module |
||||||||||||||||||||||||||||||||||||||||||||
|
The PIPE module scans this folder periodically, and processes the files with the .sub file name extension. When such a file is found, the module copies it into a message queue file and submits that file to the Server kernel for processing.
The .sub text files should contain messages in the RFC822 format. The module uses the data in the RFC822 header fields to compose the message envelope.
If processing of a .sub file fails (for example, if the file does not have any recipient address), the module places a record into the System Log, and changes the file extension to .bad.
If the .sub file is submitted successfully, the file is deleted from the Submitted folder.
Because of the way the PIPE module processes the Submitted folder, it is recommended either to compose messages in a different folder and then move the composed .sub files to the Submitted folder, or to compose messages in the Submitted folder, in files with the .tmp file name extension, and then change the file name extension to .sub.
Messages submitted via the PIPE module are marked as "received from a trusted source", so they can be relayed without restrictions.
The Submitted folder is used for Legacy Mail Emulation.
The local part of the message address is specifies the external application to launch. The part can contain parameters, and can be enclosed into the quotation marks.
You usually use the PIPE delivery via the Router:
<*@somedomain> = exec*@pipe
this Router record will direct messages sent to the joe@somedomain address to
the execjoe application.
<*@somedomain> = "execall\ -u\ *"@pipe
this Router record will direct messages sent to the joe@somedomain address to
the execall application started with the -u joe parameters.
Unlike the Automated Rules Execute operation, the PIPE delivery operation starts ANY program specified outside the server (in the message address).
To limit the set of applications that can be started via the PIPE module, the external application directory is specified as one of the PIPE module settings. The application names specified in message addresses can not include the slash (/) or the backslash (\\) symbols, and they cannot start with the dot (.) symbol.
The message text (including the message headers and the message body) is passed to the external application as its standard input.
The PIPE module discards the external application standard output.
If the external application has written any text to its standard error channel, the message delivery fails, and the standard error text is sent to the message sender.
In order to allow several PIPE processors to deliver messages simultaneously, the PIPE module creates a separate queue for each message it has to deliver. If you want to serialize processing, you can use the following form of the PIPE address:
"queue[name] application parameters"@pipe
All messages directed to these addresses will be placed into the name queue, and a single PIPE processor will send the enqueued messages to the application(s) specified in those addresses. You can use any alphanumeric string as a queue name, and you can specify as many queues as you need.
All messages sent to the <incoming@maindomain.com> and <control@maindomain.com> will be processed one-by-one using one PIPE processor.
For PIPE addresses that do not have the queue[name] prefix, the PIPE module creates separate queues with numeric names.