Courier::Filter::Module::FakeDate - Fake "Date:" message header filter
module for the Courier::Filter framework
use Courier::Filter::Module::FakeDate;
my $module = Courier::Filter::Module::Header->new(
forward_tolerance => {
# years, months, weeks, days, hours, minutes, seconds
hours => 2
},
backward_tolerance => {
# years, months, weeks, days, hours, minutes, seconds
days => 5
},
ignore_unparseable => 0,
logger => $logger,
inverse => 0,
trusting => 0,
testing => 0,
debugging => 0
);
my $filter = Courier::Filter->new(
...
modules => [ $module ],
...
);
This class is a filter module class for use with Courier::Filter. It matches a
message if it has a "Date" header field that lies too far in the
future or the past, relative to the local system's time. If the message has a
"Resent-Date" header field (see RFC 2822, 3.6.6), that one is
examined instead, because the message could simply be an old one that has
recently been re-sent, which is perfectly legitimate behavior.
In the case of a match, the response tells the sender that their
"Date" header is implausible and that they should check their clock.
Note: Times in different time zones are compared correctly.
Note: When using this filter module, it is essential that the local
system's own clock is set correctly, or there will be an increased risk of
legitimate messages getting rejected.
The following constructor is provided:
-
new(%options): returns
Courier::Filter::Module::FakeDate
- Creates a new FakeDate filter module.
%options is a list of key/value pairs representing any of the following
options:
- forward_tolerance
- backward_tolerance
- The maximum durations by which a message's "Date"
or "Resent-Date" header may diverge into the future and the
past, respectively, from the local system's time. Each duration must be
specified as a hash-ref containing one or more time units and their
respective quantity/ies, just as specified by DateTime::Duration.
"forward_tolerance" defaults to 2 hours.
"backward_tolerance" defaults to 5 days to account for
transmission delays.
For example:
forward_tolerance => { hours => 4 },
backward_tolerance => { days => 1, hours => 12 }
- ignore_unparseable
- A boolean value controlling whether messages whose
"Date" or "Resent-Date" header does not loosely
conform to RFCs 822 or 2822 should be ignored ( true) or matched (
false). Defaults to false.
All options of the
Courier::Filter::Module constructor are also
supported. Please see "new" in Courier::Filter::Module for their
descriptions.
See "Instance methods" in Courier::Filter::Module for a description of
the provided instance methods.
Courier::Filter::Module, Courier::Filter::Overview.
For AVAILABILITY, SUPPORT, and LICENSE information, see
Courier::Filter::Overview.
Julian Mehnle <
[email protected]>