[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[linux-users:73014] Re: メールがプログラムに渡せない


さかいです.はずしてたらごめんなさい.

<200008281047.AA01371 _at_ jiro.pluto.dti.ne.jp>の記事において
catmoon _at_ pluto.dti.ne.jpさんは書きました。

>> 現在、メールをプログラムに転送させるために.forwardファイルを
>> 作成しました。
>> 「とりあえず」なので、中身はこんな感じです。
>> 
>> "| cat > ~/qqq.txt"
>> 
>> ところが実際にメールを自分宛てに送信してみても、
>> qqq.txtは作成されず、maillogを見てみたところ、
>> "Service unavailable" のメッセージが出力されます。

sendmail がプログラムを起動するときには,メール配送先のユーザの権限ではなく,
sendmail のプロセスのユーザの権限(おそらく root か daemon)で起動されるので,
~/ は /root になっているのではないでしょうか?
そもそも /etc/aliases や .forward で ~/ は使えるのかどうか,疑問です.
(sendmail はシェルを起動してくれるのだろうか? 誰かしってます?)

>> "| cat > ~/qqq.txt"

"| cat > /home/hogehoge/qqq.txt"
のようにして,フルパスで指定すればうまくいくと思います.

以前,メールを nkf を通してから日本語Perlに渡して,いろいろな
処理をさせるというPerlスクリプトを Solaris 上で書いたときに,.forward を,

"| nkf -e | sample.pl"

のようにしてうまくいかず,はまったことがあります.
(sendmail は daemon ユーザで動いているのだが,daemon ユーザは
 /usr/local/bin に実行パスが通ってなかったので,nkf や sample.pl が
 見つからなかったのが原因)

"| /usr/local/bin/nkf -e | /usr/local/bin/sample.pl"
のようにしたら,うまく動きました.

このようなことをやるときには,コマンドやファイル名は基本的に
フルパスで指定してやる必要がありますね.あと,どのユーザ権限で
実行されるのかを忘れがちなので,注意.
(ディレクトリのパーミッションが許可されてなくて書き込みできないとかが,
 ありがち)



この情報があなたの探していたものかどうか選択してください。
yes/まさにこれだ!   no/違うなぁ   part/一部見つかった   try/これで試してみる

あなたが探していた情報はどのようなことか、ご自由に記入下さい。特に「まさにこれだ!」と言う場合は記入をお願いします。
例:「複数のマシンからCATV経由でipmasqueradeを利用してWebを参照したい場合の設定について」
Follow-Ups: References: