\documentclass{article}
\usepackage{ulem}
\usepackage{graphicx}
\usepackage{hyperref}
\pagestyle{headings}
\begin{document}
\part{<a href="https://wiki.horde.org/FAQ/Admin">Horde Administrator's FAQ</a>}
\section{<a href="https://wiki.horde.org/FAQ/Admin/Troubleshoot">Troubleshooting and Common Problems</a>}
\subsection{Troubleshooting IMP}
\subsubsection{IMAP server is courier-imap; user has requested non-standard sorting; IMP shows 'No messages to display' but there \_are\_ messages in the mailbox}
Your IMAP server may be advertising the THREAD/SORT capabilities but they are disabled (IMAP\_DISABLETHREADSORT=1).<br />
Check your imapd configuration file.<br />
If your IMAP\_CAPABILITY defines any of THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT then you \textbf{must} have IMAP\_DISABLETHREADSORT=0<br />
If you do not want your server to do THREAD/SORT then remove them from the advertised capabilities listing

\subsubsection{Attachments aren't showing up in IMP.}
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).

\subsubsection{Part of the message header is ending up in the body of mail sent from IMP.}
If, in messages sent from IMP, part of the headers of messages are appearing in the message body, check the file \texttt{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).

\subsubsection{In IMP, users can't use any folders besides INBOX.}
\textbf{<a href="https://wiki.horde.org/IMP">2.2</a>:} The most common problem that results in users being unable to access their mail folders is a misconfigured

<pre><code class="language-php">
\$default->folders
</code></pre>
in \texttt{horde/imp/config/defaults.php3}. That variable should be set to the location of a user's personal folders, often "mail/" or "Mail/". It \textit{must} have the trailing slash.

For the Cyrus and Courier-IMAP imap servers, this is often caused by an incorrect setting in \texttt{horde/imp/config/defaults.php3}. Make sure you have the following:

<pre><code class="language-php">
\$default->personal\_folders = 'INBOX.';
</code></pre>
The trailing dot is required (and its omission is usually the culprit!).

\textbf{<a href="https://wiki.horde.org/IMP">3.x/4.0</a>:} There are several settings which can influence this:

\begin{itemize}
\item The \texttt{\$conf['user']['allow\_folders']} setting in\texttt{ conf.php}.


\item Whether IMAP subscriptions are required (\texttt{\$\_prefs['subscribe']} in \texttt{horde/imp/config/prefs.php}).


\item The configuration of the \texttt{folders} and \texttt{namespace} variables in \texttt{horde/imp/config/servers.php} (See that file for more details).<br />
\textbf{<a href="https://wiki.horde.org/IMP">4.1</a>}: The format of IMP's \texttt{servers.php} file changed between IMP 4.0 and IMP 4.1.  See <a href="http://www.horde.org/imp/docs/?f=UPGRADING.html">IMP's UPGRADING file</a> for further information.


\end{itemize}
\subsubsection{Mail sent from IMP never actually gets sent.}
\textbf{<a href="https://wiki.horde.org/IMP">2.2</a>:} 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

<pre><code class="language-php">
\$default->path\_to\_sendmail
</code></pre>
in \texttt{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:

<pre><code>
echo testing | /usr/bin/sendmail your@email.address
</code></pre>
replacing \texttt{/usr/bin/sendmail} with your Sendmail path and \texttt{your@email.address} 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 \texttt{php.ini} (or \texttt{php3.ini} in PHP version 3):

<pre><code>
safe\_mode off
</code></pre>
Before doing that, be sure to read the <a href="http://www.php.net/manual/security.php">Security chapter</a> of the PHP Manual.

\textbf{<a href="https://wiki.horde.org/IMP">3.x</a>:} If when you press the \textit{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

<pre><code>
file\_uploads=On
</code></pre>
in your system's \texttt{php.ini} (PHP 4.x) or \texttt{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

<pre><code class="language-php">
\$conf['mailer']['type'] = 'smtp';
</code></pre>
in \texttt{horde/config/conf.php}, and that you have set or add (\texttt{\$conf['mailer']['params']['host'] = 'yourhost'}) the smtphost value in \texttt{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 \texttt{\$conf['mailer']['params']['host']} set in \texttt{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

<pre><code class="language-php">
\$conf['mailer']['params'] = array('sendmail\_path' => '/usr/lib/sendmail');
</code></pre>
in \texttt{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:

<pre><code>
echo testing | /usr/bin/sendmail your@email.address
</code></pre>
replacing \texttt{/usr/bin/sendmail} with your Sendmail path and \texttt{your@email.address} 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 \texttt{php.ini} file:

<pre><code>
safe\_mode off
</code></pre>
Before doing that, be sure to read the <a href="http://www.php.net/manual/security.php">Security chapter</a> of the PHP Manual.

\subsubsection{IMP's Compose window is annoyingly narrow.}
\textbf{<a href="https://wiki.horde.org/IMP">2.2</a>:} If the Compose window seems too small, first try this setting in your \texttt{horde/imp/config/defaults.php3}:

<pre><code class="language-php">
\$default->screen\_size = "large";
</code></pre>
Keep in mind that "large" may be too large for users with low-resolution displays. Some suggest changing the value of

<pre><code class="language-php">
\$default->compose\_body\_cols
</code></pre>
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 \texttt{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.

\subsubsection{Over SSL, Netscape takes forever to load pages.}
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 \textit{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 \texttt{/usr/local/apache/conf/httpd.conf} will turn keep-alive off:

<pre><code>
KeepAlive Off
</code></pre>
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.)

\subsubsection{Internet Explorer users can't access IMP over SSL.}
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 \texttt{SSLCipherSuite} directive in your \texttt{httpd.conf} file with:

<pre><code>
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP
</code></pre>
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 <a href="http://www.microsoft.org/ie/">Microsoft</a>.

\subsubsection{IMP logs me out for no apparent reason at all.}
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:

<pre><code>
session.cookie\_lifetime
session.gc\_maxlifetime
session.gc\_probability
</code></pre>
If it is happening too soon to be a timeout, you may have used the file \texttt{php.ini-optimized} or \texttt{php.ini-recommended} from the PHP distribution to configure PHP. Using the \texttt{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 \texttt{hosts.allow} rules) blocking IMAP connections from the IMP web server (which might be \texttt{localhost}).

\subsubsection{Email sent from IMP is full of backslashes.}
If characters such as ', ", and \textbackslash\{\} are producing extra backslashes ("\textbackslash\{\}") in IMP, you probably have one of the following settings in your \texttt{php.ini} (or \texttt{php3.ini} in PHP version 3):

<pre><code>
magic\_quotes\_gpc     = on
magic\_quotes\_runtime = on
magic\_quotes\_sybase  = on
</code></pre>
All \texttt{magic\_quotes} options must be disabled for IMP. Remember to restart your web server after changing \texttt{php.ini} settings.

\subsubsection{After I read a message in IMP, it still shows as unread.}
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.

\subsubsection{Apache segfaults while I'm using Horde or its components.}
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 <a href="http://bugs.php.net/">bug database</a>.

There is a great explanation of how to debug where the segmentation fault occurs at <a href="http://bugs.php.net/bugs-generating-backtrace.php">http://bugs.php.net/bugs-generating-backtrace.php</a> which may be of help.

\subsubsection{Messages sent from IMP have an Authentication-Warning: header added to them.}
While headers in outgoing messages such as

<pre><code>
X-Authentication-Warning: nobody set sender to username with -f option
</code></pre>
may \textit{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 \texttt{authwarnings} option from the \texttt{sendmail.cf} file or by adding the web server account to the list of trusted users in the \texttt{sendmail.cf} or \texttt{submit.cf} file; consult your Sendmail documentation for details.

\subsubsection{After logging in successfully, everything just hangs until the IMAP server times out.}
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 \texttt{\$default->folders} in \texttt{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 \textit{folders} and \textit{namespace} values in \texttt{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.

\subsubsection{Users are getting mail sent to "INVALID\_ADDRESS@.SYNTAX.ERROR" or "MISSING\_MAILBOX\_TERMINATOR@.SYNTAX-ERROR.".}
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 \textit{do} that, then", since both commas and semicolons have their own meanings in the Internet message format standard, RFC 822.

\subsubsection{When using IMP plus a POP3 client, users get FOLDER INTERNAL DATA messages.}
The UW-IMAP server stores the state of a mailbox as a specially-formatted mail message in the mailbox, with the header

<pre><code>
Subject: DON'T DELETE THIS MESSAGE -- FOLDER INTERNAL DATA
</code></pre>
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 <a href="http://www.eudora.com/qpopper/">qpopper</a> POP3 server for Unix features a compile time option, \texttt{--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.

\subsubsection{IMP fails to add new attachments in the Compose window.}
IMP uses the value of the \texttt{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 \texttt{php.ini} file:

<pre><code>
upload\_tmp\_dir = /var/tmp
</code></pre>
Remember to restart your web server in order for this change to take effect.  You can use Horde's \texttt{test.php} script to ensure the configuration changes were made correctly.

\textit{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 \texttt{/etc/httpd/conf.d/php.conf} file. Look inside it for a set of text like this:

<pre><code>
SetOutputFilter PHP
SetInputFilter PHP
LimitRequestBody 524288  <---- This was the problem on mine
</code></pre>
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.

From <a href="http://lists.horde.org/archives/imp/Week-of-Mon-20030203/029747.html">http://lists.horde.org/archives/imp/Week-of-Mon-20030203/029747.html</a>.

\subsubsection{IMP displays "There are no parts that can be displayed inline" for all my messages.}
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 <a href="https://wiki.horde.org/IMPNoMessageText">IMPNoMessageText</a>.

\subsubsection{IMP displays the headers of the message in the message part.}
See <a href="https://wiki.horde.org/TurckMMCacheTroubleshooting">TurckMMCacheTroubleshooting</a>.

\subsubsection{Internet Explorer cannot send messages.}
After composing a message with Internet Explorer and hitting send, the message is not sent and the user either sees a blank page or is returned to an empty message composition page. This has to do with IE's privacy settings. If the privacy settings are set to "Medium High" or above and a privacy policy is not set on the server, then users may experience this problem. This issue can be resolved either by modifying the clients, or by adding a privacy policy to the server.

If the number of Internet Explorer clients is small, it may be feasible to change the clients. Ask users to do one of:

\begin{itemize}
\item Use a different browser


\item Lower Internet Explorer's privacy setting to "Medium". (Please note that this may increase the risk that users will experience malware.)


\item In Internet Explorer's privacy options, set the IMP server to always allow cookies.


\end{itemize}
Another solution is to define a privacy policy on the server. That is beyond the scope of this document, but here are several references if you need help getting started:<br />
<a href="http://www.w3.org/TR/p3pdeployment">The Platform for Privacy Preferences 1.0 Deployment Guide</a><br />
<a href="http://www.awardsites.com/tutorials/w3c/p3p_privacy-01.htm">Creating A P3P Compliant Privacy Policy</a><br />
<a href="http://www.w3.org/P3P/">P3P: The Platform for Privacy Preferences</a><br />
<a href="http://www.sitepoint.com/article/p3p-cookies-ie6/2">P3P, Cookies and IE6.0: A Case Study</a><br />
<a href="http://www.p3pwriter.com/LRN_111.asp">P3P Compact Policy</a><br />
<a href="http://p3ptoolbox.org/guide/section2.shtml#I">What is P3P and How Does it Work?</a>

\subsubsection{Large mailboxes sometimes show up empty}
In servers.php change timeout values:

<pre><code>
  'timeout' => array(IMAP\_READTIMEOUT => 20, IMAP\_WRITETIMEOUT => 20)
</code></pre>
\end{document}
