メールからコマンドを実行
2000-02-04 作成 福島
2001-04-09 更新 福島



メールを受けたときにコマンドを実行するには、
/etc/aliases か ~/.forward にコマンドを書きます。



/etc/aliases の場合
UserName: "| command"
の一行を加え、newaliases コマンド(スクリプト)を実行します。



~/.forward の場合
"| command"
を書きます。



両ケースとも、sendmail の再立ち上げは必要ありません。

/etc/aliases を編集した場合、コマンドが実行されず、パーミッションエラーになることがあります。
これは、通常 sendmail が実行しているときの shell が存在しないために起こります。

sendmail に shell を指定すれば回避できます(/etc/passwd の mail の行に shell を指定する)が、
そんなことをするわけにはいかないので、コマンドが shell から実行されるように書き方を変えます。
UserName: "| /bin/sh -c command"
これで perl も動くようになります。

.forward のパーミッションについて

sendmail 8.9.1a (らしい) から、セキュリティ向上のため .forward ファイルのパーミッションチェックが厳しくなりました。
具体的には、オーナ以外に書きこみ権限が設定されていると動作しません。

chmod 644 .forward

chmod go-w .forward
とする必要があります。

なお、これは .forward だけでなく、その上のディレクトリ (ホームディレクトリのこと) も対象です。
ディレクトリのオーナ以外に書きこみ権限があってはいけません。

例:
chmod go-w $HOME