Commit 14c29200 authored by Antonio Radici's avatar Antonio Radici

Imported Upstream version 1.5.18

parent 3a6f7bb9
This diff is collapsed.
A word of warning about string comparisons: Since mutt may run in a
huge variety of locales, case-insensitive string comparisons and
case conversions may be dangerous. For instance, in iso-8859-9,
tolower('I') is DIFFERENT from 'i' - it's indeed the Turkish dotless
lowercase i.
For this reason, always use the ascii_* functions defined in ascii.h
and implemented in ascii.c when comparing or handling strings which
are defined as us-ascii. This concerns lots of text-based
protocols, message header tags, character set names, domain names,
e-mail addresses, etc.
Thu Apr 26 15:40:11 CEST 2001, <>
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.
Copyright (C) 1996-2007 Michael R. Elkins <>
Copyright (C) 1996-2001 Brandon Long <>
Copyright (C) 1997-2007 Thomas Roessler <>
Copyright (C) 1998-2001 Werner Koch <>
Copyright (C) 1999-2007 Brendan Cully <>
Copyright (C) 1999-2001 Tommi Komulainen <>
Copyright (C) 2000-2001 Edmund Grimley Evans <>
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
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.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
## Process this file with automake to produce
## Use aclocal -I m4; automake --foreign
AUTOMAKE_OPTIONS = 1.6 foreign
EXTRA_PROGRAMS = mutt_dotlock pgpring pgpewrap
IMAP_INCLUDES = -I$(top_srcdir)/imap
SUBDIRS = m4 po intl doc contrib $(IMAP_SUBDIR)
bin_SCRIPTS = muttbug flea @SMIMEAUX_TARGET@
BUILT_SOURCES = keymap_defs.h patchlist.c reldate.h hcversion.h
mutt_SOURCES = \
addrbook.c alias.c attach.c base64.c browser.c buffy.c color.c \
crypt.c cryptglue.c \
commands.c complete.c compose.c copy.c curs_lib.c curs_main.c date.c \
edit.c enter.c flags.c init.c filter.c from.c \
getdomain.c group.c \
handler.c hash.c hdrline.c headers.c help.c hook.c keymap.c \
main.c mbox.c menu.c mh.c mx.c pager.c parse.c pattern.c \
postpone.c query.c recvattach.c recvcmd.c \
rfc822.c rfc1524.c rfc2047.c rfc2231.c rfc3676.c \
score.c send.c sendlib.c signal.c sort.c \
status.c system.c thread.c charset.c history.c lib.c \
muttlib.c editmsg.c mbyte.c \
url.c ascii.c mutt_idna.c crypt-mod.c crypt-mod.h
nodist_mutt_SOURCES = $(BUILT_SOURCES)
DEFS=-DPKGDATADIR=\"$(pkgdatadir)\" -DSYSCONFDIR=\"$(sysconfdir)\" \
-DBINDIR=\"$(bindir)\" -DMUTTLOCALEDIR=\"$(datadir)/locale\" \
EXTRA_mutt_SOURCES = account.c md5.c mutt_sasl.c mutt_socket.c mutt_ssl.c \
mutt_tunnel.c pop.c pop_auth.c pop_lib.c smime.c pgp.c pgpinvoke.c pgpkey.c \
pgplib.c sha1.c pgpmicalg.c gnupgparse.c resize.c dotlock.c remailer.c \
smtp.c browser.h mbyte.h remailer.h url.h \
crypt-mod-pgp-classic.c crypt-mod-smime-classic.c \
pgppacket.c mutt_idna.h hcache.h hcache.c bcache.c bcache.h mutt_ssl_gnutls.c \
crypt-gpgme.c crypt-mod-pgp-gpgme.c crypt-mod-smime-gpgme.c \
utf8.c wcwidth.c
configure account.h \
attach.h buffy.h charset.h copy.h crypthash.h dotlock.h functions.h gen_defs \
globals.h hash.h history.h init.h keymap.h mutt_crypt.h \
mailbox.h mapping.h md5.h mime.h mutt.h mutt_curses.h mutt_menu.h \
mutt_regex.h mutt_sasl.h mutt_socket.h mutt_ssl.h mutt_tunnel.h \
mx.h pager.h pgp.h pop.h protos.h rfc1524.h rfc2047.h \
rfc2231.h rfc822.h rfc3676.h sha1.h sort.h mime.types VERSION prepare \
_regex.h OPS.MIX README.SECURITY remailer.c remailer.h browser.h \
mbyte.h lib.h extlib.c pgpewrap.c pgplib.h \
README.SSL smime.h \
muttbug pgppacket.h depcomp ascii.h BEWARE PATCHES \
ChangeLog ChangeLog.old mutt_idna.h \
snprintf.c regex.c crypt-gpgme.h
EXTRA_SCRIPTS = smime_keys
mutt_dotlock_SOURCES = mutt_dotlock.c
mutt_dotlock_LDADD = @LIBOBJS@
pgpring_SOURCES = pgppubring.c pgplib.c lib.c extlib.c sha1.c md5.c pgppacket.c ascii.c
mutt_dotlock.c: dotlock.c
cp $(srcdir)/dotlock.c mutt_dotlock.c
CLEANFILES = mutt_dotlock.c keymap_alldefs.h $(BUILT_SOURCES)
DISTCLEANFILES= flea smime_keys
cp flea
chmod +x flea
smime_keys: $(srcdir)/
cp $(srcdir)/ smime_keys
chmod +x smime_keys
keymap_defs.h: $(OPS) $(srcdir)/gen_defs
$(srcdir)/gen_defs $(OPS) > keymap_defs.h
keymap_alldefs.h: $(srcdir)/OPS $(srcdir)/OPS.PGP $(srcdir)/OPS.MIX $(srcdir)/OPS.CRYPT $(srcdir)/OPS.SMIME $(srcdir)/gen_defs
rm -f $@
$(srcdir)/gen_defs $(srcdir)/OPS $(srcdir)/OPS.PGP \
$(srcdir)/OPS.MIX $(srcdir)/OPS.CRYPT $(srcdir)/OPS.SMIME \
> keymap_alldefs.h
reldate.h: $(srcdir)/ChangeLog
echo 'const char *ReleaseDate = "'`head -n 1 $(srcdir)/ChangeLog | LC_ALL=C cut -d ' ' -f 1`'";' > reldate.h.tmp; \
cmp -s reldate.h.tmp reldate.h || cp reldate.h.tmp reldate.h; \
rm reldate.h.tmp
hcversion.h: $(srcdir)/mutt.h $(srcdir)/rfc822.h
( echo '#include "config.h"'; echo '#include "mutt.h"'; ) \
| $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) - | sh ./ hcversion.h
patchlist.c: $(srcdir)/PATCHES $(srcdir)/
$(srcdir)/ < $(srcdir)/PATCHES > patchlist.c
if test -f $(DESTDIR)$(bindir)/mutt.dotlock && test -f $(DESTDIR)$(bindir)/mutt_dotlock ; then \
rm -f $(DESTDIR)$(bindir)/mutt.dotlock ; \
ln -sf $(DESTDIR)$(bindir)/mutt_dotlock $(DESTDIR)$(bindir)/mutt.dotlock ; \
if test -f $(DESTDIR)$(bindir)/mutt_dotlock && test x@DOTLOCK_GROUP@ != x ; then \
chgrp @DOTLOCK_GROUP@ $(DESTDIR)$(bindir)/mutt_dotlock && \
chmod @DOTLOCK_PERMISSION@ $(DESTDIR)$(bindir)/mutt_dotlock || \
{ echo "Can't fix mutt_dotlock's permissions!" >&2 ; exit 1 ; } \
$(srcdir)/mkinstalldirs $(DESTDIR)$(sysconfdir)
$(INSTALL) -m 644 $(srcdir)/mime.types $(DESTDIR)$(sysconfdir)/mime.types.dist
-if [ ! -f $(DESTDIR)$(sysconfdir)/mime.types ]; then \
$(INSTALL) -m 644 $(srcdir)/mime.types $(DESTDIR)$(sysconfdir); \
for i in mime.types ; do \
if cmp -s $(DESTDIR)$(sysconfdir)/$$i.dist $(DESTDIR)$(sysconfdir)/$$i ; then \
rm $(DESTDIR)$(sysconfdir)/$$i ; \
fi ; \
rm $(DESTDIR)$(sysconfdir)/$${i}.dist ; \
# Don't make this one ChangeLog - it's intended to be
# used manually.
cat /dev/null > $(top_srcdir)/PATCHES
(cd $(top_srcdir) && ./
(cd $(top_srcdir) && cvs commit)
(cd $(top_srcdir) && cvs commit -m "# changelog commit" ChangeLog)
commit: pclean check-security commit-real update-changelog commit-changelog
(cd $(top_srcdir); \
sh ./ | cat - ChangeLog > ChangeLog.$$$$ && mv ChangeLog.$$$$ ChangeLog; \
$${VISUAL:-vi} ChangeLog)
(cd $(srcdir) && ./build-release )
(cd doc && $(MAKE) update-doc)
.PHONY: commit pclean check-security commit-real commit-changelog
# .PHONY: changelog ChangeLog
This diff is collapsed.
Visible changes since Mutt 1.2
Folder formats and folder access
- Better mh support: Mutt now supports .mh_sequences files.
Currently, the "unseen", "flagged", and "replied" sequences are
used to store mutt flags (the names are configurable using the
$mh_seq_unseen, $mh_seq_flagged, and $mh_seq_replied configuration
variables). As a side effect, messages in MH folders are no longer
rewritten upon status changes.
- The "trashed" flag is supported for maildir folders. See
- POP folder support. You can now access a POP mailbox just like an
IMAP folder (with obvious restrictions due to the protocol).
- URL syntax for remote folders. You can pass things like
pop://account@host and imap://account@host/folder as arguments for
the -f command line flag.
- STARTTLS support. If $ssl_starttls is set (the default), mutt
will attempt to use STARTTLS on servers advertising that
- $preconnect. If set, a shell command to be executed if mutt fails
to establish a connection to the server. This is useful for
setting up secure connections; see the muttrc(5) for details.
- $tunnel. Use a pipe to a command instead of a raw socket. See
muttrc(5) for details. (Basically, it's another way for setting
up secure connections.)
- More new IMAP/POP-related variables (see muttrc(5) for details):
$connect_timeout, $imap_authenticators, $imap_delim_chars,
$imap_peek, $pop_authenticators, $pop_auth_try_all,
$pop_checkinterval, $pop_delete, $pop_reconnect, $use_ipv6.
- The following IMAP/POP-related variables are gone:
$imap_checkinterval, $imap_cramkey, $pop_port.
- There's a new imap-fetch-mail function, which forces a check for
new messages on an IMAP server.
- The new-mailbox function was renamed to create-mailbox, and is
bound to C instead of n by default.
Character set support
- Mutt now uses the iconv interface for character set conversions.
This means that you need either a very modern libc, or Bruno
Haible's libiconv, which is available from
- With sufficiently recent versions of ncurses and slang, mutt works
properly in utf-8 locales.
- On sufficiently modern systems, the $charset variable's value is
automatically derived from the locale you use. (Note, however,
that manually setting it to a value which is compatible with your
locale doesn't do any harm.)
- $send_charset is a colon-separated list of character sets now,
defaulting to us-ascii:iso-8859-1:utf-8.
- charset-hook defines aliases for character sets encountered in
messages (say, someone tags his messages with latin15 when he
means iso-8859-15), iconv-hook defines local names for character
sets (for systems which don't know about MIME names; see
contrib/iconv for sample configuration snippets).
- The change-charset function is gone. Use edit-type (C-e on the
compose menu) instead.
- The recode-attachment function is gone.
Other changes
- There's a new variable $compose_format for the compose screen's
status line. You can now include the message's approximate
on-the-wire size.
- The attachment menu knows about collapsing now: Using
collapse-parts (bound to "v" by default), you can collapse and
uncollapse parts of the attachment tree. This function is also
available from the pager when invoked from the attachment tree.
Normally, the recvattach menu will start uncollapsed. However,
with the new $digest_collapse option (which is set by default),
the individual messages contained in digests will be displayed
collapsed. (That is, there's one line per message.)
- Using $display_filter, you can specify a command which filters
messages before they are displayed.
- Using message-hook, you can execute mutt configuration commands
before a message is displayed (or formatted before replying).
- If you don't want that mutt moves flagged messages to your mbox,
set $keep_flagged.
- Setting the $pgp_ignore_subkeys variable will cause mutt to ignore
OpenPGP. This option is set by default, and it's suggested that
you leave it.
- $pgp_sign_micalg has gone. Mutt now automatically determines what
MIC algorithm was used for a particular signature.
- If $pgp_good_sign is set, then a PGP signature is only considered
verified if the output from $pgp_verify_command matches this
regular expression. It's suggested that you set this variable to
the typical text message output by PGP (or GPG, or whatever)
produces when it encounters a good signature.
- There's a new function, check-traditional-pgp, which is bound to
esc-P by default. It'll check whether a text parts of a message
contain PGP encrypted or signed material, and possibly adjust
content types.
- $print_split. If this option is set, $print_command run
separately for each message you print. Useful with enscript(1)'s
mail printing mode.
- $sig_on_top. Include the signature before any quoted or forwarded
text. WARNING: use of this option may provoke flames.
- $text_flowed. When set, mutt will generate text/plain attachments
with the format=flowed parameter. In order to properly produce
such messages, you'll need an appropriate editor mode. Note that
the $indent_string option is ignored with flowed text.
- $to_chars has grown: Mailing list messages are now tagged with an
L in the index. If you want the old behaviour back, add this to
your .muttrc: set to_chars=" +TCF "
- New emacs-like functions in the line editor: backward-word (M-b),
capitalize-word (M-c), downcase-word (M-l), upcase-word (M-u),
forward-word (M-f), kill-eow (M-d), tranpose-chars (unbound).
transpose-chars is unbound by default because external query
occupies C-t. Suggested alternative binding:
bind editor "\e\t" complete-query
bind editor "\Ct" transpose-chars
- mailto URL support: You can pass a mailto URL to mutt on the
command line.
- If $duplicate_threads is set, mutt's new threading code will
thread messages with the same message-id together. Duplication
will be indicated with an equals sign in the thread diagram.
You can also limit your view to the duplicates (or exclude
duplicates from view) by using the "~=" pattern.
OP_NULL "null operation"
OP_END_COND "end of conditional execution (noop)"
OP_ATTACH_VIEW_MAILCAP "force viewing of attachment using mailcap"
OP_ATTACH_VIEW_TEXT "view attachment as text"
OP_ATTACH_COLLAPSE "Toggle display of subparts"
OP_BOTTOM_PAGE "move to the bottom of the page"
OP_BOUNCE_MESSAGE "remail a message to another user"
OP_BROWSER_NEW_FILE "select a new file in this directory"
OP_BROWSER_TELL "display the currently selected file's name"
OP_BROWSER_SUBSCRIBE "subscribe to current mailbox (IMAP only)"
OP_BROWSER_UNSUBSCRIBE "unsubscribe from current mailbox (IMAP only)"
OP_BROWSER_TOGGLE_LSUB "toggle view all/subscribed mailboxes (IMAP only)"
OP_BUFFY_LIST "list mailboxes with new mail"
OP_CHANGE_DIRECTORY "change directories"
OP_CHECK_NEW "check mailboxes for new mail"
OP_COMPOSE_ATTACH_FILE "attach file(s) to this message"
OP_COMPOSE_ATTACH_MESSAGE "attach message(s) to this message"
OP_COMPOSE_EDIT_BCC "edit the BCC list"
OP_COMPOSE_EDIT_CC "edit the CC list"
OP_COMPOSE_EDIT_DESCRIPTION "edit attachment description"
OP_COMPOSE_EDIT_ENCODING "edit attachment transfer-encoding"
OP_COMPOSE_EDIT_FCC "enter a file to save a copy of this message in"
OP_COMPOSE_EDIT_FILE "edit the file to be attached"
OP_COMPOSE_EDIT_FROM "edit the from field"
OP_COMPOSE_EDIT_HEADERS "edit the message with headers"
OP_COMPOSE_EDIT_MESSAGE "edit the message"
OP_COMPOSE_EDIT_MIME "edit attachment using mailcap entry"
OP_COMPOSE_EDIT_REPLY_TO "edit the Reply-To field"
OP_COMPOSE_EDIT_SUBJECT "edit the subject of this message"
OP_COMPOSE_EDIT_TO "edit the TO list"
OP_CREATE_MAILBOX "create a new mailbox (IMAP only)"
OP_EDIT_TYPE "edit attachment content type"
OP_COMPOSE_GET_ATTACHMENT "get a temporary copy of an attachment"
OP_COMPOSE_ISPELL "run ispell on the message"
OP_COMPOSE_NEW_MIME "compose new attachment using mailcap entry"
OP_COMPOSE_TOGGLE_RECODE "toggle recoding of this attachment"
OP_COMPOSE_POSTPONE_MESSAGE "save this message to send later"
OP_COMPOSE_RENAME_FILE "rename/move an attached file"
OP_COMPOSE_SEND_MESSAGE "send the message"
OP_COMPOSE_TOGGLE_DISPOSITION "toggle disposition between inline/attachment"
OP_COMPOSE_TOGGLE_UNLINK "toggle whether to delete file after sending it"
OP_COMPOSE_UPDATE_ENCODING "update an attachment's encoding info"
OP_COMPOSE_WRITE_MESSAGE "write the message to a folder"
OP_COPY_MESSAGE "copy a message to a file/mailbox"
OP_CREATE_ALIAS "create an alias from a message sender"
OP_CURRENT_BOTTOM "move entry to bottom of screen"
OP_CURRENT_MIDDLE "move entry to middle of screen"
OP_CURRENT_TOP "move entry to top of screen"
OP_DECODE_COPY "make decoded (text/plain) copy"
OP_DECODE_SAVE "make decoded copy (text/plain) and delete"
OP_DELETE "delete the current entry"
OP_DELETE_MAILBOX "delete the current mailbox (IMAP only)"
OP_DELETE_SUBTHREAD "delete all messages in subthread"
OP_DELETE_THREAD "delete all messages in thread"
OP_DISPLAY_ADDRESS "display full address of sender"
OP_DISPLAY_HEADERS "display message and toggle header weeding"
OP_DISPLAY_MESSAGE "display a message"
OP_EDIT_MESSAGE "edit the raw message"
OP_EDITOR_BACKSPACE "delete the char in front of the cursor"
OP_EDITOR_BACKWARD_CHAR "move the cursor one character to the left"
OP_EDITOR_BACKWARD_WORD "move the cursor to the beginning of the word"
OP_EDITOR_BOL "jump to the beginning of the line"
OP_EDITOR_BUFFY_CYCLE "cycle among incoming mailboxes"
OP_EDITOR_COMPLETE "complete filename or alias"
OP_EDITOR_COMPLETE_QUERY "complete address with query"
OP_EDITOR_DELETE_CHAR "delete the char under the cursor"
OP_EDITOR_EOL "jump to the end of the line"
OP_EDITOR_FORWARD_CHAR "move the cursor one character to the right"
OP_EDITOR_FORWARD_WORD "move the cursor to the end of the word"
OP_EDITOR_HISTORY_DOWN "scroll down through the history list"
OP_EDITOR_HISTORY_UP "scroll up through the history list"
OP_EDITOR_KILL_EOL "delete chars from cursor to end of line"
OP_EDITOR_KILL_EOW "delete chars from the cursor to the end of the word"
OP_EDITOR_KILL_LINE "delete all chars on the line"
OP_EDITOR_KILL_WORD "delete the word in front of the cursor"
OP_EDITOR_QUOTE_CHAR "quote the next typed key"
OP_EDITOR_TRANSPOSE_CHARS "transpose character under cursor with previous"
OP_EDITOR_CAPITALIZE_WORD "capitalize the word"
OP_EDITOR_DOWNCASE_WORD "convert the word to lower case"
OP_EDITOR_UPCASE_WORD "convert the word to upper case"
OP_ENTER_COMMAND "enter a muttrc command"
OP_ENTER_MASK "enter a file mask"
OP_EXIT "exit this menu"
OP_FILTER "filter attachment through a shell command"
OP_FIRST_ENTRY "move to the first entry"
OP_FLAG_MESSAGE "toggle a message's 'important' flag"
OP_FORWARD_MESSAGE "forward a message with comments"
OP_GENERIC_SELECT_ENTRY "select the current entry"
OP_GROUP_REPLY "reply to all recipients"
OP_HALF_DOWN "scroll down 1/2 page"
OP_HALF_UP "scroll up 1/2 page"
OP_HELP "this screen"
OP_JUMP "jump to an index number"
OP_LAST_ENTRY "move to the last entry"
OP_LIST_REPLY "reply to specified mailing list"
OP_MACRO "execute a macro"
OP_MAIL "compose a new mail message"
OP_MAIN_BREAK_THREAD "break the thread in two"
OP_MAIN_CHANGE_FOLDER "open a different folder"
OP_MAIN_CHANGE_FOLDER_READONLY "open a different folder in read only mode"
OP_MAIN_CLEAR_FLAG "clear a status flag from a message"
OP_MAIN_DELETE_PATTERN "delete messages matching a pattern"
OP_MAIN_IMAP_FETCH "force retrieval of mail from IMAP server"
OP_MAIN_FETCH_MAIL "retrieve mail from POP server"
OP_MAIN_FIRST_MESSAGE "move to the first message"
OP_MAIN_LAST_MESSAGE "move to the last message"
OP_MAIN_LIMIT "show only messages matching a pattern"
OP_MAIN_LINK_THREADS "link tagged message to the current one"
OP_MAIN_NEXT_UNREAD_MAILBOX "open next mailbox with new mail"
OP_MAIN_NEXT_NEW "jump to the next new message"
OP_MAIN_NEXT_NEW_THEN_UNREAD "jump to the next new or unread message"
OP_MAIN_NEXT_SUBTHREAD "jump to the next subthread"
OP_MAIN_NEXT_THREAD "jump to the next thread"
OP_MAIN_NEXT_UNDELETED "move to the next undeleted message"
OP_MAIN_NEXT_UNREAD "jump to the next unread message"
OP_MAIN_PARENT_MESSAGE "jump to parent message in thread"
OP_MAIN_PREV_THREAD "jump to previous thread"
OP_MAIN_PREV_SUBTHREAD "jump to previous subthread"
OP_MAIN_PREV_UNDELETED "move to the previous undeleted message"
OP_MAIN_PREV_NEW "jump to the previous new message"
OP_MAIN_PREV_NEW_THEN_UNREAD "jump to the previous new or unread message"
OP_MAIN_PREV_UNREAD "jump to the previous unread message"
OP_MAIN_READ_THREAD "mark the current thread as read"
OP_MAIN_READ_SUBTHREAD "mark the current subthread as read"
OP_MAIN_SET_FLAG "set a status flag on a message"
OP_MAIN_SYNC_FOLDER "save changes to mailbox"
OP_MAIN_TAG_PATTERN "tag messages matching a pattern"
OP_MAIN_UNDELETE_PATTERN "undelete messages matching a pattern"
OP_MAIN_UNTAG_PATTERN "untag messages matching a pattern"
OP_MIDDLE_PAGE "move to the middle of the page"
OP_NEXT_ENTRY "move to the next entry"
OP_NEXT_LINE "scroll down one line"
OP_NEXT_PAGE "move to the next page"
OP_PAGER_BOTTOM "jump to the bottom of the message"
OP_PAGER_HIDE_QUOTED "toggle display of quoted text"
OP_PAGER_SKIP_QUOTED "skip beyond quoted text"
OP_PAGER_TOP "jump to the top of the message"