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.