+++ /dev/null
-# Autosetup build system for NeoMutt
-
-This document explains the changes introduced to NeoMutt's build system by
-switching to an Autosetup-based configuration and the rationale behind some of
-the choices that have been made.
-
-## Introduction
-
-"[Autosetup](https://msteveb.github.io/autosetup/) is a tool, similar to the
-Autotools family, to configure a build system for the appropriate environment,
-according to the system capabilities and the user-selected options."
-
-The website explains in great details the major goals of the project and the
-similarities and differences with Autotools. For the sake of this short
-introduction, I'll summarize the major points, as relevant to Neomutt.
-
-### Zero-dependency
-
-In general, Autotools-based systems read a script named `configure.ac`, which
-is written in a mix of m4 and shell called M4sh. This script is translated into
-a portable shell script named `configure` by means of `autoconf` and other
-support tools.
-Autosetup, on the other hand, reads and directly runs a configuration script,
-usually named `auto.def`. The script and the support modules in the
-`autosetup/` directory are written in [Tcl](https://tcl.tk). The major result
-of this choice is that there is no need for an initial translation to a
-portable environment. Autosetup ships with a minimal implementation of Tcl
-called [Jim](http://jim.tcl.tk), which is compiled and used on-demand, if no
-full Tcl shell is found in the path. Projects ship a `configure` script that
-can be directly run.
-
-So, this
-
-```sh
-autoreconf --install && ./configure && make
-```
-
-becomes
-
-```sh
-./configure && make
-```
-
-**Bottom line**: no build-time dependencies, faster configure stage, higher
-level of debuggability of the build scripts, no more "autoconf before ship".
-
-### Simple and consistent options system
-
-Autosetup allows users to personalize the build at configure time. Unlike
-Autotools, the object model for the options system is simple and consistent.
-There are two types of options: booleans and strings. Both can be specified to
-have default values. The options are defined in a self-explanatory `options`
-section (it's actually a proc under the hood):
-
-```
-options {
- smime=1 => "Disable S/Mime"
- gpgme=0 => "Enable GPGME"
- with-gpgme:path => "Location of GPGME"
- with-mailpath:=/var/mail => "Location of the spool mailboxes"
-}
-```
-
-A user can configure the build to suit his needs by modifying the default
-values, e.g.,
-`./configure --disable-smime --gpgme --with-gpgme=/usr/local`.
-
-Within `auto.def`, option can be easily queried with `[opt-bool smime]` and
-`[opt-val with-gpgme $prefix]`, with the latter using `$prefix` if not value
-was given. In the above example, `[opt-val with-mailpath]` will return the
-default value `/var/mail` if not overridden by the user.
-
-**Bottom line**: no more confusion due to the differences and similarities
-between `--with-opt`, `--enable-opt`, `with_val`, `without_val`. Simple and
-self-documenting API for managing configure options.
-
-### Focus on features
-
-Autotools comes with high level primitives, which allow to focus on the
-features to be tested. In the ~850 lines of our `auto.def` file - compare to
-the current 970 lines in configure.ac - there is almost no boilerplate code.
-The code is self-explanatory and easily readable - yes, it is Tcl and it might
-take a little getting used to, but it's nothing compared to M4sh.
-
-**Bottom line**: readable and debuggable configure script, no M4sh quoting
-intricacies, easily extensible.
-
-## Autosetup for Neomutt
-
-In this section, I'll explain a few design decisions I took when porting
-NeoMutt's build system to Autosetup.
-
-### Non-recursive Makefiles
-
-The build system is driven by the top-level Makefile, which includes additional
-Makefiles from the subdirectories `doc`, `contrib`, and `po`. I'll stress that
-these Makefiles are included by the main Makefile and *not* invoked recursively
-(google for "recursive make considered harmful"). The build system relies on
-the fact that each of the sub-makefiles defines its own targets, conventionally
-named all-*subdir*, clean-*subdir*, install-*subdir*, and uninstall-*subdir*.
-For example, `po/Makefile` defines the targets `all-po`, `clean-po`,
-`install-po`, and `uninstall-po`. To add a new subdir named `mydir` to the
-build system, follow these steps:
-
-1. create `mydir/Makefile.autosetup`
-2. define the target `all-mydir`, `clean-mydir`, `install-mydir`, and
- `uninstall-mydir`
-3. update the `subdirs` variable definition in `auto.def`
-
-The top-level Makefile will invoke your targets as dependencies for the main
-`all`, `clean`, `install`, and `uninstall` targets.
-
-### Configuration options
-
-For a list of the currently supported options and a brief help text, please run
-`./configure.autosetup --help`.
-
-### Installation / uninstallation
-
-Two parameters play an important role when deciding where to install NeoMutt.
-The first is the `--prefix` parameter to configure. The second is the `DESTDIR`
-variable used by Makefiles.
-
-The parameter `--prefix` is used to specify both the default search path for
-headers and libraries and the final directory structure of the installed files.
-These are often the same: if you have your dependencies installed in
-`/usr/include` and `/usr/lib`, you also probably want the NeoMutt executable to
-end up in `/usr/bin` and its documentation in `/usr/share/doc`. This behavior
-can be tweaked by specifying where 3rd party dependencies are to be found. This
-is done on a per-dependency basis using the `--with-<dep>=path` family of
-options. As an example, a GPGMe installation in `/opt` can be looked up using
-the arguments `--gpgme --with-gpgme=/opt`.
-
-The second parameter, the `DESTDIR` make variable, is used for staged builds
-and is prepended to the final path. This allows to stage the whole installation
-into `./tmp` by simply using a make invokation like `make DESTDIR=./tmp
-install`.
-Staged builds are used by downstream packagers and allow to track the list of
-files installed by a package: it is easier to `find ./tmp -type f` than to
-snapshot the whole `/` filesystem and figure out the modifications introduced
-by installing a package. This information is usually used to list the contents
-of an installed package or to uninstall it.
+++ /dev/null
-The following copyright notices apply to most of the program. Some
-modules are under different licenses, or in the public domain.
-
-Please note that this is by no means an exhaustive list of all the
-persons who have been contributing to this program. Please see the
-manual for a (probably still non complete) list of the persons who
-have been helpful with the development of this program. Please also
-see our source code repository at http://dev.mutt.org/hg/mutt/ for
-the full history of commits.
-
-Copyright (C) 1996-2016 Michael R. Elkins <me@cs.hmc.edu>
-Copyright (C) 1996-2002 Brandon Long <blong@fiction.net>
-Copyright (C) 1997-2009 Thomas Roessler <roessler@does-not-exist.org>
-Copyright (C) 1998-2005 Werner Koch <wk@isil.d.shuttle.de>
-Copyright (C) 1999-2017 Brendan Cully <brendan@kublai.com>
-Copyright (C) 1999-2002 Tommi Komulainen <Tommi.Komulainen@iki.fi>
-Copyright (C) 2000-2004 Edmund Grimley Evans <edmundo@rano.org>
-Copyright (C) 2006-2009 Rocco Rutte <pdmef@gmx.net>
-Copyright (C) 2014-2018 Kevin J. McCarthy <kevin@8t8.us>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
--- /dev/null
+NeoMutt Copyright Statement
+---------------------------
+
+Almost all of the source of NeoMutt is released under version 2 of the GPL, the
+GNU General Public License. See [LICENSE.md](LICENSE.md).
+
+> This program is free software: you can redistribute it and/or modify it under
+> the terms of the GNU General Public License as published by the Free Software
+> Foundation, either version 2 of the License, or (at your option) any later
+> version.
+>
+> This program is distributed in the hope that it will be useful, but WITHOUT
+> ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+> FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+> details.
+>
+> You should have received a copy of the GNU General Public License along with
+> this program. If not, see http://www.gnu.org/licenses/
+
+A few source files are in the public domain.
+
+The principal authors of NeoMutt are:
+
+- Copyright (C) 1996-2016 Michael R. Elkins `<me@.s.hmc.edu>`
+- Copyright (C) 1996-2002 Brandon Long `<blong@fiction.net>`
+- Copyright (C) 1997-2009 Thomas Roessler `<roessler@does-not-exist.org>`
+- Copyright (C) 1998-2005 Werner Koch `<wk@isil.d.shuttle.de>`
+- Copyright (C) 1999-2017 Brendan Cully `<brendan@kublai.com>`
+- Copyright (C) 1999-2002 Tommi Komulainen `<Tommi.Komulainen@iki.fi>`
+- Copyright (C) 2000-2004 Edmund Grimley Evans `<edmundo@rano.org>`
+- Copyright (C) 2006-2009 Rocco Rutte `<pdmef@gmx.net>`
+- Copyright (C) 2014-2018 Kevin J. McCarthy `<kevin@8t8.us>`
+- Copyright (C) 2015-2018 Richard Russon `<rich@flatcap.org>`
+
+For a full list of contributors to NeoMutt, see the [README.md](README.md)
+
+For the complete history of NeoMutt, see the source repository on GitHub:
+
+- https://github.com/neomutt
+
+++ /dev/null
-Notes
-=====
-
-- 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/
-
-- NeoMutt 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, neomutt needs the DocBook XSL stylesheets
- as well as the DocBook DTD as of version 4.2 installed locally.
-
-
-Installation
-============
-
-Installing NeoMutt is rather painless through the use of the GNU
-autoconf package. Simply untar the NeoMutt 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 neomutt'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 NeoMutt 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-lock=(fcntl | flock)
-
- select between fcntl() and flock() for file locking. Neomutt will
- use fcntl() by default, but this can result in poor performance
- on NFS.
-
---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 NeoMutt.
-
---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.
-
---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
- neomutt. SASL may also be able to encrypt your mail session even if
- SSL is not available.
-
---disable-nls
- This switch disables neomutt's native language support.
-
---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, NeoMutt will
- assume all characters in the ISO-8859-* range are printable. If
- you leave it unset, NeoMutt 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 NeoMutt uses the functions mbrtowc(), wctomb() and
- wcwidth() provided by the system, when they are available.
- With this option NeoMutt 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 NeoMutt 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.
-
-Once ``configure'' has completed, simply type ``make install.''
-
-NeoMutt should compile cleanly (without errors) and you should end up with a
-binary called ``neomutt.'' 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
-=====================
-
-NeoMutt 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 NeoMutt
-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 neomutt 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 neomutt's documentation.
-
-In order to use these sample configuration files, just put a line
-like
-
- source /usr/local/doc/neomutt/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 NeoMutt --disable-iconv, but
-there will then be no character set conversion.
-
--- /dev/null
+# Installing NeoMutt
+
+NeoMutt is a command line email client (Mail User Agent).
+It's fast, powerful and flexible.
+
+The simplest way to obtain NeoMutt is to use your OS's package.
+See the [distro page](https://neomutt.org/distro.html) to see if there's one for you.
+
+## Obtaining the Source
+
+The source can be downloaded from our project site on GitHub.
+It's available as a git repository or a 'tar.gz' archive.
+
+### Git
+
+Clone the NeoMutt repository:
+
+```
+git clone https://github.com/neomutt/neomutt
+```
+
+It's recommended to use the latest tagged version.
+The 'master' branch is used for development and may not be as stable.
+
+### Source Archive
+
+The latest release of NeoMutt can be found, here:
+
+- https://github.com/neomutt/neomutt/releases/latest
+
+All source releases are signed for security.
+See [Signing Releases](https://neomutt.org/dev/signing#source-example) for details.
+
+## Building NeoMutt
+
+To build NeoMutt, you will need, at the very minimum:
+
+- A C99 compiler such as gcc or clang
+- SysV-compatible curses library: ncurses or slang
+- Some common libraries, such as iconv and regex
+- DocBook XSL stylesheets and DTDs (for building the docs)
+
+NeoMutt's build system uses [Autosetup](https://msteveb.github.io/autosetup/).
+It depends on [Tcl](https://tcl.tk) and [Jim](http://jim.tcl.tk) to run its test scripts.
+If they aren't available, Autosetup will use a version bundled with NeoMutt.
+
+### Configure
+
+Autosetup's `configure.autosetup` performs two tasks. It allows the user to
+enable/disable certain features of NeoMutt and it checks that all the build
+dependencies are present.
+
+For a list of the currently supported options and a brief help text, run:
+`./configure.autosetup --help`
+
+| Configure option | Path | Notes |
+| :---------------------- | :--- | :------------------------------------------- |
+| `--with-ui=CHOICE` | | Select 'ncurses' or 'slang' |
+| `--with-ncurses=path` | | Location of ncurses |
+| `--with-slang=path` | | Location of S-Lang |
+| | | |
+| `--gpgme` | Path | GPG Made Easy |
+| `--gnutls` | Path | Gnu TLS (SSL) |
+| `--gss` | Path | Generic Security Services |
+| `--sasl` | Path | Simple Authentication and Security Layer |
+| `--ssl` | Path | OpenSSL |
+| | | |
+| `--fmemopen` | | Optional Feature (Dangerous) |
+| `--lua` | Path | Optional Feature |
+| `--notmuch` | Path | Optional Feature |
+| `--mixmaster` | | Optional Feature |
+| | | |
+| `--bdb` | Path | Header cache backend |
+| `--gdbm` | Path | Header cache backend |
+| `--kyotocabinet` | Path | Header cache backend |
+| `--lmdb` | Path | Header cache backend |
+| `--qdbm` | Path | Header cache backend |
+| `--tokyocabinet` | Path | Header cache backend |
+| | | |
+| `--with-lock=CHOICE` | | Select 'fcntl' or 'flock' |
+| `--locales-fix` | | Workaround for broken locales |
+| `--disable-nls` | Path | National Language Support (translations) |
+| `--disable-pgp` | Path | Pretty Good Privacy |
+| `--disable-smime` | Path | Secure/Multipurpose Internet Mail Extensions |
+| `--disable-idn` | Path | Internationalised domain names |
+| | | |
+| `--with-domain=DOMAIN` | | Default email domain |
+| `--with-mailpath` | Path | Location of spooled mail |
+| `--homespool` | Path | Spooled mail is in user's home dir |
+| | | |
+| `--prefix` | Path | Target directory for build (default: `/usr`) |
+| `--disable-doc` | | Don't build the docs |
+| `--full-doc` | | Document disabled features |
+| `--quiet` | | Only show the summary |
+
+The options marked "Path" have either take a path, or have an extra option for
+specifying the library path.
+e.g. `./configure --notmuch --with-notmuch=/usr/local/lib/notmuch`
+
+The parameter `--prefix` is used to specify both the default search path for
+headers and libraries and the final directory structure of the installed files.
+These are often the same: if you have your dependencies installed in
+`/usr/include` and `/usr/lib`, you also probably want the NeoMutt executable to
+end up in `/usr/bin` and its documentation in `/usr/share/doc`. This behavior
+can be tweaked by specifying where 3rd party dependencies are to be found. This
+is done on a per-dependency basis using the `--with-<dep>=path` family of
+options. As an example, a GPGMe installation in `/opt` can be looked up using
+the arguments `--gpgme --with-gpgme=/opt`.
+
+The build can be adjusted by setting any of six environment variables:
+
+- `CC` - set the compiler
+- `CFLAGS` - replace **all** the compiler flags
+- `EXTRA_CFLAGS` - append flags to the default compiler flags
+- `LD` - set the linker
+- `LDFLAGS` - replace **all** the linker flags
+- `EXTRA_LDFLAGS` - append flags to the default linker flags
+
+e.g. `make EXTRA_CFLAGS=-g`
+
+Here are the sample commands to configure and build NeoMutt:
+
+```
+./configure --gnutls --gpgme --gss --sasl --tokyocabinet
+make
+```
+
+### Install / Uninstall
+
+NeoMutt will be installed into the directory configured with `--prefix`.
+This can be modified using the `DESTDIR` make variable, for example when doing
+staged builds. `DESTDIR` is prepended to the install path.
+
+To install NeoMutt to the configured location, run:
+
+```
+make install
+```
+
+To override the root directory, use the `DESTDIR` make variable, e.g.
+
+```
+make DESTDIR=$HOME/install install'
+```
+
+To uninstall NeoMutt from the configured location, run:
+
+```
+make uninstall
+```
+
+To override the root directory, use the `DESTDIR` make variable, e.g.
+
+```
+make DESTDIR=$HOME/install uninstall'
+```
+
+++ /dev/null
-IMAP/SSL in neomutt
-================
-
-Compilation
------------
-If you want to have SSL support in neomutt, you need to install OpenSSL
-(http://www.openssl.org) libraries and headers before compiling.
-OpenSSL versions 0.9.3 through 1.0.1c have been tested.
-
-For SSL support to be enabled, you need to run the ``configure''
-script with ``--with-ssl[=PFX]'' parameters. If the
-OpenSSL headers and libraries are not in the default system search
-paths (usually /usr/include and /usr/lib) 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.
-
-
-Usage
------
-IMAP/SSL folders can be accessed just like normal IMAP folders, but you
-will also have to add '/ssl' before the closing curly brace. Or you can
-use IMAP url notation, where the methods is called imaps.
-
-For example:
- mailboxes {localhost/ssl}inbox
- mailboxes {localhost:994/ssl}inbox
-or
- mailboxes imaps://localhost/inbox
- mailboxes imaps://localhost:994/inbox
-
-If you get errors about lack of entropy, it means that NeoMutt was unable
-to find a source of random data to initialize SSL library with. Should
-this happen, you need to generate the data yourself and save it in a
-file pointed by $entropy_file or $RANDFILE (environment) variables or
-in ~/.rnd.
-
-One way to generate random data would be to run a command which
-generates unpredictable output, for example 'ps aluxww' in Linux, and
-calculating the MD5-sum from the output and saving it in a file.
-
-** Note: The contents of the file pointed by $RANDFILE environment
-** variable (or ~/.rnd if unset) will be overwritten every time NeoMutt
-** is run so don't put anything you can't afford to lose in that file.
-
-The files NeoMutt will try to use to initialize SSL library with are files
-pointed by $entropy_file and $RANDFILE (or ~/.rnd if unset.) If your
-OpenSSL is version 0.9.5 or later, the previous files can also be EGD
-sockets (see http://www.lothar.com/tech/crypto/ for more information
-about Entropy Gathering Daemon) and in addition sockets in the following
-places are tried: socket pointed by $EGDSOCKET environment variable,
-~/.entropy and /tmp/entropy.
-
-All the files and sockets mentioned above must be owned by the user and
-have permissions of 600.
-
-
-Certificates
-------------
-Each time a server is contacted, its certificate is checked against
-known valid certificates. When an unknown certificate is encountered,
-you are asked to verify it. If you reject the certificate, the
-connection will be terminated immediately. If you accept the
-certificate, the connection will be established. Accepted certificates
-can also be saved so that further connections to the server are
-automatically accepted.
-
-If OpenSSL was built with support for ServerNameIndication (SNI) and TLS
-is used in the negotiation, neomutt will send its idea of the server-name
-as part of the TLS negotiation. This allows the server to select an
-appropriate certificate, in the event that one server handles multiple
-hostnames with different certificates.
-
-If your organization has several equivalent IMAP-servers, each of them
-should have a unique certificate which is signed with a common
-certificate. If you want to use all of those servers, you don't need to
-save each server certificate on the first connect. Instead, you can get
-the signer certificate and save it instead. That way, neomutt will
-automatically accept all certificates signed with the saved certificate.
-
-System-wide certificates are by default considered trusted when checking
-certificates by signer. This allows system administrators to setup
-trusted certificates for all users. How to install certificates
-system-wide, depends on the OpenSSL installation. Use of system-wide
-certificates can be disabled by unsetting $ssl_usesystemcerts variable.
-
-Certificates will be saved in the file specified by $certificate_file
-variable. It is empty as default, so if you don't want to verify
-certificates each time you connect to a server, you have set this
-variable to some reasonable value.
-
-For example:
- set certificate_file=~/.neomutt/certificates
-
-
-Troubleshooting
----------------
-If after doing the above, you are unable to successfully connect, it
-is likely that your IMAP server does not support one of the SSL protocols.
-There exist three different protocols, TLSv1, SSLv2, and SSLv3. To check
-each of these, you use the following:
- openssl s_client -host <imap server> -port <port> -verify -debug -no_tls1
- openssl s_client -host <imap server> -port <port> -verify -debug -no_ssl2
- openssl s_client -host <imap server> -port <port> -verify -debug -no_ssl3
-
-You can also combine the options until you get a successful connect. Once
-you know which options do not work, you can set the variables for non-working
-protocols to know. The variables for the protocols are ssl_use_tlsv1,
-ssl_use_sslv2, and ssl_use_sslv3.
-
-To verify TLS SNI support by a server, you can use:
- openssl s_client -host <imap server> -port <port> \
- -tls1 -servername <imap server>
-
-
---
-Tommi Komulainen
-Tommi.Komulainen@iki.fi
-
-Updated by:
- Jeremy Katz <katzj@linuxpower.org>
- Phil Pennock <neomutt-dev@spodhuis.org>
[](https://github.com/neomutt/neomutt "Give us a Star")
[](https://twitter.com/NeoMutt_Org "Follow us on Twitter")
-[](#contributors)
+[](#contributors "All of NeoMutt's Contributors")
[](https://github.com/neomutt/neomutt/releases/latest "Latest Release Notes")
-[](https://github.com/neomutt/neomutt/blob/master/COPYRIGHT)
-[](https://travis-ci.org/neomutt/neomutt)
-[](https://scan.coverity.com/projects/neomutt-neomutt)
-[](https://travis-ci.org/neomutt/neomutt.github.io)
+[](https://github.com/neomutt/neomutt/blob/master/COPYRIGHT.md "Copyright Statement")
+[](https://travis-ci.org/neomutt/neomutt "Latest Automatic Code Build")
+[](https://scan.coverity.com/projects/neomutt-neomutt "Latest Code Static Analysis)
+[](https://travis-ci.org/neomutt/neomutt.github.io "Latest Website Test")
## What is NeoMutt?
Hopefully this will build the community and reduce duplicated effort.
-NeoMutt was created when Richard Russon (FlatCap) took all the old Mutt patches,
+NeoMutt was created when Richard Russon (@FlatCap) took all the old Mutt patches,
sorted through them, fixed them up and documented them.
## What Features does NeoMutt have?
+++ /dev/null
-IMAP in neomutt should be considered beta quality. For the most part it
-works well, but it is still not quite as stable or as full-featured
-as some of the other drivers. I believe it is now acceptable for
-daily use (and that's how I use it now, currently against Cyrus 1.6.24 and
-previously against UW-IMAP 4.7 and 2000).
-
-You may still lose some work if you are suddenly disconnected from your
-server (but your mailboxes should be fine). Currently accessing the same
-IMAP folder with multiple clients is not supported - it may work, but
-no guarantees. There are still several non-critical known bugs, see
-http://bugs.guug.de/ for the current list.
-
-You may also be disappointed in neomutt's handling of very large IMAP mailboxes.
-To build the message index neomutt must fetch a subset of headers from every
-message in the mailbox, which costs time and network traffic linear to the
-number of messages in your mailbox.
-
-Nevertheless in general neomutt is quite a fast and fully-featured IMAP client.
-It tries to be polite to IMAP servers as well, opening few connections and
-avoiding needless polls of the server, unlike certain other popular IMAP
-clients by certain large corporations :)
-
-NeoMutt supports almost all official authentication and security protocols for
-IMAP, including SSL/TLS, native CRAM-MD5 and GSSAPI routines, and a SASL
-plugin which can handle just about everything else.
-
-Please report bugs to neomutt-dev@neomutt.org and/or brendan@kublai.com. Version,
-options, stack-trace and .neomuttdebug files are a plus.
-
-Brendan Cully <brendan@kublai.com>
-20010506