X-Git-Url: https://git.madduck.net/etc/mailfilter.git/blobdiff_plain/9551828cd214519a5c3b95c1d3747a0a4788a470..288c39b47731e470c4dad5680c01e39f7e61c625:/procmail/delay-delivery diff --git a/procmail/delay-delivery b/procmail/delay-delivery index e04f7d7..a725164 100644 --- a/procmail/delay-delivery +++ b/procmail/delay-delivery @@ -1,34 +1,56 @@ +#TODO: create config/delay-(disabled|tonight|weekend) + :0 -* ^X-Mailer: swaks -{ DELAY="30 seconds" } +* POSTPONED ?? . +{ + LOG="delay: not delaying already-postponed message$NL" + :0 fw + |$FORMAIL -R X-Postponed X-Was-Postponed +} -# create table messages (msgid text unique not null, filename text -# primary key not null unique, release_ts integer not null); +:0 E +* DISABLE_DELAYS ?? . +{ + LOG="delay: delays disabled, thus not delaying$NL" +} -:0 -* DELAY ?? . +:0 E +* ! TICKLE ?? . +* ? echo "$FROMEMAIL" | $EGREP -qif $CONF/undelayed-senders +{ + LOG="delay: do not delay mail from $SENDER$NL" +} + +:0 E +* 1^0 DELAY ?? . +* 1^0 RELEASE ?? . { - #TODO: for tickling, use header date - RELEASE="`date -d \"now + $DELAY\" +'%s %c'`" + :0 + * ! RELEASE ?? . + { RELEASE="`$BIN_DATE -d \"$DELAY\" +'%s (%c %Z)'`" } + DELAY + :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" + :0 + *$ $RELEASE_TS ^0 + *$ -$OURDATE_TS ^0 + { + :0 + *$ RELEASE ?? ^[0-9]+${RE_SPACE}+\(\/[^)]+ + { RELEASE_TIME="$MATCH" } - DELAYED_QUEUE_DB=$PMVAR/delayed-queue.sqlite - DO_QUERY="$SQLITE $DELAYED_QUEUE_DB" + LOG="delay: delay delivery of $MSGID until $RELEASE_TIME$NL" - DATA="$MSGID" - INCLUDERC=$PMDIR/sql-escape + RELEASE_TIME - Q="insert into messages values - ($DATA, '\\'\$DESTFILE\\'', $RELEASE_TS)" - TRAP="$TRAP; $DO_QUERY '$Q'" + :0 fw + |$FORMAIL -I"X-Postponed: $RELEASE" - :0 - $DELAYED_QUEUE + :0 + $DELAYED_QUEUE + } + RELEASE_TS }