SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

【php】imap関数でSSLありの接続ができない(Network is unreachableなど)

問題

imap関数のimap_open()で、GmailのメールサーバーにSSLありで接続しようとすると、以下のようなエラーが発生する。

imap_open("{pop.googlemail.com:995/pop3}INBOX", 'account', 'password');

PHP Notice:  Unknown: Can't connect to googlemail-pop.l.google.com,995: Network is unreachable (errflg=2) in foo.php on line 123

gmail

答え

まずSSLありならば /ssl を追加する。

imap_open("{pop.googlemail.com:995/pop3/ssl}INBOX", 'account', 'password');

さらに、証明書の確認が入るようなのだが、

pop.googlemail.com は googlemail-pop.l.google.com のCNAMEで、証明書のドメインは googlemail-pop.l.google.com はだからか、pop.googlemail.com でSSLするのは証明書を確認すると却下される。

PHP Notice:  Unknown: Certificate failure for googlemail-pop.l.google.com: Server name does not match certificate: /C=US/ST=California/L=Mountain View/O=Google Inc/CN=pop.googlemail.com (errflg=2) in Unknown on line 123

正式なホスト名を使用するか、

imap_open("{googlemail-pop.l.google.com:995/pop3/ssl}INBOX", 'account', 'password');

証明書の確認をスキップしてもらうとよいみたい。

imap_open("{pop.googlemail.com:995/pop3/ssl/novalidate-cert}INBOX", 'account', 'password');

自己証明の証明書を使う時にも /ssl/novalidate-cert でいける。

関連するメモ

コメント