• 締切済み

メールの送信

mail コマンドからメールが送れるのは、sendmail が使われているのでしょうか?それとも mail コマンドが単独でメールを送っているのでしょうか? ただいま、管理人にメールが送れるウェブサーバーを立てたいと思っていますが、MTA を使わずにメールを送信できるのなら、使わずにメールを送信できるようにしたいです。PHP を使ってメールを送信する予定です。しかし、PHP を使ってメールの送信が出来ません。mail コマンドで送信できたので、PHP でも送信できそうな気がしたのですが。 やはり mail コマンドも sendmail を使っているのでしょうか?その場合、sendmail のパスは、/usr/libexec/sendmail/sendmail で合っていますでしょうか? /etc/mail/mailer.conf を見て、実際見に行ったら sendmail があるようですが、パスをそのように指定しても、メールが送信されません。 環境は FreeBSD5.0R です

みんなの回答

回答No.5

MTA を使わずに... というのは sendmail が TCP/25 を使って起動しているのが嫌だからでしょうか? であれば ports で mail/qmail を入れて、sendmail と入れ替えてしまうのが吉かと。   # cd /usr/ports/mail/qmail # make enable-qmail(だったかな...)  ちなみに 5.x であれば /usr/libexec/sendmail/sendmail で合ってると思います。また、php.ini に関してはサンプルをとりあえずは copy して使うのが良いと思いますよ。 p.s. ちなみに /etc/rc.conf に sendmail_enable を設定してあると思いますが、値は "YES" / "NO" / "NONE" のいずれでしょうか?

Lorenzini
質問者

補足

MTAをいじるつもりはなかったのですが、宗教上の理由で sendmail 以外はつかえないのです。とりあえず今、バージョンを 5.1 に上げたらメールが送信できるようになりました。 いまだにさっぱりわかりませんが、こうもり本を読んで勉強しなおします。ほんとうにありがとうございました。

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

>PHP でも送信できそうな気がしたのですが。 「気がする」ではなく、ちゃんと調べましょう。 >PHP でも送れるはずだと思い、MTA はできれば使わずに済ませたいと考えています。 mailコマンドで外部に送信できているのであれば、PHPでも送れます。 MTAを動かす必要はありません。 ログファイルにエラーは出力されていないか? php.iniでmail関連の設定ができているか? phpスクリプトに間違いはないか? phpコンパイル時のオプションに問題はないか? 「できません」ばかり繰り返されても、よいアドバイスができません。

Lorenzini
質問者

補足

貴重なアドバイスありがとうございます。 >ログファイルにエラーは出力されていないか? どうも Connection refused by localhost.my.dom が問題のようです。ホスト名はちゃんと名前を付けているので、これではちょっとまずいなという気がします。ここを修正できればいいかなと思います。ちょっと参考になりそうな本を探しに行ってきます。maillogは以下のような感じです。 Nov 10 15:09:05 www sm-msp-queue[8901]: hA7I1xhk000832: to=root, ctladdr=root (0 /0), delay=2+12:07:06, xdelay=00:00:00, mailer=relay, pri=11190047, relay=localh ost.my.domain., dsn=4.0.0, stat=Deferred: Connection refused by localhost.my.dom ain. Nov 10 15:09:05 www sm-msp-queue[8901]: hA7I1w47000785: to=root, ctladdr=root (0 /0), delay=2+12:07:07, xdelay=00:00:00, mailer=relay, pri=11190050, relay=localh ost.my.domain., dsn=4.0.0, stat=Deferred: Connection refused by localhost.my.dom ain. Nov 10 15:10:41 www sendmail[8908]: hAA6AfSY008908: from=nobody, size=1055, clas s=0, nrcpts=1, msgid=<10f4592aa64573e480ac3347e3c0a721@www.******.jp>, relay=nobody @localhost Nov 10 15:10:41 www sendmail[8908]: hAA6AfSY008908: to=******@hotmail.com, ct laddr=nobody (65534/65534), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=3 0560, relay=localhost.my.domain., dsn=4.0.0, stat=Deferred: Connection refused b y localhost.my.domain. Nov 10 15:10:42 www sendmail[8910]: hAA6Ag2L008910: from=nobody, size=625, class =0, nrcpts=1, msgid=<4578ad0289782db6d9c81c658c0b21e1@www.******.jp>, relay=nobody@ localhost Nov 10 15:10:42 www sendmail[8910]: hAA6Ag2L008910: to=******@yahoo.co.jp, ctladdr=nobody (65534/65534), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri =30574, relay=localhost.my.domain., dsn=4.0.0, stat=Deferred: Connection refused by localhost.my.domain. Nov 10 15:23:55 www sendmail[8944]: hAA6Ntlc008944: from=nobody, size=1056, clas s=0, nrcpts=1, msgid=<bd6dae1eb36f32b4e3a2ca1a6226fb59@www.******.jp>, relay=nobody @localhost Nov 10 15:23:55 www sendmail[8944]: hAA6Ntlc008944: to=******@hotmail.com, ct laddr=nobody (65534/65534), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=3 0560, relay=localhost.my.domain., dsn=4.0.0, stat=Deferred: Connection refused b y localhost.my.domain. Nov 10 15:23:55 www sendmail[8946]: hAA6Nt2r008946: from=nobody, size=625, class =0, nrcpts=1, msgid=<12871570768c187c5965dbb1d5fc231c@www.******.jp>, relay=nobody@ localhost Nov 10 15:23:55 www sendmail[8946]: hAA6Nt2r008946: to=******@yahoo.co.jp, ctladdr=nobody (65534/65534), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri =30574, relay=localhost.my.domain., dsn=4.0.0, stat=Deferred: Connection refused by localhost.my.domain. というふうに出ていました。 >php.iniでmail関連の設定ができているか? 一応、PHPスクリプトのマニュアルによると、php.ini の設定は、 register_globals = On とだけ書かれていたのですが、一応 sendmail のパスも修正しておきました。 >phpスクリプトに間違いはないか? Linuxなどでは正常にメールが送信されているようです。 >phpコンパイル時のオプションに問題はないか? これもマニュアルを参考に数十回試行錯誤を重ねています。

  • angband
  • ベストアンサー率51% (86/168)
回答No.3

sendmailはホスト間でメールを配送するプログラムです。 これを(MTA)といいます。FreeBSDだとmailコマンドで メールを読み書きできますが、mailプログラムは内部で sendmailを使います。 ただPHPでメールを送信したいならば、わざわざmail コマンドを起動しなくても mb_send_mail関数について 調べるとよいでしょう。日本語のメールを簡単に送信 できますよ。この関数を使えばmailコマンドを使うより 軽いですしね。 この関数のマニュアルは http://php.s3.to/man/function.mb-send-mail.html

Lorenzini
質問者

補足

PHP でのスクリプトはもう完成しているのですが、一台のサーバーでのみメールが送信できないのです。 ファイヤーウォールかサーバーの問題と思っていたのですが、mail コマンドではメールが送れているので PHP でも送れるはずだと思い、MTA はできれば使わずに済ませたいと考えています。(ウェブサイトからメールを送信できるようにしたいだけで、メールサーバーを立てるつもりはないので、こうもり本は必要ないと考えています)

noname#14035
noname#14035
回答No.2

こんばんは。 サーバーを立てるということは、常時インターネットの通信網の一部になるということですので、それなりの責任が発生します。(不十分な知識とシステムでは、人に迷惑がかかる可能性が非常に高いためです。) ですので、率直に書きますが、悪意はありませんから、寛大な心で読んでいただけると助かります。 #1の方も「宿題」を出されているように、サーバを立てるにはあまりに知識・勉強不足です。(技術的に動かせることと、「管理できる」ということは全く別次元のハナシです。) サーバーを立てる場合、十分なネットワーク知識を持った管理者が、完全に閉じたネットワーク上で十分なテストを行い、不具合やセキュリティー・ホールを潰してから公開すべきで、あまり使いたくない言葉ですが、これは”常識”です。 特にセキュリティーに関して、管理のあまいサーバーでは、「スパムリレー」「ウィルス(ワーム)二次感染」「オープンプロキシ」「不正アクセスの踏み台」など、他人に被害を与えてしまう可能性が十分にありますから、一般のネットユーザーとは別次元の意識が必要になります。 Webサーバーは比較的簡単に立てることが出来ますが、「管理」についての知識(ログどりやメンテナンスを含め)も必要になります。 また、メール送信の仕組みの根本は、SMTP等の「プロトコル」についての話で、メールのシステムでは他のプロトコルも利用されています。(さらに言えば、TCP/IPについての知識が必要です。) sendmailについては、上記のプロトコルを利用して動くプログラム(デーモン)のハナシ(たまたまFreeBSDのパッケージがsendmailを採用しているだけです。)で、同様の働きをするものは他にもあります(qmailなど)。 他にも「DNS」の構築と管理(さらに言えばドメイン登録と管理)について考える必要もあります。 いろいろ書いてきましたが、下記の参考URLなどを含め、今ではネット上にも豊富な教材がありますから、きちんと勉強していけば十分な知識をつけられるはずです。 基本をすっ飛ばして無理やりサーバーを立ててしまえば、トラブルの可能性も増えますし、イザという時にどうにもならなくなってしまいますから、十分な準備をされることを強くおすすめします。 以上、参考にしてみてください。 それでは。 <参考URL> http://www.atmarkit.co.jp/fnetwork/rensai/netpro00/netpro01.html ↓ インターネットプロトコル詳説(連載もので、Webやメールの仕組みとプロトコル(「HTTP・HTML」「SMTP・POP3等」)についての回もあります。) http://www.atmarkit.co.jp/flinux/rensai/apache01/apache01.html ↓ ApacheによるWebサーバ構築。 Copyright(c) 2000-2003 atmarkIT http://www.fujie.jp/freebsd/ ↓ FreeBSDによるインターネットサーバーの構築。

回答No.1

あなたに宿題です MTAとMUAの違いを調べましょう。 そうすれば、あなたの知りたい事がわかります。 mailコマンドとsendmailの関係を知りたいなら SENDMAILシステム管理の書物をオライリーより 購入しましょう。 ヒント: UNIXベースでメール送信なら、 シェルスクリプトでも可能です。

関連するQ&A