---
name: "Mail::MtPolicyd::Request"
section: "3pm"
platform: "linux"
package: "mtpolicyd"
version: "2.05-1.2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Mail::MtPolicyd::Request"
---

# Mail::MtPolicyd::Request(3pm)

the request object

## NAME

Mail::MtPolicyd::Request - the request object

## VERSION

version 2.05

## ATTRIBUTES

### attributes

Contains an HashRef with all attributes of the request.

To retrieve a single attribute the attr method could be used:

```
  $obj->attr('sender');
```

### session

Contains a HashRef with all values stored in the session.

mtpolicyd will persist the content of this HashRef across requests with the same instance\_id.

### server

Contains the Net::Server object of mtpolicyd.

### type

The type of the request. Postfix will always use 'smtpd\_access\_policy'.

### use\_caching

Could be used to disable caching. Only used within the unit tests.

## METHODS

### dump\_attr

Returns an string to dump the content of a request.

### get($variable\_name)

Retrieve value of a session or request variable.

The format for the variable name is

```
  (<scope>:)?<variable>
```

If no scope is given it default to the request scope.

Valid scopes are:

- session, s

  Session variables.

- request, r

  Request attributes.

For example:

```
  $r->get('request:sender'); # retrieve sender from request
  $r->get('r:sender');       # short format
  $r->get('sender');         # scope defaults to request
  $r->get('session:user_policy'); # retrieve session variable user_policy
  $r->get('s:user_policy');       # the same
```

### new\_from\_fh($fh)

An object constructor for creating an request object with the content read for the supplied filehandle `$fh`.

Will die if am error ocours:

- error parsing request

  A line in the request could not be parsed.

- while reading request: \<io-error\>

  The filehandle had an error while reading the request.

- connection closed by peer

  Connection has been closed while reading the request.

- could not parse request

  The client did not send a complete request.

### do\_cached( $key, $sub )

This method will execute the function reference give in `$sub` and store the return values in `$key` within the session. If there is already a cached result stored within `$key` of the session it will return the content instead of calling the reference again.

Returns an Array with the return values of the function call.

Example:

```
  my ( $ip_result, $info ) = $r->do_cached('rbl-'.$self->name.'-result',
    sub { $self->_rbl->check( $ip ) } );
```

### is\_already\_done( $key )

This function will raise an flag with name of `$key` within the session and return true if the flag is already set. False otherwise.

This could be used to prevent scores or headers from being applied a second time.

Example:

```
  if( defined $self->score && ! $r->is_already_done('rbl-'.$self->name.'-score') ) {
    $self->add_score($r, $self->name => $self->score);
  }
```

### is\_attr\_defined

Returns true if all given attribute names are defined and non-empty.

## AUTHOR

Markus Benning \<ich@markusbenning.de\>

## COPYRIGHT AND LICENSE

This software is Copyright (c) 2014 by Markus Benning \<ich@markusbenning.de\>.

This is free software, licensed under:

```
  The GNU General Public License, Version 2, June 1991
```
