• 締切済み

メールの送信

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

  • FreeBSDでのsendmailでのメール送信

    はじめまして FreeBSD11.0で自前サーバ構築をしています。 今回、サーバ上からsendmailで、下記ページを参考にメールを送信を試みています。 ・http://x68000.q-e-d.net/~68user/unix/pickup?sendmail FreeBSD11.0上での作業は、以下の通りです。 1. /etc/rc.confに下記を追加 sendmail_enable="YES" 2. リブート 3. sendmailが動作していることを下記で確認 # /etc/rc.d/sendmail status sendmail is running as pid 713. sendmail_msp_queue is running as pid 716. # 4. sendmailコマンドを実行 % sendmail From:送信元メールアドレス To:宛先メールアドレス Subject:タイトル xxx . % ●結果、コマンドは、正常に終了してますが、メールは、送信できません。 試しに自分の契約しているレンタルサーバ(FreeBSD9.1)で上記の4.のsendmail コマンドを実行すると、メール送信ができます。 環境設定など作業上なにが足らないのでしょうか。 FreeBSDのsendmailコマンドでの送信についてご存知の方がおりましたらご教示頂け ないでしょうか。 いろいろと調べたり試行錯誤したのですが、解決できなく質問をさせて頂きました。 よろしく、お願いいたします。

  • mailwrapper: no mappingについて

    いつもお世話になります。サーバー移転に伴い、プログラムの動作確認をしております。 perlで作成されたcgiでsendmailコマンドを利用してメールを送信するプログラムを動作させたところ、下記エラーが発生します。 ※前提としてsendmailのパスをプログラムに記述しないといけないため、whichコマンドでsendmailが/usr/sbin/sendmailを確認済。 「mailwrapper: no mapping in /etc/mail/mailer.conf」 このコマンドに対応しているメーラーがないということなのでしょうか? このエラーの意味はどういったもので、どのような対処が一般的なのか教えて下さい。

  • PHPでメールが送信できない

    弊社でお客様のお問い合わせフォームをPHPで作成しているのですが、 お客様の環境でメールを送信することができません。 サーバー環境は以下の通りです。 Red Hat Linux 2.6.9 Apache/2.0.52 PHP 4.3.9 原因の調査で以下のようなチェックを行いました。 【お客様に御願いしたチェック】 1. サーバーでsendmailコマンドを利用してメールが送れるか? 送ることができる。 正しくキューイングされ、送信されることまで確認OK 2. php.iniのsendmail_pathの確認 sendmail_path は /usr/sbin/sendmail -i -tになっている。 /usr/sbin/sendmailはちゃんとある 3. mail()が使えないPHP /usr/sbin/sendmail,/usr/lib/sendmailがなければmail()が使えないPHPがビルドされるケース。 標準のPHPを利用しているので、問題ない。 【弊社が担当したチェック】 1. メールを送信するPHPスクリプトの不具合 PHPスクリプト自体は正常に動作する。 php.iniのdispaly_errorsをONに変更してもエラーメッセージはでない。 2. 簡単なmail()関数を使用したチェック 以下のようなphpスクリプトで確認。 OKがブラウザに表示される。 <?php if (mail("私のメールアドレス", "テスト", "テスト本文", "From:私のメールアドレス")) { echo "OK"; } else { echo "NG"; } ?> 何か原因があるのでしょうか? どなたか教えてください。

    • ベストアンサー
    • PHP
  • メールが送信できない(sendmail)

    CGIにてsendmailを送信したいのですが、送信されなくなってしまいました。 以前、同じCGIでメールを送信できていたので、原因はsendmail自体にあると考えています。 OSはCentOS5です。 sendmailの仕組みもよく分からないので、皆さんのお知恵をお借りしたいのです。 # /etc/init.d/sendmail status sendmail is stopped sendmailを起動しようとすると # /etc/init.d/sendmail start Starting sendmail: sendmail: usage: sendmail [ -t ] [ -fsender ] [ -Fname ] [ -bp ] [ -bs ] [ arg ... ] [FAILED] となり、起動できません。 qmailにてsendmailを動かしているのかと思い、以下を実行しました。 # which sendmail /usr/sbin/sendmail # rpm -qf /usr/sbin/sendmail sendmail-8.13.8-2.el5 psa-qmail-1.03-cos5.build84080425.19 # ls -l /usr/sbin/sendmail lrwxrwxrwx 1 root root 21 Feb 7 2008 /usr/sbin/sendmail -> /etc/alternatives/mta # ll /etc/alternatives/mta lrwxrwxrwx 1 root root 23 Jun 9 2008 /etc/alternatives/mta -> /var/qmail/bin/sendmail # ll /var/qmail/bin/sendmail -r-xr-xr-x 1 root qmail 10804 Apr 25 2008 /var/qmail/bin/sendmail この後何が必要なのかが分かりません。 今、調べたものも解決に役立つか分からない状況です。 よろしくお願い致します。

  • メールをトリガーにPHPを自動起動したい

    PHPでも聞いてみたのですが、考えてみるとPHPと言うよりもLinuxのほうかもしれないということでお願いいたします 空メールの内容をPHPに渡したいと言うことで、いろいろ試してみましたが、なかなかうまくいきません Webminを使ってサーバの管理をしています MTAはsendmailを使っています sendmailの/etc/aliases にはこのように記述しました hoge: "|/usr/bin/procmail" /etc/procmailrc にはこのように記述しています PATH=/usr/bin:/bin:/usr/local/bin MAILDIR=/var/spool/mail LOGFILE=/var/www/html/****/procmail.log LOCKFILE=/var/www/html/****/procmail.lock :0 |/var/www/html/****/empty_mail_regist.php 私の考えでは hoge@hoge.comにメールが来る      ↓ sendmailが/usr/bin/procmailの起動      ↓ procmailが/etc/procmailrc を読み込んでプログラム実行 となると思っているのですが間違うでしょうか? /etc/aliases に hoge: "|/var/www/html/***/empty_mail_regist.php" と記述した場合、PHPのエラー(#!/usr/bin/php -q が抜けているなど)の場合はエラーメールが帰ってきます PHPにアクセスはしているが実行できていない理由がわかりません プログラム的なものだと思い、きめうちでメールを送るスクリプトを書きましたがダメでした もちろん、コマンドラインで実行するとメールの送信はできます スクリプトの所有者とメールアドレスのユーザは別なのでどれがダメなのかと思い、chownでhogeに変更してみましたが変わりはありませんでした 参考にしたサイトはこちらです メール配信時のPHPスクリプト起動(Sendmail編)http://www.dolphy.gr.jp/webap/topic/smrsh.html

  • sendmail を使いたい

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

  • Postfixの自動起動について

    こんにちは。 現在以下の環境でPostfixをインストールしたのですが、Postfixの自動起動が判りません。 こちらの過去の質問やインターネットで色々検索してみましたが、納得の行く回答が得られませんでした。 FreeBSDが立ち上がる時、一緒にPostfixも立ち上がるように設定する方法を教えて下さい。 宜しくお願い致します。 ・OS及びソフト FreeBSD4.8-STABLE Postfix-2.0.10 ・Postfixをインストールした場所 temp_directory:[/usr/local/postfix-2.0.10] config_directory:[/etc/postfix] daemon_directory:[/usr/local/libexec/postfix] command_directory:[/usr/local/sbin] queve_directory:[/var/spool/postfix] sendmail_path:[/usr/local/src/postfix-2.0.10/sendmail] newaliases_path:[/usr/bin/newaliases] mailq_path:[/usr/bin/mailq] ※ sendmailは停止させています。 (/etc/rc.confでsendmail_enable="NONE"しています。) 宜しくお願い致します。

  • PHPのmail()で送れていたメールが、急に受信できなくなりました。

    PHPのmail()で送れていたメールが、急に受信できなくなりました。 XP上のFreebsd@Vmwareでメール送信テストをしていて、 数日前まで普通に受信できていたのですが、 同じコードが今は全く動作しません。 エラーも吐かないので原因が全く分かりません。 phpinfo();で関連していそうなところを見ると sendmail_from no value no value sendmail_path /usr/sbin/sendmail -t -i /usr/sbin/sendmail -t -i SMTP localhost localhost smtp_port 25 25 な感じです。 php.iniは SMTP = localhost smtp_port = 25 ;sendmail_path = です。 数日前までは同じ設定で受信できていましたし、 今でも送信側でエラーを吐くことはありません。 何が原因なんでしょう?

    • 締切済み
    • PHP
  • sendmailでメールが送信されない。

    こんにちは。 自動応答メールフォームのCGI「ThemeResMail」というのを 使っているのですが、うまく動作しません。 このcgiをアップしたのは以下のレンタルサーバーです。 http://www.dot5hosting.com/dot5/ 使用しているcgiはこれです。 http://apps.cside.com/theme/tmresmail/ メール送信完了画面は出るのですが、 送信者、あて先共にメールが届きません。 同じ設定で他のサーバー(xrea)ではうまくいきました。 sendmailとperlのパスは調べた所、間違いないようです。 ■dot5でのパス sendmail /usr/sbin/sendmail Perl /usr/bin/perl 何が原因なのかどんな事でも結構ですのでコメント頂けると助かります。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • mb_send_mail()が使えない

    WebからPHPのmb_send_mail関数を使用してメールを送信しようとしていますが、なぜか送信されません。 原因についてお分かりになればお教えください。 また、下記以外に必要な情報があればお教えください。 コマンドライン上でのmailコマンドによるメール送信は可能な状態です。 sendmailの代わりにqmailをインストールしているため、/usr/sbin/sendmailから/var/qmail/bin/sendmailへシンボリックリンクを貼っています。 また、PHPのmail()は"Call to undefined function: mail()"エラーとなりますが、mb_send_mail()ではエラーが発生しません。 ●OS:TurboLinux7 ●言語:PHP4.3.3 ●phpのconfigure時のオプション:  ./configure --with-apxs=/usr/sbin/apxs \  --enable-mbstring ●/usr/local/lib/php.iniのsendmail_path設定:  sendmail_path = /var/qmail/bin/sendmail ●テスト用PHPのソース(実行すると常に「メール送信エラー」になります) <?php $ans = mb_send_mail("メールアドレス","件名","本文"); if ($ans) { print "<P>メール送信完了</P>"; } else { print "<P>メール送信エラー</P>"; } ?>

    • ベストアンサー
    • PHP