diff options
-rwxr-xr-x | bin/mail/deliver.sh | 26 |
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 |
5 | date=$(date +%s) | 5 | |
6 | mail_date="$(date --rfc-email -d @${date})" | 6 | epoch=$(date +%s) |
7 | mail_date="$(date --rfc-email -d @${epoch})" | ||
7 | 8 | ||
8 | # shell opt/trap {{{ | 9 | # shell opt/trap {{{ |
9 | shopt -s nocasematch extglob | 10 | shopt -s nocasematch extglob |
@@ -17,24 +18,27 @@ cat >${tmp_mailbox}/cur/mail | |||
17 | trap 'rm -rf ${tmp_mailbox}' EXIT | 18 | trap 'rm -rf ${tmp_mailbox}' EXIT |
18 | # }}} | 19 | # }}} |
19 | # log each delivery {{{ | 20 | # log each delivery {{{ |
20 | log=~/Maildir/cur/deliver.log.${date} | 21 | log=~/Maildir/cur/deliver.log.${epoch} |
21 | exec 2>>$log | ||
22 | trap 'doveadm force-resync /' EXIT | 22 | trap 'doveadm force-resync /' EXIT |
23 | 23 | ||
24 | logfile=$(grep -rlE 'From:\s+<?MDA' ~/Maildir/cur | head -1) | 24 | # add a new log file, or reuse existing log file |
25 | if [ -z "$logfile" ]; then | 25 | outdated_log=$(grep -rlE 'From:\s+<?MDA' ~/Maildir/cur | head -1) |
26 | <<-HEADER cat >&2 | 26 | if [ -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 |
34 | else | 35 | else |
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 |
37 | fi | 38 | fi |
39 | |||
40 | # Set stderr after process $log properly | ||
41 | exec 2>>$log | ||
38 | # }}} | 42 | # }}} |
39 | # vars about message {{{ | 43 | # vars about message {{{ |
40 | MAIL="$(decodemail ${tmp_mailbox})" | 44 | MAIL="$(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 |
130 | elif [[ "${SUBJECT}" =~ login|verify|sign-in|密碼|安全性警示|登入|存取 ]]; then | 134 | elif [[ "${SUBJECT}" =~ 密碼|安全性警示|登入|存取|驗證|login|verify|sign-in ]]; then |
131 | mailbox=login | 135 | mailbox=login |
132 | elif [[ "${TO}" = cloudflare@topo.tw ]]; then | 136 | elif [[ "${TO}" = cloudflare@topo.tw ]]; then |
133 | mailbox=SRV/cloudflare | 137 | mailbox=SRV/cloudflare |