Summary: | В eGroupWare перестал работать php5-imap для коннекта к courier-imap | ||
---|---|---|---|
Product: | Sisyphus | Reporter: | Василий Терешко <tolmi> |
Component: | php5-imap | Assignee: | Anton Farygin <rider> |
Status: | CLOSED FIXED | QA Contact: | qa-sisyphus |
Severity: | normal | ||
Priority: | P2 | CC: | boyarsh, gray_graff, lav |
Version: | unstable | Keywords: | qawanted |
Hardware: | x86 | ||
OS: | Linux | ||
Bug Depends on: | 18215 | ||
Bug Blocks: |
Description
Василий Терешко
2008-10-01 20:19:14 MSD
Что в error.log? Какие запросы делаются через этот модуль? Какие модули были установлены? Пробовали ли вы проверить работу модуля простым скриптом? Нужна дополнительная информация. При данной постановке задачи, ошибку устранить нельзя. (In reply to comment #1) > Что в error.log? Какие запросы делаются через этот модуль? Какие модули были > установлены? Пробовали ли вы проверить работу модуля простым скриптом? В error.log абсолютно пусто. tcpdump показывает, что соединение проходит, сервер отдает * OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE ACL ACL2=UNION STARTTLS XMAGICTRASH] Courier-IMAP ready. Copyright 1998-2008 Double Precision, Inc. See COPYING for distribution information. После чего сессия останавливается совсем и отваливается по таймауту. Соответсвенно eGroupWare пишет про "Can't connect to IMAP server". Проверить каким-нибудь скриптом не могу - не писатель я на PHP. Если поделитесь готовым - могу потестировать. До сегодняшнего обновления всё работало. > Нужна дополнительная информация. При данной постановке задачи, ошибку > устранить нельзя. Какая информация ещё нужна? (In reply to comment #2) > После чего сессия останавливается совсем и отваливается по таймауту. Какая операция производится в eGroupWare ? > Какая информация ещё нужна? В каком значении в php.ini директива error_reporting ? (In reply to comment #3) > (In reply to comment #2) > > После чего сессия останавливается совсем и отваливается по таймауту. > > Какая операция производится в eGroupWare ? Обращение к почтовому ящику. В eGroupWare для этого есть только один путь - обращение к внешнему IMAP серверу. > > > Какая информация ещё нужна? > > В каком значении в php.ini директива error_reporting ? > [tolmi@serval ~]$ grep error_reporting /etc/php/5.2.7/apache2-mod_php/php.ini ; - error_reporting = E_ALL [Code Cleanliness, Security(?)] ; error_reporting is a bit-field. Or each number up to get desired error ;error_reporting = E_ALL & ~E_NOTICE ;error_reporting = E_ALL & ~E_NOTICE | E_STRICT ;error_reporting = E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR error_reporting = E_ALL [tolmi@serval ~]$ (In reply to comment #1) > Что в error.log? Какие запросы делаются через этот модуль? Какие модули были > установлены? Пробовали ли вы проверить работу модуля простым скриптом? Моя диагностика была неверной, для работы с IMAP используется своя обертка --- cut --- * Provides an implementation of the IMAP protocol using PEAR's * Net_Socket:: class. ---- end cut --- Меня смутило то, что php5-imap прописан в Requirements к eGroupware Оказывается, в недрах eGroupWare простой скрипт для проверки уже лежит - ---- cut testimapserver.php ----- $startTime = microtime(true); print "<pre>"; set_include_path('../egw-pear'. PATH_SEPARATOR .'/usr/share/php'. PATH_SEPARATOR . get_include_path()); require_once 'Net/IMAP.php'; print "<h1><span style='color:red;'>ATTENTION: THIS OUTPUT CONTAINS YOUR USERNAME AND PASSWORD!!!</span></h1>"; $elapsedTime = microtime(true) - $startTime; print "<h1> $elapsedTime :: Login as user $username1 </h1>"; $imapClient = new Net_IMAP($host, $port, $enableSTARTTLS); $imapClient->setDebug(true); $imapClient->login($username1, $password1, true, false); $imapClient->selectMailbox($testFolder); if(!empty($username2) && !empty($password2)) { $elapsedTime = microtime(true) - $startTime; print "<h1> $elapsedTime :: Login as user $username2 </h1>"; $imapClient2 = new Net_IMAP($host); $imapClient2->setDebug(true); $imapClient2->login($username2, $password2, true, false); } $elapsedTime = microtime(true) - $startTime; print "<h1> $elapsedTime :: Getting hierarchy delimiter </h1>"; $delimiter = $imapClient->getHierarchyDelimiter(); print "delimiter is: $delimiter<br>"; $elapsedTime = microtime(true) - $startTime; print "<h1> $elapsedTime :: List all folders </h1>"; $imapClient->getMailboxes(); $elapsedTime = microtime(true) - $startTime; print "<h1> $elapsedTime :: List all subscribed folders </h1>"; $imapClient->listsubscribedMailboxes(); ---------- end cut ---------- Результаты вывода : ATTENTION: THIS OUTPUT CONTAINS YOUR USERNAME AND PASSWORD!!! 0.034209012985229 :: Login as user tolmi S: S: S: 60.056734085083 :: Getting hierarchy delimiter S: delimiter is: the IMAP Server does not support HIERACHY_DELIMITER! 60.057229995728 :: List all folders S: 60.057718992233 :: List all subscribed folders S: ------------- Как я уже упоминал, откат php на 5.2.5 решает проблему. Прошу перевесить ошибку на что-то более соответствуещее. Какой PEAR модуль используется для работы с php5-imap и какой версии ? Я знаю точно, что напрямую php5-imap работает. (In reply to comment #6) > Какой PEAR модуль используется для работы с php5-imap и какой версии ? А там ставится свой собственный набор eGroupWare-pear. Код находится в /usr/share/egroupware/egw-pear/Net/IMAP.php /usr/share/egroupware/egw-pear/Net/IMAPProtocol.php а там IMAP.php:require_once 'Net/IMAPProtocol.php'; IMAPProtocol.php:require_once 'Net/Socket.php' Socket.php:require_once 'PEAR.php'; И как-бы всё. > > Я знаю точно, что напрямую php5-imap работает. > В /usr/share/egroupware/felamimail/Changelog : --------------- cut ------------- 2006-12-31 Lars Kneschke <l.kneschke@metaways.de> * major rewrite of the imap backend. php-imap is mostly gone. all imap code is now based on the PEAR class Net_IMAP --------------- cut --------------- Ещё раз, выяснилось, что это не ошибка php5-imap, это ошибка чего-то другого. Я пока копаю на тестовой машине. У меня подозрение, что сломалась обвязка вокруг php5-imap. тоже наткнулся на такую большую неприятность на боевам сервере. в итоге после бессонной ночи вернул 5.2.5 буду на тестовом сервере ковырять простите, но решил открыть ошибку. очень уж надо решение. может проблема и не в php5-imap, но... вот что выдал testimapserver.php (все остально в выводе вроде нормально) отрабатывал дооолго - минут 10-20 511.15171504021 :: Checking for SORT support: supported 511.15173006058 :: Sorting INBOX by DATE: C: A0009 SORT (DATE) US-ASCII S: A0009 BAD Error in IMAP command SORT: Missing or invalid arguments. 571.15477895737 :: Sorting INBOX by SUBJECT: C: A00010 SORT (SUBJECT) US-ASCII S: A00010 BAD Error in IMAP command SORT: Missing or invalid arguments. в логах dovecot вот что появилось dovecot: Oct 28 17:55:15 Info: imap-login: Login: user=<admin>, method=PLAIN, rip=192.168.2.11, lip=192.168.2.2 dovecot: Oct 28 17:56:18 Info: imap-login: Login: user=<admin>, method=LOGIN, rip=192.168.2.11, lip=192.168.2.2 dovecot: Oct 28 17:56:25 Info: imap-login: Login: user=<admin>, method=PLAIN, rip=192.168.2.11, lip=192.168.2.2 Смущает method=PLAIN - быть его не должно. и при php 5.2.5 в логах фигурирует только method=LOGIN еще из странного, если таки попытаться зайти в felamimail, то минут через 20-30 он таки откроет почту и покажет содержимое имап папок собрал для себя релиз php 5.2.8 с нужными модулями Проблема просто испарилась(+еще с десяток багов в eGroupWare, на которые я сам наткнулся) :) так что #18215 очень надо! Обновлено. php5-imap-5.2.9.20090205-alt1 радует. спасибо |