Supported platforms =================== Mutt has been reported to compile and run under the following Unix operating systems: AIX BSDI Convex Data General Unix (DG/UX) Digital Unix (OSF/1) DYNIX/ptx FreeBSD HP-UX IRIX Linux Mac OS X Atari MiNT MkLinux NetBSD OpenBSD QNX SCO Unix 3.2v4/5 Solaris SunOS Ultrix UnixWare - If you are building from Mercurial, or if you are changing parts of mutt, particularly the build system, do read doc/devel-notes.txt. - A C99 compiler (such as GCC) is required. - You must also have a SysV compatible curses library, or you must install either GNU ncurses, ftp://prep.ai.mit.edu/pub/gnu/ or S-Lang, ftp://space.mit.edu/pub/davis/slang/ - Mutt needs an implementation of the iconv API for character set conversions. A free one can be found under the following URL: http://www.gnu.org/software/libiconv/ - For building the manual, mutt needs the DocBook XSL stylesheets as well as the DocBook DTD as of version 4.2 installed locally. For details, please see the section "Generating Mutt Documentation From Source" in doc/devel-notes.txt. Installation ============ Installing Mutt is rather painless through the use of the GNU autoconf package. Simply untar the Mutt distribution, and run the ``configure'' script. If you have obtained the distribution from the Mercurial repository, run the ``prepare'' script with the same command line parameters you would pass to configure. It will set up mutt's build environment and add the files which are present in the tar balls, but not in the Mercurial repository. In most cases, configure will automatically determine everything it needs to know in order to compile. However, there are a few options to ``configure'' to help it out, or change the default behavior: --prefix=DIR install Mutt in DIR instead of /usr/local --with-curses=DIR use the curses lib in DIR/lib. If you have ncurses, ``configure'' will automatically look in /usr/include/ncurses for the include files. --with-slang[=DIR] use the S-Lang library instead of ncurses. This library seems to work better for some people because it is less picky about proper termcap entries than ncurses. It is recommended that you use at *least* version 0.99-38 with Mutt. --with-mailpath=DIR specify where the spool mailboxes are located on your system --with-homespool[=FILE] treat file in the user's home directory as the spool mailbox. Note that this is *not* the full pathname, but relative to the user's home directory. Defaults to "mailbox" if FILE is not specified. --enable-pop enable POP3 support --enable-imap enable IMAP support --with-gss[=PFX] Enable GSSAPI authentication to IMAP servers. This should work with both MIT and Heimdal GSSAPI implementations - others haven't been tested. Note that the Cyrus SASL library also supports GSSAPI, and may be able to encrypt your session with it - you should use SASL instead if you can. --with-ssl[=PFX] enable SSL support with IMAP and POP. SSL support requires you to have OpenSSL headers and libraries properly installed before compiling. If the OpenSSL headers and libraries are not in the default system pats you can use the optional PFX argument to define the root directory of your installation. The libraries are then expected to be found in PFX/lib and headers in PFX/include/openssl. --with-sasl[=PFX] Use the Cyrus SASL library for IMAP or POP authentication. This library provides generic support for several authentication methods, and more may be added by the system administrator without recompiling mutt. SASL may also be able to encrypt your mail session even if SSL is not available. --disable-nls This switch disables mutt's native language support. --with-included-gettext Mutt will be built using the GNU gettext library included in the intl/ sub-directory. You may need to use this switch if your machine has something which looks like gettext to the configure script, but isn't able to cope with mutt's catalog files. --with-regex use GNU regex instead of local regexp routines. Many systems don't have the POSIX compliant regcomp/regexec/regfree routines, so this provides a way to support them. --enable-flock use flock() to lock files. --disable-fcntl by default, Mutt uses fcntl() to lock files. Over NFS this can result in poor performance on read/write. Note that using this option could be dangerous if dotlocking is also disabled. --enable-nfs-fix some implementations of NFS do not always write the atime/mtime of small files. This means that Mutt's ``mailboxes'' feature does not always work properly, as it uses these attributes to work out whether the file has new mail. This option enables a workaround to this bug. --enable-locales-fix on some systems, the result of isprint() can't be used reliably to decide which characters are printable, even if you set the LANG environment variable. If you set this option, Mutt will assume all characters in the ISO-8859-* range are printable. If you leave it unset, Mutt will attempt to use isprint() if either of the environment variables LANG, LC_ALL or LC_CTYPE is set, and will revert to the ISO-8859-* range if they aren't. If you need --enable-locales-fix then you will probably need --without-wc-funcs too. However, on a correctly configured modern system you shouldn't need either (try setting LANG, LC_ALL or LC_CTYPE instead). --without-wc-funcs by default Mutt uses the functions mbrtowc(), wctomb() and wcwidth() provided by the system, when they are available. With this option Mutt will use its own version of those functions, which should work with 8-bit display charsets, UTF-8, euc-jp or shift_jis, even if the system doesn't normally support those multibyte charsets. If you find Mutt is displaying non-ascii characters as octal escape sequences (e.g. \243), even though you have set LANG and LC_CTYPE correctly, then you might find you can solve the problem with either or both of --enable-locales-fix and --without-wc-funcs. --with-exec-shell=SHELL on some versions of unix, /bin/sh has a bug that makes using emacs with mutt very difficult. If you have the problem that whenever you press control-G in emacs, mutt and emacs become very confused, you may want to try using a Bourne-derived shell other than /bin/sh here. Some shells that may work are bash, zsh, and ksh. C shells such as csh and tcsh will amost certainly not work right. Note that this option is unrelated to what shell mutt gives you when you press '!'. Only use this option to solve the above problem, and only specify one of the above shells as its argument. (If you encounter this problem with your platform's native Bourne shell, please send a short report to mutt-dev@mutt.org, so a short note on this topic can be added to the Platform notes section below.) --enable-exact-address By default, Mutt will rewrite all addresses in the form Personal Name regardless of the input. By enabling this option, Mutt will write addresses in the same form they are parsed. NOTE: this requires significantly more memory. Once ``configure'' has completed, simply type ``make install.'' Mutt should compile cleanly (without errors) and you should end up with a binary called ``mutt.'' If you get errors about undefined symbols like A_NORMAL or KEY_MIN, then you probably don't have a SysV compliant curses library. You should install either ncurses or S-Lang (see above), and then run the ``configure'' script again. Please note that "VPATH" builds currently only work with GNU make (gmake). Character set support ===================== Mutt no longer contains functions for doing character set conversion. Instead, it expects the iconv functions (iconv_open, iconv, iconv_close) to be provided. Most up-to-date systems provide these functions, often as part of the C library. If you are installing Mutt on a system which does not have them, it is recommended that you install Bruno Haible's portable libiconv library, which you can obtain from: ftp://ftp.ilog.fr/pub/Users/haible/gnu/ Even if your system does provide the iconv functions, you might want to install libiconv, as some systems provide only a very limited version of iconv. If you decide to use your system's iconv implementation, you may need to tell mutt about implementation-defined names for some character sets. Sample configuration files for various systems can be found in the directory contrib/iconv/ in this source distribution, and will be installed in the samples/iconv directory as part of mutt's documentation. In order to use these sample configuration files, just put a line like source /usr/local/doc/mutt/samples/iconv/iconv.osf1-4.0d.rc into your system's global Muttrc, which normally resides in /etc or /usr/local/etc. If you really want to, you can configure Mutt --disable-iconv, but there will then be no character set conversion. Platform Notes ============== All platforms There is a bug in most (if not all) S-Lang versions which prevents the Meta key from working with mutt. A patch can be found in the file contrib/patch.slang-1.2.2.keypad.1 in this mutt distribution. Solaris 2.4 The system regcomp() and regexec() routines are very badly broken. This should be automatically detected by the configure script. If not, use the --with-regex switch when configuring mutt. We are also hearing reports that Solaris 2.4's NLS libraries dump core with mutt when using a locale different from "C". Use the --with-included-gettext configuration switch if you experience this problem. Color does not work right with Solaris curses. You will have to compile with either ncurses or slang to get working color support. Solaris 2.6 There are reports that mutt behaves strangely when linked with the system regexp library. Please use the --with-regex switch when configuring on this platform. For the real fix, applying Sun patches # 105490-05 (linker patch) and # 105210-17 (libc and malloc patch) from sunsolve.sun.com has been reported to stop these problems from occurring. Linux On recent Linux systems, flock() and fcntl() locks don't mix. If you use the --enable-flock switch on such systems, be sure to give the --disable-fcntl argument as well. Sparc Linux Redhat 4.2 Sparc users reported problems with some system include files when building mutt. Configuring mutt with the --disable-warnings switch is said to help against this problem. Digital Unix (OSF/1) The system curses library is said to be badly broken. Use GNU ncurses or SLang instead.