Kodama's home / tips.
#!/bin/sh
# Usage: $0 recipient [sender]
# K.Kodama 2012.09.05
SENDMAIL=/usr/sbin/sendmail
SOPT="-bm -f bit.bucket@sample.notify.ac.jp"
AWK=/usr/bin/gawk
NKF=/usr/bin/nkf
AOPT="-v nkf=$NKF -v sender=mail-system@sample.notify.ac.jp"
if [ $# -eq 2 ] ; then AOPT="-v nkf=$NKF -v sender=$2" ; fi
if [ $# -gt 0 ] ; then
$AWK $AOPT 'BEGIN{s=0;sub0="";sender0=""}
(s==1)&&/^[ \t]/{sub0=sub0"\n"$0;print;next}
(s==2)&&/^[ \t]/{sender0=sender0"\n"$0;next}
(s>0)&&/^[ \t]/{print;next}
{s=0}
/^Subject: /{s=1;sub0=$0;sub(/^Subject:/, "Subject: [notify]");print;next}
/^From: /{s=2;sender0=$0;print "From: " sender;next}
/^To: /{s=3;print;next}
/^Date: /{s=4;print;next}
/^$/{print;exit}
END{print "Original From/Subject.";print sender0|nkf" -mj";print "\n";print sub0|nkf" -mj"}' | $SENDMAIL $SOPT $1
fi
| $SENDMAIL $SOPT $1の辺りをコメントにして, メールのサンプルファイルを用いて, 次のように試験します. 試験の後はコメント部分を元に戻します.
$ mail-filter.sh test-recipient < sample-mail Date: Wed, 5 Sep 2012 18:12:15 +0900 To: K.KodamaFrom: mail-system@sample.notify.ac.jp < From が書き換わる Subject: [notify] mail =?iso-2022-jp?B?GyRCJE4bKEIg?=forward=?iso-2022-jp?B?GyRCO246bhsoQg==?= < Subject に [notify] を追記 Original From/Subject. < 本文に元の From, Subject From: Test User Subject: mail の forward試作
bit.bucket: /dev/nullnewaliases します.
[注意] .forward の作成を誤るとメール障害を引き起こす可能性があるので注意してください.
.forward の内容:
"| /usr/local/bin/mail-filter.sh sample-user2@example.com" \sample-user1
1行目が抽出と転送処理です.
2行目は元のメールサーバにメールを残す記述です. メールアドレスの先頭に \ (バックスラッシュ) がついています. つけ忘れると無限にメールを発送し続ける障害を引き起こします. \ (バックスラッシュ) は画面上やキーボードでは ¥(円記号)で表示されている場合があります.
.forward を書き換えたらすぐに, メールの転送などに異常がないか確認します.
異常があった場合はすぐにメールの自動転送を停止します.
.forward ファイルを削除すると停止します.
rm ~/.forward機能は停止するが, .forward の内容は残しておきたい場合, 次のようにします.
mv ~/.forward ~/forward.backup
Kodama's home / tips.