diff options
| author | Hsieh Chin Fan <pham@topo.tw> | 2025-02-01 12:49:44 +0800 |
|---|---|---|
| committer | Hsieh Chin Fan <pham@topo.tw> | 2025-02-01 12:49:51 +0800 |
| commit | 12d0f669278148d0bd4185d99e328847eb3766c5 (patch) | |
| tree | bd03b72b7b5223eee2fb19485b947906edbb7734 | |
| parent | 86efd963ef3a8281f7c4a7c8e4e7310afdea43b4 (diff) | |
Update
| -rwxr-xr-x | bin/mail/deliver.sh | 40 | ||||
| -rw-r--r-- | snippets/vim_oneliner | 1 |
2 files changed, 26 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 | ||
diff --git a/snippets/vim_oneliner b/snippets/vim_oneliner new file mode 100644 index 0000000..c95f57f --- /dev/null +++ b/snippets/vim_oneliner | |||
| @@ -0,0 +1 @@ | |||
| # vim:fdm=marker fdl=0 | |||