dポイントプレゼントキャンペーン実施中!

Warning: mail(): Failed to connect to mailserver at "xxxxx" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set()
というエラーが出ます。
ポートは開いているのですがこのエラーからどこが原因なのかわかる方いますでしょうか?
SMTPにはローカルPCのIPアドレスやプロバイダのSMTPサーバどちらを入れても同じエラーでした。
プロバイダのSMTP設定の場合他のPCで試したところ動いたのでプロバイダのSMTPサーバは問題ないと思います。
OSはwindows server 2003を使用しております。

A 回答 (7件)

あ、そうなんですか。

なるほど、ネットワークの構成が見えてみました。が、原因が見えなくなってきました・・・。
まず、アンチウィルスソフトを切ってもダメということなので、アンチウィルスソフトは関係ない。
ブラウジングできるので、パケット自体がWindows2003機からでないということでもない。

という状況ですね。
う~~~~ん。まず、Windows2003に標準でついてくるファイアーウォール(おっしゃる通りの場所にあります)は、そこまで厳しい設定ではないとは思いますが・・・。一応、切りにしてみてください。具体的には、
「インターネット接続ファイアーウォール」の「インターネットからこのコンピュータへのアクセスを制限したり防いだりして、・・・・」のチェックをはずしてみてください。(念のため再起動を)

で、ローカル接続⇒プロパティ⇒全般⇒この接続は次の項目を使用しますの「インターネットプロトコル(TCP/IP)」をクリック⇒プロパティ と、開いていき、ここいら辺の設定も確認してみてください。

あとはルータですね。んと、Windows2003機のローカルIPアドレスを変えて実行できるか試してみてください。

※ルータの設定はいじりましたか?
    • good
    • 0
この回答へのお礼

ローカル接続⇒プロパティ⇒全般⇒この接続は次の項目を使用しますの「インターネットプロトコル(TCP/IP)」の部分を見直し、ウィルスソフトの無効をしたら無事動くようになりました。
ウィルスソフトの設定の仕方はわからない状態ですが、
かなり光が見えてきました。
campanella_77さんに言葉では表現できないくらい感謝しています。
本当にありがとうございます。

お礼日時:2005/03/28 21:01

おぉ。

よかったですね。
私の予想ではウィルスソフトが関係していると思うんですけど、ウィルスソフトは何を使っていますか?
設定する場合は、パケットフィルターより、プログラム制御の方が簡単かもしれません。
許可するプログラムに「xmail」を入れてみてください。

この回答への補足

ウィルスソフトはMcAfeeを使用しています。
説明書を見て現在設定してみようと試みています^^

補足日時:2005/03/28 21:46
    • good
    • 0
この回答へのお礼

無事ウィルススキャンの方の設定出来、ちゃんとした形で動くようになりました^^
本当に感謝しています。
最後まで問題解決の手助けありがとうございました^^

お礼日時:2005/03/28 22:47

そのWindows2003機では、サイトとかはみられるんでしょうか。


また、それほど厳しいファイアーウォール設定ならばそういう設定にした知識がある方が設定されたと思いますので、その方とは連絡が取れないのでしょうか。

もしサイトが見られる(以下ブラウジング)のであれば、ブラウジングの場合はSMTPの25番ポートへのアクセスを80番ポートに変えただけになります。
ファイアーウォールの設定で、リモートの80番ポートへの設定があるはずなので、それを探してみてください。

Windows2003はいじったことがないのではっきりは言えませんが、Windows2003の機能ではなくファイアーウォールソフトを入れてませんか?

『他のLAN内のPCからは出来たので』とありますが、これは同じネットワーク内ととらえてよいのでしょうか。
同じネットワークとは・・・、たとえば、ルータのIPが192.168.0.1/24 であれば 192.168.1.○ というIPであれば同じネットワークになります。/24 の部分は 255.255.255.0 というサブネットマスクです。
この部分がはっきりすると、ルータの設定なのかWindows2003機のファイアーウォールソフトの設定なのかがわかると思います。

この回答への補足

windows2003機ではサイトは見れます。
お恥ずかしいことながらこのサーバは最初からすべて私が設定しました。

ファイアーウォールの設定なんですがXPなどとほとんど同じでネットワーク接続→ローカルエリア接続→
プロパティ→詳細設定→設定での場所でいいんでしょうか?

Windows2003の機能ではなくファイアーウォールソフトと言うのかはわかりませんがウィルスソフトは入っています。無効にして実行してみましたがだめでした。

『他のLAN内のPCからは出来たので』とは同じネットワーク内では出来たということです。
わかりにくい書き方で申し訳ございません。

補足日時:2005/03/28 19:00
    • good
    • 0

了解です。

わかりました。
それが原因です。※内部→外部のメール送信が出来ない状態

まず1つわかって欲しいのは、SMTPサーバは25番ポートで待ち受けています。これは入口ですね。
Webサーバと違うのはWebサーバは待ち受けしかしないのにたいして、SMTPサーバは待ち受けと送信の両方を行います。つまり、入口と出口が必要なわけです。
『プロバイダのSMTPでも送れないので混乱している状況です。』と、ありますが、PHP出だそうがWindows2003のSMTPサーバで出そうが同じ事です。今は出口がない状態です。
『ポートは開いているのですが』は、入り口が開いてるだけでしょう。25番ポート開けているだけじゃ待ち受けしかできません。

出口がない状態(おそらくファイアーウォールの設定でしょう)になっているのでWindows2003のSMTPサーバを使おうが、プロバイダのSMTPサーバを使おうが、ウン十万円のSMTPサーバソフトをインストールしようが、PHPを使おうが、そのWindows2003からはメールは出せません。

まずは、出口を開いてください。
ファイアーウォールの設定はどうなっていますか?会社ということなのでかなり厳しい設定になっているかと思います。
ファイアーウォールの設定を変えるとしたら、以下のような感じです。
静的フィルタとか呼ばれている部分を設定します。

プロトコル:TCP

リモートIPアドレス:すべて
リモートポート:25番

ローカルIPアドレス:Windows2003サーバのIP
リモートポート:すべて

向き:ローカル⇒リモート

を許可


Windows2003サーバを管理している方に言えば一発で解決すると思いますよ。

この回答への補足

campanella_77さんの言われる通り静的フィルタとか呼ばれている部分を設定しようと思ったのですが、
どこから設定するのかよくわからず困っています。
ファイヤーウォールの設定のサービスの追加とは別なんですよね?
検索方法が悪いのかもしれないですが、調べてみたらその設定とかしかそれらしいものが無かったので・・・参考になるサイトなどあれば教えていただけるとありがたいです。

補足日時:2005/03/28 11:58
    • good
    • 0
この回答へのお礼

サーバ機を使ってTelnetでアクセスして接続してみたところ(プロバイダ&自前サーバのSMTPサーバ名指定)
ポート25に接続できませんでした。
他のLAN内のPCからは出来たのでサーバ機の設定がだめみたいです。
やはりcampanella_77さんの言う通りファイヤーウォールの設定が間違ってるみたいですね。
ちなみにまだ設定方法がわからず直っていません・・・

お礼日時:2005/03/28 17:17

えっと、私の推測なんですけど、Windows2003のマシンは会社のサーバですかね。


つまり、会社のサーバでご質問のPHPプログラムを動作させてみたがエラーが出る。
で、ご自宅、もしくは会社の自分のPCを使い、あと、もう一台ほどテスト用のサーバ機がある。
こんな環境でしょうか。

そのWindows2003機ですでにメールアドレスを発行して運営なさっていますか?

この回答への補足

Windows2003のマシンは会社のサーバです。
Windows2003のサーバ機と自宅PC2台を使ってテストをしております。

>Windows2003機ですでにメールアドレスを発行して運営なさっていますか?
現在はメールアドレスは2つ発行している状態でメールサーバにはxmailを使用しているのですが、
内部→外部のメール送信が出来ない状態です。
そのせいかでPHPで送信出来ないのかと思ったのですが、
プロバイダのSMTPでも送れないので混乱している状況です。

補足日時:2005/03/28 00:45
    • good
    • 0

えっと、どこで試した結果でしょうか?


「これは自前サーバ上で試さないと意味ないものなのでしょうか?」
自前サーバとは、WindowsServer2003でしょうか。
で、それは自宅のLAN内のマシンでしょうか。

まず、PHPプログラムを動作させたいのは、Windows2003でよろしいんですよね。
確認して欲しいのは、そのWindows2003のマシンから外部SMTPサーバの25番ポートにアクセスできるか。
と、いうことです。

おそらく、今のところはWindows2003のマシンの25番ポートには外部からアクセスできるが、Windows2003のマシンから、他の25番ポートにアクセスできない。
と、いう可能性がありますのでそれをご確認ください。

出来れば、サーバ構成とクライアント(お使いのPC)の構成を教えて頂ければ、助かります。

この回答への補足

>自前サーバとは、WindowsServer2003でしょうか。
はい。windows server 2003をサーバ機として使用し
そのサーバ機でPHPを実行しています。

>おそらく、今のところはWindows2003のマシンの25番
>ポートには外部からアクセスできるが、Windows2003
>のマシンから、他の25番ポートにアクセスできない。
>と、いう可能性がありますのでそれをご確認ください。
現在サーバ機をいじれなので確認出来ないのですが
campanella_77さんに教えてもらった(外部から試した)方法で試して見たいと思います。
サーバ機からサーバ機のIPをたたいて25番ポートにアクセス出来ないことは可能性としてあるのでしょうか?

>サーバ構成とクライアント(お使いのPC)の構成を教えて頂ければ、助かります。
サーバ機はADSL接続しておりルータ経由でつないでいます。実際テストもサーバ機から直接試しています。
前の補足で書きました外部から試したところというのは全く違う場所から違うPC(windowsXPhome)で試した時のことです。

補足日時:2005/03/27 10:16
    • good
    • 0

こんにちは。


まず、
php.iniの
[mail function] ディレクティブの設定を変更しているかと思います。
「SMTPにはローカルPC・・・」と書かれているので、ここが
localhost

xxxxx(プロバイダのSMTPサーバのIP)

にしてもダメだということですよね。(一応ここももう一度ご確認ください)

WindowsServer2003からコマンドプロンプトを立ち上げ、Telnetでアクセスしても接続できないでしょうか?
コマンドプロンプト上で、
>telnet xxxxx 25
接続中: xxxxx...ホストへ接続できませんでした。 ポート番号 25: 接続に失敗
しました

と出れば、ファイアーウォールが原因でしょう。他のLAN内のPCからも同じようにして失敗すれば、ルータの設定が。
他のLAN内から接続できれば、WindowsServer2003のファイアーウォールが考えられます。
(当然ですが、SMTPサーバのIPアドレス間違いもご確認ください)

成功すると
220 という数字と文字列が返ってきます。

Telnetがわからなければ、以下のPHPプログラムを動作させてください。
$SMTP や ポート番号の値がおかしい場合、

Warning: fsockopen():

という警告が出ます。
--------------- ここから ---------------------------------
<?
//プロバイダのSMTPアドレス
$SMTP = "xxxxx";

$sock = fsockopen($SMTP , 25 , $errNo , $errStr , 1);

header("Content-Type: text/plain;");
print "Error No\n";
print "$errNo" . "\n";
print "Error Msg\n";
print_r($errStr);
?>
----------------------------------------------------------

SMTPサーバのアドレス・ポートミスを抜かせば、
・WindowsServer2003のファイアーウォール
・ルータのファイアーウォール
・php.ini
になります。
プロバイダーによっては、25番ポートで自分のSMTPサーバを立てるのを禁止している所もあります。(ワームが広がるのを防ぐため)
この場合は、SMTPサーバを25番以外のポートで立てる必要があります。

この回答への補足

外部から試してみたのですが
Telnetでアクセスして接続してみたところ
(プロバイダ&自前サーバのSMTPサーバ名指定)
campanella_77さんの言う通り220という数字と文字列が返ってきました。
campanella_77さんの書いてくださったPHPプログラムも同じように$SMTP="xxxxx"のxxxxxのところににプロバイダ&自前サーバのSMTPサーバ名指定したところ
Error No
0
Error Msg
という文字が表示されました。
これは自前サーバ上で試さないと意味ないものなのでしょうか?
もし大丈夫のようでしたら
・WindowsServer2003のファイアーウォール
・ルータのファイアーウォール
・php.ini
ということになりますよね?

補足日時:2005/03/27 00:23
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!