Provided by: courier-filter-perl_0.200+ds-4_all bug


       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:

               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 }

               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.

   Instance methods
       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 <>