質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Dovecot

Dovecotとは、POPやIMAPサーバーを提供するMDA(メール配送エージェント)の一つです。

OpenSSL

OpenSSLはSSL/TLSのプロトコルと一般的な暗号のライブラリを導入するオープンソースのソフトウェアのツールキットです。

SSL

SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Zend Framework

Zend Frameworkは、PHP5で記述されたWebアプリケーションフレームワークです。Zend Frameworkには守らなければならない開発の規定というものは存在せず、MVCなどの複数のコンポーネントを提供しています。

Q&A

1回答

992閲覧

PHPのfsockopenでのSSLでdovecot接続

sayum

総合スコア17

Dovecot

Dovecotとは、POPやIMAPサーバーを提供するMDA(メール配送エージェント)の一つです。

OpenSSL

OpenSSLはSSL/TLSのプロトコルと一般的な暗号のライブラリを導入するオープンソースのソフトウェアのツールキットです。

SSL

SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Zend Framework

Zend Frameworkは、PHP5で記述されたWebアプリケーションフレームワークです。Zend Frameworkには守らなければならない開発の規定というものは存在せず、MVCなどの複数のコンポーネントを提供しています。

0グッド

0クリップ

投稿2019/08/12 07:37

編集2019/08/17 07:58

お世話になっております。zendoframework1系を使いdovecotのpop3接続を行おうとしているのですが、なかなかうまく行かないことがあるので、ご教授願いたく質問させていただきます。

内容

zendframework1系のZend_Mail_Storage_Pop3を使ってdovecot+postfixで立てたメールサーバへ接続し、Listを取得したいと考えました。
以下がコードです。

php

1$param = array( 2 'host' => '0.0.0.0', 3 'user' => 'centos', 4 'password' => 'centos', 5 'auth' => 'login', 6// "port" => 995, 7 "ssl" => "SSL"); 8 9$mail = new Zend_Mail_Storage_Pop3($param); 10echo "mail count:" . $mail->countMessages() . "<br /><br />";

上記でメールの件数は取れると思うのですが、SSL(pop3s)だと取得できません。(pop3 port110では取得できました。)

maillogで確認すると、以下が表示され接続はできている気がします。

log

1Aug 12 07:32:02 e8cbaa9d20c2 dovecot: auth: Debug: auth client connected (pid=1019) 2Aug 12 07:32:02 e8cbaa9d20c2 dovecot: pop3-login: Debug: SSL: where=0x10, ret=1: before/accept initialization [127.0.0.1] 3Aug 12 07:32:02 e8cbaa9d20c2 dovecot: pop3-login: Debug: SSL: where=0x2001, ret=1: before/accept initialization [127.0.0.1] 4Aug 12 07:32:02 e8cbaa9d20c2 dovecot: pop3-login: Debug: SSL: where=0x2002, ret=-1: SSLv2/v3 read client hello A [127.0.0.1] 5Aug 12 07:32:02 e8cbaa9d20c2 dovecot: pop3-login: Debug: SSL: where=0x2001, ret=1: SSLv3 read client hello A [127.0.0.1] 6Aug 12 07:32:02 e8cbaa9d20c2 dovecot: pop3-login: Debug: SSL: where=0x2001, ret=1: SSLv3 write server hello A [127.0.0.1] 7Aug 12 07:32:02 e8cbaa9d20c2 dovecot: pop3-login: Debug: SSL: where=0x2001, ret=1: SSLv3 write certificate A [127.0.0.1] 8Aug 12 07:32:02 e8cbaa9d20c2 dovecot: pop3-login: Debug: SSL: where=0x2001, ret=1: SSLv3 write key exchange A [127.0.0.1] 9Aug 12 07:32:02 e8cbaa9d20c2 dovecot: pop3-login: Debug: SSL: where=0x2001, ret=1: SSLv3 write server done A [127.0.0.1] 10Aug 12 07:32:02 e8cbaa9d20c2 dovecot: pop3-login: Debug: SSL: where=0x2001, ret=1: SSLv3 flush data [127.0.0.1] 11Aug 12 07:32:02 e8cbaa9d20c2 dovecot: pop3-login: Debug: SSL: where=0x2001, ret=1: SSLv3 read client certificate A [127.0.0.1] 12Aug 12 07:32:02 e8cbaa9d20c2 dovecot: pop3-login: Debug: SSL: where=0x2002, ret=-1: SSLv3 read client key exchange A [127.0.0.1] 13Aug 12 07:32:02 e8cbaa9d20c2 dovecot: pop3-login: Debug: SSL: where=0x2002, ret=-1: SSLv3 read client key exchange A [127.0.0.1] 14Aug 12 07:32:02 e8cbaa9d20c2 dovecot: pop3-login: Debug: SSL: where=0x2001, ret=1: SSLv3 read client key exchange A [127.0.0.1] 15Aug 12 07:32:02 e8cbaa9d20c2 dovecot: pop3-login: Debug: SSL: where=0x2001, ret=1: SSLv3 read certificate verify A [127.0.0.1] 16Aug 12 07:32:02 e8cbaa9d20c2 dovecot: pop3-login: Debug: SSL: where=0x2001, ret=1: SSLv3 read finished A [127.0.0.1] 17Aug 12 07:32:02 e8cbaa9d20c2 dovecot: pop3-login: Debug: SSL: where=0x2001, ret=1: SSLv3 write session ticket A [127.0.0.1] 18Aug 12 07:32:02 e8cbaa9d20c2 dovecot: pop3-login: Debug: SSL: where=0x2001, ret=1: SSLv3 write change cipher spec A [127.0.0.1] 19Aug 12 07:32:02 e8cbaa9d20c2 dovecot: pop3-login: Debug: SSL: where=0x2001, ret=1: SSLv3 write finished A [127.0.0.1] 20Aug 12 07:32:02 e8cbaa9d20c2 dovecot: pop3-login: Debug: SSL: where=0x2001, ret=1: SSLv3 flush data [127.0.0.1] 21Aug 12 07:32:02 e8cbaa9d20c2 dovecot: pop3-login: Debug: SSL: where=0x20, ret=1: SSL negotiation finished successfully [127.0.0.1] 22Aug 12 07:32:02 e8cbaa9d20c2 dovecot: pop3-login: Debug: SSL: where=0x2002, ret=1: SSL negotiation finished successfully [127.0.0.1] 23Aug 12 07:32:02 e8cbaa9d20c2 dovecot: pop3-login: Debug: SSL alert: close notify [127.0.0.1] 24Aug 12 07:32:02 e8cbaa9d20c2 dovecot: pop3-login: Disconnected (no auth attempts in 0 secs): user=<>, rip=127.0.0.1, lip=127.0.0.1, TLS, session=<4EgmheaPTrV/AAAB>

zendのソースの以下を確認すると、fsoketopenでfalseが帰ってきてしまっています。

php

1 public function connect($host, $port = null, $ssl = false) 2 { 3 if ($ssl == 'SSL') { 4 $host = 'ssl://' . $host; 5 } 6 7 if ($port === null) { 8 $port = $ssl == 'SSL' ? 995 : 110; 9 } 10 11 $errno = 0; 12 $errstr = ''; 13 $this->_socket = @fsockopen($host, $port, $errno, $errstr, self::TIMEOUT_CONNECTION); 14 error_log(var_export($this->_socket,true)); //ここで確認している 15 error_log(var_export($errstr,true)); 16 17 if (!$this->_socket) { 18 /** 19 * @see Zend_Mail_Protocol_Exception 20 */ 21 require_once 'Zend/Mail/Protocol/Exception.php'; 22 throw new Zend_Mail_Protocol_Exception('cannot connect to host; error = ' . $errstr . 23 ' (errno = ' . $errno . ' )'); 24 } 25

apachelog

log

1[Mon Aug 12 07:32:02.676083 2019] [:error] [pid 846] [client 172.19.0.1:36802] false //ここで確認している 2[Mon Aug 12 07:32:02.676115 2019] [:error] [pid 846] [client 172.19.0.1:36802] '' 3[Mon Aug 12 07:32:02.687208 2019] [:error] [pid 846] [client 172.19.0.1:36802] PHP Fatal error: Uncaught exception 'Zend_Mail_Protocol_Exception' with message 'cannot connect to host; error = (errno = 0 )' in /var/www/html/vendor/zendframework/zendframework1/library/Zend/Mail/Protocol/Pop3.php:112\nStack trace:\n#0 /var/www/html/vendor/zendframework/zendframework1/library/Zend/Mail/Storage/Pop3.php(190): Zend_Mail_Protocol_Pop3->connect('0.0.0.0', NULL, 'SSL')\n#1 /var/www/html/index.php(53): Zend_Mail_Storage_Pop3->__construct(Array)\n#2 {main}\n thrown in /var/www/html/vendor/zendframework/zendframework1/library/Zend/Mail/Protocol/Pop3.php on line 112

色々調べているのですが見当がつかないため、ご教授お願いいたします

###環境
docker
php5.6.32
zendframework1.12
dovecot2.2.23
postfix

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

dovecotが正常にpop3s動作することは確認されてますか。(メールソフトなのでpop3sで受信できたことは確認されてますか)

あと、単純に「"ssl" => "SSL"」は他と違ってダブルクーテーションなのは言語仕様でしょうか。

投稿2019/08/20 05:42

yukky1201

総合スコア2751

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sayum

2019/08/21 21:32

ご回答ありがとうございます。 少し返信が遅くなってしまいすみません。 > dovecotが正常にpop3s動作することは確認されてますか。 OPENSSLにて、認証しメールボックスの件数を取ってこれることまでは確認しています。 >あと、単純に「"ssl" => "SSL"」は他と違ってダブルクーテーションなのは言語仕様でしょうか。 すみません、 こちらは統一していなかったので、そこだけ変わっています。 今回のエラーには影響ありません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問