Configuration Directives for the Mithril Delivery Pipe

The Delivery Pipe configuration file is typically /etc/mithril/dpipe.conf. The configuration is split into several sections.

Before

The "before" section indicates delivery modules that should be run before message delivery. These modules are free to mark up the message before delivery, trigger side effects, or bounce the message. The only valid key in this section is the "module" key. There may be zero or more module keys; each one specifies a unique module name (referred to as a "module tag") that should be executed in the order defined.

After

The "after" section indicates delivery modules that should be run after message delivery. These modules should not mark up the message or attempt to bounce it (any such attempts will be ignored), but they may trigger side effects based on the message delivery status. The only valid key in this section is the "module" key. There may be zero or more module keys; each one specifies a unique module name (referred to as a "module tag") that should be executed in the order defined.

Global

Keys that are applicable to all modules or to the delivery process are defined in the "global" section. Any key that can be used by a module may be defined here or overridden in the module's individual configuration section. Some used keys are:

domain
This key specifies the mail domain for modules. If this option is not set, the value of gethostname() is used.
deliver
This key specifies a program to which mail can be delivered. This program must accept the message over stdin with EOF indicating the end of the message. The program should accept a single command line argument of the user name to whose INBOX the message should be delivered.

Module Configuration

Each module may be configured separately. The configuration sections are labeled by the keyword "module" followed by a module tag (defined in the before or after section). For example, a module reference of the form "module = foo" would have a module tag of "foo" and find its configuration in the "module foo" section.

Keys are interpreted with respect to individual modules. Only one key is uniformly interpreted: the path key. This key indicates the path to the dynamic module which will be loaded and executed. If the pathname is absolute, the absolute file will be used; if relative, it will be interpreted relative to the compile-time MODULE_DIR parameter (which defaults to the library directory where modules were installed).