logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

Courier::Filter::Module::FakeDate - Fake "Date:" message header filter module for the Courier::Filter

Author

       Julian Mehnle <julian@mehnle.net>

perl v5.20.2                                       2015-11-28             Courier::Filter::Module::FakeDate(3pm)

Description

       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.

   Constructor
       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_tolerancebackward_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 2hours.  "backward_tolerance"
               defaults to 5days 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.

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

Name

       Courier::Filter::Module::FakeDate - Fake "Date:" message header filter module for the Courier::Filter
       framework

See Also

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

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

Synopsis

           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 ],
               ...
           );

See Also