---
name: "Courier::Filter::Module::Envelope"
section: "3pm"
platform: "linux"
package: "courier-filter-perl"
version: "0.200+ds-6"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Courier::Filter::Module::Envelope"
---

# Courier::Filter::Module::Envelope(3pm)

Message envelope filter module for the Courier::Filter framework

## NAME

Courier::Filter::Module::Envelope - Message envelope filter module for the Courier::Filter framework

## SYNOPSIS

```
    use Courier::Filter::Module::Envelope;
    my $module = Courier::Filter::Module::Envelope->new(
        fields      => {
            # One or more of the following fields:
            sender              => 'paul.greenfield@unisys.com',
            recipient           => 'julian@mehnle.net',
            remote_host         => '216.250.130.2',
            remote_host_name    => qr/(^|\.)php\.net$/,
            remote_host_helo    => qr/^[^.]*$/
        },
        # Optionally the following:
        response    => $response_text,
        logger      => $logger,
        inverse     => 0,
        trusting    => 0,
        testing     => 0,
        debugging   => 0
    );
    my $filter = Courier::Filter->new(
        ...
        modules     => [ $module ],
        ...
    );
```

## DESCRIPTION

This class is a filter module class for use with Courier::Filter.  It matches a message if one of the message's envelope fields matches the configured criteria.

### Constructor

The following constructor is provided:

- **new(%options)**: returns *Courier::Filter::Module::Envelope*

  Creates a new **Envelope** filter module.

  `%options` is a list of key/value pairs representing any of the following options:

  - **fields**

    *Required*.  A reference to a hash containing the message envelope field names and patterns (as key/value pairs) that messages are to be matched against. Field names are matched case-insensitively.  Patterns may either be simple strings (for exact, case-sensitive matches) or regular expression objects created by the `"qr//"` operator (for inexact, partial matches).

    The following envelope fields are supported:

    - **sender**

      The message's envelope sender (from the "MAIL FROM" SMTP command).

    - **recipient**

      Any of the message's envelope recipients (from the "RCPT TO" SMTP commands).

    - **remote\_host**

      The IP address of the SMTP client that submitted the message.

    - **remote\_host\_name**

      The host name (gained by Courier through a DNS reverse lookup) of the SMTP client that submitted the message, if available.

    - **remote\_host\_helo**

      The HELO string that the SMTP client specified, if available.

    So for instance, to match any message with a sender of `"paul.greenfield@unisys.com"`, directed at `"julian@mehnle.net"` (possibly among other recipients), you could set the `"fields"` option as follows:

    ```
        fields      => {
            sender      => 'paul.greenfield@unisys.com',
            recipient   => 'julian@mehnle.net'
        }
    ```

  - **response**

    A string that is to be returned literally as the match result in case of a match.  Defaults to **"Prohibited \<field\>: \<value\>"**.

  All options of the **Courier::Filter::Module** constructor are also supported. Please see "**new()**" in Courier::Filter::Module for their descriptions.

### Instance methods

See "Instance methods" in Courier::Filter::Module for a description of the provided instance methods.

## SEE ALSO

Courier::Filter::Module::Header, Courier::Filter::Module, Courier::Filter::Overview.

For AVAILABILITY, SUPPORT, and LICENSE information, see Courier::Filter::Overview.

## AUTHOR

Julian Mehnle \<julian@mehnle.net\>
