• 締切済み
  • 暇なときにでも

sendmail

PerlやPHPにはsendmailを使ってメール送信する関数があったと思いますが、sendmailというメールサーバを起動していなくてはいけないのですか? メールサーバならsendmailサーバの他にpostfixやqmailなどがあるじゃないですか。

共感・応援の気持ちを伝えよう!

  • 回答数3
  • 閲覧数372
  • ありがとう数2

みんなの回答

  • 回答No.3
  • taseki
  • ベストアンサー率66% (155/233)

おそらく、SMTPやPOP3などをプログラムだと勘違いなさっているのではないでしょうか(広義では必ずしも間違いとは言えないかもしれませんが)。 ANo.2の方も書かれているように、SMTPはMAILER-DAEMONやOEなどのクライアントがメールを配送する場合のプロトコルで、POP3は名前のとおりメールを保存しているサーバー(メールボックス)からクライアントがメールを「取り出す」プロトコルです。 ANo.1で書かれた意味は、それらを実行するプログラムという意味で書かれたのだと思います。 ですから、SMTPサービスを提供する側もメールを受け取ります。「取り出す」のではないということです。 というより、「このメールを送って」というリクエストを「受け取る」、すなわちサーバーです。 また、sendmailというのが、sendmailという名前のMAILER-DAEMONを指すのか、sendmailというコマンドを指すのか、という相違も整理して考えると良いかと思います。

共感・感謝の気持ちを伝えよう!

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

>sendmailサーバを使わないなら、PHPのsendmailのパスの設定は >qmailの実行ファイルのパスを指定すればいいのですか? > それだと他のプログラムが動かなくなるので、標準のsendmailコマンドを 置き換えます。 >メールサーバの送信専門の実行ファイルがSMTPで、受信専用がPOPだと >思っていました。 > SMTPはメール配送です。POPはメールボックスのメールを読み出すだけです。 sendmail,qmail,postfix,eximなどはMTA(メール配送エージェント)なので POPとは関係ありません。(例外的にqmailにはpop3サーバがおまけで付いてる) >なのでSMTPサーバとSMTPクライアントというのが理解できなかったので、 >そのことも教えてほしいです。 > サーバとはサービスを提供する側です。クライアントはそのサービスを利用する 側です。SMTPサービスを提供する側(メールを受け取る)と、メールを送る側 (メールを送信する側)という意味です。 WindowsのようにメールボックスがPC上にない場合は、SMTPでメール送信、 POP3かIMAPでメール受信しますが、メールボックスがPC上にあるUNIX系の OSなどではPOPは普通不要です。 >OEをメールクライアントだと思っています。 メールクライアントという言葉は正しくないと思います。OEはPOP3クライアント ではあると思います。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

SMTPサービスを提供する側は、メールを受け取るではなくて、メールを送るんじゃないんですか? SMTPかPOPがメールを受け取って自分のものでなかったら近くのSMTPに渡すんだと思いますが、 OE→SMTP→POP→SMTP→POP→SMTP→POP→OE か OE→SMTP→SMTP→SMTP→SMTP→POP→OE のどっちかなんだと思っています。 まだsendmailも起動したことがなくてあんまりよく分かりませんでした。 標準のsendmailコマンドを置き換えるというのも分かりませんでした。 qmailが特殊だったというのは分かりました。

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

sendmail(SMTPサーバ)を起動しておく必要はありません。 これはsendmailがモンスター級のソフトウェアで何でもできるために、 1つのコマンドでSMTPサーバとSMTPクライアント両方を含んでいるために 勘違いしやすいかもしれませんね。 多くのプログラムが /usr/lib/sendmail のようなコマンドに依存してるため、 その互換性のためにqmailやpostfixでは、そのものズバリの sendmail という コマンド(SMTPクライアント)を含んでいます。

共感・感謝の気持ちを伝えよう!

質問者からの補足

sendmailサーバを使わないなら、PHPのsendmailのパスの設定はqmailの実行ファイルのパスを指定すればいいのですか? メールサーバの送信専門の実行ファイルがSMTPで、受信専用がPOPだと思っていました。 なのでSMTPサーバとSMTPクライアントというのが理解できなかったので、そのことも教えてほしいです。 OEをメールクライアントだと思っています。

関連するQ&A

  • 【MTA】sendmail・postfix・qmailについて

    sendmailの場合・・・送受信信にsendmail(MTA) postfixの場合・・・受信にpostfix/smtpd(MTA)           外部への送信にpostfix/smtp(リモートMDA) qmailの場合・・・受信にqmail-smtpd (MTA)          外部への送信にqmail-remote(リモートMDA) となっていますが、MTAとリモートMDAを分ける事によって なにかメリット・デメリットはあるのでしょうか? ネット上で色々調べてみたのですが、見当たらなかったので ご存知の方がいれば教えていただきたいのですが.... 以上、宜しくお願い致します。

  • sendmailコマンドでの送信についてよろしくお願いいたします。

    sendmailコマンドでの送信についてよろしくお願いいたします。 現在、次の環境にてメールサーバーの作成をしています。 OS   [CentOS 5] メール [postfix] このような、メールサーバの作成(転送設定)で、Thunderbirdといわ れます、メールソフトからのメールの送信は可能になったのですが、 sendmailコマンドでの送信が出来なくて困っています。 よろしければ、原因や問題を、教えて頂けましたらと思っています。 よろしくお願いいたします。 (現在の状況では次のようになっております。) ・メールサーバーには、(main.cf)ファイルに、 relayhost = [SMTPサーバー] を記述して、転送の設定をしています。 ・また、  smtp_sasl_password_maps = hash:/etc/postfix/isp_account  の記述と、(isp_account)ファイルの中には、  [SMTPサーバー]:25 ユーザー名:パスワード  の作成をしています。 ※telnet localhost 25 で入りましての送信は行えています。

  • mb_sendmailのエラーについて質問です。

    mb_sendmailのエラーについて質問です。 mb_sendmailでメールを送信する際に、 $re = mb_sendmail(…); という使い方をして、$reでメールの送信の成功と失敗を見分けようとしましたが、$re自体にはPHPの機能としての返り値はあるものの、実際にメールが届いたか届かなかったかの判断はできませんでした。例えばメールアドレスが間違っていたりして実際にメールが届いていない場合などはそのエラーをどういう風に拾えばよいでしょうか? PHPは自体は非常に安定しているので mb_sendmailでエラーが返ってくるようなことは殆どありませんが、メールそれ自体が届かないということは比較的たくさんあります。 そのようなエラー情報を取得するにはどうしたらよいでしょうか? 現在、Ubuntu 9.10で自前の送信メールサーバー(Postfix)とLAMP環境で開発しております。 よろしくお願いします。

    • 締切済み
    • PHP
  • sendmailのエラーを知りたい

    こんにちわ。 sendmailを使って、メールの自動送信を行っています。 その際に、送れなかったsendmailのエラーは どのようにすれば取得できるのでしょうか? ------ ちなみに、レンタルサーバーで、pos.toネット というところを使用しています。 (www.pos.to) perl はバージョン 5.005_03 のようです。 sendmailは、sendmailと互換のMTAである qmail というものだそうです。 補足もいたしますので、よろしくお願いします。 参考サイトの紹介も大歓迎いたします。 _

  • sendmailのサーバ名を変えたい

    sendmailのサーバ名を変えたいとおもっていますが、 sendmail.cfの何処をいじればいいでしょうか。 現在はシェル上でhostnameで表示されるホスト名で送信しています。 また、メールアドレスによって、hostnameを変えることはできるのでしょうか。 というのもメールのfromとメールサーバドメイン名が違うことで携帯などにメールを送信するときエラーと返されてしまうことがあります。 よろしくお願いいたします。

  • sendmailで自サーバーへ送信できない

    phpからのメール送信で、sendmailで自サーバーあてのメールが送信できません。他サーバー宛ては送信できます。 chmod 4555 sendmail または chmod 4555 mailwrapper にすると送信できますが、セキュリティーが怖いです。 現在は パーミッション 0555 です。 2555 でも送信できません。 何か正しい設定があると思うのですが、色々調べましたが分かりませんでした。なにかヒントをいただければありがたいです。よろしくおねがいいたします。

  • メールサーバの改行

    メール送信のプロトコルではメール1行の長さを1000文字に制限しており(RFC2821)sendmailでは1000文字以上の行が送信されると,<CR><LF><SP><SP><SP>を付加して改行するようですが、Postfixやqmail、その他メールサーバはどのようにして改行するかご存知の方はいませんでしょうか?

  • Sendmail(Solaris)→Postfix(linux)

    メールサーバのリプレイスを行うにあたり ソフトウェアをSendmail(Solaris)からPostfix(RedhatLinux)に移行こととなりました。 旧サーバから情報を引継ぐにあたり、注意事項やSendmailからは引継げない情報などがあればご教授願います。

  • Apache(CGI) からの sendmail 呼び出しについて

    新規でレンタルサーバ(専用サーバ)を借りて、Web上(CGI)からメールの送信を行えるようにしたいのですが、Apacheを経由するとメールの送信に失敗してしまいます。 コマンドラインからPHP(cli)を実行した場合は問題なくメールを送る事ができているのですが、Web経由だとPerlとPHPのどちらもエラーになってしまいました。 phpのメール送信関数は念のため mail() 関数、および mb_send_mail() 関数の2つでテストしています。 また、PerlCGIからも送信テストを行っています。 エラー内容(sendmailのエラーログ)はPerl、PHPの場合ともにsendmailのエラーログだけ取得でき、同じ内容になりました。 apacheのエラーログは何も出力されませんでした。 ■動作確認済み(正常にメールが送信できました) -コマンドライン 1. > php -f mail.php 2. > echo '<?php $ret=mail("メールアドレス","subject","body"); echo "\nret=$ret \n"; ?>' | php ※ mail.php にメールを送るサンプルスクリプトを記述しています。 別環境(Localのテストサーバ)では正常に動作しているのを確認しました ■ 動作環境 ・レンタルサーバ(専用サーバ) OS: Red Hat Enterprise Linux ES release Apache version: 2.0.52 PHP version: 5.2.9 Perl version : 5.8.8 SELinux: Disabled suEXEC: 利用しない サーバドメイン:(ドメイン取得前のため、まだサーバ名と一致していません) PHP: mail() および mb_send_mail()関数はインストールされています sendmail: 通常のメール送受信は確認済みです(初期設定のまま触っていません) ・エラーログ クライアント画面(Web):PHP, perl共にエラーや警告なし apacheのエラーログ: なし sendmailのエラーログ: Mar 31 02:26:23 c15rx2b3 sendmail[7354]: n2UHQLdN007354: to=(メールアドレス), ctladdr=apache (48/48), de lay=00:00:02, xdelay=00:00:02, mailer=relay, pri=30095, relay=[127.0.0.1] [127.0.0.1], dsn=5.6.0, stat=Data format error Mar 31 02:26:23 c15rx2b3 sendmail[7354]: n2UHQLdN007354: n2UHQLdO007354: DSN: Data format error 「stat=Data format error」と「DSN: Data format error」がエラーメッセージの該当箇所になります。 コマンドラインで実行すると上記のエラーは出ずに正常にメールが送信できているので、原因が特定できず困っています。 気になる箇所としては 1.Server名が取得前ドメインになっているため、一致していない 2.sendmail のエラーログで relay=127.0.0.1 と自アドレスになっている (コマンドラインから実行した場合は relayのアドレスは外部のサーバになります) どのような設定変更が必要か、ご教授頂ければと思います。 足りない情報がありましたらご指摘ください。 よろしくお願い致します。

  • sendmailでのctladdrの変更

    linux(centos5)にてメールサーバとしてsendmailを利用しています。 プログラム(perl)からメールを送信した時のctladdrについて教えてください。 メールログ(受信時のメールのヘッダーも同じ)を見るとctladdr(メールのヘッダーの場合received)がメールサーバ名になりますが、これを送信者ドメインに変えることはできるのでしょうか。 プログラムから制御できるものなのか、sendmailの設定なのか、DNSのMXが優先されるのか(現状MXのホスト名になる) 送信メールアドレスがinfo@example.comの場合ctladdrもexample.comとしたい。 解決方法を教えてください。