Your IMAP server may be advertising the THREAD/SORT capabilities but they are disabled (IMAP_DISABLETHREADSORT=1).
Check your imapd configuration file.
If your IMAP_CAPABILITY defines any of THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT then you must have IMAP_DISABLETHREADSORT=0
If you do not want your server to do THREAD/SORT then remove them from the advertised capabilities listing
Jason Haar reports that if you are using Microsoft Exchange as your IMAP server, enabling the server's "fast download" feature causes Exchange to guess at the size of attachments, leading to incomplete or missing attachment information. Disabling "fast download" in Exchange solves the problem (as does switching to a more robust IMAP server).
If, in messages sent from IMP, part of the headers of messages are appearing in the message body, check the file horde/imp/config/header.txt, which contains user-specified headers. If that file contains a blank line, then anything following that blank line will become body text (since the delimiter between headers and body in an email message is a blank line).
[IMP 2.2]: The most common problem that results in users being unable to access their mail folders is a misconfigured
in horde/imp/config/defaults.php3. That variable should be set to the location of a user's personal folders, often "mail/" or "Mail/". It must have the trailing slash.
For the Cyrus and Courier-IMAP imap servers, this is often caused by an incorrect setting in horde/imp/config/defaults.php3. Make sure you have the following:
$default->personal_folders = 'INBOX.';
The trailing dot is required (and its omission is usually the culprit!).
[IMP 3.x/4.0]: There are several settings which can influence this:
[IMP 4.1]: The format of IMP's servers.php file changed between IMP 4.0 and IMP 4.1. See IMP's UPGRADING file for further information.
[IMP 2.2]: If IMP is unable to send mail, first check to make sure that Sendmail (or your Sendmail replacement) is located in the same place that the variable
in horde/imp/config/defaults.php3 is telling IMP to look. If it is there, make sure you can send mail with it with the following Unix command:
echo testing | /usr/bin/sendmail firstname.lastname@example.org
replacing /usr/bin/sendmail with your Sendmail path and email@example.com with your email address. You should receive a (mostly empty) email address, or an error message, almost immediately.
If Sendmail works from the command-line but IMP still refuses to send mail, you may need to turn off PHP's Safe mode, with the following setting in your php.ini (or php3.ini in PHP version 3):
Before doing that, be sure to read the Security chapter of the PHP Manual.
[IMP 3.x]: If when you press the Send button in the compose window it simply returns the same compose window's contents and no mail is sent, then check that you have PHP file uploads enabled. This is done by setting
in your system's php.ini (PHP 4.x) or php3.ini (PHP 3.x) file.
If you are using SMTP rather than a local Sendmail (or equivalent) binary, check that you have set the variable
$conf['mailer']['type'] = 'smtp';
in horde/config/conf.php, and that you have set or add ($conf['mailer']['params']['host'] = 'yourhost') the smtphost value in horde/imp/config/servers.php for your server entry to the correct smtp host value. Note that this smtphost value will override any existing value for $conf['mailer']['params']['host'] set in horde/config/conf.php.
If you are using a local Sendmail binary, first check to make sure that Sendmail (or your Sendmail replacement) is located in the same place that the variable
$conf['mailer']['params'] = array('sendmail_path' => '/usr/lib/sendmail');
in horde/config/horde.php is telling IMP to look. If it is there, make sure you can send mail with it with the following Unix command:
echo testing | /usr/bin/sendmail firstname.lastname@example.org
replacing /usr/bin/sendmail with your Sendmail path and email@example.com with your email address. You should receive a (mostly empty) email message, or an error message, almost immediately.
If Sendmail works from the command-line but IMP still refuses to send mail, you may need to turn off PHP's Safe mode, with the following setting in your php.ini file:
Before doing that, be sure to read the Security chapter of the PHP Manual.
[IMP 2.2]: If the Compose window seems too small, first try this setting in your horde/imp/config/defaults.php3:
$default->screen_size = "large";
Keep in mind that "large" may be too large for users with low-resolution displays. Some suggest changing the value of
to something larger than the default of 80, but since 80-column text is the standard for Internet mail messages (even though you can make your Windows or MacOS mail windows larger!), it is strongly discouraged.
The file horde/imp/locale/languagecode/openwin.lang also contains some window-size parameters, but is meant more for developer fine-tuning than for site-by-site configuration.
Certain versions of Netscape have a bug which makes IMP screens take a very long time to load over an SSL connection while not being particularly slow over an unencrypted connection. The bug is with Netscape's handling of keep-alive connections. In order to prevent the browser from having to make one connection to the web server for every file it needs, the HTTP protocol provides "keep-alive", which allows the browser to use one connection to transfer multiple files. Unfortunately, over an SSL connection, Netscape does not notice if the server closes the keep-alive connection (as servers do after a certain period of time), and continues to try to make requests over the now nonexistent connection. Since this happens towards the end of rendering the page in the browser, missing image files is a common symptom.
It is not clear which versions of Netscape on which platforms suffer from this bug; extensive testing on MacOS showed that any release of Netscape 4 was capable of slowing down as described above, but not all installations would suffer. The bug also has been known to trigger under Windows NT.
Unfortunately, the only solution to this problem (other than not using Netscape, or not using SSL) is to disable keep-alive on the webserver. In apache, the following entry in /usr/local/apache/conf/httpd.conf will turn keep-alive off:
This will cause a performance degradation, as browsers will now have to make multiple connections where previously a single connection sufficed. Be sure to monitor performance after making this change to determine if the performance degradation is too severe to maintain. (On a Digital AlphaServer DS20 with two 500MHz processors and 1GB of RAM, the performance change was unnoticeable.)
Some versions of Microsoft Internet Explorer only understand 40- and 128-bit encryption, but not 56-bit. If a user has a weak-encryption version of Internet Explorer, 128-bit encryption will also be unavailable, but Apache will try to offer 56-bit, and the transaction will fail.
To tell Apache to only offer 40- or 128-bit encryption, replace the SSLCipherSuite directive in your httpd.conf file with:
When you restart your webserver, it will only offer 40- and 128-bit encryption, solving the problem. Note that this means that browsers which only support 40- and 56-bit encryption (such as weak-encryption versions of Netscape) will fall back to 40-bit as well.
Individual users can solve this problem without having to alter the Apache configuration by obtaining a version of Internet Explorer with 128-bit encryption enabled from Microsoft.
When IMP returns to the login screen despite not being told to log out, it is usually the result of your session timing out because you were idle for too long. This is a feature, designed to prevent unauthorized use of an IMP session if you walk away from their computer leaving the browser running.
You may be able to adjust the timeout if you determine it is too short. In PHP4, timeout length is controlled by the following variables in your php.ini file:
session.cookie_lifetime session.gc_maxlifetime session.gc_probability
If it is happening too soon to be a timeout, you may have used the file php.ini-optimized or php.ini-recommended from the PHP distribution to configure PHP. Using the php.ini-dist file instead may prevent the erratic logouts.
If this happens for all users -- or if IMP logins have never succeeded -- check the syslog and the IMAP server log on the mail server, and verify that there are no access controls (such as hosts.allow rules) blocking IMAP connections from the IMP web server (which might be localhost).
If characters such as ', ", and \ are producing extra backslashes ("\") in IMP, you probably have one of the following settings in your php.ini (or php3.ini in PHP version 3):
magic_quotes_gpc = on magic_quotes_runtime = on magic_quotes_sybase = on
All magic_quotes options must be disabled for IMP. Remember to restart your web server after changing php.ini settings.
If IMP refuses to mark a message as read after you have read it, you probably have a buggy version of the UW-IMAP c-client library. Upgrading to the current version (and rebuilding PHP against it) should resolve the problem.
No matter how broken Horde or IMP might be, there are precisely zero conditions in which it should be able to induce a segmentation fault ("core dump" or "segmentation violation" or possibly even "bus error") in Apache or PHP. If such a condition occurs, please inform the developers of PHP by making an entry in their bug database.
There is a great explanation of how to debug where the segmentation fault occurs at http://bugs.php.net/bugs-generating-backtrace.php which may be of help.
While headers in outgoing messages such as
X-Authentication-Warning: nobody set sender to username with -f option
may sound ominous, they're only pedantically noting what took place when the message was sent. IMP, running as the user "nobody", set the envelope sender (not the From: header!) of the message to "username", using Sendmail's -f option. This makes the message appear to have originated with "username", not "nobody", so that bounces will end up in the right place.
This can be disabled with Sendmail by removing the authwarnings option from the sendmail.cf file or by adding the web server account to the list of trusted users in the sendmail.cf or submit.cf file; consult your Sendmail documentation for details.
Incorrect configuration causes IMP to hang upon login until the IMAP server times out, producing an error. Occasionally this will only happen for certain users on a particular server. It is usually caused by mis-specifying the name of the directory in which mail folders are found. In IMP 2.2, check the variable $default->folders in horde/imp/config/servers.php3, or the value as specified by the user if the user can specify folder information at login. In IMP 3.x check the folders and namespace values in horde/imp/config/servers.php or the value as specified by the user if the user can specify folder information at login.
Since everything under this directory is traversed by the IMAP server in order to generate the folder list, accidentally setting this to the user's home directory -- or something higher in the filesystem -- can cause the process to take too long to generate the entire list, leading to IMAP timeouts.
Addresses in the headers such as the above are produced by PHP, not IMP (via the IMAP c-client library), and are most often the result of a user using semicolons instead of commas to separate addresses, such as is done in MS Outlook Express. Discussions on the mailing list tend to conclude that the solution to this is "well, don't do that, then", since both commas and semicolons have their own meanings in the Internet message format standard, RFC 822.
The UW-IMAP server stores the state of a mailbox as a specially-formatted mail message in the mailbox, with the header
Subject: DON'T DELETE THIS MESSAGE -- FOLDER INTERNAL DATA
The messages do not appear when the mailbox is accessed over IMAP, and appear only once when the mailbox is accessed directly. When accessing the mailbox over POP3, however, that message is downloaded repeatedly, since each time the mailbox is accessed with IMAP, the message is marked as unread.
The qpopper POP3 server for Unix features a compile time option, --enable-uw-kludge, which will cause the server to refrain from offering the IMAP state message to a POP3 client. The current versions (e.g. 2004+) of the UW-IMAP server is reported to no longer use the state message, nor do any other IMAP servers.
IMP uses the value of the upload_tmp_dir configuration variable to ensure that attachments are safely uploaded to the web server. If this variable is undefined, IMP is unable to locate the uploaded attachment. To define your upload directory, add something like the following to your php.ini file:
upload_tmp_dir = /var/tmp
Remember to restart your web server in order for this change to take effect. You can use Horde's test.php script to ensure the configuration changes were made correctly.
//Special note for some Apache 2.0 users://
If you are running Red Hat or Fedora Core Apache 2.x RPMS, or a Red Hat/Fedora based distribution, you should have a separate /etc/httpd/conf.d/php.conf file. Look inside it for a set of text like this:
SetOutputFilter PHP SetInputFilter PHP LimitRequestBody 524288 <---- This was the problem on mine
Change the LimitRequestBody 524288 line to something larger. It is the maximum allowed size of a httpd request in bytes. You may need to set this about twice as large as the desired size to account for encoding of submitted data.
This is a known problem with PHP 4.2.2/4.2.3 and certain versions of the UW IMAP c-client. If using these PHP versions, either downgrade to UW IMAP c-client 2001a or upgrade to PHP 4.3.0.
Also see IMPNoMessageText.
If the number of Internet Explorer clients is small, it may be feasible to change the clients. Ask users to do one of:
1. Use a different browser
2. Lower Internet Explorer's privacy setting to "Medium". (Please note that this may increase the risk that users will experience malware.)
3. In Internet Explorer's privacy options, set the IMP server to always allow cookies.
The Platform for Privacy Preferences 1.0 Deployment Guide
P3P: The Platform for Privacy Preferences
P3P, Cookies and IE6.0: A Case Study
P3P Compact Policy
What is P3P and How Does it Work?
In servers.php change timeout values:
'timeout' => array(IMAP_READTIMEOUT => 20, IMAP_WRITETIMEOUT => 20)