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

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


 Necoです。

 sendmail のお話。qmail は知りません。

In Message-Id <200008281345.WAA20454 _at_ mx2.people.or.jp> 
        hiroaki _at_ people.or.jp (SAKAI Hiroaki) さんwrites:
> さかいです.はずしてたらごめんなさい.

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

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

 /etc/sendmail.cf の記述によります。この中で各種 mailer の
指定があって外部コマンド用の mailer は「prog」mailer と呼ば
れます。
 「Mprog」という mailer 指定行に「P=/bin/sh」とあれば、その
環境では sendmail は /bin/sh を起動してくれます。これは安全
に fork()/execve() されます。
 ですから、alias や .forward で ~ の展開が可能かどうかはこ
こで指定した shell に依存します。Linux では /bin/sh の正体は
bash なので展開可能です。
 Linux 以外の platform でも「P=/usr/local/bin/bash」等と設
定しておけば ~ の展開を含め bash の文法が有効ですが、可搬性
に欠けるので余りお奨め出来ません。

 また、この prog mailer 起動時には setuid()/seteuid() で実
効 user の切替が行なわれるので、root/daemon 権限で実行された
りはしません。
 setuid() しないまま prog mailer の起動が可能であれば、一般
user が自分の .forward を書換えて root を乗っ取ることが出来
てしまうので、そんな危険な実装にはなっていません。
 ですから、展開後の ~ は宛先 user の $HOME になっている筈で、
決して /root に展開されたりはしません。

# とは言え、/bin/sh が bash である環境など Linux くらいの
#ものなので、~ ではなく $HOME を用いる癖をつけておいた方が
#後々困らないでしょう。勿論 full path 指定なら尚良し。


> (sendmail は daemon ユーザで動いているのだが,daemon ユーザは
>  /usr/local/bin に実行パスが通ってなかったので,nkf や sample.pl が
>  見つからなかったのが原因)

 PATH 指定をどの初期化 file で行なっていますか?例えば bash
の場合、~/.bash_profile(または ~/.bash_login, ~/.profile) は
login shell として起動された時だけ有効です。
 また ~/.bashrc は interactive shell として起動された時のみ
有効ですので、端末すら持たない prog mailer として起動された
場合はやはり無効です。
 その場合、bash は compile 時に埋込まれた static な search
path を用いますので、大抵の場合は /usr/local/bin は含まれな
いでしょう。

 /usr/local/bin に限らず、.forward は full path で書く癖を
つけておいた方が幸せだと思います。

                                       白井 隆 (as Neco)


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

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