X-Git-Url: https://git.madduck.net/etc/mailfilter.git/blobdiff_plain/31877acd11ca3a95cf85fa4cb227f489f3d4877b..98cee263303225880082bf968764b951bfe03ede:/procmail/delay-delivery?ds=sidebyside diff --git a/procmail/delay-delivery b/procmail/delay-delivery index 543c01c..38f7c4e 100644 --- a/procmail/delay-delivery +++ b/procmail/delay-delivery @@ -1,37 +1,38 @@ -:0 -* ^X-Mailer: swaks -{ DELAY="30 seconds" } - -# create table messages (msgid text unique not null, filename text -# primary key not null unique, release_ts integer not null); +#TODO: create config/delay-(disabled|tonight|weekend) :0 +* POSTPONED ?? . +{ + :0 fw + |$FORMAIL -R X-Postponed X-Was-Postponed +} + +:0 E +* ! DISABLE_DELAYS ?? . * DELAY ?? . { #TODO: for tickling, use header date - RELEASE="`date -d \"now + $DELAY\" +'%s %c'`" + RELEASE="`$BIN_DATE -d \"$DELAY\" +'%s %c'`" + :0 *$ RELEASE ?? ^\/${RE_NOT_SPACE}+ { RELEASE_TS=$MATCH } - :0 - *$ RELEASE ?? ^[0-9]+${RE_SPACE}+\/.+ - { RELEASE_TIME="$MATCH" } - - LOG="delay: delay delivery of $MSGID until $RELEASE_TIME$NL" - - DELAYED_QUEUE_DB=$PMVAR/delayed-queue.sqlite - DO_QUERY="$SQLITE $DELAYED_QUEUE_DB" - - DATA="$MSGID" - INCLUDERC=$PMDIR/sql-escape - - Q="insert into messages values - ($DATA, '\\'\$DESTFILE\\'', $RELEASE_TS)" - TRAP="$TRAP; $DO_QUERY '$Q'" - - :0 fw - |$FORMAIL -I "X-Delay: $RELEASE_TS ($RELEASE_TIME)" :0 - $DELAYED_QUEUE + *$ $RELEASE_TS ^0 + *$ -$OURDATE_TS ^0 + { + :0 + *$ RELEASE ?? ^[0-9]+${RE_SPACE}+\/.+ + { RELEASE_TIME="$MATCH" } + + LOG="delay: delay delivery of $MSGID until $RELEASE_TIME$NL" + POSTPONED="$RELEASE_TS ($RELEASE_TIME)" + + INCLUDERC=$PMDIR/record-delayed-mail + INCLUDERC=$PMDIR/addheaders + + :0 + $DELAYED_QUEUE + } }