15

PHPMailerを使用してSMTPとGmailで電子メールを送信しようとしています。使用している正確なスクリプトは他のサーバーでは機能しますが、この特定のホスティング会社のサーバーでは機能しません。

私はをチェックしました、phpinfo()そしてそれはそれがそうであると私に言います、そしてリストされたようなものallow_url_fopenonありません。disabled_functionsfopen

スクリプトが失敗し、次のいずれかが通知されます。

SMTP -> ERROR: Failed to connect to server: Connection timed out (110) 

またはその他

SMTP Error: Could not authenticate.

これは接続できないためだと思います。これも他のサーバーで機能し、認証資格情報が正しいためです。

それで、もっと一般的に、PHPまたはjailshellsshを使用して、ポートが実際に開いているかどうかを確認する方法はありますか?

4

1 に答える 1

23

開いている/使用可能なポートを確認するには、次のコマンドを使用しますfsockopen

$fp = fsockopen('127.0.0.1', 25, $errno, $errstr, 5);
if (!$fp) {
    // port is closed or blocked
} else {
    // port is open and available
    fclose($fp);
}

...5呼び出しが失敗するまでのタイムアウト(秒単位)はどこにありますか。

これはおそらく、ホスティングプロバイダーがアウトバウンドソケットや特定のポートへの接続をブロックしているファイアウォールの問題が原因です。アウトバウンドSMTPポートをブロックするのはごく通常のセキュリティ構成であることに注意してください。当時はポートのみ25がブロックされていましたが、SSLバリアントもブロックされることが増えています。

ほとんどのプロバイダーとホスティング会社は、スパマーが迷惑メールを中継するのを防ぐために、独自のSMTPサーバーにのみ接続することを許可します。

于 2012-04-12T16:49:28.847 に答える