# The X-Tickle header has priority over the Original-To address
:0
* ! POSTPONED ?? .
*$ ^X-Tickle:${RE_SPACE}+\/${RE_NOT_SPACE}+
{ TICKLE="$MATCH" }

:0 E
* ! POSTPONED ?? .
* ORIGINAL_TO ?? ^.+@tickle\.madduck\.net$
* ORIGINAL_TO ?? ^\/[^@]+
{ TICKLE="$MATCH" }

:0
* TICKLE ?? .
* ! DEST ?? .
{
  DAILY_DELIVERY_TIME=04:20
  JUST_DATE="`$BIN_DATE -d \"$DATE\" +%x`"

  :0
  * 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 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
  }

  JUST_DATE
  DAILY_DELIVERY_TIME

  :0
  { 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"

  # store messages as read
  MARK_READ=tickler

  # unset DISABLE_DELAYS to always enable delaying for tickle messages
  DISABLE_DELAYS
}

# vim:ft=procmail