---
name: "rdeliver"
section: "1"
platform: "linux"
package: "rdeliver"
version: "0.12-2"
release: "Debian 7 (Wheezy)"
platforms: ["linux"]
url: "https://new.carta.tech/rdeliver"
---

# rdeliver(1)

Ruby mail filter script

## NAME

rdeliver - Ruby mail filter script

## SYNOPSYS

**rdeliver** \<options\> \[*script*\]

## DESCRIPTION

This script serves as an example of how you can use the **RFilter::DeliveryAgent** class to perform mail delivery. You can also use this script as a fully functioning mail filter.

This script is a basic mail local delivery agent (**DeliveryAgent**) that can be used in place of procmail, maildrop, etc. in a user's *.forward* or *.qmail* file.  The user supplies a delivery script that is written in Ruby, which avoids the limitations of the crippled mini-languages so often used in other **DeliveryAgent** programs.

## USAGE

**rdeliver** is invoked from the command line using:

% **rdeliver** \<options\> \[*script*\]

The *script* argument is optional. If omitted the script will look for a file called *.rdeliver* in the home directory.

Options are:

- **--load-path** *directory*

  Prepend the given *directory* to ruby's load path.

- **--log** *filename*

  Log to the given *filename*. If no log is specified, no logging occurs.

- **--home** *directory*

  Specify the home directory. **rdeliver** will change to this *directory* before reading and writing any files. The home directory defaults to the value of the  **HOME** or **LOGDIR** environment variable.

## DELIVERY SCRIPT

The delivery script runs in the context of a class called **Deliver** (in contrast, most ruby scripts run in the context of the **Object** class).  So any methods added with  **def** will be added to the **Deliver** class.

A minimal delivery script would be:

 def main\
    agent.save('inbox')\
  end

This code defines a **Deliver#main** method that saves the mail into an mbox style mailbox.

The only API the **Deliver** script has is the **#agent** method.  This retrieves the **RFilter::DeliveryAgent** object associated with the current message. Using the API of the **RFilter::DeliveryAgent** object, you can access and modify the message body and headers, defer or reject the message delivery, and deliver into various mailbox formats.

See also **RFilter::DeliveryAgent** and **Deliver**.

## INSTALLATION

Assuming you have the **RubyMail** mail classes installed, you typically have to put something like this in your *.forward* file:

\|"/usr/bin/rdeliver --log /home/you/.rlog"

This will call **rdeliver** for each new message you get, and log to */home/you/.rlog*.

## CATASTROPHIC ERRORS

The **rdeliver** script is very careful with errors. If there is any problem, it logs the error to the log file you specify. But if you do not specify a log file, or the error occurs before the log file is opened, a record of the error is placed in a file called *CATASTROPHIC\_DELIVERY\_FAILURE* in the home directory. If that fails, the error information is printed to the standard output in the hopes that it will be part of a bounce message. In all cases, the exit code 75 is returned, which tells the MTA to re-try the delivery again.

## AUTHOR

**rdeliver** and **RFilter** support classes were written by Matt Armstrong \<matt@lickey.com\>.

This document was originally an RD format document of **rdeliver** script. This manual page was converted from it for Debian GNU/Linux system.
