2012-01-27 8 views
2

私はメールサーバのバウンスをチェックするためにimap_open()を使用して接続を確立します。imap_open接続を安全にする方法

$pop3conn = imap_open('{localhost:110/pop3}', MAILLOGIN, MAILPWD); 

if($pop3conn == false) 
echo'<br />no conn'; 
else 
{ 
    // check mail headers and bodies 
} 

私は不安定な認証についてPHPの注意を得る:

お知らせ:不明:セキュリティ上の問題:安全でないサーバがライン0

に不明に(ERRFLG = 1) AUTH = PLAINを宣伝

私はphp.netで検索し、数時間のグーグルでは解決方法を見つけることができませんこれを取り除く。

私が見つけた唯一のことは動作しませんでした:サーバ名に追加/保護する。その後、

$pop3conn = imap_open('{localhost:110/pop3/secure}', MAILLOGIN, MAILPWD); 

私が取得:

お知らせ:不明:行に不明で、このサーバ (ERRFLG = 2)で事前に0

おかげで安全な認証を行うことはできませんどんな助けでも!

+0

auth = plainで安全でないというのは、平文の暗号化されていない接続で、ユーザー名とパスワードを明示的に送信することを意味します。あなたが輸送中に盗聴されることを心配していない場合は、警告を無視することができます。それ以外の場合はpop3-over-sslに切り替える必要があります。しかし、それが機能するためには、サーバーはpop3sを有効にしています。 –

+0

@marc B、回答をコメントとして入力したので、あなたのコメントは受け入れられた回答として設定できませんか? – Terradon

答えて

1

これはあなたにin Unknown on line 0を与えることに少し驚いています。これは通常、スクリプトが実行される前にエラーが発生した場合にのみ発生します。この問題の唯一の真の解決策は、PHPエラーを隠すことです。

接続先のサーバが安全な認証をサポートしていないかのように見え、およびこれに対する唯一の解決策は、それをサポートするために、サーバー管理者に依頼することです。または、別のサーバーを使用することもできます。その特定の問題を回避するためにコード内で行うことはできません。そのため、エラーを修正する代わりにエラーを処理するだけです(誰にでもそのアプローチを推奨するのは嫌です)。

あなたはそれが in Unknown on line 0あるので、でも ini_set('display_errors', 0)を呼び出すか、悪 @演算子を使用して、この問題を解決しないことを見つけるかもしれ

- あなたはとにかく本番環境でのPHPエラーを示すべきではありません。本番環境のphp.iniがユーザーからのエラーを隠すように設定されていることを確認する必要があります。

+0

または単に@imap_open( '{{localhost:110/pop3}'、MAILLOGIN、MAILPWD); '一般的なエラーは表示されません – DanFromGermany

1

これは実際には偽のメッセージではなく、平文の暗号化されていない接続であることを意味します。ここ はあなたが行うことができる方法である。

$error = imap_errors(); 
if (count($error) > 1 || $error[0] != 'SECURITY PROBLEM: insecure server advertised AUTH=PLAIN') { 
    // More than 1 error or not the expected error 
    var_dump($error); 
    throw new Exception('IMAP error detected'); 
} 
1

質問は、数年前ですが、私は同じ問題に出くわした:

imap_open("{imap.domain.com:143}INBOX", 'username', 'password'); 

は私にエラーSECURITY PROBLEM: insecure server advertised AUTH=PLAINをgaves。

したがって、私はセキュリティ保護されていない資格情報を送信していると言います。私がしなければならなかったことは、私のメールプロバイダに行って、安全に接続する方法を見つけることでした。

標準のポートは以下のとおりです。

Protocol  Unsecured  Secured 
POP3   110   995 (SSL, TLS) 
IMAP4   143   993 (SSL, TLS) 
SMTP   25    465 (SSL), 587 (TLS, STARTTLS) 

そして、以下のように、私はパラメータを変更したPHP関数imap_open()のマニュアルに従って:

imap_open("{imap.domain.com:993/imap/ssl}INBOX", 'username', 'password'); 

だから今、私はコミュニケーションが担保とPHP /暗号化されていますエラーはそれ以上報告されません。

関連する問題