• ベストアンサー

少し特殊?な状況でメール送信

WEB関係の仕事をしていますが、まだまだ勉強中の身です。 文才がなく長文になりそうですので予めお詫び致します。 クライアント(A社とします)からPHPでメール送信プログラムの作成依頼を受けましたが、少し特殊?な状況でメール送信ができません。 WEBサーバ:A社に設置(WEB予約システムをメイン) WEBサーバの構築と管理:予約システムの制作会社(B社とします) WEBサーバ内には独自ドメインのホームページ(hoge.orgとします) ドメイン・DNS管理:C社 メールアドレス:独自ドメインで取得できず、abc@hoge.netという別ドメインで取得(C社サーバ内) という状況です。 WEBサーバ内でphpinfo()を実行したところ、メール関係では include_path = .:/usr/local/lib/php sendmail_from = no value sendmail_path = /usr/sbin/sendmail -t -i SMTP = localhost smtp_port = 25 となっています。 sendmail_fromがno valueですが、上記を見たところsendmailが起動していると思ったのですが、これだけでは判断できないのでしょうか? PHPでmb_send_mail()を実行した結果、TRUE が帰ってきますがメールは届きません。(宛先はabc@hoge.net) ちなみに、B社ではメール関係のプログラムはインストールしていないと言っています (ですが管理が杜撰なので正直、信用できません)し、WEBサーバは予約システムがメインでありメールサーバを入れると ウィルスが予約システムに影響を及ぼす可能性があるのでインストールできないと言われました。(正直、この対応にも不満が残ります) ファイル作成 → B社へ渡し → B社がサーバへアップロードと言う流れですのでこちらでサーバ設定を見ることもできません。 こういった状況でWEBサーバ内のPHPからabc@hoge.netへ送信する方法はあるのでしょうか? phpinfo()を見る限りPEARもインストールされていないようですが、これだけでは判断できませんか? B社の穴を見つけるようで気分が悪いですがクライアントの要望に答えたく考え悩んでいます。 B社いわく「”現状”の設定内で対応してくれ」とのことですので・・・。

  • PHP
  • 回答数6
  • ありがとう数2

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

  • ベストアンサー
  • helonpa
  • ベストアンサー率38% (108/278)
回答No.6

横やり&遅レスですが。。 > POP Before SMTP、SMTP-AUTHの対応で一度POP認証すれば > 送信できそうな気がするのですが・・・無理でしょうか? POP Before SMTP あたりまではソケット通信でも難しくないと思いますが、SMTP-AUTHは 難しいのではないでしょうか(技術的に調べていないので分かりませんが)。 > ですが、この方法だとB社の外部サーバから(別ドメインから)の接続なので第3者利用と > なってしまい普通はスパム扱いですよね? > 正直この方法での送信できたとしても気持ち悪いです・・・。 SPAMは不正利用であり、許可を受けて利用するのは何ら問題ありません。 一般的な使用方法です。 > PEAR用意し利用しなければならないのですがmそうすると.htaccessまたはini_setで利用するとなると思います。 > この方法は推奨されていないので踏み止まっています。 推奨されていないという事は何もないですよ。 .htaccessやini_setは使うために用意された機能です。 若干の性能ダウン(0.1%とか)があるというだけです。 > PEAR用意し利用するのと下記のようにfsockopenでソケット接続する方法と、どちらがスマートなのでしょうか? PEARのライブラリで済むなら、その方が楽で不具合も少ないと思いますが、何れでも良いと思います。

TukuTuku9
質問者

お礼

回答ありがとうございます。 結果を報告しますと、B社C社ともに外部からのソケット通信およびメールクライアント(PEAR含む)の利用が許可されなかったのでメール送信の手段が完全になくなりました。 送信部で外部ドメイン(弊社ドメイン)を利用すればメールは送れますが仕様や金銭的の面でクライアントが諦めました。 今回、私は完全解決とまではいきませんでしたが、同じような問題に遭遇された方が参考になれば幸いです。 ありがとうございました。

その他の回答 (5)

noname#30334
noname#30334
回答No.5

#2です。 >SMTP関係のini_set()はWindowsサーバのみ有効だと認識していたのですが >Linuxサーバでも有効なのでしょうか?(WEBサーバはLinuxです) 申し訳ありません。混同していました。 php.iniのmail設定の中で、Linuxで有効なものは、sendmail_pathだけのようです。 #2の投稿は、無視して下さい。

TukuTuku9
質問者

補足

わざわざ訂正していただいてありがとうございます。 引き続き、ご意見をお待ちしております。

回答No.4

> PEARはインストールされてません。B社確認済みです。 わざわざPEAR無しでインストールするとはあまり考えにくい感じはありますが。。。 PEARに関してはローカルインストールも可能です。簡単なWEBアプリになっているものもあるみたいですね(私は未使用)。 http://pear.php.net/manual/ja/installation.shared.php 参考まで。

TukuTuku9
質問者

補足

回答ありがとうございます。 >わざわざPEAR無しで・・・・・ 私もそう思います。ですがB社がそう言っている以上、諦めるしかありません。 ローカルインストールについてはNo3の補足の通りです。

回答No.3

B社のサーバでsendmailで仮にメール送信が可能だとしても、駄目と言っている訳ですから、サービスを止められても文句は言えませんね。 とりあえず、PEARのMailクラスでも使えばどうでしょうか。 SMTPサーバの指定が可能です。一般的なメールクライアント的に使う事がかのうじゃないでしょうか。 http://dozo.matrix.jp/pear/index.php/PEAR/Mail.html 参考まで。

TukuTuku9
質問者

補足

回答ありがとうございます。 >サービスを止められても文句は言えませんね。 その通りですね。B社の穴を見つけるようなことは止めます。 PEARはインストールされてません。B社確認済みです。 PEAR用意し利用しなければならないのですがmそうすると.htaccessまたはini_setで利用するとなると思います。 この方法は推奨されていないので踏み止まっています。 PEAR用意し利用するのと下記のようにfsockopenでソケット接続する方法と、どちらがスマートなのでしょうか?

noname#30334
noname#30334
回答No.2

php.iniの設定 SMTP = localhost をC社のメールサーバのアドレスにしてみて下さい。 もちろん、メールサーバーの設定次第では 不正利用(Fromの詐称など)とみなされて、はじかれる可能性もありますし、 POP Before SMTPが使われていれば、その辺りの考慮も必要です。 どうしても上手くいかなければ、C社に相談して下さい。 それと、php.iniの設定を書き換える事が出来なければ、 ini_set()関数で対処して下さい。

TukuTuku9
質問者

補足

回答ありがとうございます。 php.iniの設定変更は試しにB社に依頼していますがおそらく断られます。 変更してもらえたとしてもC社ではPOP Before SMTPおよびSMTP-AUTHを 利用してるのでini変更だけでは送信はできないと思っています。 C社へどうにか送信可能な状況にできないか?と打診していますが回答はあまだありません。 SMTP関係のini_set()はWindowsサーバのみ有効だと認識していたのですが Linuxサーバでも有効なのでしょうか?(WEBサーバはLinuxです) POP Before SMTP、SMTP-AUTHの対応で一度POP認証すれば 送信できそうな気がするのですが・・・無理でしょうか? 手順としては、 1)fsockopenでC社メールサーバの110番ポートに接続 2)USER、PASSを送信 3)QUIT 4)fsockopenでC社メールサーバの25番ポートに接続 5) HELOコマンド送信 6)MAIL FROM、RCPT TO、DATAでメール送信 7)QUIT と考えていますがこの流れで送信可能かをC社に問い合わせています。 ですが、この方法だとB社の外部サーバから(別ドメインから)の接続なので第3者利用となってしまい普通はスパム扱いですよね? 正直この方法での送信できたとしても気持ち悪いです・・・。 他に何か良い方法はないでしょうか? 書き忘れましたが利用できる言語はPHPのみでバージョンは4.4.2です

  • racchoman
  • ベストアンサー率71% (20/28)
回答No.1

> sendmail_fromがno valueですが、上記を見たところsendmailが起動していると思ったのですが、これだけでは判断できないのでしょうか? これだけでは判断できません。 > PHPでmb_send_mail()を実行した結果、TRUE が帰ってきますがメールは届きません。(宛先はabc@hoge.net) 恐らくsendmailは存在するけど、きちんと設定をしていないか、NWのどこかで止められたのでは無いかと思います。あまり勝手にやると、怒られたりするので注意した方が良いです。 技術的な話では無いですが、メールサーバがどこかに無いとメールが送信できない訳で、どのメールサーバを使うべきなのか、クライアントであるA社に指示をあおぐ話なんじゃないでしょうか。 その結果、A社がB社にメールサーバを立てる指示をするのか、あるいは別のメールサーバを使うようにあなたに言ってくるのかは判りませんが。

TukuTuku9
質問者

補足

回答ありがとうございます。 >これだけでは判断できません。 納得しました。 >あまり勝手にやると、怒られたりするので注意した方が良いです。 そうですね。私としてもサーバが不安定になるようなことはしたくありません。ですからここで最善策を聞ければ、と思い投稿しました。 >クライアントであるA社に指示をあおぐ話なんじゃないでしょうか。 今回の件で私とABC社でやり取りはしていますが、B社からメールサーバは立てられないとハッキリ断られています。 ですからC社のメールサーバを使うしかありません。 投降後に色々調べてみていますが、fsockopen()でソケット接続はどうか?と模索中です。それもC社次第かもしれませんが・・・。

関連するQ&A

  • メールの送信

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

  • qmail・外部へのメール送信について

    メール送信がうまく行えず、困っております。。。 状況は以下のような感じとなっています。 あるドメイン(hoge.com)の Webサーバのみを管理していて、 メールサーバは外部の別サーバにて運用しています。 Webサーバ上よりPHPでhoge@hoge.comにメールを送信するプログラムを設置したのですが、送信できません。 qmailのログを見ると以下のようなエラーが出ておりました。 cannot reinject message to 'hoge@hoge.com' failure: This_address_no_longer_accepts_mail./ hoge.com以外のメールアドレスには問題なく送信できております。 環境は以下の通りです。 OS:CentOS PHP:5.1.6

  • sendmailで特定ドメインに送信できない

    いつもお世話になってます。 ・Aサーバー(192.168.65.170) ・Bサーバー(192.168.13.38) が存在し、両方にqmail、vpopmailがインストールされています。 このたび、AサーバーからBサーバーに移行を予定しておりますが、 現在はAサーバーのqmailが、fuga@hoge.comのSMTPを行っています。 そこで、BサーバーのPHPからメールを送信する際、他のドメインでは 正常に配信されますが、hoge.comへの配信ができません。 試しに、Bサーバーのsendmailコマンドがら実行してみました。 ◎届く echo "test" | /usr/sbin/sendmail -t -i fuga@domain.com ×届かない echo "test" | /usr/sbin/sendmail -t -i fuga@hoge.com maillogを確認したところ、どうやらBサーバーがローカルに配信して いるらしく、Aサーバーに配信していないようです。 (実際はvpopの設定が不完全で、ローカルでボックスに入らずに どこかに消えたか貯まっている模様) コマンドで以下の確認も行いましたが、正常にAサーバーに 向いています。 ◎正常 [www@B ~]$ nslookup mail.hoge.com Server: 192.168.65.153 Address: 192.168.65.153#53 Name: mail.hoge.com Address: 192.168.65.170 ◎正常 [www@B ~]$ telnet mail.hoge.com smtp Trying 192.168.65.170... Connected to mail.hoge.com (192.168.65.170). Escape character is '^]'. 220 mail.hoge.com ESMTP そこで質問ですが、BからAに配送するには ・sendmailコマンドの設定 ・qmailの設定 ・/etc/resolv.confの設定 あたりを変えれば良いのかな、と思ってはいるものの、 どこをどう変更すれば良いのか、ご教示ください。 補足: 負荷分散環境だったりと、実際はもう少し混み入って いますが、このあたりのレジュメはひとまずは不要かと 思い、入れておりません。 IP、ドメインは架空のものですが、A、Bが内部で繋がって いるのは同じです。セグメントの違いも問題ありません。 最終的にはBサーバーに統合されますので、現在の問題は 解決するかと思いますが、移行までは何とか凌ぎたいです。 よろしくお願いします。

  • 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
  • PHPでメール送信

    こんにちわ。 PHP4でWEBサイトを作ろうとしております。その中で、フォームからメールの送信をしたいと考えているのですが、方法が可能かどうかおしえていただきたいと思っております。 WEBサーバとメールサーバが異なる場合でもメール送信は可能でしょうか。WEBサーバは自社内にあるのですが、メールサーバは、レンタル会社のものなのですが、そのレンタルサーバのSendmailを利用してメール送信することは可能でしょうか。 うまく説明できてないかもしれませんが、補足いたしますので、よろしくお願いします。

    • ベストアンサー
    • PHP
  • 自宅設置のWEBサーバーからメール送信

    LINUX初心者です。なんとか自宅にWebサーバーを 設置し稼動しました。 現在、作成したホームページの掲示板に書き込ん でいただいた方にお礼のメールを送信できればと 格闘しています。掲示板に書き込みがあった時、 サーバー管理者にはメールが来ているのでロー カルユーザーには送信できています。 <サーバー環境> Turbo Linux Server 6.1 Apache 1.3.12 sendmail 8.9.3-23 <インターネット> ISP:Biglobe IP:固定IP取得済み DOMAIN:独自ドメイン取得済み Mailサーバー:abc.独自ドメイン(Biglobe) WindowsのOutlookExpressでMailサーバーに接続し 送受信は出来ました。 このような環境で自宅のWebサーバー内に設置した CGIからメールの送信は可能でしょうか? ヒントだけでもご教授いただけると助かります。 よろしくお願いします。

    • ベストアンサー
    • CGI
  • phpでメール送信

    Warning: Mailserver rejected our "sendmail_from" setting in c:\phpdev\www\test\php\mail\mail.php on line 11 エラー:送信に失敗しました 上記の様にエラーが出て送信できません あて先は、xxxxx@yahoo.co.jp他、どのアドレスに送れません。 php.iniの部分は下記の通りです。 [mail function] ; For Win32 only. SMTP =smtp.mail.yahoo.co.jp ; For Win32 only. sendmail_from =xxxxx@yahoo.co.jp ; For Unix only. You may supply arguments as well (default: 'sendmail -t -i'). ;sendmail_path = ヤフーのsmtpサーバーは、「POP before SMTP」か何かが原因でphpからこの方法でメールは送れませんか? 現在、多くのsmtpサーバーで「POP before SMTP」がかかっていると、ネットで見たのですが、phpからメールを送りたいのですが、どうすればよいでしょか? あと、自宅マシンに独自ドメインを取得しRadishを入れて、smtpサーバを立ち上げて、こちらに送ると、携帯以外には送信出来る様です、でも今時、携帯に送信出来ないと使い物にならないので。こちらは、携帯のサーバーのセキュリティでウチのドメインがはじかれているのでしょうか? 宜しくお願いします。

    • ベストアンサー
    • PHP
  • メールをトリガーに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で特定ドメインに送信できない

    さくらのクラウドでCentOS5を利用しています。 先日ストレージの障害が発生し、サーバーの再起動が発生したのですが、 その後、sendmailで特定ドメイン*@hoge.comにメールが送信できなくなり、 rootにメールが送信されるようになってしまいました。 hoge.comは自分の運営するWebサイト(同じサーバー)のドメイン(Aレコード)で、 メール(MXレコード)はGoogleAppsのGMailを使用しています。 sendmailの設定は初期状態のままです。 これまでは問題なく運用できていました。 MXレコードはnslookupでもgoogleに向いていることを確認しました。 Yahoo!などの別のアドレスや、異なるドメインのGoogleAppsへは問題なくsendmailできますし、 別のサーバーからは*@hoge.comにsendmail可能です。 $ sendmail -v hoge@hoge.com < /dev/null でテストメールをすると、一件問題なく送信したかのように処理が表示されますが、 maillogを確認すると、 Jan 8 22:42:47 *** sendmail[24564]: ***24564: from=root, size=0, class=0, nrcpts=1, msgid=<201201081342.***24564@hoge.com>, relay=root@localhost Jan 8 22:42:47 *** sendmail[24567]: ***24567: from=<root@hoge.com>, size=261, class=0, nrcpts=1, msgid=<201201081342.***24564@hoge.com>, proto=ESMTP, daemon=MTA, relay=hoge.com [127.0.0.1] Jan 8 22:42:47 *** sendmail[24564]: ***24564: to=hoge@hoge.com, ctladdr=root (0/0), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=30000, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (***24567 Message accepted for delivery) Jan 8 22:42:47 *** sendmail[24568]: ***24567: to=root, ctladdr=<root@hoge.com> (0/0), delay=00:00:00, xdelay=00:00:00, mailer=local, pri=30455, dsn=2.0.0, stat=Sent のようになっており、なぜか最後にto=rootになってしまっています。 おそらくサーバーの再起動時に、なんだかの設定が切り替わったせいだと思いますが、 原因がわからず、どこを設定すれば良いのか困っています。 気になる点 ・逆引きホストを、hoge.comにしています。 ・仮想サーバーのホストネームをhoge.comにしています。 ご教授頂ければ幸いです。よろしくお願いいたします。

  • 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

専門家に質問してみよう