sendmail のかわりに mail を使用するには?
[上に]
[前に]
[次に]
IMO
[E-Mail]
1998/04/08(水) 14:04:14
サーバに、sendmail へのパスを聞いたところ、
次のような答えが返ってきました。
>sendmail を直接操作することはシステム上問題が多いので mail コマンド
>をご利用になって下さい。mail のパスは whereis コマンドで検索出来ます。
このような場合、どのような設定をすれば、
フォームからメールが届くようになるのですか?
ちなみに、今設置しようとしているスクリプトは、
掲示板で、新規書き込みがあったときに私のところへ、
メールが届くようにするものです。
このあたりのスクリプトをどう変えればよいか、教えて下さい。
B-Cus
1998/04/08(水) 17:24:34
/usr/sbin/sendmailなどとなっているところを、
/bin/mailか/usr/bin/mailに直すだけでいけると思います。
IMO
1998/04/09(木) 16:05:49
こちらの方も無事にメールが届いております。
が、文字化けてるんです。jpde.pl のパーミッションも775になってるし、
恐らく PATH も通ってるはずなのですが、なぜなのでしょう?
初めの質問の趣旨とは変わってきてしまいましたが、分かる方はお願いいたします。
B-Cus
1998/04/09(木) 16:12:20
どんな風に化けてますか?アルファベットだけですか?
open(OUT,"|/usr/local/bin/nkf -j|/bin/mail");
としたらどうなりますか?
あと、一応 nkf -e とnkf -sも試してみてください。
IMO
1998/04/09(木) 16:31:41
まず、文字の化け方なんですが、アルファベットではなく、難しい漢字やよく分からない
記号混じりです。恐らく漢字コードに起因しているものと思われます。
それと、B-Cus さんが書いて下さったスクリプトなんですが、cgi ファイル全て調べてみても、
open(OUT 〜 で始まるところはありませんでした。
もしかしたら、この1文を書き加えろ、ということなんですか?
もしそうなら、どこに書き加えればよいのでしょうか?
IMO
1998/04/09(木) 16:35:27
すいません、先ほど書き忘れました。今私が使っているスクリプトなんですが、
オリジナルは、「浜ちゃん〜」というホームページありまして、
http://www.c-5.ne.jp/~hamachan/cgihtm/gb50.txt
にオリジナルのものがあります。もしよろしかったら、これも参照にしていただくと幸いです。
B-Cus
1998/04/09(木) 16:54:43
$mailprog = "/usr/local/bin/nkf -j | /bin/mail";
としてみてください。
こういうときは$mailprogをキーワードとして検索すれば
sub mailOptionにopne(OUT,"|$mailprog");的な記述が
見つけられます。
あと、、、/bin/mailが8ビットスルーじゃないって可能性は
、、、ないか。もし心配なら適当に漢字を含んだ文を書いて
(たとえばファイル名はsample)、コマンドラインから
% mail imoさんのメールアドレス < sample
などとやってみてください。さらにnkfも通してみてください。
たとえば
% cat sample | mail foo@bar.com
とか
% cat sample | nkf -j | mail foo@bar.com
とかね。
IMO
1998/04/09(木) 18:02:48
$mailprog を B-Cus さんのおっしゃる通り書き換えてやってみたところ、
今度は、メール自体が届かなくなってしまいました。
また、コマンドラインから試してみたところ、1、2番のコマンドはうまくいったのですが、
3番目のものは、
>$ cat sample | nkf -j | mail imo@mail.at-m.or.jp
>nkf: not found
>No message !?!
と表示され、メールも届いていませんでした。
私は素人なので、よく分かりませんが、ここら辺がカギなのでしょうか?
IMO
1998/04/09(木) 18:05:50
すいません、また書き忘れました。
mail への PATH なんですが、whereis で調べたところ、
>/etc/mail /usr/bin/mail /usr/ucb/mail /usr/lib/mail.local /usr/man/man1/mail.1';
と出て来ました。
この中でどれを PATH として採用すればよいかも教えて下さい。
B-Cus
1998/04/09(木) 19:12:36
あー、じゃあnkfがないのかな。ls /usr/local/bin/nkf
として、nkfがなかったら管理者にnkfはどこにありますか
と質問してみてください。
find / -name nkf | grep nkf でもいいですけど、
ちょっと負荷がかかります。
/etc/mailって、ほんとに/etc/mailがありました?
たぶん/bin/mailじゃないかと思うんですが。
まぁ、/bin/mailか/usr/bin/mailで問題はないと
思います。
おそらくnkf通せば直ると思うんだけどなぁ。
B-Cus
1998/04/09(木) 19:26:54
失礼。find / -name nkf |& grep nkf でした。
IMO
1998/04/09(木) 20:23:00
B-Cus さんのおっしゃったことを試してみたところ、ls 〜 の方では、
not found と表示され、find 〜 の方では、find: cannot chdir to ............ : Permission denied
と表示されました。管理者の方にもメールを書いたのですが、
nkf はもしかしたらないのかもしれません。
もし、nkf がなかったら、どのように設定すればよいのでしょうか?
jcode.pl というのはこのようなメール送信には関係ないのでしょうか?
んー、難しいですね、本当に。
IMO
1998/04/09(木) 20:26:48
あっ、そうそう、やっぱり、/etc/mail ありましたよ。それで、/bin/mail はありませんでした。
これだったら、とりあえず、/usr/bin/mail を使えばいいんですね。
今まで /usr/ucb/mail と書いていたような気もするので、チェックしてみます。
飯塚
1998/04/10(金) 02:03:36
以下の戦法はいかがでしょうか(全部同時にやってください)?
「メールが送れるけど化ける」スクリプトに対して、
(1) $mailprog = "/etc/mail";
とする。
(2) require './jcode.pl';
とあるところを
require 'jcode.pl';
にする。
なお、このスクリプトは「メールをShift JISで送る」という
言語道断のことをしているようです。
B-Cus
1998/04/10(金) 02:13:47
mailOptionをそっくり以下のものと差し替えたらどうなりますか?
sub mailOption {
local($from) = @_;
local($buf) = "";
open (MAIL, "|$mailprog $mail_ad") || &errExit('メールが送れません','');
$buf = "Subject: $guest Board\n\n";
&jcode'convert(*buf,'jis'); print MAIL $buf;
$buf .= "$resp への返信\n\n" if $resp;
&jcode'convert(*buf,'jis'); print MAIL $buf;
$buf = "$from \n\n$mtitle\n$comments\n";
&jcode'convert(*buf,'jis'); print MAIL $buf;
$buf = "$longdate\n";
&jcode'convert(*buf,'jis'); print MAIL $buf;
$buf = "$hst_name\n";
&jcode'convert(*buf,'jis'); print MAIL $buf;
$buf = "$agent\n";
&jcode'convert(*buf,'jis'); print MAIL $buf;
$buf = "$email\n";
&jcode'convert(*buf,'jis'); print MAIL $buf;
$buf = "$url\n";
&jcode'convert(*buf,'jis'); print MAIL $buf;
close (MAIL);
}
これでダメなら…「への返信」を削ってみてください。
これでもダメなら…この部分のprintを、半分ずつ
コメントアウトしてみてください。上半分をコメント
アウトして化けなかったら下半分が原因だし、化けなかったら
そのまた上半分をコメントアウトしていけば、原因の行が
つかめるはずです。
一番いいのはnkfを自分でインストールすることなんですが、
トラブったときはめんどくさいからなぁ…。
B-Cus
1998/04/10(金) 02:49:01
全然関係ない話ですが、ひとりごと。
> あっ、そうそう、やっぱり、/etc/mail ありましたよ。
一言でUNIXといっても管理者によって千差万別ですな。
# まさかデフォルトで/etc/mailがあるUN*Xはないですよねぇ。
IMO
1998/04/10(金) 10:14:07
[[解決]]
飯塚さんと B-Cus さんのおっしゃったように、スクリプトを変えてみたところ、
飯塚さんの方では、メールが届かなかったのですが、B-Cus さんのスクリプトで、
無事、文字化けはなくなりました。どうもありがとうございました。
それと、なぜか mail コマンドは、/usr/ucb/mail じゃないと、メールが届かないようです。
これも、私にはよく分かりませんが。
でも、これで無事に掲示板が設置できます。どうもありがとうございました。
P.S.みなさん、何でそんなに詳しいのでしょう。うらやましいかぎりです。
B-Cus
1998/04/10(金) 19:43:22
対処療法しか書いてなかったので、なにをしていたのか
軽く説明しておきますと、、、
日本語コードにはJISとEUCとSJISがあります。
で、メールはJISで送らなければなりません。
で、nkf -j というのはJISコードに変換する
ためのコマンドですので、mailに送る前にnkfに
変換させたかったのです。
でもnkfがないようなので、perlの中でjcode.plの
&jcode'convertを使ってJISに変換してからmailに
出力したわけです。
[上に]
[前に]
[次に]