2014-08-06

Mutt 設定にメール誤送信防止を実装

最近はやりの, メール誤送信防止機能: 単に, 送信手続き後にメール配送を取り消すだけだが, 役に立つことが時々ある.
これを, 普段メインで使っている Mutt でもできたらいいなと思って, 設定してみた.

送信時に, 自前で用意したスクリプトを呼び出し, その中で, 30秒の遅延をいれる. 30秒以内にそのスクリプトを殺せば, 配送をキャンセルできる.
まず, 以下のスクリプト .mutt/delay.sendmail を用意する. (hoge@* のところで, 自分あてかどうかを判別する. 自分あてならすぐに配送する.)

#! /bin/bash

tmp=$(mktemp)
recpt_d=()
recpt_m=()
flags=()
rrr=''

cat >$tmp

while (($# > 0)); do
    case "$1$rrr" in
        -f)
            flags=("${flags[@]}" "$1" "$2")
            shift 2
            ;;
        --)
            rrr='--'
            shift
            ;;
        *)
            case "$1" in
                hoge@*)
                    recpt_m=("${recpt_m[@]}" "$1")
                    ;;
                *)
                    recpt_d=("${recpt_d[@]}" "$1")
                    ;;
            esac
            shift
            ;;
    esac
done

if (( ${#recpt_m[@]} > 0)); then
    /usr/sbin/sendmail "${flags[@]}" "${recpt_m[@]}" <$tmp
fi
if (( ${#recpt_d[@]} > 0)); then
    (sleep 30 && /usr/sbin/sendmail "${flags[@]}" "${recpt_d[@]}" <$tmp ; rm $tmp) &
else
    rm $tmp
fi

そして, .muttrc に以下の設定を書く.
set sendmail="$HOME/.mutt/delay.sendmail"

送信を取り消したいときは, 以下のコマンドを30秒以内に.

killall delay.sendmail

0 件のコメント:

コメントを投稿