プロが教えるわが家の防犯対策術!

現在メール受信したら、プログラムを実行するよう
/etc/smrshにリンクを作成したところ、プログラムは実行されるのですが、
その中でメール送信時に送信者(From:)と件名(Subject:)を
mailユーザのメールヘッダーから抜き出してメール送信の件名と
From:に割り当てています。
(意味つたわってますでしょうか。。)

それが、直接プログラムを実行すればしっかりとmailユーザに
届いたメールのヘッダーから
件名を抜き出し自身の件名とし、
送信者アドレスを抜き出し自身が送信者(From:)となり
指定したアドレスへメール送信する。ということが出来るのですが、
/etc/smrshを介した際には$SUBJECTと$ADDRESが代入されなくなってしまいます。
----------------------------------------------------------
ADDRES=`cat /var/mail/mail |nkf -e|\
awk '/^From/'|cut -d'<' -f2 | tr -d ">"|head -1`

SUB=`cat /var/mail/mail |nkf -e |\
awk '/^Subject/,/*/' |head -4|\
awk '!/^Date/&&!/^From/&&!/^X-/&&!/^Message-ID:/' |\
awk '{printf "%s",$0}'|\
sed -e 's/^Subject: //' -e 's/^ \+//'`

case "$SUB" in
*=?ISO-2022-JP?*|*=?iso-2022-jp?*)
echo $SUB |nkf -mB |\
cut -d ':' -f2,3,4,5,6 |\
sed "s/^/Re:/" > ./iso.$$
;;
*)
echo $SUB |nkf > ./no-iso.$$
esac

SUBJECT=`cat ./iso.$$ ./no-iso.$$ 2>/dev/null`
nkf <<ADMIN | mail -s "$SUBJECT" アドレス -- -f "$ADDRES"
本文
SUBJECT="$SUBJECT"
ADDRES="$ADDRES"
ADMIN
----------------------------------------------------------
メールログには以下の出力がありました。
Authentication-Warning: 自ホスト: mail set sender to <> using -f
from=<>, と出力されておりました。

/etc/smrshを使ってプログラムを実行した場合は
代入が旨くいかないということがあるのでしょうか?

A 回答 (2件)

エラーの内容を見ると


$ADDRESが期待通りになっていないようです。
(空になっています)

恐らくはパスが通っていないのでは無いでしょうか?
怪しいのは、nkfじゃないかと思います。

ちなみにエラーは、メールアドレスの変更(-fオプション)を
実行しているユーザが、sendmailに信頼されていないための警告ですので
メールが送信できなくなるわけではありません。
エラーが気になる場合には、trusted_usersに実行者のアカウントを追記して下さい。

この回答への補足

sendmail.cfとsubmit.cfファイルのそれぞれtrustedの所に
Tmail
を追記し、sendmailの再起動を行った結果、
Authentication-Warning:というエラーはなくなったのですが、
from=<>, という送信者がセットされない($ADDRESが空)
状況が変わりません。やはり直接実行すると$ADDRESは入り問題ないです。

メールログを見ると、mailユーザの時は$ADDRESの定義が出来ず、
rootユーザから送信した時は問題なかったです。
relay=mail@localhost
relay=root@localhost

メールは送信されるようになったので、mailユーザがトラステッドされた?
のだと思うのですが、よく見ると$SUBJECTも定義できておらず、
本文の
SUBJECT="$SUBJECT"
ADDRES="$ADDRES"
の部分も
SUBJECT=""
ADDRES=""
となり代入されないままなのです。なんででしょうか。。

補足日時:2009/09/15 02:20
    • good
    • 0
この回答へのお礼

ありがとうございます。

/etc/mail/trusted-usersというファイルがあったのですが、
以下の2行だけでした。
# trusted-users - users that can send mail as others without a warning
# apache, mailman, majordomo, uucp, are good candidates

おそらく2行目に追記すればよいのかと下記のようにし
# nkf, fhadmin, apache, mailman, majordomo, uucp, are good candidates

などsendmailの再起動も試しましたが、結果は同じでした。
これはもともとコメントアウトされてるのかと思い、
シャープをはずしても同じでした。。

どうしたらよいのでしょうか

お礼日時:2009/09/14 23:17

わかりにくくてすみません。


パスが通っていないのとtrusted userは別の話です。

該当のスクリプトを実行する際に、スクリプトの内部でパスが通っていない
(nkfコマンドがどこに存在するかがわからない)ために空白になっているものと思われます。

nkf自体は恐らく
/usr/local/bin/nkf
に存在しているものと思われますので、スクリプトでフルパスでしていするか
環境変数に、/usr/local/bin/を追加する必要があります。


SUB=`cat /var/mail/mail |nkf -e |\

SUB=`cat /var/mail/mail |/usr/local/bin/nkf -e |\


または、スクリプトの最初で以下を定義

export PATH=$PATH:/usr/local/bin/
    • good
    • 0
この回答へのお礼

回答ありがとうございます!!
rootで実行できて。。。という点からroot以外のユーザで直接スクリプトを実行したら、パーミッションデナイトがいっぱいでてました。
なので、sudoを勉強して至る所にroot権限で実行させた結果うまく
定義することができましたっ

ご協力ありがとうございます。
exportは勉強したことないので機会があったら調べてみたいと思いますっ

お礼日時:2009/09/17 22:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!