summaryrefslogtreecommitdiff
path: root/imap/docs/FAQ.txt
diff options
context:
space:
mode:
Diffstat (limited to 'imap/docs/FAQ.txt')
-rw-r--r--imap/docs/FAQ.txt2993
1 files changed, 2993 insertions, 0 deletions
diff --git a/imap/docs/FAQ.txt b/imap/docs/FAQ.txt
new file mode 100644
index 00000000..797bed09
--- /dev/null
+++ b/imap/docs/FAQ.txt
@@ -0,0 +1,2993 @@
+/* ========================================================================
+ * Copyright 1988-2007 University of Washington
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *
+ * ========================================================================
+ */
+
+ IMAP Toolkit Frequently Asked Questions
+
+Table of Contents
+
+ * 1. General/Software Feature Questions
+ + 1.1 Can I set up a POP or IMAP server on UNIX/Linux/OSF/etc.?
+ + 1.2 I am currently using qpopper as my POP3 server on UNIX.
+ Do I need to replace it with ipop3d in order to run imapd?
+ + 1.3 Can I set up a POP or IMAP server on Windows XP, 2000,
+ NT, Me, 98, or 95?
+ + 1.4 Can I set up a POP or IMAP server on Windows 3.1 or DOS?
+ + 1.5 Can I set up a POP or IMAP server on Macintosh?
+ + 1.6 Can I set up a POP or IMAP server on VAX/VMS?
+ + 1.7 Can I set up a POP or IMAP server on TOPS-20?
+ + 1.8 Are hierarchical mailboxes supported?
+ + 1.9 Are "dual-use" mailboxes supported?
+ + 1.10 Can I have a mailbox that has both messages and
+ sub-mailboxes?
+ + 1.11 What is the difference between "mailbox" and "folder"?
+ + 1.12 What is the status of internationalization?
+ + 1.13 Can I use SSL?
+ + 1.14 Can I use TLS and the STARTTLS facility?
+ + 1.15 Can I use CRAM-MD5 authentication?
+ + 1.16 Can I use APOP authentication?
+ + 1.17 Can I use Kerberos V5?
+ + 1.18 Can I use PAM for plaintext passwords?
+ + 1.19 Can I use Kerberos 5 for plaintext passwords?
+ + 1.20 Can I use AFS for plaintext passwords?
+ + 1.21 Can I use DCE for plaintext passwords?
+ + 1.22 Can I use the CRAM-MD5 database for plaintext passwords?
+ + 1.23 Can I disable plaintext passwords?
+ + 1.24 Can I disable plaintext passwords on unencrypted
+ sessions, but allow them on encrypted sessions?
+ + 1.25 Can I use virtual hosts?
+ + 1.26 Can I use RPOP authentication?
+ + 1.27 Can I use Kerberos V4?
+ + 1.28 Is there support for S/Key or OTP?
+ + 1.29 Is there support for NTLM or SPA?
+ + 1.30 Is there support for mh?
+ + 1.31 Is there support for qmail and the maildir format?
+ + 1.32 Is there support for the Cyrus mailbox format?
+ + 1.33 Is this software Y2K compliant?
+ * 2. What Do I Need to Build This Software?
+ + 2.1 What do I need to build this software with SSL on UNIX?
+ + 2.2 What do I need to build this software with Kerberos V on
+ UNIX?
+ + 2.3 What do I need to use a C++ compiler with this software
+ to build my own application?
+ + 2.4 What do I need to build this software on Windows?
+ + 2.5 What do I need to build this software on DOS?
+ + 2.6 Can't I use Borland C to build this software on the PC?
+ + 2.7 What do I need to build this software on the Mac?
+ + 2.8 What do I need to build this software on VMS?
+ + 2.9 What do I need to build this software on TOPS-20?
+ + 2.10 What do I need to build this software on Amiga or OS/2?
+ + 2.11 What do I need to build this software on Windows CE?
+ * 3. Build and Configuration Questions
+ + 3.1 How do I configure the IMAP and POP servers on UNIX?
+ + 3.2 I built and installed the servers according to the BUILD
+ instructions. It can't be that easy. Don't I need to write a
+ config file?
+ + 3.3 How do I make the IMAP and POP servers look for INBOX at
+ some place other than the mail spool directory?
+ + 3.4 How do I make the IMAP server look for secondary folders
+ at some place other than the user's home directory?
+ + 3.5 How do I configure SSL?
+ + 3.6 How do I configure TLS and the STARTTLS facility?
+ + 3.7 How do I build/install OpenSSL and obtain/create
+ certificates for use with SSL?
+ + 3.8 How do I configure CRAM-MD5 authentication?
+ + 3.9 How do I configure APOP authentication?
+ + 3.10 How do I configure Kerberos V5?
+ + 3.11 How do I configure PAM for plaintext passwords?
+ + 3.12 It looks like all I have to do to make the server use
+ Kerberos is to build with PAM on my Linux system, and set it
+ up in PAM for Kerberos passwords. Right?
+ + 3.13 How do I configure Kerberos 5 for plaintext passwords?
+ + 3.14 How do I configure AFS for plaintext passwords?
+ + 3.15 How do I configure DCE for plaintext passwords?
+ + 3.16 How do I configure the CRAM-MD5 database for plaintext
+ passwords?
+ + 3.17 How do I disable plaintext passwords?
+ + 3.18 How do I disable plaintext passwords on unencrypted
+ sessions, but allow them in SSL or TLS sessions?
+ + 3.19 How do I configure virtual hosts?
+ + 3.20 Why do I get compiler warning messages such as:
+ o passing arg 3 of `scandir' from incompatible pointer
+ type
+ o Pointers are not assignment-compatible.
+ o Argument #4 is not the correct type.
+ during the build?
+ + 3.21 Why do I get compiler warning messages such as
+ o Operation between types "void(*)(int)" and "void*" is
+ not allowed.
+ o Function argument assignment between types "void*" and
+ "void(*)(int)" is not allowed.
+ o Pointers are not assignment-compatible.
+ o Argument #5 is not the correct type.
+ during the build?
+ + 3.22 Why do I get linker warning messages such as:
+ o mtest.c:515: the `gets' function is dangerous and should
+ not be used.
+ during the build? Isn't this a security bug?
+ + 3.23 Why do I get linker warning messages such as:
+ o auth_ssl.c:92: the `tmpnam' function is dangerous and
+ should not be used.
+ during the build? Isn't this a security bug?
+ + 3.24 OK, suppose I see a warning message about a function
+ being "dangerous and should not be used" for something other
+ than this gets() or tmpnam() call?
+ * 4. Operational Questions
+ + 4.1 How can I enable anonymous IMAP logins?
+ + 4.2 How do I set up an alert message that each IMAP user will
+ see?
+ + 4.3 How does the c-client library choose which of its several
+ mechanisms to use to establish an IMAP connection to the
+ server? I noticed that it can connect on port 143, port 993,
+ via rsh, and via ssh.
+ + 4.4 I am using a TLS-capable IMAP server, so I don't need to
+ use /ssl to get encryption. However, I want to be certain
+ that my session is TLS encrypted before I send my password.
+ How to I do this?
+ + 4.5 How do I use one of the alternative formats described in
+ the formats.txt document? In particular, I hear that mbx
+ format will give me better performance and allow shared
+ access.
+ + 4.6 How do I set up shared mailboxes?
+ + 4.7 How can I make the server syslogs go to someplace other
+ than the mail syslog?
+ * 5. Security Questions
+ + 5.1 I see that the IMAP server allows access to arbitary
+ files on the system, including /etc/passwd! How do I disable
+ this?
+ + 5.2 I've heard that IMAP servers are insecure. Is this true?
+ + 5.3 How do I know that I have the most secure version of the
+ server?
+ + 5.4 I see all these strcpy() and sprintf() calls, those are
+ unsafe, aren't they?
+ + 5.5 Those /tmp lock files are protected 666, is that really
+ right?
+ * 6. Why Did You Do This Strange Thing? Questions
+ + 6.1 Why don't you use GNU autoconfig / automake /
+ autoblurdybloop?
+ + 6.2 Why do you insist upon a build with -g? Doesn't it waste
+ disk and memory space?
+ + 6.3 Why don't you make c-client a shared library?
+ + 6.4 Why don't you use iconv() for internationalization
+ support?
+ + 6.5 Why is the IMAP server connected to the home directory by
+ default?
+ + 6.6 I have a Windows system. Why isn't the server plug and
+ play for me?
+ + 6.7 I looked at the UNIX SSL code and saw that you have the
+ SSL data payload size set to 8192 bytes. SSL allows 16K; why
+ aren't you using the full size?
+ + 6.8 Why is an mh format INBOX called #mhinbox instead of just
+ INBOX?
+ + 6.9 Why don't you support the maildir format?
+ + 6.10 Why don't you support the Cyrus format?
+ + 6.11 Why is it creating extra forks on my SVR4 system?
+ + 6.12 Why are you so fussy about the date/time format in the
+ internal "From " line in traditional UNIX mailbox files? My
+ other mail program just considers every line that starts with
+ "From " to be the start of the message.
+ + 6.13 Why is traditional UNIX format the default format?
+ + 6.14 Why do you write this "DON'T DELETE THIS MESSAGE --
+ FOLDER INTERNAL DATA" message at the start of traditional
+ UNIX and MMDF format mailboxes?
+ + 6.15 Why don't you stash the mailbox metadata in the first
+ real message of the mailbox instead of writing this fake
+ FOLDER INTERNAL DATA message?
+ + 6.16 Why aren't "dual-use" mailboxes the default?
+ + 6.17 Why do you use ucbcc to build on Solaris?
+ + 6.18 Why should I care about some old system with BSD
+ libraries? cc is the right thing on my Solaris system!
+ + 6.19 Why do you insist upon writing .lock files in the spool
+ directory?
+ + 6.20 Why should I care about compatibility with the past?
+ * 7. Problems and Annoyances
+ + 7.1 Help! My INBOX is empty! What happened to my messages?
+ + 7.2 Help! All my messages in a non-INBOX mailbox have been
+ concatenated into one message which claims to be from me and
+ has a subject of the file name of the mailbox! What's going
+ on?
+ + 7.3 Why do I get the message:
+ o CREATE failed: Can't create mailbox node xxxxxxxxx: File
+ exists
+ and how do I fix it?
+ + 7.4 Why can't I log in to the server? The user name and
+ password are right!
+ + 7.5 Help! My load average is soaring and I see hundreds of
+ POP and IMAP servers, many logged in as the same user!
+ + 7.6 Why does mail disappear even though I set "keep mail on
+ server"?
+ + 7.7 Why do I get the message
+ o Moved ##### bytes of new mail to /home/user/mbox from
+ /var/spool/mail/user
+ and why did this happen?
+ + 7.8 Why isn't it showing the local host name as a
+ fully-qualified domain name?
+ + 7.9 Why is the local host name in the From/Sender/Message-ID
+ headers of outgoing mail not coming out as a fully-qualified
+ domain name?
+ + 7.10 What does the message:
+ o Mailbox vulnerable - directory /var/spool/mail must have
+ 1777 protection
+ mean? How can I fix this?
+ + 7.11 What does the message:
+ o Mailbox is open by another process, access is readonly
+ mean? How do I fix this?
+ + 7.12 What does the message:
+ o Can't get write access to mailbox, access is readonly
+ mean?
+ + 7.13 I set my POP3 client to "delete messages from server"
+ but they never get deleted. What is wrong?
+ + 7.14 What do messages such as:
+ o Message ... UID ... already has UID ...
+ o Message ... UID ... less than ...
+ o Message ... UID ... greater than last ...
+ o Invalid UID ... in message ..., rebuilding UIDs
+ mean?
+ + 7.15 What do the error messages:
+ o Unable to read internal header at ...
+ o Unable to find CRLF at ...
+ o Unable to parse internal header at ...
+ o Unable to parse message date at ...
+ o Unable to parse message flags at ...
+ o Unable to parse message UID at ...
+ o Unable to parse message size at ...
+ o Last message (at ... ) runs past end of file ...
+ mean? I am using mbx format.
+ + 7.16 What do the syslog messages:
+ o imap/tcp server failing (looping)
+ o pop3/tcp server failing (looping)
+ mean? When it happens, the listed service shuts down. How can
+ I fix this?
+ + 7.17 What does the syslog message:
+ o Mailbox lock file /tmp/.600.1df3 open failure:
+ Permission denied
+ mean?
+ + 7.18 What do the syslog messages:
+ o Command stream end of file, while reading line user=...
+ host=...
+ o Command stream end of file, while reading char user=...
+ host=...
+ o Command stream end of file, while writing text user=...
+ host=...
+ mean?
+ + 7.19 Why did my POP or IMAP session suddenly disconnect? The
+ syslog has the message:
+ o Killed (lost mailbox lock) user=... host=...
+ + 7.20 Why does my IMAP client show all the files on the
+ system, recursively from the UNIX root directory?
+ + 7.21 Why does my IMAP client show all of my files,
+ recursively from my UNIX home directory?
+ + 7.22 Why does my IMAP client show that I have mailboxes named
+ "#mhinbox", "#mh", "#shared", "#ftp", "#news", and "#public"?
+ + 7.23 Why does my IMAP client show all my files in my home
+ directory?
+ + 7.24 Why is there a long delay before I get connected to the
+ IMAP or POP server, no matter what client I use?
+ + 7.25 Why is there a long delay in Pine or any other c-client
+ based application call before I get connected to the IMAP
+ server? The hang seems to be in the c-client mail_open()
+ call. I don't have this problem with any other IMAP client.
+ There is no delay connecting to a POP3 or NNTP server with
+ mail_open().
+ + 7.26 Why does a message sometimes get split into two or more
+ messages on my SUN system?
+ + 7.27 Why did my POP or IMAP session suddenly disconnect? The
+ syslog has the message:
+ o Autologout user=<...my user name...> host=<...my imap
+ server...>
+ + 7.28 What does the UNIX error message:
+ o TLS/SSL failure: myserver: SSL negotiation failed
+ mean?
+ + 7.29 What does the PC error message:
+ o TLS/SSL failure: myserver: Unexpected TCP input
+ disconnect
+ mean?
+ + 7.30 What does the error message:
+ o TLS/SSL failure: myserver: Server name does not match
+ certificate
+ mean?
+ + 7.31 What does the UNIX error message:
+ o TLS/SSL failure: myserver: self-signed certificate
+ mean?
+ + 7.32 What does the PC error message
+ o TLS/SSL failure: myserver: Self-signed certificate or
+ untrusted authority
+ mean?
+ + 7.33 What does the UNIX error message:
+ o TLS/SSL failure: myserver: unable to get local issuer
+ certificate
+ mean?
+ + 7.34 Why does reading certain messages hang when using
+ Netscape? It works fine with Pine!
+ + 7.35 Why does Netscape say that there's a problem with the
+ IMAP server and that I should "Contact your mail server
+ administrator."?
+ + 7.36 Why is one user creating huge numbers of IMAP or POP
+ server sessions?
+ + 7.37 Why don't I get any new mail notifications from Outlook
+ Express or Outlook after a while?
+ + 7.38 Why don't I get any new mail notifications from
+ Entourage?
+ + 7.39 Why doesn't Entourage work at all?
+ + 7.40 Why doesn't Netscape Notify (NSNOTIFY.EXE) work at all?
+ + 7.41 Why can't I connect via SSL to Eudora? It says the
+ connection has been broken, and in the server syslogs I see
+ "Command stream end of file".
+ + 7.42 Sheesh. Aren't there any good IMAP clients out there?
+ + 7.43 But wait! PC Pine (or other PC program build with
+ c-client) crashes with the message
+ o incomplete SecBuffer exceeds maximum buffer size
+ when I use SSL connections. This is a bug in c-client, right?
+ + 7.44 My qpopper users keep on getting the DON'T DELETE THIS
+ MESSAGE -- FOLDER INTERNAL DATA if they also use Pine or
+ IMAP. How can I fix this?
+ + 7.45 Help! I installed the servers but I can't connect to
+ them from my client!
+ + 7.46 Why do I get the message
+ o Can not authenticate to SMTP server: 421 SMTP connection
+ went away!
+ and why did this happen? There was also something about
+ o SECURITY PROBLEM: insecure server advertised AUTH=PLAIN
+ + 7.47 Why do I get the message
+ o SMTP Authentication cancelled
+ and why did this happen? There was also something about
+ o SECURITY PROBLEM: insecure server advertised AUTH=PLAIN
+ + 7.48 Why do I get the message
+ o Invalid base64 string
+ when I try to authenticate to a Cyrus server?
+ * 8. Where to Go For Additional Information
+ + 8.1 Where can I go to ask questions?
+ + 8.2 I have some ideas for enhancements to IMAP. Where should
+ I go?
+ + 8.3 Where can I read more about IMAP and other email
+ protocols?
+ + 8.4 Where can I find out more about setting up and
+ administering an IMAP server?
+ _________________________________________________________________
+
+1. General/Software Feature Questions
+ _________________________________________________________________
+
+ 1.1 Can I set up a POP or IMAP server on UNIX/Linux/OSF/etc.?
+
+ Yes. Refer to the UNIX specific notes in files CONFIG and
+ BUILD.
+ _________________________________________________________________
+
+ 1.2 I am currently using qpopper as my POP3 server on UNIX. Do I need
+ to replace it with ipop3d in order to run imapd?
+
+ Not necessarily.
+
+ Although ipop3d interoperates with imapd better than qpopper,
+ imapd and qpopper will work together. The few qpopper/imapd
+ interoperability issues mostly affect users who use both IMAP
+ and POP3 clients; those users would probably be better served
+ if their POP3 server is ipop3d.
+
+ If you are happy with qpopper and just want to add imapd, you
+ should do that, and defer a decision on changing qpopper to
+ ipop3d. That way, you can get comfortable with imapd's
+ performance, without changing anything for your qpopper users.
+
+ Many sites have subsequently decided to change from qpopper to
+ ipop3d in order to get better POP3/IMAP interoperability. If
+ you need to do this, you'll know. There also seems to be a way
+ to make qpopper work better with imapd; see the answer to the
+ My qpopper users keep on getting the DON'T DELETE THIS MESSAGE
+ -- FOLDER INTERNAL DATA if they also use Pine or IMAP. How can
+ I fix this? question.
+ _________________________________________________________________
+
+ 1.3 Can I set up a POP or IMAP server on Windows XP, 2000, NT, Me, 98,
+ or 95?
+
+ Yes. Refer to the NT specific notes in files CONFIG and BUILD.
+ Also, for DOS-based versions of Windows (Windows Me, 98, and
+ 95) you *must* set up CRAM-MD5 authentication, as described in
+ md5.txt.
+
+ There is no file access control on Windows 9x or Me, so you
+ probably will have to do modifications to env_unix.c to prevent
+ people from hacking others' mail.
+
+ Note, however, that the server is not plug and play the way it
+ is for UNIX.
+ _________________________________________________________________
+
+ 1.4 Can I set up a POP or IMAP server on Windows 3.1 or DOS?
+ 1.5 Can I set up a POP or IMAP server on Macintosh?
+ 1.6 Can I set up a POP or IMAP server on VAX/VMS?
+
+ Yes, it's just a small matter of programming.
+ _________________________________________________________________
+
+ 1.7 Can I set up a POP or IMAP server on TOPS-20?
+
+ You have a TOPS-20 system? Cool.
+
+ If IMAP2 (RFC 1176) is good enough for you, you can use MAPSER
+ which is about the ultimate gonzo pure TOPS-20 extended
+ addressing assembly language program. Unfortunately, IMAP2 is
+ barely good enough for Pine these days, and most other IMAP
+ clients won't work with IMAP2 at all. Maybe someone will hack
+ MAPSER to do IMAP4rev1 some day.
+
+ We don't know if anyone wrote a POP3 server for TOPS-20. There
+ definitely was a POP2 server once upon a time.
+
+ Or you can port the POP and IMAP server from this IMAP toolkit
+ to it. All that you need for a first stab is to port the MTX
+ driver. That'll probably be just a couple of hours of hacking.
+ _________________________________________________________________
+
+ 1.8 Are hierarchical mailboxes supported?
+ 1.9 Are "dual-use" mailboxes supported?
+ 1.10 Can I have a mailbox that has both messages and sub-mailboxes?
+
+ Yes. However, there is one important caveat.
+
+ Some mailbox formats, including the default which is the
+ traditional UNIX mailbox format, are stored as a single file
+ containing all the messages. UNIX does not permit a name in the
+ filesystem to be both a file and a directory; consequently you
+ can not have a sub-mailbox within a mailbox that is in one of
+ these formats.
+
+ This is not a limitation of the software; this is a limitation
+ of UNIX. For example, there are mailbox formats in which the
+ name is a directory and each message is a file within that
+ directory; these formats support sub-mailboxes within such
+ mailboxes. However, for technical reasons, the "flat file"
+ formats are generally preferred since they perform better. Read
+ imap-2007/docs/formats.txt for more information on this topic.
+
+ It is always permissible to create a directory that is not a
+ mailbox, and have sub-mailboxes under it. The easiest way to
+ create a directory is to create a new mailbox inside a
+ directory that doesn't already exist. For example, if you
+ create "Mail/testbox" on UNIX, the directory "Mail/" will
+ automatically be created and then the mailbox "testbox" will be
+ created as a sub-mailbox of "Mail/".
+
+ It is also possible to create the name "Mail/" directly. Check
+ the documentation for your client software to see how to do
+ this with that software.
+
+ Of course, on Windows systems you would use "\" instead of "/".
+ _________________________________________________________________
+
+ 1.11 What is the difference between "mailbox" and "folder"?
+
+ The term "mailbox" is IMAP-speak for what a lot of software
+ calls a "folder" or a "mail folder". However, "folder" is often
+ used in other contexts to refer to a directory, for example, in
+ the graphic user interface on both Windows and Macintosh.
+
+ A "mailbox" is specifically defined as a named object that
+ contains messages. It is not required to be capable of
+ containing other types of objects including other mailboxes;
+ although some mailbox formats will permit this.
+
+ In IMAP-speak, a mailbox which can not contain other mailboxes
+ is called a "no-inferiors mailbox". Similarly, a directory
+ which can not contain messages is not a mailbox and is called a
+ "no-select name".
+ _________________________________________________________________
+
+ 1.12 What is the status of internationalization?
+
+ The IMAP toolkit is partially internationalized and
+ multilingualized.
+
+ Searching is supported in the following charsets: US-ASCII,
+ UTF-8, ISO-8859-1, ISO-8859-2, ISO-8859-3, ISO-8859-4,
+ ISO-8859-5, ISO-8859-6, ISO-8859-7, ISO-8859-8, ISO-8859-9,
+ ISO-8859-10, ISO-8859-11, ISO-8859-13, ISO-8859-14,
+ ISO-8859-15, ISO-8859-16, KOI8-R, KOI8-U (alias KOI8-RU),
+ TIS-620, VISCII, ISO-2022-JP, ISO-2022-KR, ISO-2022-CN,
+ ISO-2022-JP-1, ISO-2022-JP-2, GB2312 (alias CN-GB),
+ CN-GB-12345, BIG5 (alias CN-BIG5), EUC-JP, EUC-KR, Shift_JIS,
+ Shift-JIS, KS_C_5601-1987, KS_C_5601-1992, WINDOWS_874,
+ WINDOWS-1250, WINDOWS-1251, WINDOWS-1252, WINDOWS-1253,
+ WINDOWS-1254, WINDOWS-1255, WINDOWS-1256, WINDOWS-1257,
+ WINDOWS-1258.
+
+ All ISO-2022-?? charsets are treated identically, and support
+ ASCII, JIS Roman, hankaku katakana, ISO-8859-[1 - 10], TIS, GB
+ 2312, JIS X 0208, JIS X 0212, KSC 5601, and planes 1 and 2 of
+ CNS 11643.
+
+ EUC-JP includes support for JIS X 0212 and hankaku katakana.
+
+ c-client library support also exists to convert text in any of
+ the above charsets into Unicode, including headers with MIME
+ encoded-words.
+
+ There is no support for localization (e.g. non-English error
+ messages) at the present time, but such support is planned.
+ _________________________________________________________________
+
+ 1.13 Can I use SSL?
+
+ Yes. See the answer to the How do I configure SSL? question.
+ _________________________________________________________________
+
+ 1.14 Can I use TLS and the STARTTLS facility?
+
+ Yes. See the answer to the How do I configure TLS and the
+ STARTTLS facility? question.
+ _________________________________________________________________
+
+ 1.15 Can I use CRAM-MD5 authentication?
+
+ Yes. See the answer to the How do I configure CRAM-MD5
+ authentication? question.
+ _________________________________________________________________
+
+ 1.16 Can I use APOP authentication?
+
+ Yes. See the How do I configure APOP authentication? question.
+
+ Note that there is no client support for APOP authentication.
+ _________________________________________________________________
+
+ 1.17 Can I use Kerberos V5?
+
+ Yes. See the answer to the How do I configure Kerberos V5?
+ question.
+ _________________________________________________________________
+
+ 1.18 Can I use PAM for plaintext passwords?
+
+ Yes. See the answer to the How do I configure PAM for plaintext
+ passwords? question.
+ _________________________________________________________________
+
+ 1.19 Can I use Kerberos 5 for plaintext passwords?
+
+ Yes. See the answer to the How do I configure Kerberos 5 for
+ plaintext passwords? question.
+ _________________________________________________________________
+
+ 1.20 Can I use AFS for plaintext passwords?
+
+ Yes. See the answer to the How do I configure AFS for plaintext
+ passwords? question.
+ _________________________________________________________________
+
+ 1.21 Can I use DCE for plaintext passwords?
+
+ Yes. See the answer to the How do I configure DCE for plaintext
+ passwords? question.
+ _________________________________________________________________
+
+ 1.22 Can I use the CRAM-MD5 database for plaintext passwords?
+
+ Yes. See the answer to the How do I configure the CRAM-MD5
+ database for plaintext passwords? question.
+ _________________________________________________________________
+
+ 1.23 Can I disable plaintext passwords?
+
+ Yes. See the answer to the How do I disable plaintext
+ passwords? question.
+ _________________________________________________________________
+
+ 1.24 Can I disable plaintext passwords on unencrypted sessions, but
+ allow them on encrypted sessions?
+
+ Yes. See the answer to the How do I disable plaintext passwords
+ on unencrypted sessions, but allow them in SSL or TLS sessions?
+ question.
+ _________________________________________________________________
+
+ 1.25 Can I use virtual hosts?
+
+ Yes. See the answer to the How do I configure virtual hosts?
+ question.
+ _________________________________________________________________
+
+ 1.26 Can I use RPOP authentication?
+
+ There is no support for RPOP authentication.
+ _________________________________________________________________
+
+ 1.27 Can I use Kerberos V4?
+
+ Kerberos V4 is not supported. Kerberos V4 client-only
+ contributed code is available in
+
+ftp://ftp.cac.washington.edu/mail/kerberos4-patches.tar.Z
+
+ This is a patchkit which must be applied to the IMAP toolkit
+ according to the instructions in the patchkit's README. We can
+ not promise that this code works.
+ _________________________________________________________________
+
+ 1.28 Is there support for S/Key or OTP?
+
+ There is currently no support for S/Key or OTP. There may be an
+ OTP SASL authenticator available from third parties.
+ _________________________________________________________________
+
+ 1.29 Is there support for NTLM or SPA?
+
+ There is currently no support for NTLM or SPA, nor are there
+ any plans to add such support. In general, I avoid
+ vendor-specific mechanisms. I also believe that these
+ mechanisms are being deprecated by their vendor.
+
+ There may be an NTLM SASL authenticator available from third
+ parties.
+ _________________________________________________________________
+
+ 1.30 Is there support for mh?
+
+ Yes, but only as a legacy format. Your mh format INBOX is
+ accessed by the name "#mhinbox", and all other mh format
+ mailboxes are accessed by prefixing "#mh/" to the name, e.g.
+ "#mh/foo". The mh support uses the "Path:" entry in your
+ .mh_profile file to identify the root directory of your mh
+ format mailboxes.
+
+ Non-legacy use of mh format is not encouraged. There is no
+ support for permanent flags or unique identifiers; furthermore
+ there are known severe performance problems with the mh format.
+ _________________________________________________________________
+
+ 1.31 Is there support for qmail and the maildir format?
+
+ There is no support for qmail or the maildir format in our
+ distribution, nor are there any plans to add such support.
+ Maildir support may be available from third parties.
+ _________________________________________________________________
+
+ 1.32 Is there support for the Cyrus mailbox format?
+
+ No.
+ _________________________________________________________________
+
+ 1.33 Is this software Y2K compliant?
+
+ Please read the files Y2K and calendar.txt.
+ _________________________________________________________________
+
+2. What Do I Need to Build This Software?
+ _________________________________________________________________
+
+ 2.1 What do I need to build this software with SSL on UNIX?
+
+ You need to build and install OpenSSL first.
+ _________________________________________________________________
+
+ 2.2 What do I need to build this software with Kerberos V on UNIX?
+
+ You need to build and install MIT Kerberos first.
+ _________________________________________________________________
+
+ 2.3 What do I need to use a C++ compiler with this software to build
+ my own application?
+
+ If you are building an application using the c-client library,
+ use the new c-client.h file instead of including the other
+ include files. It seems that c-client.h should define away all
+ the troublesome names that conflict with C++.
+
+ If you use gcc, you may need to use -fno-operator-names as
+ well.
+ _________________________________________________________________
+
+ 2.4 What do I need to build this software on Windows?
+
+ You need Microsoft Visual C++ 6.0, Visual C++ .NET, or Visual
+ C# .NET (which you can buy from any computer store), along with
+ the Microsoft Platform SDK (which you can download from
+ Microsoft's web site).
+
+ You do not need to install the entire Platform SDK; it suffices
+ to install just the Core SDK and the Internet Development SDK.
+ _________________________________________________________________
+
+ 2.5 What do I need to build this software on DOS?
+
+ It's been several years since we last attempted to do this. At
+ the time, we used Microsoft C.
+ _________________________________________________________________
+
+ 2.6 Can't I use Borland C to build this software on the PC?
+
+ Probably not. If you know otherwise, please let us know.
+ _________________________________________________________________
+
+ 2.7 What do I need to build this software on the Mac?
+
+ It has been several years since we last attempted to do this.
+ At the time, we used Symantec THINK C; but today you'll need a
+ C compiler which allows segments to be more than 32K.
+ _________________________________________________________________
+
+ 2.8 What do I need to build this software on VMS?
+
+ You need the VMS C compiler, and either the Multinet or Netlib
+ TCP.
+ _________________________________________________________________
+
+ 2.9 What do I need to build this software on TOPS-20?
+
+ You need the TOPS-20 KCC compiler.
+ _________________________________________________________________
+
+ 2.10 What do I need to build this software on Amiga or OS/2?
+
+ We don't know.
+ _________________________________________________________________
+
+ 2.11 What do I need to build this software on Windows CE?
+
+ This port is incomplete. Someone needs to finish it.
+ _________________________________________________________________
+
+3. Build and Configuration Questions
+ _________________________________________________________________
+
+ 3.1 How do I configure the IMAP and POP servers on UNIX?
+ 3.2 I built and installed the servers according to the BUILD
+ instructions. It can't be that easy. Don't I need to write a config
+ file?
+
+ For ordinary "vanilla" UNIX systems, this software is plug and
+ play; just build it, install it, and you're done. If you have a
+ modified system, then you may want to do additional work; most
+ of this is to a single source code file (env_unix.c on UNIX
+ systems). Read the file CONFIG for more details.
+
+ Yes, it's that easy. There are some additional options, such as
+ SSL or Kerberos, which require additional steps to build. See
+ the relevant questions below.
+ _________________________________________________________________
+
+ 3.3 How do I make the IMAP and POP servers look for INBOX at some
+ place other than the mail spool directory?
+ 3.4 How do I make the IMAP server look for secondary folders at some
+ place other than the user's home directory?
+
+ Please read the file CONFIG for discussion of this and other
+ issues.
+ _________________________________________________________________
+
+ 3.5 How do I configure SSL?
+ 3.6 How do I configure TLS and the STARTTLS facility?
+
+ imap-2007 supports SSL and TLS client functionality on UNIX and
+ 32-bit Windows for IMAP, POP3, SMTP, and NNTP; and SSL and TLS
+ server functionality on UNIX for IMAP and POP3.
+
+ UNIX SSL build requires that a third-party software package,
+ OpenSSL, be installed on the system first. Read
+ imap-2007/docs/SSLBUILD for more information.
+
+ SSL is supported via undocumented Microsoft interfaces in
+ Windows 9x and NT4; and via standard interfaces in Windows
+ 2000, Windows Millenium, and Windows XP.
+ _________________________________________________________________
+
+ 3.7 How do I build/install OpenSSL and obtain/create certificates for
+ use with SSL?
+
+ If you need help in doing this, try the contacts mentioned in
+ the OpenSSL README. We do not offer support for OpenSSL or
+ certificates.
+ _________________________________________________________________
+
+ 3.8 How do I configure CRAM-MD5 authentication?
+ 3.9 How do I configure APOP authentication?
+
+ CRAM-MD5 authentication is enabled in the IMAP and POP3 client
+ code on all platforms. Read md5.txt to learn how to set up
+ CRAM-MD5 and APOP authentication on UNIX and NT servers.
+
+ There is no support for APOP client authentication.
+ _________________________________________________________________
+
+ 3.10 How do I configure Kerberos V5?
+
+ imap-2007 supports client and server functionality on UNIX and
+ 32-bit Windows.
+
+ Kerberos V5 is supported by default in Windows 2000 builds:
+
+ nmake -f makefile.w2k
+
+ Other builds require that a third-party Kerberos package, e.g.
+ MIT Kerberos, be installed on the system first.
+
+ To build with Kerberos V5 on UNIX, include
+ EXTRAAUTHENTICATORS=gss in the make command line, e.g.
+
+ make lnp EXTRAAUTHENTICATORS=gss
+
+ To build with Kerberos V5 on Windows 9x, Windows Millenium, and
+ NT4, use the "makefile.ntk" file instead of "makefile.nt":
+
+
+ nmake -f makefile.ntk
+ _________________________________________________________________
+
+ 3.11 How do I configure PAM for plaintext passwords?
+
+ On Linux systems, use the lnp port, e.g.
+
+ make lnp
+
+ On Solaris systems and other systems with defective PAM
+ implementations, build with PASSWDTYPE=pmb, e.g.
+
+ make sol PASSWDTYPE=pmb
+
+ On all other systems, build with PASSWDTYPE=pam, e.g
+
+ make foo PASSWDTYPE=pam
+
+ If you build with PASSWDTYPE=pam and authentication does not
+ work, try rebuilding (after a "make clean") with
+ PASSWDTYPE=pmb.
+ _________________________________________________________________
+
+ 3.12 It looks like all I have to do to make the server use Kerberos is
+ to build with PAM on my Linux system, and set it up in PAM for
+ Kerberos passwords. Right?
+
+ Yes and no.
+
+ Doing this will make plaintext password authentication use the
+ Kerberos password instead of the /etc/passwd password.
+
+ However, this will NOT give you Kerberos-secure authentication.
+ See the answer to the How do I configure Kerberos V5? question
+ for how to build with Kerberos-secure authentication.
+ _________________________________________________________________
+
+ 3.13 How do I configure Kerberos 5 for plaintext passwords?
+
+ Build with PASSWDTYPE=gss, e.g.
+
+ make sol PASSWDTYPE=gss
+
+ However, this will NOT give you Kerberos-secure authentication.
+ See the answer to the How do I configure Kerberos V5? question
+ for how to build with Kerberos-secure authentication.
+ _________________________________________________________________
+
+ 3.14 How do I configure AFS for plaintext passwords?
+
+ Build with PASSWDTYPE=afs, e.g
+
+ make sol PASSWDTYPE=afs
+ _________________________________________________________________
+
+ 3.15 How do I configure DCE for plaintext passwords?
+
+ Build with PASSWDTYPE=dce, e.g
+
+ make sol PASSWDTYPE=dce
+ _________________________________________________________________
+
+ 3.16 How do I configure the CRAM-MD5 database for plaintext passwords?
+
+ The CRAM-MD5 password database is automatically used for
+ plaintext password if it exists.
+
+ Note that this is NOT CRAM-MD5-secure authentication. You
+ probably want to consider disabling plaintext passwords for
+ non-SSL/TLS sessions. See the next two questions.
+ _________________________________________________________________
+
+ 3.17 How do I disable plaintext passwords?
+
+ Server-level plaintext passwords can be disabled by setting
+ PASSWDTYPE=nul, e.g.
+
+ make lnx EXTRAAUTHENTICATORS=gss PASSWDTYPE=nul
+
+ Note that you must have a CRAM-MD5 database installed or
+ specify at least one EXTRAAUTHENTICATOR, otherwise it will not
+ be possible to log in to the server.
+
+ When plaintext passwords are disabled, the IMAP server will
+ advertise the LOGINDISABLED capability and the POP3 server will
+ not advertise the USER capability.
+
+ 3.18 How do I disable plaintext passwords on unencrypted sessions, but
+ allow them in SSL or TLS sessions?
+
+ Do not set PASSWDTYPE=nul or SSLTYPE=unix. Set SSLTYPE=nopwd
+ instead, e.g.
+
+ make lnx SSLTYPE=nopwd
+
+ When plaintext passwords are disabled, the IMAP server will
+ advertise the LOGINDISABLED capability and the POP3 server will
+ not advertise the USER capability.
+
+ Plaintext passwords will always be enabled in SSL sessions; the
+ IMAP server will not advertise the LOGINDISABLED capability and
+ the POP3 server will advertise the USER capability.
+
+ If the client does a successful start-TLS in a non-SSL session,
+ plaintext passwords will be enabled, and a new CAPABILITY or
+ CAPA command (which is required after start-TLS) will show the
+ effect as in SSL sessions.
+ _________________________________________________________________
+
+ 3.19 How do I configure virtual hosts?
+
+ This is automatic, but with certain restrictions.
+
+ The most important one is that each virtual host must have its
+ own IP address; otherwise the server has no way of knowing
+ which virtual host is desired.
+
+ As distributed, the software uses a global password file; hence
+ user "fred" on one virtual host is "fred" on all virtual hosts.
+ You may want to modify the checkpw() routine to implement some
+ other policy (e.g. separate password files).
+
+ Note that the security model assumes that all users have their
+ own unique UNIX UID number. So if you use separate password
+ files you should make certain that the UID numbers do not
+ overlap between different files.
+
+ More advanced virtual host support may be available as patches
+ from third parties.
+ _________________________________________________________________
+
+ 3.20 Why do I get compiler warning messages such as:
+ passing arg 3 of `scandir' from incompatible pointer type
+ Pointers are not assignment-compatible.
+ Argument #4 is not the correct type.
+
+ during the build?
+
+ You can safely ignore these messages.
+
+ Over the years, the prototype for scandir() has changed, and
+ thus is variant across different UNIX platforms. In particular,
+ the definitions of the third argument (type select_t) and
+ fourth argument (type compar_t) have changed over the years,
+ the issue being whether or not the arguments to the functions
+ pointed to by these function pointers are of type const or not.
+
+ The way that c-client calls scandir() will tend to generate
+ these compiler warnings on newer systems such as Linux;
+ however, it will still build. The problem with fixing the call
+ is that then it won't build on older systems.
+ _________________________________________________________________
+
+ 3.21 Why do I get compiler warning messages such as
+ Operation between types "void(*)(int)" and "void*" is not allowed.
+ Function argument assignment between types "void*" and "void(*)(int)" is not a
+llowed.
+ Pointers are not assignment-compatible.
+ Argument #5 is not the correct type.
+
+ during the build?
+
+ You can safely ignore these messages.
+
+ All known systems have no problem with casting a function
+ pointer to/from a void* pointer, certain C compilers issue a
+ compiler diagnostic because this facility is listed as a
+ "Common extension" by the C standard:
+
+ K.5.7 Function pointer casts
+ [#1] A pointer to an object or to void may be cast to a pointer
+ to a function, allowing data to be invoked as a function (6.3.4).
+ [#2] A pointer to a function may be cast to a pointer to an
+ object or to void, allowing a function to be inspected or
+ modified (for example, by a debugger) (6.3.4).
+
+ It may be just a "common extension", but this facility is
+ relied upon heavily by c-client.
+ _________________________________________________________________
+
+ 3.22 Why do I get linker warning messages such as:
+mtest.c:515: the `gets' function is dangerous and should not be used.
+
+ during the build? Isn't this a security bug?
+
+ You can safely ignore this message.
+
+ Certain linkers, most notably on Linux, give this warning
+ message. It is indeed true that the traditional gets() function
+ is not a safe one.
+
+ However, the mtest program is only a demonstration program, a
+ model of a very basic application program using c-client. It is
+ not something that you would install, much less run in any
+ security-sensitive context.
+
+ mtest has numerous other shortcuts that you wouldn't want to do
+ in a real application program.
+
+ The only "security bug" with mtest would be if it was run by
+ some script in a security-sensitive context, but mtest isn't
+ particularly useful for such purposes. If you wanted to write a
+ script to automate some email task using c-client, you'd be
+ better off using imapd instead of mtest.
+
+ mtest only has two legitimate uses. It's a useful testbed for
+ me when debugging new versions of c-client, and it's useful as
+ a model for someone writing a simple c-client application to
+ see how the various calls work.
+
+ By the way, if you need a more advanced example of c-client
+ programming than mtest (and you probably will), I recommend
+ that you look at the source code for imapd and Pine.
+ _________________________________________________________________
+
+ 3.23 Why do I get linker warning messages such as:
+ auth_ssl.c:92: the `tmpnam' function is dangerous and should not be used.
+
+ during the build? Isn't this a security bug?
+
+ You can safely ignore this message.
+
+ Certain linkers, most notably on Linux, give this warning
+ message, based upon two known issues with tmpnam():
+
+ there can be a buffer overflow if an inadequate buffer is
+ allocated.
+ there can be a timing race caused by certain incautious
+ usage of the return value.
+
+ Neither of these issues applies in the particular use that is
+ made of tmpnam(). More importantly, the tmpnam() call is never
+ executed on Linux systems.
+ _________________________________________________________________
+
+ 3.24 OK, suppose I see a warning message about a function being
+ "dangerous and should not be used" for something other than this
+ gets() or tmpnam() call?
+
+ Please forward the details for investigation.
+ _________________________________________________________________
+
+4. Operational Questions
+ _________________________________________________________________
+
+ 4.1 How can I enable anonymous IMAP logins?
+
+ Create the file /etc/anonymous.newsgroups. At the present time,
+ this file should be empty. This will permit IMAP logins as
+ anonymous as well as the ANONYMOUS SASL authenticator.
+ Anonymous users have access to mailboxes in the #news., #ftp/,
+ and #public/ namespaces only.
+ _________________________________________________________________
+
+ 4.2 How do I set up an alert message that each IMAP user will see?
+
+ Create the file /etc/imapd.alert with the text of the message.
+ This text should be kept to one line if possible. Note that
+ this will cause an alert to every IMAP user every time they
+ initiate an IMAP session, so it should only be used for
+ critical messages.
+ _________________________________________________________________
+
+ 4.3 How does the c-client library choose which of its several
+ mechanisms to use to establish an IMAP connection to the server? I
+ noticed that it can connect on port 143, port 993, via rsh, and via
+ ssh.
+
+ c-client chooses how to establish an IMAP connection via the
+ following rules:
+
+ + If /ssl is specified, use an SSL connection. Fail otherwise.
+ + Else if client is a UNIX system and "ssh server exec
+ /etc/rimapd" works, use that
+ + Else if /tryssl is specified and an SSL connection works, use
+ that.
+ + Else if client is a UNIX system and "rsh server exec
+ /etc/rimapd" works, use that.
+ + Else use a non-SSL connection.
+ _________________________________________________________________
+
+ 4.4 I am using a TLS-capable IMAP server, so I don't need to use /ssl
+ to get encryption. However, I want to be certain that my session is
+ TLS encrypted before I send my password. How to I do this?
+
+ Use the /tls option in the mailbox name. This will cause an
+ error message and the connection to fail if the server does not
+ negotiate STARTTLS.
+ _________________________________________________________________
+
+ 4.5 How do I use one of the alternative formats described in the
+ formats.txt document? In particular, I hear that mbx format will give
+ me better performance and allow shared access.
+
+ The rumors about mbx format being preferred are true. It is
+ faster than the traditional UNIX mailbox format and permits
+ shared access.
+
+ However, and this is very important, note that using an
+ alternative mailbox format is an advanced facility, and only
+ expert users should undertake it. If you don't understand any
+ of the following notes, you may not be enough of an expert yet,
+ and are probably better off not going this route until you are
+ more comfortable with your understanding.
+
+ Some of the formats, including mbx, are only supported by the
+ software based on the c-client library, and are not recognized
+ by other mailbox programs. The "vi" editor will corrupt any mbx
+ format mailbox that it encounters.
+
+ Another problem is that the certain formats, including mbx, use
+ advanced file access and locking techniques that do not work
+ reliably with NFS. NFS is not a real filesystem. Use IMAP
+ instead of NFS for distributed access.
+
+ Each of the following steps are in escalating order of
+ involvement. The further you go down this list, the more deeply
+ committed you become:
+
+ + The simplest way to create a mbx-format mailbox is to prefix
+ the name with "#driver.mbx/" when creating a mailbox through
+ c-client. For example, if you create "#driver.mbx/foo", the
+ mailbox "foo" will be created in mbx format. Only use
+ "#driver.mbx/" when creating the mailbox. At all other times,
+ just use the name ("foo" in this example); the software will
+ automatically select the driver for mbx whenever that mailbox
+ is accessed without you doing anything else.
+ + You can use the "mailutil copy" command to copy an existing
+ mailbox to a new mailbox in mbx format. Read the man page
+ provided with the mailutil program for details.
+ + If you create an mbx-format INBOX, by creating
+ "#driver.mbx/INBOX" (note that "INBOX" must be all
+ uppercase), then subsequent access to INBOX by any c-client
+ based application will use the mbx-format INBOX. Any mail
+ delivered to the traditional format mailbox in the spool
+ directory (e.g. /var/spool/mail/$USER) will automatically be
+ copied into the mbx-format INBOX and the spool directory copy
+ removed.
+ + You can cause any newly-created mailboxes to be in mbx-format
+ by default by changing the definition of
+ CREATEPROTO=unixproto to be CREATEPROTO=mbxproto in
+ src/osdep/unix/Makefile, then rebuilding the IMAP toolkit (do
+ a "make clean" first). Do not change EMPTYPROTO, since mbx
+ format mailboxes are never a zero-byte file. If you use Pine
+ or the imap-utils, you should probably also rebuild them with
+ the new IMAP toolkit too.
+ + You can deliver directly to the mbx-format INBOX by use of
+ the tmail or dmail programs. tmail is for direct invocation
+ from sendmail (or whatever MTA program you use); dmail is for
+ calls from procmail. Both of these programs have man pages
+ which must be read carefully before making this change.
+
+ Most other servers (e.g. Cyrus) require use of a non-standard
+ format. A full-fledged format conversion is not significantly
+ different from what you have to do with other servers. The
+ difference, which makes format conversion procedures somewhat
+ more complicated with this server, is that there is no "all or
+ nothing" requirement with this server. There are many points in
+ between. A format conversion can be anything from a single
+ mailbox or single user, to systemwide.
+
+ This is good in that you can decide how far to go, or do the
+ steps incrementally as you become more comfortable with the
+ result. On the other hand, there's no "One True Way" which can
+ be boiled down to a simple set of pedagogical instructions.
+
+ A number of sites have done full-fledged format conversions,
+ and are reportedly quite happy with the results. Feel free to
+ ask in the comp.mail.imap newsgroup or the imap-uw mailing
+ list for advice or help.
+ _________________________________________________________________
+
+ 4.6 How do I set up shared mailboxes?
+
+ At the simplest level, a shared mailbox is one which has UNIX
+ file and directory protections which permit multiple users to
+ access it. What this means is that your existing skills and
+ tools to create and manage shared files on your UNIX system
+ apply to shared mailboxes; e.g.
+
+ chmod 666 mailbox
+
+ You may want to consider the use of a mailbox format which
+ permits multiple simultaneous read/write sessions, such as the
+ mbx format. The traditional UNIX format only allows one
+ read/write session to a mailbox at a time.
+
+ An additional convenience item are three system directories,
+ which can be set up for shared namespaces. These are: #ftp,
+ #shared, and #public, and are defined by creating the
+ associated UNIX users and home directories as described below.
+
+ #ftp/ refers to the anonymous ftp filesystem exported by the
+ ftp server, and is equivalent to the home directory for UNIX
+ user "ftp". For example, #ftp/foo/bar refers to the file
+ /foo/bar in the anonymous FTP filesystem, or ~ftp/foo/bar for
+ normal users. Anonymous FTP files are available to anonymous
+ IMAP logins. By default, newly-created files in #ftp/ are
+ protected 644.
+
+ #public/ refers to an IMAP toolkit convention called "public"
+ files, and is equivalent to the home directory for UNIX user
+ "imappublic". For example, #public/foo/bar refers to the file
+ ~imappublic/foo/bar. Public files are available to anonymous
+ IMAP logins. By default, newly-created files in #public are
+ created with protection 0666.
+
+ #shared/ refers to an IMAP toolkit convention called "shared"
+ files, and is equivalent to the home directory for UNIX user
+ "imapshared". For example, #shared/foo/bar refers to the file
+ ~imapshared/foo/bar. Shared files are not available to
+ anonymous IMAP logins. By default, newly-created files in
+ #shared are created with protection 0660.
+ _________________________________________________________________
+
+ 4.7 How can I make the server syslogs go to someplace other than the
+ mail syslog?
+
+ The openlog() call that sets the syslog facility is in
+ src/osdep/unix/env_unix.c in routine server_init(). You need to
+ edit this file to change the syslog facility from LOG_MAIL to
+ the facility you want, then rebuild. You also need to set up
+ your /etc/syslog.conf properly.
+
+ Refer to the man pages for syslog and syslogd for more
+ information on what the available syslog facilities are and how
+ to configure syslogs. If you still don't understand what to do,
+ find a UNIX system expert.
+ _________________________________________________________________
+
+5. Security Questions
+ _________________________________________________________________
+
+ 5.1 I see that the IMAP server allows access to arbitary files on the
+ system, including /etc/passwd! How do I disable this?
+
+ You should not worry about this if your IMAP users are allowed
+ shell access. The IMAP server does not permit any access that
+ the user can not have via the shell.
+
+ If, and only if, you deny your IMAP users shell access, you may
+ want to consider one of three choices. Note that these choices
+ reduce IMAP functionality, and may have undesirable side
+ effects. Each of these choices involves an edit to file
+ src/osdep/unix/env_unix.c
+
+ The first (and recommended) choice is to set restrictBox as
+ described in file CONFIG. This will disable access to the
+ filesystem root, to other users' home directory, and to
+ superior directory.
+
+ The second (and strongly NOT recommended) choice is to set
+ closedBox as described in file CONFIG. This puts each IMAP
+ session into a so-called "chroot jail", and thus setting this
+ option is extremely dangerous; it can make your system much
+ less secure and open to root compromise attacks. So do not use
+ this option unless you are absolutely certain that you
+ understand all the issues of a "chroot jail."
+
+ The third choice is to rewrite routine mailboxfile() to
+ implement whatever mapping from mailbox name to filesystem name
+ (and restrictions) that you wish. This is the most general
+ choice. As a guide, you can see at the start of routine
+ mailboxfile() what the restrictBox choice does.
+ _________________________________________________________________
+
+ 5.2 I've heard that IMAP servers are insecure. Is this true?
+
+ There are no known security problems in this version of the
+ IMAP toolkit, including the IMAP and POP servers. The IMAP and
+ POP servers limit what can be done while not logged in, and as
+ part of the login process discard all privileges except those
+ of the user.
+
+ As with other software packages, there have been buffer
+ overflow vulnerabilities in past versions. All known problems
+ of this nature are fixed in this version.
+
+ There is every reason to believe that the bad guys are engaged
+ in an ongoing effort to find vulnerabilities in the IMAP
+ toolkit. We look for such problems, and when one is found we
+ fix it.
+
+ It's unfortunate that any vulnerabilities existed in past
+ versions, and we're doing my best to keep the IMAP toolkit free
+ of vulnerabilities. No new vulnerabilities have been discovered
+ in quite a while, but efforts will not be relaxed.
+
+ Beware of vendors who claim that their implementations can not
+ have vulnerabilities.
+ _________________________________________________________________
+
+ 5.3 How do I know that I have the most secure version of the server?
+
+ The best way is to keep your server software up to date. The
+ bad guys are always looking for ways to crack software, and
+ when they find one, let all their friends know.
+
+ Oldtimers used to refer to a concept of software rot: if your
+ software hasn't been updated in a while, it would "rot" -- tend
+ to acquire problems that it didn't have when it was new.
+
+ The latest release version of the IMAP toolkit is always
+ available at ftp://ftp.cac.washington.edu/mail/imap.tar.Z
+ _________________________________________________________________
+
+ 5.4 I see all these strcpy() and sprintf() calls, those are unsafe,
+ aren't they?
+
+ Yes and no.
+
+ It can be unsafe to do these calls if you do not know that the
+ string being written will fit in the buffer. However, they are
+ perfectly safe if you do know that.
+
+ Beware of programmers who advocate doing a brute-force change
+ of all instances of
+
+ strcpy (s,t);
+
+ to
+
+ strncpy (s,t,n)[n] = '\0';
+
+ and similar measures in the name of "fixing all possible buffer
+ overflows."
+
+ There are examples in which a security bug was introduced
+ because of this type of "fix", due to the programmer using the
+ wrong value for n. In one case, the programmer thought that n
+ was larger than it actually was, causing a NUL to be written
+ out of the buffer; in another, n was too small, and a security
+ credential was truncated.
+
+ What is particularly ironic was that in both cases, the
+ original strcpy() was safe, because the size of the source
+ string was known to be safe.
+
+ With all this in mind, the software has been inspected, and it
+ is believed that all places where buffer overflows can happen
+ have been fixed. The strcpy()s that are still are in the code
+ occur after a size check was done in some other way.
+
+ Note that the common C idiom of
+
+ *s++ = c;
+
+ is just as vulnerable to buffer overflows. You can't cure
+ buffer overflows by outlawing certain functions, nor is it
+ desirable to do so; sometimes operations like strcpy()
+ translate into fast machine instructions for better
+ performance.
+
+ Nothing replaces careful study of code. That's how the bad guys
+ find bugs. Security is not accomplished by means of brute-force
+ shortcuts.
+ _________________________________________________________________
+
+ 5.5 Those /tmp lock files are protected 666, is that really right?
+
+ Yes. Shared mailboxes won't work otherwise. Also, you get into
+ accidental denial of service problems with old lock files left
+ lying around; this happens fairly frequently.
+
+ The deliberate mischief that can be caused by fiddling with the
+ lock files is small-scale; harassment level at most. There are
+ many -- and much more effective -- other ways of harassing
+ another user on UNIX. It's usually not difficult to determine
+ the culprit.
+
+ Before worrying about deliberate mischief, worry first about
+ things happening by accident!
+ _________________________________________________________________
+
+6. Why Did You Do This Strange Thing? Questions
+ _________________________________________________________________
+
+ 6.1 Why don't you use GNU autoconfig / automake / autoblurdybloop?
+
+ Autoconfig et al are not available on all the platforms where
+ the IMAP toolkit is supported; and do not work correctly on
+ some of the platforms where they do exist. Furthermore, these
+ programs add another layer of complexity to an already complex
+ process.
+
+ Coaxing software that uses autoconfig to build properly on
+ platforms which were not specifically considered by that
+ software wastes an inordinate amount of time. When (not if)
+ autoconfig fails to do the right thing, the result is an
+ inpenetrable morass to untangle in order to find the problem
+ and fix it.
+
+ The concept behind autoconfig is good, but the execution is
+ flawed. It rarely does the right thing on a platform that
+ wasn't specifically considered. Human life is too short to
+ debug autoconfig problems, especially since the current
+ mechanism is so much easier.
+ _________________________________________________________________
+
+ 6.2 Why do you insist upon a build with -g? Doesn't it waste disk and
+ memory space?
+
+ From time to time a submitted port has snuck in without -g.
+ This has always ended up causing problems. There are only two
+ valid excuses for not using -g in a port:
+
+ + The compiler does not support -g
+ + An alternate form of -g is needed with optimization, e.g.
+ -g3.
+
+ There will be no new ports added without -g (or a suitable
+ alternative) being set.
+
+ -g has not been arbitrarily added to the ports which do not
+ currently have it because we don't know if doing so would break
+ the build. However, any support issues with one of those port
+ will lead to the correct -g setting being determined and
+ permanently added.
+
+ Processors are fast enough (and disk space is cheap enough)
+ that -g should be automatic in all compilers with no way of
+ turning it off, and /bin/strip should be a symlink to
+ /bin/true. Human life is too short to deal with binaries built
+ without -g. Such binaries should be a bad memory of the days of
+ KIPS processors and disks that costs several dollars per
+ kilobyte.
+ _________________________________________________________________
+
+ 6.3 Why don't you make c-client a shared library?
+
+ All too often, shared libraries create far more problems than
+ they solve.
+
+ Remember that you only gain the benefit of a shared library
+ when there are multiple applications which use that shared
+ library. Even without shared libraries, on most modern
+ operating systems (and many ancient ones too!) applications
+ will share their text segments between across multiple
+ processes running the same application. This means that if your
+ system only runs one application (e.g. imapd) that uses the
+ c-client library, then you gain no benefit from making c-client
+ a shared library even if it has 100 imapd processes. You will,
+ however suffer added complexity.
+
+ If you have a server system that just runs imapd and ipop3d,
+ then making c-client a shared library will save just one copy
+ of c-client no matter how many IMAP/POP3 processes are running.
+
+ The problem with shared libraries is that you have to keep
+ around a copy of the library every time something changes in
+ the library that would affect the interface the library
+ presents to the application. So, you end up having many copies
+ of the same shared library.
+
+ If you don't keep multiple copies of the shared library, then
+ one of two things happens. If there was proper versioning, then
+ you'll get a message such as "cannot open shared object file"
+ or "minor versions don't match" and the application won't run.
+ Otherwise, the application will run, but will fail in
+ mysterious ways.
+
+ Several sites and third-party distributors have modified the
+ c-client makefile in order to make c-client be a shared
+ library. When (not if) a c-client based application fails in
+ mysterious ways because of a library compatibility problem, the
+ result is a bug report. A lot of time and effort ends up
+ getting wasted investigating such bug reports.
+
+ Memory is so cheap these days that it's not worth it. Human
+ life is too short to deal with shared library compatibility
+ problems.
+ _________________________________________________________________
+
+ 6.4 Why don't you use iconv() for internationalization support?
+
+ iconv() is not ubiquitous enough.
+ _________________________________________________________________
+
+ 6.5 Why is the IMAP server connected to the home directory by default?
+
+ The IMAP server has no way of knowing what you might call
+ "mail" as opposed to "some other file"; in fact, you can use
+ IMAP to access any file.
+
+ The IMAP server also doesn't know whether your preferred
+ subdirectory for mailbox files is "mail/", ".mail/", "Mail/",
+ "Mailboxes/", or any of a zillion other possibilities. If one
+ such name were chosen, it would undoubtably anger the partisans
+ of all the other names.
+
+ It is possible to modify the software so that the default
+ connected directory is someplace else. Please read the file
+ CONFIG for discussion of this and other issues.
+ _________________________________________________________________
+
+ 6.6 I have a Windows system. Why isn't the server plug and play for
+ me?
+
+ There is no standard for how mail is stored on Windows; nor a
+ single standard SMTP server. The closest to either would be the
+ SMTP server in Microsoft's IIS.
+
+ So there's no default by which to make assumptions. As the
+ software is set up, it assumes that the each user has an
+ Windows login account and private home directory, and that mail
+ is stored on that home directory as files in one of the popular
+ UNIX formats. It also assumes that there is some tool
+ equivalent to inetd on UNIX that does the TCP/IP listening and
+ server startup.
+
+ Basically, unless you're an email software hacker, you probably
+ want to look elsewhere if you want IMAP/POP servers for
+ Windows.
+ _________________________________________________________________
+
+ 6.7 I looked at the UNIX SSL code and saw that you have the SSL data
+ payload size set to 8192 bytes. SSL allows 16K; why aren't you using
+ the full size?
+
+ This is to avoid an interoperability problem with:
+
+ + PC IMAP clients that use Microsoft's SChannel.DLL (SSPI) for
+ SSL support
+ + Microsoft Exchange server (which also uses SChannel).
+
+ SChannel has a bug that makes it think that the maximum SSL
+ data payload size is 16379 bytes -- 5 bytes too small. Thus,
+ c-client has to make sure that it never transmits full sized
+ SSL packets.
+
+ The reason for using 8K (as opposed to, say, 16379 bytes, or
+ 15K, or...) is that it corresponds with the TCP buffer size
+ that the software uses elsewhere for input; there's a slight
+ performance benefit to having the two sizes correspond or at
+ least be a multiple of each other. Also, it keeps the size as a
+ power of two, which might be significant on some platforms.
+
+ There wasn't a significant difference that we could measure
+ between 8K and 15K.
+
+ Microsoft has developed a hotfix for this bug. Look up MSKB
+ article number 300562. Contrary to the article text which
+ implies that this is a Pine issue, this bug also affects
+ Microsoft Exchange server with any client that transmits
+ full-sized SSL payloads.
+ _________________________________________________________________
+
+ 6.8 Why is an mh format INBOX called #mhinbox instead of just INBOX?
+
+ It's a long story. In brief, the mh format driver is less
+ functional than any of the other drivers. It turned out that
+ there were some users (including high-level administrators) who
+ tried mh years ago and no longer use it, but still had an mh
+ profile left behind.
+
+ When the mh driver used INBOX, it would see the mh profile, and
+ proceed to move the user's INBOX into the mh format INBOX. This
+ caused considerable confusion as some things stopped working.
+ _________________________________________________________________
+
+ 6.9 Why don't you support the maildir format?
+
+ It is technically difficult to support maildir in IMAP while
+ maintaining acceptable performance, robustness, following the
+ requirements of the IMAP protocol specification, and following
+ the requirements of maildir.
+
+ No one has succeeded in accomplishing all four together. The
+ various maildir drivers offered as patches all have these
+ problems. The problem is exacerbated because this
+ implementation supports multiple formats; consequently this
+ implementation can't make any performance shortcuts by assuming
+ that all the world is maildir.
+
+ We can't do a better job than the maildir fan community has
+ done with their maildir drivers. Similarly, if the maildir fan
+ community provides the maildir driver, they take on the
+ responsibility for answering maildir-specific support
+ questions. This is as it should be, and that is why maildir
+ support is left to the maildir fan community.
+ _________________________________________________________________
+
+ 6.10 Why don't you support the Cyrus format?
+
+ There's no point to doing so. An implementation which supports
+ multiple formats will never do as well as one which is
+ optimized to support one single format.
+
+ If you want to use Cyrus mailbox format, you should use the
+ Cyrus server, which is the native implementation of that format
+ and is specifically optimized for that format. That's also why
+ Cyrus doesn't implement any other format.
+ _________________________________________________________________
+
+ 6.11 Why is it creating extra forks on my SVR4 system?
+
+ This is because your system only has fcntl() style locking and
+ not flock() style locking. fcntl() locking has a design flaw
+ that causes a close() to release any locks made by that process
+ on the file opened on that file descriptor, even if the lock
+ was made on a different file descriptor.
+
+ This design flaw causes unexpected loss of lock, and consequent
+ mailbox corruption. The workaround is to do certain "dangerous
+ operations" in another fork, thus avoiding doing a close() in
+ the vulnerable fork.
+
+ The best way to solve this problem is to upgrade your SVR4
+ (Solaris, AIX, HP-UX, SGI) or OSF/1 system to a more advanced
+ operating system, such as Linux or BSD. These more advanced
+ operating systems have fcntl() locking for compatibility with
+ SVR4, but also have flock() locking.
+
+ Beware of certain SVR4 systems, such as AIX, which have an
+ "flock()" function in their C library that is just a jacket
+ that does an fcntl() lock. This is not a true flock(), and has
+ the same design flaw as fcntl().
+ _________________________________________________________________
+
+ 6.12 Why are you so fussy about the date/time format in the internal
+ "From " line in traditional UNIX mailbox files? My other mail program
+ just considers every line that starts with "From " to be the start of
+ the message.
+
+ You just answered your own question. If any line that starts
+ with "From " is treated as the start of a message, then every
+ message text line which starts with "From " has to be quoted
+ (typically by prefixing a ">" character). People complain about
+ this -- "why did a > get stuck in my message?"
+
+ So, good mail reading software only considers a line to be a
+ "From " line if it follows the actual specification for a
+ "From " line. This means, among other things, that the day of
+ week is fixed-format: "May 14", but "May 7" (note the extra
+ space) as opposed to "May 7". ctime() format for the date is
+ the most common, although POSIX also allows a numeric timezone
+ after the year. For compatibility with ancient software, the
+ seconds are optional, the timezone may appear before the year,
+ the old 3-letter timezones are also permitted, and "remote from
+ xxx" may appear after the whole thing.
+
+ Unfortunately, some software written by novices use other
+ formats. The most common error is to have a variable-width day
+ of month, perhaps in the erroneous belief that RFC 2822 (or RFC
+ 822) defines the format of the date/time in the "From " line
+ (it doesn't; no RFC describes internal formats). I've seen a
+ few other goofs, such as a single-digit second, but these are
+ less common.
+
+ If you are writing your own software that writes mailbox files,
+ and you really aren't all that savvy with all the ins and outs
+ and ancient history, you should seriously consider using the
+ c-client library (e.g. routine mail_append()) instead of doing
+ the file writes yourself. If you must do it yourself, use
+ ctime(), as in:
+
+ fprintf (mbx,"From %s@%h %s",user,host,ctime (time (0)));
+
+ rather than try to figure out a good format yourself. ctime()
+ is the most traditional format and nobody will flame you for
+ using it.
+ _________________________________________________________________
+
+ 6.13 Why is traditional UNIX format the default format?
+
+ Compatibility with the past 30 or so years of UNIX history.
+ This server is the only one that completely interoperates with
+ legacy UNIX mail tools.
+ _________________________________________________________________
+
+ 6.14 Why do you write this "DON'T DELETE THIS MESSAGE -- FOLDER
+ INTERNAL DATA" message at the start of traditional UNIX and MMDF
+ format mailboxes?
+
+ This pseudo-message serves two purposes.
+
+ First, it establishes the mailbox format even when the mailbox
+ has no messages. Otherwise, a mailbox with no messages is a
+ zero-byte file, which could be one of several formats.
+
+ Second, it holds mailbox metadata used by IMAP: the UID
+ validity, the last assigned UID, and mailbox keywords. Without
+ this metadata, which must be preserved even when the mailbox
+ has no messages, the traditional UNIX format wouldn't be able
+ to support the full capabilities of IMAP.
+ _________________________________________________________________
+
+ 6.15 Why don't you stash the mailbox metadata in the first real
+ message of the mailbox instead of writing this fake FOLDER INTERNAL
+ DATA message?
+
+ In fact, that is what is done if the mailbox is non-empty and
+ does not already have a FOLDER INTERNAL DATA message.
+
+ One problem with doing that is that if some external program
+ removes the first message, the metadata is lost and must be
+ recreated, thus losing any prior UID or keyword list status
+ that IMAP clients may depend upon.
+
+ Another problem is that this doesn't help if the last message
+ is deleted. This will result in an empty mailbox, and the
+ necessity to create a FOLDER INTERNAL DATA message.
+ _________________________________________________________________
+
+ 6.16 Why aren't "dual-use" mailboxes the default?
+
+ Compatibility with the past 30 or so years of UNIX history, not
+ to mention compatibility with user expectations when using
+ shell tools.
+ _________________________________________________________________
+
+ 6.17 Why do you use ucbcc to build on Solaris?
+
+ It is a long, long story about why cc is set to ucbcc. You need
+ to invoke the C compiler so that it links with the SVR4
+ libraries and not the BSD libraries, otherwise readdir() will
+ return the wrong information.
+
+ Of all the names in the most common path, ucbcc is the only
+ name to be found (on /usr/ccs/bin) that points to a suitable
+ compiler. cc is likely to be /usr/ucb/cc which is absolutely
+ not the compiler that you want. The real SVR4 cc is probably
+ something like /opt/SUNWspro/bin/cc which is rarely in anyone's
+ path by default.
+
+ ucbcc is probably a link to acc, e.g.
+ /opt/SUNWspro/SC4.0/bin/acc, and is the UCB C compiler using
+ the SVR4 libraries.
+
+ If ucbcc isn't on your system, then punt on the SUN C compiler
+ and use gcc instead (the gso port instead of the sol port).
+
+ If, in spite of all the above warnings, you choose to change
+ "ucbcc" to "cc", you will probably find that the -O2 needs to
+ be changed to -O. If you don't get any error messages with -O2,
+ that's a pretty good indicator that you goofed and are running
+ the compiler that will link with the BSD libraries.
+
+ To recap:
+
+ + The sol port is designed to be built using the UCB compiler
+ using the SVR4 libraries. This compiler is "ucbcc", which is
+ lunk to acc. You use -O2 as one of the CFLAGS.
+ + If you build the sol port with the UCB compiler using the BSD
+ libraries, you will get no error messages but you will get
+ bad binaries (the most obvious symptom is dropping the first
+ two characters return filenames from the imapd LIST command.
+ This compiler also uses -O2, and is very often what the user
+ gets from "cc". BEWARE
+ + If you build the sol port with the real SVR4 compiler, which
+ is often hidden away or unavailable on many systems, then you
+ will get errors from -O2 and you need to change that to -O.
+ But you will get a good binary. However, you should try it
+ with -O2 first, to make sure that you got this compiler and
+ not the UCB compiler using BSD libraries.
+ _________________________________________________________________
+
+ 6.18 Why should I care about some old system with BSD libraries? cc is
+ the right thing on my Solaris system!
+
+ Because there still are sites that use such systems. On those
+ systems, the assumption that "cc" does the right thing will
+ lead to corrupt binaries with no error message or other warning
+ that anything is amiss.
+
+ Too many sites have fallen victim to this problem.
+ _________________________________________________________________
+
+ 6.19 Why do you insist upon writing .lock files in the spool
+ directory?
+
+ Compatibility with the past 30 years of UNIX software which
+ deals with the spool directory, especially software which
+ delivers mail. Otherwise, it is possible to lose mail.
+ _________________________________________________________________
+
+ 6.20 Why should I care about compatibility with the past?
+
+ This is one of those questions in which the answer never
+ convinces those who ask it. Somehow, everybody who ever asks
+ this question ends up answering it for themselves as they get
+ older, with the very answer that they rejected years earlier.
+ _________________________________________________________________
+
+7. Problems and Annoyances
+ _________________________________________________________________
+
+ 7.1 Help! My INBOX is empty! What happened to my messages?
+
+ If you are seeing "0 messages" when you open INBOX and you know
+ you have messages there (and perhaps have looked at your mail
+ spool file and see that messages are there), then probably
+ there is something wrong with the very first line of your mail
+ spool file. Make sure that the first five bytes of the file are
+ "From ", followed by an email address and a date/time in
+ ctime() format, e.g.:
+
+ From fred@foo.bar Mon May 7 20:54:30 2001
+ _________________________________________________________________
+
+ 7.2 Help! All my messages in a non-INBOX mailbox have been
+ concatenated into one message which claims to be from me and has a
+ subject of the file name of the mailbox! What's going on?
+
+ Something wrong with the very first line of the mailbox. Make
+ sure that the first five bytes of the file are "From ",
+ followed by an email address and a date/time in ctime() format,
+ e.g.:
+
+ From fred@foo.bar Mon May 7 20:54:30 2001
+ _________________________________________________________________
+
+ 7.3 Why do I get the message: CREATE failed: Can't create mailbox node
+ xxxxxxxxx: File exists and how do I fix it?
+
+ See the answer to the Are hierarchical mailboxes supported?
+ question.
+ _________________________________________________________________
+
+ 7.4 Why can't I log in to the server? The user name and password are
+ right!
+
+ There are a myriad number of possible answers to this question.
+ The only way to say for sure what is wrong is run the server
+ under a debugger such as gdb while root (yes, you must be root)
+ with a breakpoint at routines checkpw() and loginpw(), then
+ single-step until you see which test rejected you. The server
+ isn't going to give any error messages other than "login
+ failed" in the name of not giving out any unnecessary
+ information to unauthorized individuals.
+
+ Here are some of the more common reasons why login may fail:
+
+ + You didn't really give the correct user name and/or password.
+ + Your client doesn't send the LOGIN command correctly; for
+ example, IMAP2 clients won't send a password containing a "*"
+ correctly to an IMAP4 server.
+ + If you have set up a CRAM-MD5 database, remember that the
+ password used is the one in the CRAM-MD5 database, and
+ furthermore that there must also be an entry in /etc/passwd
+ (but the /etc/passwd password is not used).
+ + If you are using PAM, have you created a service file for the
+ server in /etc/pam.d?
+ + If you are using shadow passwords, have you used an
+ appropriate port when building? In particular, note that
+ "lnx" is for Linux systems without shadow passwords; you
+ probably want "slx" or "lnp" instead.
+ + If your system has account or password expirations, check to
+ see that the expiration date hasn't passed.
+ + You can't log in as root or any other UID 0 user. This is for
+ your own safety, not to mention the fact that the servers use
+ UID 0 as meaning "not logged in".
+ _________________________________________________________________
+
+ 7.5 Help! My load average is soaring and I see hundreds of POP and
+ IMAP servers, many logged in as the same user!
+
+ Certain inferior losing GUI mail reading programs have a
+ "synchronize all mailboxes at startup" (IMAP) or "check for new
+ mail every second" (POP) feature which causes a rapid and
+ unchecked spawning of servers.
+
+ This is not a problem in the server; the client is really
+ asking for all those server sessions. Unfortunately, there
+ isn't much that the POP and IMAP servers can do about it; they
+ don't spawned themselves.
+
+ Some sites have added code to record the number of server
+ sessions spawned per user per hour, and disable login for a
+ user who has exceeded a predetermined rate. This doesn't stop
+ the servers from being spawned; it just means that a server
+ session will commit suicide a bit faster.
+
+ Another possibility is to detect excessive server spawning
+ activity at the level where the server is spawned, which would
+ be inetd or possibly tcpd. The problem here is that this is a
+ hard time to quantify. 50 sessions in a minute from a
+ multi-user timesharing system may be perfectly alright, whereas
+ 10 sessions a minute from a PC may be too much.
+
+ The real solution is to fix the client configuration, by
+ disabling those evil features. Also tell the vendors of those
+ clients how you feel about distributing denial-of-service
+ attack tools in the guise of mail reading programs.
+ _________________________________________________________________
+
+ 7.6 Why does mail disappear even though I set "keep mail on server"?
+ 7.7 Why do I get the message Moved ##### bytes of new mail to
+ /home/user/mbox from /var/spool/mail/user and why did this happen?
+
+ This is probably caused by the mbox driver. If the file "mbox"
+ exists on the user's home directory and is in UNIX mailbox
+ format, then when INBOX is opened this file will be selected as
+ INBOX instead of the mail spool file. Messages will be
+ automatically transferred from the mail spool file into the
+ mbox file.
+
+ To disable this behavior, delete "mbox" from the EXTRADRIVERS
+ list in the top-level Makefile and rebuild. Note that if you do
+ this, users won't be able to access the messages that have
+ already been moved to mbox unless they open mbox instead of
+ INBOX.
+ _________________________________________________________________
+
+ 7.8 Why isn't it showing the local host name as a fully-qualified
+ domain name?
+ 7.9 Why is the local host name in the From/Sender/Message-ID headers
+ of outgoing mail not coming out as a fully-qualified domain name?
+
+ Your UNIX system is misconfigured. The entry for your system in
+ /etc/hosts must have the fully-qualified domain name first,
+ e.g.
+
+ 105.69.1.234 myserver.example.com myserver
+
+ A common mistake of novice system administrators is to have the
+ short name first, e.g.
+
+ 105.69.1.234 myserver myserver.example.com
+
+ or to omit the fully qualified domain name entirely, e.g.
+
+ 105.69.1.234 myserver
+
+ The result of this is that when the IMAP toolkit does a
+ gethostbyname() call to get the fully-qualified domain name, it
+ would get "myserver" instead of "myserver.example.com".
+
+ On some systems, a configuration file (typically named
+ /etc/svc.conf, /etc/netsvc.conf, or /etc/nsswitch.conf) can be
+ used to configure the system to use the domain name system
+ (DNS) instead of /etc/hosts, so it doesn't matter if /etc/hosts
+ is misconfigured.
+
+ Check the man pages for gethostbyname, hosts, svc, and/or
+ netsvc for more information.
+
+ Unfortunately, certain vendors, most notably SUN, have failed
+ to make this clear in their documentation. Most of SUN's
+ documentation assumes a corporate network that is not connected
+ to the Internet.
+
+ net.folklore once (late 1980s) held that the proper procedure
+ was to append the results of getdomainname() to the name
+ returned by gethostname(), and some versions of sendmail
+ configuration files were distributed that did this. This was
+ incorrect; the string returned from getdomainname() is the
+ Yellow Pages (a.k.a NIS) domain name, which is a completely
+ different (albeit unfortunately named) entity from an Internet
+ domain. These were often fortuitously the same string, except
+ when they weren't. Frequently, this would result in host names
+ with spuriously doubled domain names, e.g.
+
+ myserver.example.com.example.com
+
+ This practice has been thoroughly discredited for many years,
+ but folklore dies hard.
+ _________________________________________________________________
+
+ 7.10 What does the message: Mailbox vulnerable - directory
+ /var/spool/mail must have 1777 protection mean? How can I fix this?
+
+ In order to update a mailbox in the default UNIX format, it is
+ necessary to create a lock file to prevent the mailer from
+ delivering mail while an update is in progress. Some systems
+ use a directory protection of 775, requiring that all mail
+ handling programs be setgid mail; or of 755, requiring that all
+ mail handling programs be setuid root.
+
+ The IMAP toolkit does not run with any special privileges, and
+ I plan to keep it that way. It is antithetical to the concept
+ of a toolkit if users can't write their own programs to use it.
+ Also, I've had enough bad experiences with security bugs while
+ running privileged; the IMAP and POP servers have to be root
+ when not logged in, in order to be able to log themselves in. I
+ don't want to go any deeper down that slippery slope.
+
+ Directory protection 1777 is secure enough on most well-managed
+ systems. If you can't trust your users with a 1777 mail spool
+ (petty harassment is about the limit of the abuse exposure),
+ then you have much worse problems then that.
+
+ If you absolutely insist upon requiring privileges to create a
+ lock file, external file locking can be done via a setgid mail
+ program named /etc/mlock (this is defined by LOCKPGM in the
+ c-client Makefile). If the toolkit is unable to create a
+ <...mailbox...>.lock file in the directory by itself, it will
+ try to call mlock to do it. I do not recommend doing this for
+ performance reasons.
+
+ A sample mlock program is included as part of imap-2007. We
+ have tried to make this sample program secure, but it has not
+ been thoroughly audited.
+ _________________________________________________________________
+
+ 7.11 What does the message: Mailbox is open by another process, access
+ is readonly mean? How do I fix this?
+
+ A problem occurred in applying a lock to a /tmp lock file.
+ Either some other program has the mailbox open and won't
+ relenquish it, or something is wrong with the protection of
+ /tmp or the lock.
+
+ Make sure that the /tmp directory is protected 1777. Some
+ security scripts incorrectly set the protection of the /tmp
+ directory to 775, which disables /tmp for all non-privileged
+ programs.
+ _________________________________________________________________
+
+ 7.12 What does the message: Can't get write access to mailbox, access
+ is readonly mean?
+
+ The mailbox file is write-protected against you.
+ _________________________________________________________________
+
+ 7.13 I set my POP3 client to "delete messages from server" but they
+ never get deleted. What is wrong?
+
+ Make sure that your mailbox is not read-only: that the mailbox
+ is owned by you and write enabled (protection 0600), and that
+ the /tmp directory is longer world-writeable. /tmp must be
+ world-writeable because lots of applications use it for scratch
+ space. To fix this, do
+
+
+ chmod 1777 /tmp
+
+ as root.
+
+ Make sure that your POP3 client issues a QUIT command when it
+ finishes. The POP3 protocol specifies that deletions are
+ discarded unless a proper QUIT is done.
+
+ Make sure that you are not opening multiple POP3 sessions to
+ the same mailbox. It is a requirement of the POP3 protocol than
+ only one POP3 session be in effect to a mailbox at a time,
+ however some, poorly-written POP3 clients violate this. Also,
+ some background "check for new mail" tasks also cause a
+ violation. See the answer to the What does the syslog message:
+ Killed (lost mailbox lock) user=... host=... mean? question for
+ more details.
+ _________________________________________________________________
+
+ 7.14 What do messages such as:
+ Message ... UID ... already has UID ...
+ Message ... UID ... less than ...
+ Message ... UID ... greater than last ...
+ Invalid UID ... in message ..., rebuilding UIDs
+
+ mean?
+
+ Something happened to corrupt the unique identifier regime in
+ the mailbox. In traditional UNIX-format mailboxes, this can
+ happen if the user deleted the "DO NOT DELETE" internal
+ message.
+
+ This problem is relatively harmless; a new valid unique
+ identifier regime will be created. The main effect is that any
+ references to the old UIDs will no longer be useful.
+
+ So, unless it is a chronic problem or you feel like debugging,
+ you can safely ignore these messages.
+ _________________________________________________________________
+
+ 7.15 What do the error messages:
+ Unable to read internal header at ...
+ Unable to find CRLF at ...
+ Unable to parse internal header at ...
+ Unable to parse message date at ...
+ Unable to parse message flags at ...
+ Unable to parse message UID at ...
+ Unable to parse message size at ...
+ Last message (at ... ) runs past end of file ...
+
+ mean? I am using mbx format.
+
+ The mbx-format mailbox is corrupted and needs to be repaired.
+
+ You should make an effort to find out why the corruption
+ happened. Was there an obvious system problem (crash or disk
+ failure)? Did the user accidentally access the file via NFS?
+ Mailboxes don't get corrupted by themselves; something caused
+ the problem.
+
+ Some people have developed automated scripts, but if you're
+ comfortable using emacs it's pretty easy to fix it manually. Do
+ not use vi or any other editor unless you are certain that
+ editor can handle binary!!!
+
+ If you are not comfortable with emacs, or if the file is too
+ large to read with emacs, see the "step-by-step" technique
+ later on for another way of doing it.
+
+ After the word "at" in the error message is the byte position
+ it got to when it got unhappy with the file, e.g. if you see:
+
+ Unable to parse internal header at 43921: ne bombastic blurdybloop
+
+ The problem occurs at the 43,931 byte in the file. That's the
+ point you need to fix. c-client is expecting an internal header
+ at that byte number, looking something like:
+
+ 6-Jan-1998 17:42:24 -0800,1045;000000100001-00000001
+
+ The format of this internal line is:
+
+ dd-mmm-yyyy hh:mm:ss +zzzz,ssss;ffffffffFFFF-UUUUUUUU
+
+ The only thing that is variable is the "ssss" field, it can be
+ as many digits as needed. All other fields (inluding the "dd")
+ are fixed width. So, the easiest thing to do is to look forward
+ in the file for the next internal header, and delete everything
+ from the error point to that internal header.
+
+ Here's what to do if you want to be smarter and do a little bit
+ more work. Generally, you're in the middle of a message, and
+ there's nothing wrong with that message. The problem happened
+ in the *previous* message. So, search back to the previous
+ internal header. Now, remember that "ssss" field? That's the
+ size of that message.
+
+ Mark where you are in the file, move the cursor to the line
+ after the internal header, and skip that many bytes ("ssss")
+ forward. If you're at the point of the error in the file, then
+ that message is corrupt. If you're at a different point, then
+ perhaps the previous message is corrupt and has a too long size
+ count that "ate" into this message.
+
+ Basically, what you need to do is make sure that all those size
+ counts are right, and that moving "ssss" bytes from the line
+ after the internal header will land you at another internal
+ header.
+
+ Usually, once you know what you're looking at, it's pretty easy
+ to work out the corruption, and the best remedial action.
+ Repair scripts will make the problem go away but may not always
+ do the smartest/best salvage of the user's data. Manual repair
+ is more flexible and usually preferable.
+
+ Here is a step-by-step technique for fixing corrupt mbx files
+ that's a bit cruder than the procedure outlined above, but
+ works for any size file.
+
+ In this example, suppose that the corrupt file is INBOX, the
+ error message is
+
+ Unable to find CRLF at 132551754
+
+ and the size of the INBOX file is 132867870 bytes.
+
+ The first step is to split the mailbox file at the point of the
+ error:
+
+ + Rename the INBOX file to some other name, such as INBOX.bad.
+ + Copy the first 132,551,754 bytes of INBOX.bad to another
+ file, such as INBOX.new.
+ + Extract the trailing 316,116 bytes (132867870-132551754) of
+ INBOX.bad into another file, such as INBOX.tail.
+ + You no longer need INBOX.bad. Delete it.
+
+ In other words, use the number from the "Unable to find CRLF
+ at" as the point to split INBOX into two new files, INBOX.new
+ and INBOX.tail.
+
+ Now, remove the erroneous data:
+
+ + Verify that you can open INBOX.new in IMAP or Pine.
+ + The last message of INBOX.new is probably corrupted. Copy it
+ to another file, such as badmsg.1, then delete and expunge
+ that last message from INBOX.new
+ + Locate the first occurance of text in INBOX.tail which looks
+ like an internal header, as described above.
+ + Remove all the text which occurs prior to that point, and
+ place it into another file, such as badmsg.2. Note that in
+ the case of a single digit date, there is a leading space
+ which must not be removed (e.g. " 6-Nov-2001" not
+ "6-Nov-2001").
+
+ Reassemble the mailbox:
+
+ + Append INBOX.tail to INBOX.new.
+ + You no longer need INBOX.tail. Delete it.
+ + Verify that you can open INBOX.new in IMAP or Pine.
+
+ Reinstall INBOX.new as INBOX:
+
+ + Check to see if you have received any new messages while
+ repairing INBOX.
+ + If you haven't received any new messages while repairing
+ INBOX, just rename INBOX.new to INBOX.
+ + If you have received new messages, be sure to copy the new
+ messages from INBOX to INBOX.new before doing the rename.
+
+ You now have a working INBOX, as well as two files with
+ corrupted data (badmsg.1 and badmsg.2). There may be some
+ useful data in the two badmsg files that you might want to try
+ salvaging; otherwise you can delete the two badmsg files.
+ _________________________________________________________________
+
+ 7.16 What do the syslog messages:
+
+ imap/tcp server failing (looping)
+ pop3/tcp server failing (looping)
+
+ mean? When it happens, the listed service shuts down. How can I fix
+ this?
+
+ The error message "server failing (looping), service
+ terminated" is not from either the IMAP or POP servers.
+ Instead, it comes from inetd, the daemon which listens for TCP
+ connections to a number of servers, including the IMAP and POP
+ servers.
+
+ inetd has a limit of 40 new server sessions per minute for any
+ particular service. If more than 40 sessions are initiated in a
+ minute, inetd will issue the "failing (looping), service
+ terminated" message and shut down the service for 10 minutes.
+ inetd does this to prevent system resource consumption by a
+ client which is spawning infinite numbers of servers. It should
+ be noted that this is a denial of service; however for some
+ systems the alternative is a crash which would be a worse
+ denial of service!
+
+ For larger server systems, the limit of 40 is much too low. The
+ limit was established many years ago when a system typically
+ only ran a few dozen servers.
+
+ On some versions of inetd, such as the one distributed with
+ most versions of Linux, you can modify the /etc/inetd.conf file
+ to have a larger number of servers by appending a period
+ followed by a number after the nowait word for the server
+ entry. For example, if your existing /etc/inetd.conf line
+ reads:
+
+ imap stream tcp nowait root /usr/etc/imapd imapd
+
+ try changing it to be:
+
+ imap stream tcp nowait.100 root /usr/etc/imapd imapd
+
+ Another example (using TCP wrappers):
+
+ imap stream tcp nowait root /usr/sbin/tcpd imapd
+
+ try changing it to be:
+
+ imap stream tcp nowait.100 root /usr/sbin/tcpd imapd
+
+ to increase the limit to 100 sessions/minute.
+
+ Before making this change, please read the information in "man
+ inetd" to determine whether or not your inetd has this feature.
+ If it does not, and you make this change, the likely outcome is
+ that you will disable IMAP service entirely.
+
+ Another way to fix this problem is to edit the inetd.c source
+ code (provided by your UNIX system vendor) to set higher
+ limits, rebuild inetd, install the new binary, and reboot your
+ system. This should only be done by a UNIX system expert. In
+ the inetd.c source code, the limits TOOMANY (normally 40) is
+ the maximum number of new server sessions permitted per minute,
+ and RETRYTIME (normally 600) is the number of seconds inetd
+ will shut down the server after it exceeds TOOMANY.
+ _________________________________________________________________
+
+ 7.17 What does the syslog message: Mailbox lock file /tmp/.600.1df3
+ open failure: Permission denied mean?
+
+ This usually means that some "helpful" security script person
+ has protected /tmp so that it is no longer world-writeable.
+ /tmp must be world-writeable because lots of applications use
+ it for scratch space. To fix this, do
+
+ chmod 1777 /tmp
+
+ as root.
+
+ If that isn't the answer, check the protection of the named
+ file. If it is something other than 666, then either someone is
+ hacking or some "helpful" person modified the code to have a
+ different default lock file protection.
+ _________________________________________________________________
+
+ 7.18 What do the syslog messages:
+ Command stream end of file, while reading line user=... host=...
+ Command stream end of file, while reading char user=... host=...
+ Command stream end of file, while writing text user=... host=...
+
+ mean?
+
+ This message occurs when the session is disconnected without a
+ proper LOGOUT (IMAP) or QUIT (POP) command being received by
+ the server first.
+
+ In many cases, this is perfectly normal; many client
+ implementations are impolite and do this. Some programmers
+ think this sort of rudeness is "more efficient".
+
+ The condition could, however, indicate a client or network
+ connectivity problem. The server has no way of knowing whether
+ there's a problem or just a rude client, so it issues this
+ message instead of a Logout.
+
+ Certain inferior losing clients disconnect abruptly after a
+ failed login, and instead of saying that the login failed, just
+ say that they can't access the mailbox. They then complain to
+ the system manager, who looks in the syslog and finds this
+ message. Not very helpful, eh? See the answer to the Why can't
+ I log in to the server? The user name and password are right!
+ question.
+
+ If the user isn't reporting a problem, you can probably ignore
+ this message.
+ _________________________________________________________________
+
+ 7.19 Why did my POP or IMAP session suddenly disconnect? The syslog
+ has the message: Killed (lost mailbox lock) user=... host=...
+
+ This message only happens when either the traditional UNIX
+ mailbox format or MMDF format is in use. This format only
+ allows one session to have the mailbox open read/write at a
+ time.
+
+ The servers assume that if a second session attempts to open
+ the mailbox, that means that the first session is probably
+ owned by an abandoned client. The common scenario here is a
+ user who leaves his client running at the office, and then
+ tries to read his mail from home. Through an internal mechanism
+ called kiss of death, the second session requests the first
+ session to kill itself. When the first session receives the
+ "kiss of death", it issues the "Killed (lost mailbox lock)"
+ syslog message and terminates. The second session then seizes
+ read/write access, and becomes the new "first" session.
+
+ Certain poorly-designed clients routinely open multiple
+ sessions to the same mailbox; the users of those clients tend
+ to get this message a lot.
+
+ Another cause of this message is a background "check for new
+ mail" task which does its work by opening a POP session to
+ server every few seconds. They do this because POP doesn't have
+ a way to announce new mail.
+
+ The solution to both situations is to replace the client with a
+ good online IMAP client such as Pine. Life is too short to
+ waste on POP clients and poorly-designed IMAP clients.
+ _________________________________________________________________
+
+ 7.20 Why does my IMAP client show all the files on the system,
+ recursively from the UNIX root directory?
+ 7.21 Why does my IMAP client show all of my files, recursively from my
+ UNIX home directory?
+
+ A well-written client should only show one level of hierarchy
+ and then stop, awaiting explicit user action before going
+ lower. However, some poorly-designed clients will recursively
+ list all files, which may be a very long list (especially if
+ you have symbolic links to directories that create a loop in
+ the filesystem graph!).
+
+ This behavior has also been observed in some third-party
+ c-client drivers, including maildir drivers. Consequently, this
+ problem has even been observed in Pine. It is important to
+ understand that this is not a problem in Pine or c-client; it
+ is a problem in the third-party driver. A Pine built without
+ that third-party driver will not have this problem.
+
+ See also the answer to Why does my IMAP client show all my
+ files in my home directory?
+ _________________________________________________________________
+
+ 7.22 Why does my IMAP client show that I have mailboxes named
+ "#mhinbox", "#mh", "#shared", "#ftp", "#news", and "#public"?
+
+ These are IMAP namespace names. They represent other
+ hierarchies in which messages may exist. These hierarchies may
+ not necessarily exist on a server, but the namespace name is
+ still in the namespace list in order to mark it as reserved.
+
+ A few poorly-designed clients display all namespace names as if
+ they were top-level mailboxes in a user's list of mailboxes,
+ whether or not they actually exist. This is a flaw in those
+ clients.
+ _________________________________________________________________
+
+ 7.23 Why does my IMAP client show all my files in my home directory?
+
+ As distributed, the IMAP server is connected to your home
+ directory by default. It has no way of knowing what you might
+ call "mail" as opposed to "some other file"; in fact, you can
+ use IMAP to access any file.
+
+ Most clients have an option to configure your connected
+ directory on the IMAP server. For example, in Pine you can
+ specify this as the "Path" in your folder-collection, e.g.
+
+ Nickname : Secondary Folders
+ Server : imap.example.com
+ Path : mail/
+ View :
+
+ In this example, the user is connected to the "mail"
+ subdirectory of his home directory.
+
+ Other servers call this the "folder prefix" or similar term.
+
+ It is possible to modify the IMAP server so that all users are
+ automatically connected to some other directory, e.g. a
+ subdirectory of the user's home directory. Read the file CONFIG
+ for more details.
+ _________________________________________________________________
+
+ 7.24 Why is there a long delay before I get connected to the IMAP or
+ POP server, no matter what client I use?
+
+ There are two common occurances of this problem:
+
+ + You are running a system (e.g. certain versions of Linux)
+ which by default attempts to connect to an "IDENT" protocol
+ (port 113) server on your client. However, a firewall or NAT
+ box is blocking connections to that port, so the connection
+ attempt times out.
+ The IDENT protocol is a well-known bad idea that does not
+ deliver any real security but causes incredible problems. The
+ idea is that this will give the server a record of the user
+ name, or at least what some program listening on port 113
+ says is the user name. So, if somebody coming from port nnnnn
+ on a system does something bad, IDENT may give you the userid
+ of the bad guy.
+ The problem is, IDENT is only meaningful on a timesharing
+ system which has an administrator who is privileged and users
+ who are not. It is of no value on a personal system which has
+ no separate concept of "system administrator" vs.
+ "unprivileged user".
+ On either type of system, security-minded people either turn
+ IDENT off or replace it with an IDENT server that lies. Among
+ other things, IDENT gives spammers the ability to harvest
+ email addresses from anyone who connects to a web page.
+ This problem has been showing up quite frequently on systems
+ which use xinetd instead of inetd. Look for files named
+ /etc/xinetd.conf, /etc/xinetd.d/imapd, /etc/inetd.d/ipop2d,
+ and /etc/xinetd.d/ipop3d. In those files, look for lines
+ containing "USERID", e.g.
+ log_on_success += USERID
+ Hunt down such lines, and delete them ruthlessly from all
+ files in which they occur. Don't be shy about it.
+ + The DNS is taking a long time to do a reverse DNS (PTR
+ record) lookup of the IP address of your client. This is a
+ problem in your DNS, which either you or you ISP need to
+ resolve. Ideally, the DNS should return the client's name;
+ but if it can't it should at least return an error quickly.
+
+ As you may have noticed, neither of these are actual problems
+ in the IMAP or POP servers; they are configuration issues with
+ either your system or your network infrastructure. If this is
+ all new to you, run (don't walk) to the nearest technical
+ bookstore and get yourself a good pedagogical text on system
+ administration for the type of system you are running.
+ _________________________________________________________________
+
+ 7.25 Why is there a long delay in Pine or any other c-client based
+ application call before I get connected to the IMAP server? The hang
+ seems to be in the c-client mail_open() call. I don't have this
+ problem with any other IMAP client. There is no delay connecting to a
+ POP3 or NNTP server with mail_open().
+
+ By default, the c-client library attempts to make a connection
+ through rsh (and ssh, if you enable that). If the command:
+
+ rsh imapserver exec /etc/rimapd
+
+ (or ssh if that is enabled) returns with a "* PREAUTH"
+ response, it will use the resulting rsh session as the IMAP
+ session and not require an authentication step on the server.
+
+ Unfortunately, rsh has a design error that treats "TCP
+ connection refused" as "temporary failure, try again"; it
+ expects the "rsh not allowed" case to be implemented as a
+ successful connection followed by an error message and close
+ the connection.
+
+ It must be emphasized that this is a bug in rsh. It is not a
+ bug in the IMAP toolkit.
+
+ The use of rsh can be disabled in any the following ways:
+
+ + You can disable it for this particular session by either:
+ o setting an explicit port number in the mailbox name,
+ e.g.
+ {imapserver.foo.com:143}INBOX
+ o using SSL (the /ssl switch)
+ + You can disable rsh globally by setting the rsh timeout value
+ to 0 with the call:
+ mail_parameters (NIL,SET_RSHTIMEOUT,0);
+ _________________________________________________________________
+
+ 7.26 Why does a message sometimes get split into two or more messages
+ on my SUN system?
+
+ This is caused by an interaction of two independent design
+ problems in SUN mail software. The first problem is that the
+ "forward message" option in SUN's mail tool program includes
+ the internal "From " header line in the text that it forwarded.
+ This internal header line is specific to traditional UNIX
+ mailbox files and is not suitable for use in forwarded
+ messages.
+
+ The second problem is that the mail delivery agent assumes that
+ mail reading programs will not use the traditional UNIX mailbox
+ format but instead an incompatible variant that depends upon a
+ Content-Length: message header. Content-Length is widely
+ recognized to have been a terrible mistake, and is no longer
+ recommended for use in mail (it is used in other facilities
+ that use MIME).
+
+ One symptom of the problem is that under certain circumstances,
+ a message may get broken up into several messages. I'm also
+ aware of security bugs caused by programs that foolishly trust
+ "Content-Length:" headers with evil values.
+
+ To fix the mailer on your system, edit your sendmail.cf to
+ change the Mlocal line to have the -E flag. A typical entry
+ will lool like:
+
+ Mlocal, P=/usr/lib/mail.local, F=flsSDFMmnPE, S=10, R=20,
+ A=mail.local -d $u
+
+ This fix will also work around the problem with mail tool,
+ because it will insert a ">" before the internal header line to
+ prevent it from being interpreted by mail reading software as
+ an internal header line.
+ _________________________________________________________________
+
+ 7.27 Why did my POP or IMAP session suddenly disconnect? The syslog
+ has the message:
+ Autologout user=<...my user name...> host=<...my client system...>
+
+ This is a problem in your client.
+
+ In the case of IMAP, it failed to communicate with the IMAP
+ server for over 30 minutes; in the case of POP, it failed to
+ communicate with the POP server for over 10 minutes.
+ _________________________________________________________________
+
+ 7.28 What does the UNIX error message: TLS/SSL failure: myserver: SSL
+ negotiation failed mean?
+ 7.29 What does the PC error message: TLS/SSL failure: myserver:
+ Unexpected TCP input disconnect mean?
+
+ This usually means that an attempt to negotiate TLS encryption
+ via the STARTTLS command failed, because the server advertises
+ STARTTLS functionality, but doesn't actually have it (e.g.
+ because no certificates are installed).
+
+ Use the /notls option in the mailbox name to disable TLS
+ negotiation.
+ _________________________________________________________________
+
+ 7.30 What does the error message: TLS/SSL failure: myserver: Server
+ name does not match certificate mean?
+
+ An SSL or TLS session encryption failed because the server name
+ in the server's certificate does not match the name that you
+ gave it. This could indicate that the server is not really the
+ system you think that it is, but can be also be called if you
+ gave a nickname for the server or name that was not
+ fully-qualified. You must use the fully-qualified domain name
+ for the server in order to validate its certificate
+
+ Use the /novalidate-cert option in the mailbox name to disable
+ validation of the certificate.
+ _________________________________________________________________
+
+ 7.31 What does the UNIX error message: TLS/SSL failure: myserver:
+ self-signed certificate mean?
+ 7.32 What does the PC error message: TLS/SSL failure: myserver:
+ Self-signed certificate or untrusted authority mean?
+
+ An SSL or TLS session encryption failed because your server's
+ certificate is "self-signed"; that is, it is not signed by any
+ Certificate Authority (CA) and thus can not be validated. A
+ CA-signed certificate costs money, and some smaller sites
+ either don't want to pay for it or haven't gotten one yet. The
+ bad part about this is that this means there is no guarantee
+ that the server is really the system you think that it is.
+
+ Use the /novalidate-cert option in the mailbox name to disable
+ validation of the certificate.
+ _________________________________________________________________
+
+ 7.33 What does the UNIX error message: TLS/SSL failure: myserver:
+ unable to get local issuer certificate mean?
+
+ An SSL or TLS session encryption failed because your system
+ does not have the Certificate Authority (CA) certificates
+ installed on OpenSSL's certificates directory. On most systems,
+ this directory is /usr/local/ssl/certs). As a result, it is not
+ possible to validate the server's certificate.
+
+ If CA certificates are properly installed, you should see
+ factory.pem and about a dozen other .pem names such as
+ thawteCb.pem.
+
+ As a workaround, you can use the /novalidate-cert option in the
+ mailbox name to disable validation of the certificate; however,
+ note that you are then vulnerable to various security attacks
+ by bad guys.
+
+ The correct fix is to copy all the files from the certs/
+ directory in the OpenSSL distribution to the
+ /usr/local/ssl/certs (or whatever) directory. Note that you
+ need to do this after building OpenSSL, because the OpenSSL
+ build creates a number of needed symbolic links. For some
+ bizarre reason, the OpenSSL "make install" doesn't do this for
+ you, so you must do it manually.
+ _________________________________________________________________
+
+ 7.34 Why does reading certain messages hang when using Netscape? It
+ works fine with Pine!
+
+ There are two possible causes.
+
+ Check the mail syslog. If you see the message "Killed (lost
+ mailbox lock)" for the impacted user(s), read the FAQ entry
+ regarding that message.
+
+ Check the affected mailbox to see if there are embedded NUL
+ characters in the message. NULs in message texts are a
+ technical violation of both the message format and IMAP
+ specifications. Most clients don't care, but apparently
+ Netscape does.
+
+ You can work around this by rebuilding imapd with the
+ NETSCAPE_BRAIN_DAMAGE option set (see src/imapd/Makefile); this
+ will cause imapd to convert all NULs to 0x80 characters. A
+ better solution is to enable the feature in your MTA to
+ MIME-convert messages with binary content. See the
+ documentation for your MTA for how to do this.
+ _________________________________________________________________
+
+ 7.35 Why does Netscape say that there's a problem with the IMAP server
+ and that I should "Contact your mail server administrator."?
+
+ Certain versions of Netscape do this when you click the Manage
+ Mail button, which uses an undocumented feature of Netscape's
+ proprietary IMAP server.
+
+ You can work around this by rebuilding imapd with the
+ NETSCAPE_BRAIN_DAMAGE option set (see src/imapd/Makefile) to a
+ URL that points either to an alternative IMAP client (e.g.
+ Pine) or perhaps to a homebrew mail account management page.
+ _________________________________________________________________
+
+ 7.36 Why is one user creating huge numbers of IMAP or POP server
+ sessions?
+
+ The user is probably using Outlook Express, Eudora, or a
+ similar program. See the answer to the Help! My load average is
+ soaring and I see hundreds of POP and IMAP servers, many logged
+ in as the same user! question.
+ _________________________________________________________________
+
+ 7.37 Why don't I get any new mail notifications from Outlook Express
+ or Outlook after a while?
+
+ This is a known bug in Outlook Express. Microsoft is aware of
+ the problem and its cause. They have informed us that they do
+ not have any plans to fix it at the present time.
+
+ The problem is also reported in Outlook 2000, but not verified.
+
+ Outlook Express uses the IMAP IDLE command to avoid having to
+ "ping" the server every few minutes for new mail.
+ Unfortunately, Outlook Express overlooks the part in the IDLE
+ specification which requires that a client terminate and
+ restart the IDLE before the IMAP 30 minute inactivity
+ autologout timer triggers.
+
+ When this happens, Outlook Express displays "Not connected" at
+ the bottom of the window. Since it's no longer connected to the
+ IMAP server, it isn't going to notice any new mail.
+
+ As soon as the user does anything that would cause an IMAP
+ operation, Outlook Express will reconnect and new mail will
+ flow again. If the user does something that causes an IMAP
+ operation at least every 29 minutes, the problem won't happen.
+
+ Modern versions of imapd attempt to work around the problem by
+ automatically reporting fake new mail after 29 minutes. This
+ causes Outlook Express to exit the IDLE state; as soon as this
+ happens imapd revokes the fake new mail. As long as this
+ behavior isn't known to cause problems with other clients, this
+ workaround will remain in imapd.
+ _________________________________________________________________
+
+ 7.38 Why don't I get any new mail notifications from Entourage?
+
+ This is a known bug in Entourage.
+
+ You built an older version of imapd with the
+ MICROSOFT_BRAIN_DAMAGE option set, in order to disable support
+ for the IDLE command. However, Entourage won't get new mail
+ unless IDLE command support exists.
+
+ Note: the MICROSOFT_BRAIN_DAMAGE option no longer exists in
+ modern versions, as the Outlook Express problem which it
+ attempted to solve has been worked around in another way.
+ _________________________________________________________________
+
+ 7.39 Why doesn't Entourage work at all?
+
+ It's hard to know. Entourage breaks almost every rule in the
+ book for IMAP. It is highly instructive to do a packet trace on
+ Entourage, as an example of how not to use IMAP. It does things
+ like STATUS (MESSAGES) on the currently selected mailbox and
+ re-fetching the same static data over and over again.
+
+ It seems that every time we understand what it is doing wrong
+ in Entourage and come up with a workaround, we learn about
+ something else that's broken.
+
+ Try building imapd with the ENTOURAGE_BRAIN_DAMAGE option set,
+ in order to disable the diagnostic that occurs when doing
+ STATUS on the currently selected mailbox.
+ _________________________________________________________________
+
+ 7.40 Why doesn't Netscape Notify (NSNOTIFY.EXE) work at all?
+
+ This is a bug in NSNOTIFY; it doesn't handle unsolicited data
+ from the server correctly.
+
+ Fortunately, there is no reason to use this program with IMAP;
+ NSNOTIFY is a polling program to let you know when new mail has
+ appeared in your maildrop. This is necessary with POP; but
+ since IMAP dynamically announces new mail in the session you're
+ better off (and will actually cause less load on the server!)
+ keeping your mail reading program's IMAP session open and let
+ IMAP do the notifying for you.
+
+ Consequently, the recommended fix for the NSNOTIFY problem is
+ to delete the NSNOTIFY binary.
+ _________________________________________________________________
+
+ 7.41 Why can't I connect via SSL to Eudora? It says the connection has
+ been broken, and in the server syslogs I see "Command stream end of
+ file".
+
+ There is a report that you can fix the problem by going into
+ Eudora's advanced network configuration menu and increasing the
+ network buffer size to 8192.
+ _________________________________________________________________
+
+ 7.42 Sheesh. Aren't there any good IMAP clients out there?
+
+ Yes!
+
+ Pine is a wonderful client. It's fast, it uses IMAP well, and
+ it generates text mail (life is too short to waste on HTML
+ mail). Also, there are some really wonderful things in progress
+ in the Pine world.
+
+ There are some good GUI clients out there, mostly from smaller
+ vendors. Without naming names, look for the vendors who are
+ active in the IMAP protocol development community, and their
+ products.
+
+ Netscape, Eudora, and Outlook can be configured with enough
+ effort to be good citizens and work well for users, but they
+ can also be badly misconfigured, and often the misconfiguration
+ is the default.
+ _________________________________________________________________
+
+ 7.43 But wait! PC Pine (or other PC program build with c-client)
+ crashes with the message incomplete SecBuffer exceeds maximum buffer
+ size when I use SSL connections. This is a bug in c-client, right?
+
+ It's a bug in the Microsoft SChannel.DLL, which implements SSL.
+ Microsoft admits it (albeit with an unstatement: "it's not
+ fully RFC compliant"). The problem is that SChannel indicates
+ that the maximum SSL packet data size is 5 bytes smaller than
+ the actual maximum. Thus, any IMAP server which transmits a
+ maximum sized SSL packet will not work with PC Pine or any
+ other program which uses SChannel.
+
+ It can take a while for the problem to show up. The client has
+ to do something that causes at least 16K of contiguous data.
+ Many clients do partial fetching, which tends to reduce the
+ number of cases where this can happen. However, all software
+ which uses SChannel to support SSL is affected by this bug.
+
+ This problem does not affect UNIX code, since OpenSSL is used
+ on UNIX.
+
+ This problem most recently showed up with the CommunigatePro
+ IMAP server. They have an update which trims down their maximum
+ contiguous data to less than 16K, in order to work around the
+ problem.
+
+ This problem has also shown up with the Exchange IMAP server
+ with UNIX clients (including Pine built with an older version
+ of c-client) which sends full-sized 16K SSL packets. Modern
+ c-client works around the problem by trimming down its maximum
+ outgoing SSL packet size to 8K.
+
+ Microsoft has developed a hotfix for this bug. Look up MSKB
+ article number 300562. Contrary to the article text which
+ implies that this is a Pine issue, this bug also affect
+ Microsoft Exchange server with *any* UNIX based client that
+ transmits full-sized SSL payloads.
+ _________________________________________________________________
+
+ 7.44 My qpopper users keep on getting the DON'T DELETE THIS MESSAGE --
+ FOLDER INTERNAL DATA if they also use Pine or IMAP. How can I fix
+ this?
+
+ This is an incompatibility between qpopper and the c-client
+ library used by Pine, imapd, and ipop[23]d.
+
+ Assuming that you want to continue using qpopper, look into
+ qpopper's --enable-uw-kludge-flag configuration flag, which is
+ documented as "check for and hide UW 'Folder Internal Data'
+ messages".
+
+ The other alternative is to switch from qpopper to ipop3d.
+ _________________________________________________________________
+
+ 7.45 Help! I installed the servers but I can't connect to them from my
+ client!
+
+ Review the installation instructions carefully. Make sure that
+ you have not skipped any of the steps. Make sure that you have
+ made the correct entries in the configuration files; pay
+ careful attention to the exact spelling of the service names
+ and the path names. Make sure as well that you have properly
+ restarted inetd.
+
+ If you have a system with Yellow Pages/NIS such as Solaris,
+ have you updated the service names there as well as in
+ /etc/services?
+
+ If you have a system with TCP wrappers, have you properly
+ updated the TCP wrapper files (e.g. /etc/hosts.allow and
+ /etc/hosts.deny) for the servers?
+
+ If you have a system which uses xinetd instead of inetd, have
+ you made sure that you have made the correct corresponding
+ xinetd changes for those services?
+
+ Try telneting to the server port (143 for IMAP, 110 for POP3).
+ If you get a "refused" error, that probably means that you
+ don't have the service set up in inetd.conf. If the connection
+ opens and then closes with no message, the service is set up,
+ but either the path name of the server binary in inetd.conf is
+ wrong or your TCP wrappers are configured to deny access.
+
+ If you don't know how to make the corresponding changes to
+ these files, seek the help of a local expert for your system.
+ _________________________________________________________________
+
+ 7.46 Why do I get the message Can not authenticate to SMTP server: 421
+ SMTP connection went away! and why did this happen? There was also
+ something about SECURITY PROBLEM: insecure server advertised
+ AUTH=PLAIN
+
+ Some versions of qmail, including that running on
+ mail.smtp.yahoo.com, disconnect the SMTP session if you fail to
+ authenticate prior to attempting to transmit mail. An attempt
+ to authenticate was made, but it failed because the server had
+ already disconnected.
+
+ To work around this, you need to specify /user=... in the host
+ name specification.
+
+ The SECURITY PROBLEM came about because the server advertised
+ the AUTH=PLAIN SASL authentication mechanism outside of a
+ TLS-encrypted session, in violation of RFC 4616. This message
+ is just a warning, and in fact occurred after the server had
+ disconnected.
+ _________________________________________________________________
+
+ 7.47 Why do I get the message SMTP Authentication cancelled and why
+ did this happen? There was also something about SECURITY PROBLEM:
+ insecure server advertised AUTH=PLAIN
+
+ This is a bug in the SMTP server.
+
+ Some versions of qmail, including that running on
+ mail.smtp.yahoo.com, have a bug in their implementation of SASL
+ in their SMTP server, which renders it non-compliant with the
+ standard.
+
+ If the client does not provide an initial response in the
+ command line for an authentication mechanism whose profile does
+ not have an initial challenge, qmail issues a bogus response:
+
+ 334 ok, go on
+
+ The problem is the "ok, go on". This violates RFC 4954's
+ requirement that the text part in a 334 response be a BASE64
+ encoded string; in other words, it is a protocol syntax error.
+
+ In the case of AUTH=PLAIN, RFC 4422 (page 7) requires that the
+ encoded string have no data. In other words, the appropropiate
+ standards-compliant server response is "334" followed by a
+ SPACE and a CRLF.
+
+ The SECURITY PROBLEM came about because the server advertised
+ the AUTH=PLAIN SASL authentication mechanism outside of a
+ TLS-encrypted session, in violation of RFC 4616. This message
+ is just a warning, and is not related the "Authentication
+ cancelled" problem.
+ _________________________________________________________________
+
+ 7.48 Why do I get the message Invalid base64 string when I try to
+ authenticate to a Cyrus server?
+
+ This slightly misleading message is the way that a Cyrus server
+ indicates that an authentication exchange was cancelled. It is
+ not indicative of a bug or protocol violation.
+
+ The most common reason that this happens is if the Cyrus server
+ offers Kerberos authentication, c-client is built with Kerberos
+ support, but your client system is not within the Kerberos
+ realm. In this case, the client code will try to authenticate
+ via Kerberos, fail to get the Kerberos credentials, cancel the
+ authentication attempt, and try the next available
+ authentication technology.
+ _________________________________________________________________
+
+8. Where to Go For Additional Information
+ _________________________________________________________________
+
+ 8.1 Where can I go to ask questions?
+ 8.2 I have some ideas for enhancements to IMAP. Where should I go?
+
+ If you have questions about the IMAP protocol, or want to
+ participate in discussions of future directions of the IMAP
+ protocol, the appropriate mailing list is
+ imap-protocol@u.washington.edu. You can subscribe to this
+ list via imap-protocol-request@u.washington.edu
+
+ If you have questions about this software, you can send me
+ email directly or use the imap-uw@u.washington.edu mailing
+ list. You can subscribe to this list via
+ imap-uw-request@u.washington.edu
+
+ If you have general questions about the use of IMAP software
+ (not specific to the UW IMAP toolkit) use the
+ imap-use@u.washington.edu mailing list. You can subscribe to
+ this list via imap-use-request@u.washington.edu
+
+ You must be a subscriber to post to these lists. As an
+ alternative, you can use the comp.mail.imap newsgroup.
+ _________________________________________________________________
+
+ 8.3 Where can I read more about IMAP and other email protocols?
+
+ We recommend Internet Email Protocols: A Developer's Guide, by
+ Kevin Johnson, published by Addison Wesley, ISBN 0-201-43288-9.
+ _________________________________________________________________
+
+ 8.4 Where can I find out more about setting up and administering an
+ IMAP server?
+
+ We recommend Managing IMAP, by Dianna Mullet & Kevin Mullet,
+ published by O'Reilly, ISBN 0-596-00012-X.
+
+ This book also has an excellent comparison of the UW and Cyrus
+ IMAP servers.
+
+ Last Updated: 15 November 2007