General troubleshooting steps
First, open the Horde self test page at http://webmail.yourdomain.com/test.php . If any Horde requirements are not met, they will be highlighted in red.
If you get the following error:
Horde test scripts have been disabled in the local configuration. To enable, change the 'testdisable' setting in horde/config/conf.php to false.
/usr/share/psa-horde/config/conf.php " configuration file and change "
$conf['testdisable'] " value to "
Verify that authentication via IMAP is possible. Get the valid login name and password for any mail account:
| firstname.lastname@example.org | | password |
Attempt to authorise:
~# telnet localhost 143
Connected to localhost.localdomain.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE ACL ACL2=UNION STARTTLS] Courier-IMAP ready. Copyright 1998-2004 Double Precision, Inc. See COPYING for distribution information.
01 login email@example.com password
01 OK LOGIN Ok.
If this fails with
'* BYE Clock skew detected. Check the clock on the file server', and adjust the server time using the following command:
~# ntpdate pool.ntp.org
If IMAP authorization fails, verify that the configuration of the IMAP server is correct. Here is the correct configuration:
// IMAP server
$servers['imap'] = array(
// ENABLED by default; will connect to IMAP port on local server
'disabled' => false,
'name' => 'IMAP Server',
'hostspec' => 'localhost',
'hordeauth' => false,
'protocol' => 'imap',
'port' => 143,
// Plaintext logins are disabled by default on IMAP servers (see RFC 3501
// [6.2.3]), so TLS is the only guaranteed authentication available by
'secure' => 'tls',
Verify that the "courier-imap" package is installed and up-to-date. For example, for Plesk 12.0.18 on CentOS 6, the package should look like:
# rpm -qa | grep psa-courier-imap
session.save_pathis defined in the PHP configuration. The directory should exist and have the correct permissions:
~# grep session.save_path /etc/php.ini | grep -v ';'
session.save_path = "/var/lib/php/session"
~# ls -ld / /var/ /var/lib/ /var/lib/php/ /var/lib/php/session/
drwxr-xr-x 22 root root 4096 Oct 13 09:03 /
drwxr-xr-x 21 root root 4096 Dec 19 2008 /var/
drwxr-xr-x 23 root root 4096 Mar 11 2009 /var/lib/
drwxr-xr-x 3 root root 4096 Dec 5 2008 /var/lib/php/
drwx-wx-wt 2 root root 4096 Mar 24 2009 /var/lib/php/session/
More information regarding permissions in the KB article .
__Note.__ It is important that 'all users' have 'write' permissions on the 'session.save_path' directory, otherwise horde_sysuser will not be able to create a session file and nobody will be able to log in to webmail.
If there are more than 300 websites hosted on the server, Apache may fail to work because of a discrepancy with the file descriptors limit. By default, Apache can handle only 1024 file descriptors. Use the following instructions to get the number of file descriptors used by Apache:
Get the ID of the root Apache process:
~# ps axf | grep httpd
10220 ? Ss 0:07 /usr/sbin/httpd <=== root Apache process
4018 ? S 0:00 \\_ /usr/sbin/httpd
5170 ? S 0:00 \\_ /usr/sbin/httpd
Get the number of file descriptors used by the Apache process:
~# ls /proc/10220/fd/ | wc -l
If the value is greater than 1024 , this means Apache does not have enough file descriptors and may fail to work. It is recommended you enable Piped Logs for Apache Web Server or recompile Apache, PHP, and IMAP packages with an increased number of file descriptors. For details on how to resolve this problem, refer to these articles:
Verify that all Horde packages are installed and up-to-date. For example, for Plesk 12.0.18 on CentOS 6, packages should look like this:
# rpm -qa | egrep 'psa-horde|psa-imp|psa-ingo|psa-kronolith|psa-mimp|psa-mnemo|psa-passwd|psa-turba'
/etc/php.inifile and make sure that it is not configured to show all errors and deprecation warnings. Also, some other settings may affect Horde login functionality. See the following examples of settings that should work correctly:
error_reporting = E_ALL & ~E_DEPRECATED
display_errors = Off
error_log = php_errors.log
session.auto_start = 0
If you need to reinstall packages, they can be downloaded from this website: http://autoinstall.plesk.com/ . Locate your Parallels Plesk version and architecture. The files are located in the subdirectories
opt/horde/ . Examples:
Issues with inability to log in to Horde webmail
213942985 Horde login failed: Could not open secure TLS connection to the IMAP server. Log
/var/log/psa-horde/psa-horde.logcontains the following error:
2014-12-07T20:37:33+00:00 WARN: HORDE [imp] [login] Could not open secure TLS connection to the IMAP server. [pid 35439 on line 732 of "/usr/share/psa-horde/imp/lib/Imap.php"]
2014-12-07T20:37:33+00:00 ERR: HORDE [horde] FAILED LOGIN for firstname.lastname@example.org (email@example.com) [126.96.36.199] to horde [pid 35439 on line 216 of "/usr/share/psa-horde/login.php"]
213369849 Horde webmail fails with error - Call to a member function write() on a non-object in Socket.php on line 4428. Login to Horde with correct username and wrong password fails with the following confusing error message:
A fatal error has occurred
Call to a member function write() on a non-object
Details have been logged for the administrator.
213380669 Horde webmail fails with error: Call to a member function write() on a non-object in Socket.php on line 4059. Unable to log in to Horde webmail, the following error appears:
stderr: PHP Fatal error: Call to a member function write() on a non-object in /usr/share/psa-pear/pear/php/Horde/Imap/Client/Socket.php on line 4059, referer: http://webmail.domain.tld/login.php