X-Git-Url: https://git.madduck.net/etc/mailfilter.git/blobdiff_plain/7047e6e0505152b6aa2242e1975340a99f5e57e3..a35b91516de40da1bd26b4eb682bb5516905ea1b:/procmail/tickle diff --git a/procmail/tickle b/procmail/tickle index 71edef6..5038410 100644 --- a/procmail/tickle +++ b/procmail/tickle @@ -1,21 +1,66 @@ +# The X-Tickle header has priority over the Original-To address :0 -* ORIGINAL_TO ?? ^[0-9]+@tickle\.madduck\.net$ -* ORIGINAL_TO ?? ^\/[0-9]+ +*$ ^X-Tickle:${RE_SPACE}+\/${RE_NOT_SPACE}+ +{ TICKLE="$MATCH" } + +:0 E +* ! POSTPONED ?? . +* ORIGINAL_TO ?? ^.+@tickle\.madduck\.net$ +* ORIGINAL_TO ?? ^\/[^@]+ +{ TICKLE="$MATCH" } + +:0 +* TICKLE ?? . +* ! DEST ?? . { - TICKLEDIR=$BASE/.tickle.$MATCH + DAILY_DELIVERY_TIME=04:20 + JUST_DATE="`$BIN_DATE -d \"$DATE\" +%x`" :0 - * ? test ! -d $TICKLEDIR/cur - { - LOG="tickle: received message outside tickle range: $MATCH$NL" + * TICKLE ?? ^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]$ + { DELAY="@$TICKLE" } + + :0 E + * TICKLE ?? ^[0-9]+h$ + * TICKLE ?? ^\/[^h]+ + { DELAY="$DATE + $MATCH hours" } + + :0 E + * TICKLE ?? ^[0-9]+m$ + * TICKLE ?? ^\/[^m]+ + { DELAY="$JUST_DATE + $MATCH months $DAILY_DELIVERY_TIME" } + + :0 E + * TICKLE ?? ^[0-9]+w$ + * TICKLE ?? ^\/[^w]+ + { DELAY="$JUST_DATE + $MATCH weeks $DAILY_DELIVERY_TIME" } - :0 - $DISCARD + :0 E + * TICKLE ?? ^[0-9]+d?$ + * TICKLE ?? ^\/[^d]+ + { DELAY="$JUST_DATE + $MATCH days $DAILY_DELIVERY_TIME" } + + :0 E + { + LOG="tickle: invalid tickler date string: $TICKLE$NL" + EXITCODE=69 + HOST } - LOG="tickle: file message and tickle in $MATCH day(s)$NL" + JUST_DATE + DAILY_DELIVERY_TIME :0 - $TICKLEDIR/ - TICKLEDIR + { RELEASE="`$BIN_DATE -d \"$DELAY\" +'%s (%c)'`" } + + LOG="tickle: delaying message until $RELEASE$NL" + DELAYED_QUEUE=$TICKLER_QUEUE + + :0 fw + |$FORMAIL -I"X-Tickle: $RELEASE" + + # unset DISABLE_DELAYS to always enable delaying for tickle messages + DISABLE_DELAYS } + +# vim:ft=procmail