aboutsummaryrefslogtreecommitdiffhomepage
path: root/bin/mail/deliver.sh
diff options
context:
space:
mode:
Diffstat (limited to 'bin/mail/deliver.sh')
-rwxr-xr-xbin/mail/deliver.sh26
1 files changed, 15 insertions, 11 deletions
diff --git a/bin/mail/deliver.sh b/bin/mail/deliver.sh
index ea21ac7..ef3d461 100755
--- a/bin/mail/deliver.sh
+++ b/bin/mail/deliver.sh
@@ -2,8 +2,9 @@
2 2
3# Deliver incoming mail to proper mailbox 3# Deliver incoming mail to proper mailbox
4# TODO image/audio mail part 4# TODO image/audio mail part
5date=$(date +%s) 5
6mail_date="$(date --rfc-email -d @${date})" 6epoch=$(date +%s)
7mail_date="$(date --rfc-email -d @${epoch})"
7 8
8# shell opt/trap {{{ 9# shell opt/trap {{{
9shopt -s nocasematch extglob 10shopt -s nocasematch extglob
@@ -17,24 +18,27 @@ cat >${tmp_mailbox}/cur/mail
17trap 'rm -rf ${tmp_mailbox}' EXIT 18trap 'rm -rf ${tmp_mailbox}' EXIT
18# }}} 19# }}}
19# log each delivery {{{ 20# log each delivery {{{
20log=~/Maildir/cur/deliver.log.${date} 21log=~/Maildir/cur/deliver.log.${epoch}
21exec 2>>$log
22trap 'doveadm force-resync /' EXIT 22trap 'doveadm force-resync /' EXIT
23 23
24logfile=$(grep -rlE 'From:\s+<?MDA' ~/Maildir/cur | head -1) 24# add a new log file, or reuse existing log file
25if [ -z "$logfile" ]; then 25outdated_log=$(grep -rlE 'From:\s+<?MDA' ~/Maildir/cur | head -1)
26 <<-HEADER cat >&2 26if [ -z "$outdated_log" ]; then
27 <<-HEADER cat >${log}
27 From: MDA <pham@topo.tw> 28 From: MDA <pham@topo.tw>
28 Date: ${mail_date} 29 Date: ${mail_date}
29 Message-ID: <deliver.log> 30 Message-ID: <$log>
30 Content-Type: text/plain; charset=UTF-8 31 Content-Type: text/plain; charset=UTF-8
31 Subject: Delivery Log 32 Subject: Delivery Log
32 33
33 HEADER 34 HEADER
34else 35else
35 mv $logfile $log 2>/dev/null 36 mv "$outdated_log" $log
36 sed -i "1,/^$/ s/^Date: .*/Date: ${mail_date}/" $log 37 sed -i "1,/^$/ {s#^Date: .*#Date: ${mail_date}#; s#^Message-ID: .*#Message-ID: <${log}>#}" $log
37fi 38fi
39
40# Set stderr after process $log properly
41exec 2>>$log
38# }}} 42# }}}
39# vars about message {{{ 43# vars about message {{{
40MAIL="$(decodemail ${tmp_mailbox})" 44MAIL="$(decodemail ${tmp_mailbox})"
@@ -127,7 +131,7 @@ elif [[
127 "${FROM}${TO}" =~ substack|service@kucw.io \ 131 "${FROM}${TO}" =~ substack|service@kucw.io \
128 ]]; then 132 ]]; then
129 mailbox=news 133 mailbox=news
130elif [[ "${SUBJECT}" =~ login|verify|sign-in|密碼|安全性警示|登入|存取 ]]; then 134elif [[ "${SUBJECT}" =~ 密碼|安全性警示|登入|存取|驗證|login|verify|sign-in ]]; then
131 mailbox=login 135 mailbox=login
132elif [[ "${TO}" = cloudflare@topo.tw ]]; then 136elif [[ "${TO}" = cloudflare@topo.tw ]]; then
133 mailbox=SRV/cloudflare 137 mailbox=SRV/cloudflare