• ベストアンサー

sendmail を使いたい

いつもお世話になっております。 非常に初心者な質問で申し訳ないのですが、ホームページ上から、メールを送るメールフォームを作ったのですが、メールが送信されません。メールを送るだけなので難しい設定は不要だと思っていたのですが、如何せんメールを送信してくれないのです。 ほぼデフォルトなのですが、 /etc/rc.conf sendmail_enable="YES" ぐらいです。やはりこれだけでは全然足りないでしょうか?ただいま sendmail を勉強中ですが、とりあえずメールを送れるようになりたいので、よろしくお願いします。 ちなみに mail コマンドでもメールが送れません。 環境は FreeBSD5.0 です。

質問者が選んだベストアンサー

  • ベストアンサー
  • xjd
  • ベストアンサー率63% (1021/1612)
回答No.6

>どうやったらプロンプトに戻れるでしょうか? CTRL+C、とかCTRL+Q、などで強制終了して下さい。(すみません。今環境がないので思い出せません。) そのログを見る限りでは、相手側がメールを受け取ってくれなくて、あなたのメールサーバのキュー に保存されています。そして何度もキューにたまっている未送信ファイルを再送信しようとしています。

Lorenzini
質問者

お礼

ただいま、phpinfo を見てみましたところ、sendmail のパスが、 /usr/sbin/sendmail -t -i になっておりました。mailer.conf によると /usr/libexec/sendmail/sendmail のようなので、php.ini でこのように書き直し、apachectl graceful してみましたが、やはりメールは送信されません。インターナルサーバーエラーでメールを送信できませんと表示されます。 どうもDNSが引けていないことが原因のようです。

Lorenzini
質問者

補足

ありがとうございます。Ctrl+C で復帰できました。 今家に帰ってきて、そのまま表示させていたログを見たところ、最後の行が Jul 1 00:00:00 www newsyslog[5983]: logfile turned over になっていました。相当ログがたまって、このファイルはアーカイブになってしまったのかもしれません。 一応、届くはずのメールアドレスにも送っているのですが、そのアドレスにも届かず、何度も送信を繰り返しているようです。 ルーターの WAN 側は、80番ポートしか開けていませんが、クライアントマシン(Windows)からは、メールが送信できるので、ルーターの設定ではなさそうだし。 もう少しいろいろ見てみます。 ありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (6)

回答No.7

うーん、大分はまってますね ^^;)。 qmail にした方が楽かもしれませんよ。MTA をはじめて触るのであれば sendmail はかなり辛いんじゃないですかね。 cd /usr/ports/mail/qmail/ make install make enable-qmail だけで基本設定が行われますし。  ま、それはさておき。以下の順番で確認していった方がよろしいかと思いますよ。  1. ローカルアカウント宛にメール送信が正しく実施できるか  2. 自分の契約している ISP やフリーメール宛にメール送信が正しく実施できるか  1. がクリアできないのに 2. をやっても意味ないです。大変だと思いますが、頑張ってください。 p.s. ちなみに 5.1-RELEASE が出てますので、そっちの方が何かと良ろしいのではないかと思います。

Lorenzini
質問者

お礼

メールフォームからのメールの送信は、MTAを使わなくても、PHPでもやってみたのですが、それでもだめだったので、MTAには関係ない、もっと根本的なところで躓いているようです。5.1も何度かインストールしたのですが、サイト完成までいかず、MySQLがらみでエラーが絶えず、5.0にしました。4.8も5.1と同じエラーで断念しました。 ご親切にアドバイスありがとうございました。

Lorenzini
質問者

補足

ありがとうございます ローカル宛にメールを送っても届かないのです。数日後、エラーメールは戻ってきますが。どうも、MTAの問題ではなく、名前解決とか、ネームサーバの設定のような気がしています。ホスト名が、localhost ではなく、ドメイン名つきのホスト名だからでしょうか。ただ、帰ってくるエラーメールで自分のメールアドレスの @ 以下は localhost になっているのです。 もっとも疑わしいミスとして、/etc/resolv.conf で、nameserver が、ルーターのIPアドレスになっているのですが、私のルーターには nameserver の機能はないのです。一応プロバイダの nameserver のアドレスは登録はしているのですが。 大体これでインターネットにつながるのでこのままにしておいたのですが、やはりここには、nameserver のアドレスを入れるべきか・・・今入れて再起動してみましたが変わりませんでした。

すると、全ての回答が全文表示されます。
  • xjd
  • ベストアンサー率63% (1021/1612)
回答No.5

メールの動作を確認する時は、mailコマンドを実行する直前にtailコマンドで ログファイルを動的に監視するようにしましょう。 ちょっと時間がたってから、エラーが出力される場合もあります。 相手側にrejectされたとか、逆引き・名前解決できなかったとか.... # tail -f /var/log/maillog mailコマンドで最後はピリオドのみで終わってみたらどうなります? % mail hogehoge@###.com Subject: Hello Konnnichiha .

Lorenzini
質問者

補足

ただいま、# tail -f /var/log/maillog で監視していましたところ、ご指摘のとおり、数分後にまたログが出てきました。タイムアウトで送信が保留されているみたいです。 Jun 30 11:52:44 wwwsm-msp-queue[4486]: h5QMJ84g001664: to=root, delay=3+04:32:20, xdelay=00:00:00,mailer=relay,pri=14071651, relay=www.uwb.jp.,dsn=4.0.0, stat=Deferred: Operation timed out with www.uwb.jp. Jun 30 11:52:44 www sm-msp-queue[4486]: h5QMJ84f001664: to=root, delay=3+04:32:20, xdelay=00:00:00, mailer=relay, pri=14073094, relay=www.example.com., dsn=4.0.0, stat=Deferred: Operation timed out with www.example.com. Jun 30 11:52:44 www sm-msp-queue[4486]: h5R0MdZL001945: to=lorenzini@hotmail.com, ctladdr=nobody (65534), delay=3+02:・・・・・ 時々ログが更新されています。ほぼ同じメッセージなので、何度も送信を試みているようです。 今コンソールから見ていますが、tail コマンドから復帰することができなくなりました。q を押してみてもだめです。q と表示されるだけです。h でも同じです。 どうやったらプロンプトに戻れるでしょうか?

すると、全ての回答が全文表示されます。
回答No.4

mail コマンドで自分のアカウント宛にメールを送ってきちんと届きますか? 例) アカウント hoge の場合  echo "TEST" | mail hoge mail これでメールが表示されればメールフォームプログラムの問題だと思いますよ。 p.s. もしそのサーバがメールサーバでないのなら、  sendmail_enable="NO" にした方がセキュリティ的には良いですよ。"NO" でもそのサーバから外部(とそのサーバ宛)へのメール送信は可能です。

Lorenzini
質問者

お礼

rc.conf は sendmail_enable="NO" にして、inetd で sendmail を起動させる方が、現在の目的には合致していると、私も思っていたところです。そして TCP Wrapper でアクセス制限しようと思います。ありがとうございます。

Lorenzini
質問者

補足

% echo "TEST" | mail hoge % mail No mail for lorenzini と言う感じで、まったくメールを送信していないようです。ログはあるし、ルーターのアクセスランプもその瞬間ぷかぷかしているので、何かしらのアクションは起きているようなのですが。とりあえず今夜はWEB行脚で修行の旅に行って参ります。

すると、全ての回答が全文表示されます。
  • xjd
  • ベストアンサー率63% (1021/1612)
回答No.3

#1です。 先ほどFreeBSD 5.0-RELEASEで確認したところ、sendmailは初期値で ローカル(メールサーバ上)から外部へ送信できるようになっています。 mailコマンドもOKです。 (インストール時のセキュリティはMediumです。) また、自宅サーバでDNSを立てているので、DNSによる名前解決 (正引き/逆引き/MX)ができています。 メール送信時に、/var/log/maillogにどんなエラーが出力されているか 確認して下さい。

Lorenzini
質問者

補足

メールコマンドでメールを送ってみると、最後に、EOTと出ました。End of text でしょうか?わかりませんが、その瞬間、ルーターのアクセスランプが点滅しているのでパケットは送っているような気もするのです。 % mail -s hello hogehoge@hoge.com hello   [Ctrl-D] EOT % vi /var/log/maillog ~~~~~snip~~~~~~ Jun 30 01:04:09 www sendmail[2854]: h5TG49rN002854: from=lorenzini, size44, class=0, nrcpts=1, msgid=<200306291604.h5TG49rN002854@www.example.com>, relay=lorenzini@localhost Jun 30 01:05:25 www sendmail[2854]: h5TG49rN002854: to=hogehoge@hoge.com, ctladd とありました。自分のメアドにも送ってみたのですが、やはり届かないんですよね。ちなみに、自分のアカウント宛にメール送ってみても % mail No mail for lorenzini 届いていませんでした。

すると、全ての回答が全文表示されます。
  • rara_sun
  • ベストアンサー率50% (271/539)
回答No.2

> /etc/rc.conf > sendmail_enable="YES" BSD起動時にsendmailデーモンを起動する(だけの)設定です。 sendmail自身が、どういう動きをしたらよいかは、Lorenziniさんが決めてあげないといけないのです。 先人の方々の見本を見ながら試行錯誤してみてください。 乗り切れば、それだけ力になります。 http://www.fkimura.com/sendmail-cf12.html http://www.med.osaka-u.ac.jp/pub/anes/www/comp/sendmail.html http://masui.net/FreeBSD/step1/chap4.html http://www.ask.ne.jp/~suzuki/bsd-mail_send.html 闇雲に設定しても動くかもしれませんが、sendmailがどんな動きをするべきなのかその仕組みを知ることもこれから勉強していくうえで必要ではないでしょうか? http://www.tcp-ip.or.jp/~ikken/intra/mail_bas.html http://www.kiu.ad.jp/forum/97/980124/makino/ http://www.nic.ad.jp/ja/materials/iw/1997/proceedings/tutorial3/ あっ、ちなみに私は、FreeBSDの知識も、sendmailの知識もありません。今回この質問をみて興味があって勉強させていただきました(汗)。インターネット上で・・。

Lorenzini
質問者

補足

ありがとうございます。ウェブサーバー上で使う sendmail ですから、わざわざ sendmail 本を買わなくてもいいかと高をくくった挙句に四苦八苦しておりました。自分で調べるべき労であるとともに、ご教示いただいたリンク群は非常にありがたいものです。

すると、全ての回答が全文表示されます。
  • xjd
  • ベストアンサー率63% (1021/1612)
回答No.1

sendmail.cfの修正 ローカルからのメールリレーの許可 名前解決(正引き・逆引き・MX) などの設定が必要になります。

Lorenzini
質問者

補足

早速のご回答ありがとうございます。やはり sendmail をいじるには .cf のコンパイルが必要不可欠ぐらいの気持ちで勉強しないといけないんですね。いつもながら、xjd 様には、UNIX をさわる心構えを学ばせていただいております。ご教示いただいたところ、学習させていただきます。

すると、全ての回答が全文表示されます。

関連するQ&A