|
以下の設定で、大学端末にログイン中に大学鯖に届いたメールを転送しないように制御します。 手順(1): .forwardファイルの設定。 | ||
|
ホームディレクトリの.forwardファイルの先頭に、 | ||
|
"|IFS=' ' && exec /usr/local/bin/procmail -f- || exit 75 #s1090011" | ||
|
と書く。s1090011のところは、自分のIDです。もちろん。 もし、すでに.forwardファイルが存在していて、 | ||
|
\s1090011@u-aizu.ac.jp dancho@muscle.com | ||
|
とか入っていたときは、削除しましょう。 | ||
|
手順(2): .procmailrcファイルの設定。 | ||
|
ホームディレクトリの.procmailrcファイルに、 | ||
|
SHELL=/bin/sh LOGFILE=$HOME/procmail.log MAILDIR=$HOME/Mail :0c * !?(/home/circle/gcc/bin/esoko s1090011 | /usr/bin/grep s1090011 > /dev/null) ! dancho@muscle.com | ||
|
と書きます。 ユーザID,転送先アドレス(この場合dancho@muscle.com)などを設定しましょう。 この記述がどういう意味かというと、 [ LOGFILE=$HOME/procmail.log ] | ||
| ログが~/procmail.logに残ります。 エラーメッセージ、受信メールの情報など。 | ||
| [ :0c ] | ||
| 続く一連の処理を実行します。 cは、受信メールをinboxにいれるとともに、 そのコピーを続くスクリプトに渡して処理させます。 | ||
| [ * !?(/home/circle/gcc/bin/esoko s1090011 | /usr/bin/grep s1090011 > /dev/null) ] | ||
| この頭が*で始まる行は、条件を指定します。 この条件が真ならば、次の行にかかれている処理をします。 ちなみに、!は続く条件の否定。 ?は条件として続くコマンドの結果の終了コードを用いること (これをつけないときは、正規表現として扱われる) を意味しているので、esokoでログインしているか調べて、 ログインしていなかったら次の処理。 | ||
| [ ! dancho@muscle.com ] | ||
| この頭が!で始まる行は、続くメールアドレスに、 メールを転送する命令になっています。 | ||
|
以上を総合すると、 ログインしていないときはdancho@muscle.comにメールを転送し、 大学の鯖にもちゃんとメールが通常通り入る、ということになります。 | ||
|
手順(3): 各ファイルのパーミッション設定。 | ||
|
.forward,.procmailrc両ファイルのパーミッションを600に設定しましょう。 | ||
|
これで終わり。 ただ、スクリプト見ると、esokoの出力を借りています。 ので、ログイン直後や、ログアウト直後は、 メールが転送されてしまうかもしれません。 そのへんを解決するスクリプトは、現在考え中。 多分、fingerあたり使うかと。 | ||