diff options
Diffstat (limited to 'bin/mail/deliver.sh')
-rwxr-xr-x | bin/mail/deliver.sh | 40 |
1 files changed, 25 insertions, 15 deletions
diff --git a/bin/mail/deliver.sh b/bin/mail/deliver.sh index bd5bd82..607b6b2 100755 --- a/bin/mail/deliver.sh +++ b/bin/mail/deliver.sh | |||
@@ -2,21 +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 | mail_date="$(date --rfc-email)" | ||
5 | 6 | ||
6 | # log each delivery {{{ | ||
7 | log=$(grep -rlE 'From:\s+<?MDA' ~/Maildir/cur | head -1) | ||
8 | if [ -z $log ]; then | ||
9 | log=~/Maildir/cur/deliver.log | ||
10 | <<-HEADER cat >$log | ||
11 | From: MDA | ||
12 | Content-Type: text/plain; charset=UTF-8 | ||
13 | Subject: Delivery Log | ||
14 | |||
15 | HEADER | ||
16 | fi | ||
17 | # }}} | ||
18 | # shell opt/trap {{{ | 7 | # shell opt/trap {{{ |
19 | exec 2>>$log | ||
20 | shopt -s nocasematch extglob | 8 | shopt -s nocasematch extglob |
21 | 9 | ||
22 | # update index for dovecot | 10 | # update index for dovecot |
@@ -27,6 +15,25 @@ tmp_mailbox=$(mktemp -d); mkdir -p ${tmp_mailbox}/{tmp,new,cur} | |||
27 | cat >${tmp_mailbox}/cur/mail | 15 | cat >${tmp_mailbox}/cur/mail |
28 | trap 'rm -rf ${tmp_mailbox}' EXIT | 16 | trap 'rm -rf ${tmp_mailbox}' EXIT |
29 | # }}} | 17 | # }}} |
18 | # log each delivery {{{ | ||
19 | log=~/Maildir/cur/deliver.log | ||
20 | exec 2>>$log | ||
21 | |||
22 | logfile=$(grep -rlE 'From:\s+<?MDA' ~/Maildir/cur | head -1) | ||
23 | if [ -z "$logfile" ]; then | ||
24 | <<-HEADER cat >&2 | ||
25 | From: MDA <pham@topo.tw> | ||
26 | Date: ${mail_date} | ||
27 | Message-ID: <deliver.log> | ||
28 | Content-Type: text/plain; charset=UTF-8 | ||
29 | Subject: Delivery Log | ||
30 | |||
31 | HEADER | ||
32 | else | ||
33 | mv $logfile $log 2>/dev/null | ||
34 | sed -i "1,/^$/ s/^Date: .*/Date: ${mail_date}/" $log | ||
35 | fi | ||
36 | # }}} | ||
30 | # vars about message {{{ | 37 | # vars about message {{{ |
31 | MAIL="$(decodemail ${tmp_mailbox})" | 38 | MAIL="$(decodemail ${tmp_mailbox})" |
32 | # TODO process multi-line header field | 39 | # TODO process multi-line header field |
@@ -51,9 +58,10 @@ set_stdout() { | |||
51 | print_mail() { | 58 | print_mail() { |
52 | if [ "$private" = true ]; then | 59 | if [ "$private" = true ]; then |
53 | <<-MAIL cat | 60 | <<-MAIL cat |
54 | From: me | 61 | From: me <pham@topo.tw> |
55 | Date: $(date --rfc-email) | 62 | Date: ${mail_date} |
56 | Message-ID: ${Message_ID} | 63 | Message-ID: ${Message_ID} |
64 | Content-Type: text/plain; charset=UTF-8 | ||
57 | Self: true | 65 | Self: true |
58 | Subject: ${heading} | 66 | Subject: ${heading} |
59 | 67 | ||
@@ -140,3 +148,5 @@ set_stdout && print_mail | |||
140 | 148 | ||
141 | # log to stderr | 149 | # log to stderr |
142 | echo -e ${date} ${mailbox:-INBOX} '\t' "${heading:-${SUBJECT}}" >&2 | 150 | echo -e ${date} ${mailbox:-INBOX} '\t' "${heading:-${SUBJECT}}" >&2 |
151 | |||
152 | # vim:fdm=marker fdl=0 | ||