.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{ . if \nF \{ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "Courier::Filter::Module::FakeDate 3pm" .TH Courier::Filter::Module::FakeDate 3pm "2015-11-28" "perl v5.20.2" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" Courier::Filter::Module::FakeDate \- Fake "Date:" message header filter module for the Courier::Filter framework .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 1 \& 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 ], \& ... \& ); .Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" This class is a filter module class for use with Courier::Filter. It matches a message if it has a \f(CW\*(C`Date\*(C'\fR header field that lies too far in the future or the past, relative to the local system's time. If the message has a \f(CW\*(C`Resent\-Date\*(C'\fR header field (see \s-1RFC 2822, 3.6.6\s0), 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. .PP In the case of a match, the response tells the sender that their \f(CW\*(C`Date\*(C'\fR header is implausible and that they should check their clock. .PP \&\fINote\fR: Times in different time zones are compared correctly. .PP \&\fINote\fR: 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. .SS "Constructor" .IX Subsection "Constructor" The following constructor is provided: .IP "\fBnew(%options)\fR: returns \fICourier::Filter::Module::FakeDate\fR" 4 .IX Item "new(%options): returns Courier::Filter::Module::FakeDate" Creates a new \fBFakeDate\fR filter module. .Sp \&\f(CW%options\fR is a list of key/value pairs representing any of the following options: .RS 4 .IP "\fBforward_tolerance\fR" 4 .IX Item "forward_tolerance" .PD 0 .IP "\fBbackward_tolerance\fR" 4 .IX Item "backward_tolerance" .PD The maximum durations by which a message's \f(CW\*(C`Date\*(C'\fR or \f(CW\*(C`Resent\-Date\*(C'\fR 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. \f(CW\*(C`forward_tolerance\*(C'\fR defaults to \fI2 hours\fR. \&\f(CW\*(C`backward_tolerance\*(C'\fR defaults to \fI5 days\fR to account for transmission delays. .Sp For example: .Sp .Vb 2 \& forward_tolerance => { hours => 4 }, \& backward_tolerance => { days => 1, hours => 12 } .Ve .IP "\fBignore_unparseable\fR" 4 .IX Item "ignore_unparseable" A boolean value controlling whether messages whose \f(CW\*(C`Date\*(C'\fR or \f(CW\*(C`Resent\-Date\*(C'\fR header does not loosely conform to RFCs 822 or 2822 should be ignored (\fBtrue\fR) or matched (\fBfalse\fR). Defaults to \fBfalse\fR. .RE .RS 4 .Sp All options of the \fBCourier::Filter::Module\fR constructor are also supported. Please see \*(L"new\*(R" in Courier::Filter::Module for their descriptions. .RE .SS "Instance methods" .IX Subsection "Instance methods" See \*(L"Instance methods\*(R" in Courier::Filter::Module for a description of the provided instance methods. .SH "SEE ALSO" .IX Header "SEE ALSO" Courier::Filter::Module, Courier::Filter::Overview. .PP For \s-1AVAILABILITY, SUPPORT,\s0 and \s-1LICENSE\s0 information, see Courier::Filter::Overview. .SH "AUTHOR" .IX Header "AUTHOR" Julian Mehnle