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".

  1. 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
    
  2. 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.

  3. 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 system

  4. 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'
    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
    
  5. 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
    

Internal content