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.
Open "/usr/share/psa-horde/config/conf.php
" configuration file and change "$conf['testdisable']
" value to "false
".
Verify that authentication via IMAP is possible. Get the valid login name and password for any mail account:
~# /usr/local/psa/admin/sbin/mail_auth_view ... | mail@domain.tld | | password | ... ~#
Attempt to authorise:
~# telnet localhost 143 Trying 127.0.0.1... 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 mail@domain.tld 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:
/usr/share/psa-horde/imp/config/backends.php // 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 // default. '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 psa-courier-imap-4.15-cos6.build1200150114.15.x86_64
Make sure
session.save_path
is 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/ ~#
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:
How do I enable Piped Logs for Apache Web Server?
How to recompile Apache, PHP, and IMAP with increased value of file descriptors larger than FD_SETSIZE (1024) on RedHat-like systemVerify 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' psa-imp-6.2.9-cos6.build1200150706.15.noarch psa-turba-4.2.7-cos6.build1200150706.15.noarch psa-mnemo-4.2.6-cos6.build1200150706.15.noarch psa-kronolith-4.2.8-cos6.build1200150706.15.noarch psa-horde-5.2.6-cos6.build1200150722.16.noarch psa-passwd-5.0.2-cos6.build1200150706.15.noarch psa-ingo-3.2.5-cos6.build1200150706.15.noarch
Examine the
/etc/php.ini
file 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
Additional Information
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/maildrivers/
and opt/horde/
. Examples:
http://autoinstall.plesk.com/PSA_12.0.18/dist-rpm-CentOS-6-x86_64/opt/maildrivers/
http://autoinstall.plesk.com/PSA_12.0.18/dist-rpm-CentOS-6-x86_64/opt/horde/
Issues with inability to log in to Horde webmail
125481 Horde login failed: Could not open secure TLS connection to the IMAP server. Log
/var/log/psa-horde/psa-horde.log
contains 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 user@domain.tld (user@domain.tld) [1.2.3.4] to horde [pid 35439 on line 216 of "/usr/share/psa-horde/login.php"]
126223 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.
122453 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