commit 1bb94dad725b94ce943c06dd9cf1773fd4c92e7e37f8abf7aa7f69b8ffcf9ee6 Author: Adrian Schröter Date: Wed Feb 26 11:47:28 2025 +0100 Sync from SUSE:SLFO:Main mutt revision 116e33a45b7565da78ac0a3c2fd26076 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9b03811 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/README.alternates b/README.alternates new file mode 100644 index 0000000..db7be9e --- /dev/null +++ b/README.alternates @@ -0,0 +1,8 @@ +Since Mutt version 1.5.6 there's changes with regards to the $alternates +variable. It's no longer a variable, but a command. + +When it before was: set alternates=foo@bar.org +It's now: alternates foo@bar.org + +It's elaborated in the alternates section of the manpage muttrc.5 + diff --git a/Signature_conversion b/Signature_conversion new file mode 100644 index 0000000..3b0b711 --- /dev/null +++ b/Signature_conversion @@ -0,0 +1,94 @@ +#!/bin/sh +# +# Wed May 7 14:36:35 2003 Mike FABIAN + +SIGFILE=$1 + +if [ ! -e $SIGFILE ] ; then + # there is no such signature file, do nothing + exit 0 +fi + +guess_legacy_encoding () { + # Guess the legacy encoding used by the language/country + # found in the current LC_CTYPE value. + + # First determine the LC_CTYPE locale category setting + ctype="en_US" + ctype=${LC_ALL-${LC_CTYPE-${LANG-${ctype}}}} + + case $ctype in + zh_TW*) + LEGACY_ENCODING=Big5 + ;; + zh_HK*) + LEGACY_ENCODING=Big5HKSCS + ;; + zh*) + LEGACY_ENCODING=GB2312 + ;; + ja*) + LEGACY_ENCODING=EUC-JP + ;; + ko*) + LEGACY_ENCODING=EUC-KR + ;; + ru*) + LEGACY_ENCODING=KOI8-R + ;; + uk*) + LEGACY_ENCODING=KOI8-U + ;; + pl*|hr*|hu*|cs*|sk*|sl*) + LEGACY_ENCODING=ISO-8859-2 + ;; + eo*|mt*) + LEGACY_ENCODING=ISO-8859-3 + ;; + el*) + LEGACY_ENCODING=ISO-8859-7 + ;; + he*) + LEGACY_ENCODING=ISO-8859-8 + ;; + tr*) + LEGACY_ENCODING=ISO-8859-9 + ;; + th*) + LEGACY_ENCODING=TIS-620 # or ISO-8859-11 + ;; + lt*) + LEGACY_ENCODING=ISO-8859-13 + ;; + cy*) + LEGACY_ENCODING=ISO-8859-14 + ;; + ro*) + LEGACY_ENCODING=ISO-8859-14 # or ISO-8859-16 + ;; + am*|vi*) + LEGACY_ENCODING=UTF-8 + ;; + *) + LEGACY_ENCODING=ISO-8859-1 + ;; + esac +} + +guess_legacy_encoding; + +LOCALE_CHARMAP=$(locale charmap) + +for encoding in UTF-8 $LOCALE_CHARMAP $LEGACY_ENCODING ISO-8859-1 +do + if iconv --from $encoding --to $LOCALE_CHARMAP < $SIGFILE > /dev/null 2>&1 ; then + iconv --from $encoding --to $LOCALE_CHARMAP < $SIGFILE + exit 0 + fi +done + +# unknown encoding in signature file, print it to stdout unchanged: +# (should never happen because the conversion from ISO-8859-1 should +# never return a failure). + +cat $SIGFILE diff --git a/backports-datetime-fromisoformat-1.0.0.tar.gz b/backports-datetime-fromisoformat-1.0.0.tar.gz new file mode 100644 index 0000000..2c38cf9 --- /dev/null +++ b/backports-datetime-fromisoformat-1.0.0.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9577a2a9486cd7383a5f58b23bb8e81cf0821dbbc0eb7c87d3fa198c1df40f5c +size 10802 diff --git a/bsc907453-CVE-2014-9116-jessie.patch b/bsc907453-CVE-2014-9116-jessie.patch new file mode 100644 index 0000000..d291d8d --- /dev/null +++ b/bsc907453-CVE-2014-9116-jessie.patch @@ -0,0 +1,30 @@ +This patch solves the issue raised by CVE-2014-9116 in bug 771125. + +We correctly redefine what are the whitespace characters as per RFC5322; by +doing so we prevent mutt_substrdup from being used in a way that could lead to +a segfault. + +The lib.c part was written by Antonio Radici to prevent +crashes due to this kind of bugs from happening again. + +The wheezy version of this patch is slightly different, therefore this patch +has -jessie prefixed in its name. + +Index: mutt/lib.c +=================================================================== +--- + lib.c | 3 +++ + 1 file changed, 3 insertions(+) + +--- lib.c ++++ lib.c 2019-01-02 13:25:44.767193676 +0000 +@@ -675,6 +675,9 @@ char *mutt_substrdup (const char *begin, + size_t len; + char *p; + ++ if (end != NULL && end < begin) ++ return NULL; ++ + if (end) + len = end - begin; + else diff --git a/mutt-1.10.1-imap.patch b/mutt-1.10.1-imap.patch new file mode 100644 index 0000000..496fbf7 --- /dev/null +++ b/mutt-1.10.1-imap.patch @@ -0,0 +1,23 @@ +--- + browser.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +--- browser.c ++++ browser.c 2020-01-14 14:51:44.927127369 +0000 +@@ -1096,6 +1096,16 @@ void _mutt_buffer_select_file (BUFFER *f + + mutt_buffer_strcpy (f, state.entry[menu->current].full_path); + ++#ifdef USE_IMAP ++ if (buffy) ++ { ++ if (mx_is_imap (mutt_b2s (f))) ++ { ++ state.imap_browse = 1; ++ mutt_buffer_strcpy (LastDir, mutt_b2s (f)); ++ } ++ } ++#endif + /* fall through */ + + case OP_EXIT: diff --git a/mutt-1.13.3.dif b/mutt-1.13.3.dif new file mode 100644 index 0000000..35b5555 --- /dev/null +++ b/mutt-1.13.3.dif @@ -0,0 +1,110 @@ +--- + configure.ac | 18 +++++++++++++----- + doc/Muttrc.head | 2 +- + imap/auth.c | 23 ++++++++++++++++++++++- + mx.c | 3 +++ + 4 files changed, 39 insertions(+), 7 deletions(-) + +--- configure.ac ++++ configure.ac 2020-01-14 13:04:28.102878757 +0000 +@@ -299,7 +299,7 @@ main () + mutt_cv_slang=$withval + if test -d $withval/include/slang; then + CPPFLAGS="$CPPFLAGS -I${withval}/include/slang" +- elif test -d $withval/include; then ++ elif test -d $withval/include && $withval != /usr ; then + CPPFLAGS="$CPPFLAGS -I${withval}/include" + fi + LDFLAGS="$LDFLAGS -L${withval}/lib" +@@ -748,8 +748,12 @@ AC_ARG_WITH(ssl, AS_HELP_STRING([--with- + else + if test "$with_ssl" != "yes" + then +- LDFLAGS="$LDFLAGS -L$withval/lib" +- CPPFLAGS="$CPPFLAGS -I$withval/include" ++ case $withval in /usr|/usr/local) ;; ++ *) ++ LDFLAGS="$LDFLAGS -L$withval/lib" ++ CPPFLAGS="$CPPFLAGS -I$withval/include" ++ ;; ++ esac + fi + saved_LIBS="$LIBS" + +@@ -836,8 +840,12 @@ AC_ARG_WITH(sasl, AS_HELP_STRING([--with + + if test "$with_sasl" != "yes" + then +- CPPFLAGS="$CPPFLAGS -I$with_sasl/include" +- LDFLAGS="$LDFLAGS -L$with_sasl/lib" ++ case $with_sasl in /usr|/usr/local) ;; ++ *) ++ CPPFLAGS="$CPPFLAGS -I$with_sasl/include" ++ LDFLAGS="$LDFLAGS -L$with_sasl/lib" ++ ;; ++ esac + fi + + saved_LIBS="$LIBS" +--- doc/Muttrc.head ++++ doc/Muttrc.head 2020-01-14 13:05:31.265704120 +0000 +@@ -23,7 +23,7 @@ macro index,pager,attach,compose \cb "\ + "call urlview to extract URLs out of a message" + + # Show documentation when pressing F1 +-macro generic,pager " less @docdir@/manual.txt" "show Mutt documentation" ++macro generic,index,pager " less @docdir@/manual.txt.gz" "show Mutt documentation" + + # show the incoming mailboxes list (just like "mutt -y") and back when pressing "y" + # note: these macros have been subsumed by the function. +--- imap/auth.c ++++ imap/auth.c 2020-01-14 13:04:28.102878757 +0000 +@@ -79,6 +79,25 @@ int imap_authenticate (IMAP_DATA* idata) + dprint (2, (debugfile, "imap_authenticate: Trying method %s\n", method)); + authenticator = imap_authenticators; + ++#ifdef USE_SASL ++ /* "login" not supported by SASL */ ++ if (!ascii_strcasecmp ("login", method)) ++ { ++ while (authenticator->authenticate) ++ { ++ const char *identify = authenticator->method; ++ if (identify && !ascii_strcasecmp(identify, method)) ++ if ((r = authenticator->authenticate(idata, method)) != ++ IMAP_AUTH_UNAVAIL) ++ { ++ FREE(&methods); ++ return r; ++ } ++ ++ authenticator++; ++ } ++ } else { ++#endif + while (authenticator->authenticate) + { + if (!authenticator->method || +@@ -93,7 +112,9 @@ int imap_authenticate (IMAP_DATA* idata) + authenticator++; + } + } +- ++#ifdef USE_SASL ++ } ++#endif + FREE (&methods); + } + else +--- mx.c ++++ mx.c 2020-01-14 13:04:28.102878757 +0000 +@@ -1501,6 +1501,9 @@ void mx_update_context (CONTEXT *ctx, in + { + h = ctx->hdrs[msgno]; + ++ if (!h) ++ continue; ++ + if (WithCrypto) + { + /* NOTE: this _must_ be done before the check for mailcap! */ diff --git a/mutt-1.5.15-wrapcolumn.diff b/mutt-1.5.15-wrapcolumn.diff new file mode 100644 index 0000000..9901316 --- /dev/null +++ b/mutt-1.5.15-wrapcolumn.diff @@ -0,0 +1,16 @@ +Index: init.h +=================================================================== +--- + init.h | 1 + + 1 file changed, 1 insertion(+) + +--- init.h ++++ init.h 2020-01-14 13:28:27.408149074 +0000 +@@ -4843,6 +4843,7 @@ struct option_t MuttVars[] = { + ** Also see $$copy_decode_weed, $$pipe_decode_weed, $$print_decode_weed. + */ + { "wrap", DT_NUM, R_PAGER_FLOW, {.p=&Wrap}, {.l=0} }, ++ { "wrapcolumn", DT_SYN, R_NONE, {.p="wrap"}, {.p=0} }, + /* + ** .pp + ** When set to a positive value, mutt will wrap text at $$wrap characters. diff --git a/mutt-1.5.20-sendgroupreplyto.diff b/mutt-1.5.20-sendgroupreplyto.diff new file mode 100644 index 0000000..2c309ac --- /dev/null +++ b/mutt-1.5.20-sendgroupreplyto.diff @@ -0,0 +1,50 @@ +--- + init.h | 7 +++++++ + mutt.h | 1 + + send.c | 9 ++++++--- + 3 files changed, 14 insertions(+), 3 deletions(-) + +--- init.h ++++ init.h 2020-01-14 13:12:26.725982952 +0000 +@@ -3479,6 +3479,13 @@ struct option_t MuttVars[] = { + ** .pp + ** Also see the $$force_name variable. + */ ++ { "send_group_reply_to", DT_BOOL, R_NONE, {.l=OPTSENDGROUPREPLYTO}, {.l=0} }, ++ /* ++ ** .pp ++ ** This variable controls how group replies are done. ++ ** When set, all recepients listet in "To:" are set in the ++ ** "To:" header again, else in the "CC", which is the default. ++ */ + { "score", DT_BOOL, R_NONE, {.l=OPTSCORE}, {.l=1} }, + /* + ** .pp +--- mutt.h ++++ mutt.h 2020-01-14 13:07:33.727426389 +0000 +@@ -539,6 +539,7 @@ enum + OPTSAVEADDRESS, + OPTSAVEEMPTY, + OPTSAVENAME, ++ OPTSENDGROUPREPLYTO, + OPTSCORE, + #ifdef USE_SIDEBAR + OPTSIDEBAR, +--- send.c ++++ send.c 2020-01-14 13:07:33.727426389 +0000 +@@ -700,9 +700,12 @@ int mutt_fetch_recips (ENVELOPE *out, EN + (!in->mail_followup_to || hmfupto != MUTT_YES)) + { + /* if (!mutt_addr_is_user(in->to)) */ +- if (flags & SENDGROUPREPLY) +- rfc822_append (&out->cc, in->to, 1); +- else ++ if (flags & SENDGROUPREPLY) { ++ if (option (OPTSENDGROUPREPLYTO)) ++ rfc822_append (&out->to, in->to, 1); ++ else ++ rfc822_append (&out->cc, in->to, 1); ++ } else + rfc822_append (&out->to, in->to, 1); + rfc822_append (&out->cc, in->cc, 1); + } diff --git a/mutt-1.5.21-mailcap.diff b/mutt-1.5.21-mailcap.diff new file mode 100644 index 0000000..3c9670b --- /dev/null +++ b/mutt-1.5.21-mailcap.diff @@ -0,0 +1,20 @@ +read /usr/share/mutt/mailcap as fallback by default. This allows to +set some useful defaults specifically for mutt. For example +text/html +Index: mutt-1.5.21/init.c +=================================================================== +--- + init.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- init.c ++++ init.c 2019-01-02 13:25:20.795634552 +0000 +@@ -3854,7 +3854,7 @@ void mutt_init (int skip_sys_rc, LIST *c + else + { + /* Default search path from RFC1524 */ +- MailcapPath = safe_strdup ("~/.mailcap:" PKGDATADIR "/mailcap:" SYSCONFDIR "/mailcap:/etc/mailcap:/usr/etc/mailcap:/usr/local/etc/mailcap"); ++ MailcapPath = safe_strdup ("~/.mailcap:" PKGDATADIR "/mailcap:" SYSCONFDIR "/mailcap:/usr/etc/mailcap:/usr/local/etc/mailcap:" SYSCONFDIR "/mutt/mailcap"); + } + + Tempdir = safe_strdup ((p = getenv ("TMPDIR")) ? p : "/tmp"); diff --git a/mutt-1.5.23-carriage-return.path b/mutt-1.5.23-carriage-return.path new file mode 100644 index 0000000..068591b --- /dev/null +++ b/mutt-1.5.23-carriage-return.path @@ -0,0 +1,127 @@ +--- + crypt-gpgme.c | 2 +- + lib.c | 11 +++++++++++ + lib.h | 1 + + pager.c | 2 +- + pgp.c | 24 ++++++++++++------------ + 5 files changed, 26 insertions(+), 14 deletions(-) + +--- crypt-gpgme.c ++++ crypt-gpgme.c 2019-11-13 13:46:16.512388398 +0000 +@@ -2733,7 +2733,7 @@ static void copy_clearsigned (gpgme_data + + if (armor_header) + { +- if (buf[0] == '\n') ++ if (buf[0] == '\n' || (buf[0] == '\r' && buf[1] == '\n')) + armor_header = 0; + continue; + } +--- lib.c ++++ lib.c 2019-11-13 13:42:00.245189313 +0000 +@@ -693,6 +693,17 @@ int mutt_strcmp(const char *a, const cha + return strcmp(NONULL(a), NONULL(b)); + } + ++int mutt_strxcmp(const char *a, const char *b) ++{ ++ const size_t xa = strcspn(NONULL(a), "\r\n"); ++ const size_t xb = strcspn(NONULL(b), "\r\n"); ++ if (xb != xa) ++ return -1; ++ if (!xa) ++ return 0; ++ return strncmp(NONULL(a), NONULL(b), (size_t)xa); ++} ++ + int mutt_strcasecmp(const char *a, const char *b) + { + return strcasecmp(NONULL(a), NONULL(b)); +--- lib.h ++++ lib.h 2019-11-13 13:47:17.399247662 +0000 +@@ -225,6 +225,7 @@ int mutt_copy_stream (FILE *, FILE *); + int mutt_copy_bytes (FILE *, FILE *, size_t); + int mutt_strcasecmp (const char *, const char *); + int mutt_strcmp (const char *, const char *); ++int mutt_strxcmp (const char *, const char *); + int mutt_strncasecmp (const char *, const char *, size_t); + int mutt_strncmp (const char *, const char *, size_t); + int mutt_strcoll (const char *, const char *); +--- pager.c ++++ pager.c 2019-11-13 13:48:32.257845120 +0000 +@@ -975,7 +975,7 @@ resolve_types (char *buf, char *raw, str + lineInfo[n].type = MT_COLOR_NORMAL; + else if (check_attachment_marker ((char *) raw) == 0) + lineInfo[n].type = MT_COLOR_ATTACHMENT; +- else if (mutt_strcmp ("-- \n", buf) == 0 || mutt_strcmp ("-- \r\n", buf) == 0) ++ else if (mutt_strxcmp ("-- \n", buf) == 0) + { + i = n + 1; + +--- pgp.c ++++ pgp.c 2019-11-13 13:51:06.746954963 +0000 +@@ -371,7 +371,7 @@ static void pgp_copy_clearsigned (FILE * + continue; + } + +- if (mutt_strcmp (buf, "-----BEGIN PGP SIGNATURE-----\n") == 0) ++ if (mutt_strxcmp (buf, "-----BEGIN PGP SIGNATURE-----\n") == 0) + break; + + if (armor_header) +@@ -446,11 +446,11 @@ int pgp_application_pgp_handler (BODY *m + could_not_decrypt = 0; + decrypt_okay_rc = 0; + +- if (mutt_strcmp ("MESSAGE-----\n", buf + 15) == 0) ++ if (mutt_strxcmp ("MESSAGE-----\n", buf + 15) == 0) + needpass = 1; +- else if (mutt_strcmp ("SIGNED MESSAGE-----\n", buf + 15) == 0) ++ else if (mutt_strxcmp ("SIGNED MESSAGE-----\n", buf + 15) == 0) + clearsign = 1; +- else if (!mutt_strcmp ("PUBLIC KEY BLOCK-----\n", buf + 15)) ++ else if (!mutt_strxcmp ("PUBLIC KEY BLOCK-----\n", buf + 15)) + pgp_keyblock = 1; + else + { +@@ -480,10 +480,10 @@ int pgp_application_pgp_handler (BODY *m + + fputs (buf, tmpfp); + +- if ((needpass && mutt_strcmp ("-----END PGP MESSAGE-----\n", buf) == 0) || ++ if ((needpass && mutt_strxcmp ("-----END PGP MESSAGE-----\n", buf) == 0) || + (!needpass +- && (mutt_strcmp ("-----END PGP SIGNATURE-----\n", buf) == 0 +- || mutt_strcmp ("-----END PGP PUBLIC KEY BLOCK-----\n",buf) == 0))) ++ && (mutt_strxcmp ("-----END PGP SIGNATURE-----\n", buf) == 0 ++ || mutt_strxcmp ("-----END PGP PUBLIC KEY BLOCK-----\n",buf) == 0))) + break; + /* remember optional Charset: armor header as defined by RfC4880 */ + if (mutt_strncmp ("Charset: ", buf, 9) == 0) +@@ -746,11 +746,11 @@ static int pgp_check_traditional_one_bod + { + if (mutt_strncmp ("-----BEGIN PGP ", buf, 15) == 0) + { +- if (mutt_strcmp ("MESSAGE-----\n", buf + 15) == 0) ++ if (mutt_strxcmp ("MESSAGE-----\n", buf + 15) == 0) + enc = 1; +- else if (mutt_strcmp ("SIGNED MESSAGE-----\n", buf + 15) == 0) ++ else if (mutt_strxcmp ("SIGNED MESSAGE-----\n", buf + 15) == 0) + sgn = 1; +- else if (mutt_strcmp ("PUBLIC KEY BLOCK-----\n", buf + 15) == 0) ++ else if (mutt_strxcmp ("PUBLIC KEY BLOCK-----\n", buf + 15) == 0) + key = 1; + } + } +@@ -1296,9 +1296,9 @@ BODY *pgp_sign_message (BODY *a) + */ + while (fgets (buffer, sizeof (buffer) - 1, pgpout) != NULL) + { +- if (mutt_strcmp ("-----BEGIN PGP MESSAGE-----\n", buffer) == 0) ++ if (mutt_strxcmp ("-----BEGIN PGP MESSAGE-----\n", buffer) == 0) + fputs ("-----BEGIN PGP SIGNATURE-----\n", fp); +- else if (mutt_strcmp("-----END PGP MESSAGE-----\n", buffer) == 0) ++ else if (mutt_strxcmp("-----END PGP MESSAGE-----\n", buffer) == 0) + fputs ("-----END PGP SIGNATURE-----\n", fp); + else + fputs (buffer, fp); diff --git a/mutt-1.5.9i-pgpewrap.diff b/mutt-1.5.9i-pgpewrap.diff new file mode 100644 index 0000000..e30231b --- /dev/null +++ b/mutt-1.5.9i-pgpewrap.diff @@ -0,0 +1,18 @@ +--- + pgpewrap.c | 5 +++++ + 1 file changed, 5 insertions(+) + +--- pgpewrap.c ++++ pgpewrap.c 2019-11-13 13:00:01.256398592 +0000 +@@ -57,6 +57,11 @@ int main(int argc, char **argv) + } + *opt = NULL; + ++ if (opts[0] == NULL) ++ { ++ fprintf(stderr, "Command line usage: %s [flags] -- prefix [recipients]\n", argv[0]); ++ return 1; ++ } + execvp(opts[0], opts); + perror(argv[0]); + return 2; diff --git a/mutt-1.6.1-opennfs.dif b/mutt-1.6.1-opennfs.dif new file mode 100644 index 0000000..b592171 --- /dev/null +++ b/mutt-1.6.1-opennfs.dif @@ -0,0 +1,244 @@ +--- + Makefile.am | 4 - + mbox.c | 5 ++ + mh.c | 9 +++- + mutt.h | 3 + + muttlib.c | 6 ++ + opennfs.c | 122 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + sendlib.c | 4 + + 7 files changed, 149 insertions(+), 4 deletions(-) + +--- Makefile.am ++++ Makefile.am 2020-01-14 13:28:45.787807571 +0000 +@@ -34,7 +34,7 @@ mutt_SOURCES = \ + 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 \ ++ main.c mbox.c menu.c mh.c mx.c opennfs.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 \ +@@ -99,7 +99,7 @@ mutt_dotlock_SOURCES = mutt_dotlock.c + mutt_dotlock_LDADD = $(LIBOBJS) + mutt_dotlock_DEPENDENCIES = $(LIBOBJS) + +-mutt_pgpring_SOURCES = pgppubring.c pgplib.c lib.c extlib.c sha1.c md5.c pgppacket.c ascii.c ++mutt_pgpring_SOURCES = opennfs.c pgppubring.c pgplib.c lib.c extlib.c sha1.c md5.c pgppacket.c ascii.c + mutt_pgpring_LDADD = $(LIBOBJS) $(LIBINTL) + mutt_pgpring_DEPENDENCIES = $(LIBOBJS) $(INTLDEPS) + +--- mbox.c ++++ mbox.c 2020-01-14 13:30:35.969760118 +0000 +@@ -893,8 +893,13 @@ static int mbox_sync_mailbox (CONTEXT *c + /* Create a temporary file to write the new version of the mailbox in. */ + tempfile = mutt_buffer_pool_get (); + mutt_buffer_mktemp (tempfile); ++#if defined(__linux__) ++ if ((i = opennfs (mutt_b2s (tempfile), O_WRONLY | O_EXCL | O_CREAT, 0600)) == -1 || ++ (fp = fdopen (i, "w")) == NULL) ++#else + if ((i = open (mutt_b2s (tempfile), O_WRONLY | O_EXCL | O_CREAT, 0600)) == -1 || + (fp = fdopen (i, "w")) == NULL) ++#endif + { + if (-1 != i) + { +--- mh.c ++++ mh.c 2020-01-14 13:28:45.787807571 +0000 +@@ -369,7 +369,11 @@ static int mh_mkstemp (CONTEXT * dest, F + { + mutt_buffer_printf (path, "%s/.mutt-%s-%d-%d", + dest->path, NONULL (Hostname), (int) getpid (), Counter++); ++#if defined(__linux__) ++ if ((fd = opennfs (mutt_b2s (path), O_WRONLY | O_EXCL | O_CREAT, 0666)) == -1) ++#else + if ((fd = open (mutt_b2s (path), O_WRONLY | O_EXCL | O_CREAT, 0666)) == -1) ++#endif + { + if (errno != EEXIST) + { +@@ -1559,8 +1563,11 @@ static int maildir_open_new_message (MES + + dprint (2, (debugfile, "maildir_open_new_message (): Trying %s.\n", + mutt_b2s (path))); +- ++#if defined(__linux__) ++ if ((fd = opennfs(mutt_b2s (path), O_WRONLY | O_EXCL | O_CREAT, 0666)) == -1) ++#else + if ((fd = open (mutt_b2s (path), O_WRONLY | O_EXCL | O_CREAT, 0666)) == -1) ++#endif + { + if (errno != EEXIST) + { +--- mutt.h ++++ mutt.h 2020-01-14 13:28:45.787807571 +0000 +@@ -1221,4 +1221,7 @@ typedef struct + #include "lib.h" + #include "globals.h" + ++#if defined(__linux__) ++extern int opennfs(const char *, int, int); ++#endif + #endif /*MUTT_H*/ +--- muttlib.c ++++ muttlib.c 2020-01-14 13:28:45.787807571 +0000 +@@ -2562,6 +2562,10 @@ int safe_open (const char *path, int fla + BUFFER *safe_file = NULL; + BUFFER *safe_dir = NULL; + ++#if defined(__linux__) ++ if ((fd = opennfs (path, flags, 0600)) < 0) ++ return fd; ++#else + if (flags & O_EXCL) + { + safe_file = mutt_buffer_pool_get (); +@@ -2590,7 +2594,7 @@ int safe_open (const char *path, int fla + + if ((fd = open (path, flags & ~O_EXCL, 0600)) < 0) + goto cleanup; +- ++#endif + /* make sure the file is not symlink */ + if (lstat (path, &osb) < 0 || fstat (fd, &nsb) < 0 || + compare_stat(&osb, &nsb) == -1) +--- opennfs.c ++++ opennfs.c 2020-01-14 13:28:45.787807571 +0000 +@@ -0,0 +1,122 @@ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#ifndef NFS_SUPER_MAGIC ++# define NFS_SUPER_MAGIC 0x6969 ++#endif ++ ++int opennfs(const char *path, int flags, int mode) ++{ ++ char tmplock[NFS_MAXPATHLEN+1], sysname[256]; ++ char *slash, *ptr, *dir, *base, *clear = (char*)0; ++ struct stat ps, ts; ++ struct statfs fs; ++ ssize_t len; ++ int ret; ++ ++ if ((flags & (O_WRONLY|O_RDWR)) == 0) ++ goto safe; ++ ++ if ((flags & (O_EXCL|O_CREAT)) != (O_EXCL|O_CREAT)) ++ goto safe; ++ ++#if defined(O_NOFOLLOW) ++ flags |= O_NOFOLLOW; ++#endif ++ ++ ret = -1; ++ if ((clear = strdup(path)) == (char*)0) ++ goto err; ++ dir = dirname(clear); ++ ++ if ((ret = (statfs(dir, &fs))) < 0) ++ goto err; ++ ++ if (fs.f_type != NFS_SUPER_MAGIC) ++ goto safe; ++ ++ if ((ret = gethostname(sysname, sizeof(sysname))) < 0) ++ goto err; ++ ++ ret = -1; ++ ptr = &tmplock[0]; ++ if (((len = snprintf(ptr, NFS_MAXPATHLEN, "%s/.%s-XXXXXX", dir, sysname)) < 0) || (len >= NFS_MAXPATHLEN)) ++ goto err; ++ ptr += len; ++ slash = ptr; ++ ++ free(clear); ++ clear = (char*)0; ++ ++ if (mkdtemp(tmplock) == (char*)0) ++ goto err; ++ ++ ret = -1; ++ if ((clear = strdup(path)) == (char*)0) ++ goto rmd; ++ base = basename(clear); ++ ++ ret = -1; ++ if (((len = snprintf(ptr, NFS_MAXPATHLEN - len, "/%s", base)) < 0) || (len >= (NFS_MAXPATHLEN - len))) ++ goto rmd; ++ ++ free(clear); ++ clear = (char*)0; ++ ++ if ((ret = open(tmplock, flags, mode)) < 0) ++ goto rmd; ++ ++ errno = 0; ++ do { ++ len = write(ret, "0", 2); ++ } while ((len < 0) && (errno == EINTR)); ++ close(ret); ++ ++ ret = -1; ++ errno = EBADF; ++ if (len != 2) ++ goto unl; ++ ++ errno = 0; ++ if ((ret = lstat(tmplock, &ts)) < 0) ++ goto unl; ++ ++ if (((ret = link(tmplock, path)) < 0) && (errno == EEXIST)) ++ goto unl; ++ ++ if ((ret = lstat(path, &ps)) < 0) ++ goto unl; ++ ++ ret = -1; ++ errno = EEXIST; ++ if (ps.st_nlink != 2) ++ goto unl; ++ if ((ps.st_rdev != ts.st_rdev) || (ps.st_ino != ts.st_ino)) ++ goto unl; ++ ++ errno = 0; ++ flags |= O_TRUNC; ++ flags &= ~(O_EXCL|O_CREAT); ++ ret = open(path, flags, mode); ++unl: ++ unlink(tmplock); ++rmd: ++ *slash = '\0'; ++ rmdir(tmplock); ++err: ++ if (clear) free(clear); ++ return ret; ++safe: ++ if (clear) free(clear); ++ return open(path, flags, mode); ++} +--- sendlib.c ++++ sendlib.c 2020-01-14 13:28:45.787807571 +0000 +@@ -2589,7 +2589,11 @@ send_msg (const char *path, char **args, + if (SendmailWait >= 0 && tempfile && *tempfile) + { + /* *tempfile will be opened as stdout */ ++#if defined(__linux__) ++ if (opennfs(*tempfile, O_WRONLY | O_APPEND | O_CREAT | O_EXCL, 0600) < 0) ++#else + if (open (*tempfile, O_WRONLY | O_APPEND | O_CREAT | O_EXCL, 0600) < 0) ++#endif + _exit (S_ERR); + /* redirect stderr to *tempfile too */ + if (dup (1) < 0) diff --git a/mutt-2.2.13.tar.gz b/mutt-2.2.13.tar.gz new file mode 100644 index 0000000..2bc59cf --- /dev/null +++ b/mutt-2.2.13.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eb23faddc1cc97d867693f3a4a9f30949ad93765ad5b6fdae2797a4001c58efb +size 5539130 diff --git a/mutt-2.2.13.tar.gz.asc b/mutt-2.2.13.tar.gz.asc new file mode 100644 index 0000000..c705a23 --- /dev/null +++ b/mutt-2.2.13.tar.gz.asc @@ -0,0 +1,16 @@ +-----BEGIN PGP SIGNATURE----- + +iQIzBAABCgAdFiEEiXWpszqjeRA4XFMIre92hIAxa9oFAmXsOmQACgkQre92hIAx +a9qIgRAAx7qmqdcvjqHRnvkzvA2QFZ7secrn9f9bxBTjbmzLiQ3w/LFDLJjulZ46 +9Qxes13ZO8K446zqqx+Wkr8n0kCDOOSwhbQzZFoFjQAu/NRbmoO6KyJ6jIPdGD+h +x9OXnRKsQqFYkzJi6wRqomGzHda5fo5EF5J+wf+NNoxnAg/FO/9AfPnY9OucsVDL +FtGGtt+Zk9ViqOiVflbRS3WSdA7sXcnCFikwMg3w20KSD+V3yD9TSkExuvm+mAYU +b6aRgzJSP3tOldEnSoTBIOr7seuIZk3G9E9/ZG/8fa1o0I/qFg6n0anlBCnP00sO +w+0NFaAHgoXrnXS67sKF0E7Ry19nxM9CEiD6LxrCj1MybLkOnE3/jtuE98Sur9Rn +qtR5frQ3y1KCFHL/GT8cohhn7tcNQH8D6moTMB3pHvoKdFj777u/WeOgU6mtly11 +WVmws+GCeXOf/DuvwzbDmLGl/gz/njpoGgY6oD0NPjL6IJMIsxUO2wOmZ0/RgOuP +iDYZTeBBnKRitx4j3Z33Ak8aNJgq//qzXX1ZSd/Y3jDcv7auGc8BMpd7QuYfQbIg +BDA/Im0Nji9lFeQHw7F8DPZjK4Q1faYDPaIexfxDLpdpTxEqLs+bf2iGkKlIOioa +kDoAHywyuOiOf7dSqC3D8icib7WgJlyYe4a/8P5QQJJKtIUal+k= +=e91b +-----END PGP SIGNATURE----- diff --git a/mutt-Fix-SIGQUIT-handling.patch b/mutt-Fix-SIGQUIT-handling.patch new file mode 100644 index 0000000..f1d80f6 --- /dev/null +++ b/mutt-Fix-SIGQUIT-handling.patch @@ -0,0 +1,57 @@ +From 6fa7a74c23760283282fd8b369d2b7b0fae69fec Mon Sep 17 00:00:00 2001 +From: Michal Suchanek +Date: Tue, 12 Nov 2019 14:21:21 +0100 +Subject: [PATCH] Fix SIGQUIT handling. + +SIGQUIT is not masked in mutt_block_signals. This is not consistent with +SIGTERM/SIGINT handling. + +When quit = ask-yes is set the SIGQUIT handler does not ask. Use the +SIGINT handler for handling SIGQUIT as well to fix this. + +Signed-off-by: Michal Suchanek +--- + signal.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +--- signal.c ++++ signal.c 2019-11-14 08:40:31.823464569 +0000 +@@ -170,6 +170,7 @@ static void sighandler (int sig) + break; + #endif + ++ case SIGQUIT: + case SIGINT: + SigInt = 1; + break; +@@ -199,7 +200,6 @@ void mutt_signal_init (void) + act.sa_handler = exit_handler; + sigaction (SIGTERM, &act, NULL); + sigaction (SIGHUP, &act, NULL); +- sigaction (SIGQUIT, &act, NULL); + + /* we want to avoid race conditions */ + sigaddset (&act.sa_mask, SIGTSTP); +@@ -219,6 +219,7 @@ void mutt_signal_init (void) + + sigaction (SIGCONT, &act, NULL); + sigaction (SIGTSTP, &act, NULL); ++ sigaction (SIGQUIT, &act, NULL); + sigaction (SIGINT, &act, NULL); + #if defined (USE_SLANG_CURSES) || defined (HAVE_RESIZETERM) + sigaction (SIGWINCH, &act, NULL); +@@ -258,6 +259,7 @@ void mutt_block_signals (void) + sigaddset (&Sigset, SIGTERM); + sigaddset (&Sigset, SIGHUP); + sigaddset (&Sigset, SIGTSTP); ++ sigaddset (&Sigset, SIGQUIT); + sigaddset (&Sigset, SIGINT); + #if defined (USE_SLANG_CURSES) || defined (HAVE_RESIZETERM) + sigaddset (&Sigset, SIGWINCH); +@@ -358,5 +360,6 @@ void mutt_allow_interrupt (int dispositi + if (disposition == 0) + sa.sa_flags |= SA_RESTART; + #endif ++ sigaction (SIGQUIT, &sa, NULL); + sigaction (SIGINT, &sa, NULL); + } diff --git a/mutt.changes b/mutt.changes new file mode 100644 index 0000000..400d045 --- /dev/null +++ b/mutt.changes @@ -0,0 +1,2909 @@ +------------------------------------------------------------------- +Mon Jul 15 08:13:13 UTC 2024 - Dr. Werner Fink + +- Remove patch aw.listreply.diff as it conflicts with builtin + feature +- Build and install pdf doc + +------------------------------------------------------------------- +Mon Jul 15 06:44:09 UTC 2024 - Dr. Werner Fink + +- Require some cyrus-sasl plugins to make the cyrus-sasl feature + of mutt function (boo#1227731) + +------------------------------------------------------------------- +Mon Jun 3 12:11:28 UTC 2024 - Dr. Werner Fink + +- Update to mutt 2.2.13 (Bug fix release) + * Fix smtp client to respect $use_envelope_from option. The code + was only looking to see if $envelope_from_address had a value, + not if $use_envelope_from was set. + Add extra safety checks to make sure the mailbox value isn't NULL. + * Fix smtp client $envelope_from_address possible dangling pointer. + If the account-hook invoked by mutt_conn_find() modifies + $envelope_from_address, envfrom could point no longer point to the + address. + Move the mutt_conn_find() before the code that determines the envelope + from address. + +------------------------------------------------------------------- +Fri Feb 23 09:10:55 UTC 2024 - pgajdos@suse.com + +- Use %patch -P N instead of deprecated %patchN. + +------------------------------------------------------------------- +Tue Feb 20 09:53:45 UTC 2024 - Dr. Werner Fink + +- Only suggest smtp daemon at runtime. Nevertheless if not + installed user will face a a warning. +- Move /etc/Muttrc to /usr/share/mutt/Muttrc + +------------------------------------------------------------------- +Mon Oct 9 07:41:57 UTC 2023 - Dr. Werner Fink + +- Require a smtp daemon at build and runtime to work around + missing system /var/mail/ directory (boo#1216035) + +------------------------------------------------------------------- +Wed Sep 27 13:42:36 UTC 2023 - Dr. Werner Fink + +- Submit latest mutt 2.2.12 to SLE-15-SP6 for jira#PED-5580 + * Drop patches for boo#1172906, boo#1172935, CVE-2020-14093, + and CVE-2020-14154 now upstream + - 3e88866dc60b5fa6aaba6fd7c1710c12c1c3cd01.patch + + Prevent possible IMAP MITM via PREAUTH response. + - mutt-1.10.1-backport-mutt_ssl_gnutls-1.14.3.dif + to port mutt_ssl_gnutls.c from mutt 1.14.3 back + + expired certs not properly rejected with GnuTLS + + Side effect is support of TLSv1_3 is supported by gnutls + * Drop patch for bsc#1173197 c547433cdf2e79191b15c6932c57f1472bfb5ff4.dif + now upstream + - Fix CVE-2020-14954: STARTTLS buffering issue allowing man + in the middle attack of IMAP, SMTP and POP3 + * Drop patch for bsc#1179035, CVE-2020-28896.patch now upstream + - incomplete connection termination could lead to sending + credentials over unencrypted connections + * Drop patch for bsc#1179113 and boo#1179461 nofreeze-c72f740a.patch + now upstream + - Avoid that message with a million tiny parts can freeze MUA + for several minutes + * Drop patch for bsc#1181221, CVE-2021-3181 mutt-colon.patch now + upstream + - recipient parsing memory leak. This patch combines three + smaller commits + * Drop patch for bsc#1198518, CVE-2022-1328 uudecode-e5ed080c.patch + - fix a buffer overflow in uudecoder + * Drop patches now upstream + - CVE-2023-4874-part1.patch (bsc#1215189 for CVE-2023-4874) + - CVE-2023-4874-part2.patch (bsc#1215189 for CVE-2023-4874) + - CVE-2023-4875.patch (bsc#1215191 for CVE-2023-4875) + +------------------------------------------------------------------- +Tue Sep 12 07:15:52 UTC 2023 - Dr. Werner Fink + +- Update to mutt 2.2.12 (bsc#1215189 for CVE-2023-4874, + bsc#1215191 for CVE-2023-4875) + * 2.2.12 (2023-09-09): + Bug fix release. + * 2.2.11 (2023-08-18): + Bug fix release. + +------------------------------------------------------------------- +Mon Apr 17 06:49:36 UTC 2023 - Dr. Werner Fink + +- Use astrix instead of german u umlaut as point + +------------------------------------------------------------------- +Mon Apr 3 19:43:11 UTC 2023 - Dirk Müller + +- update to 2.2.10: + * Bug fix release. + * $message_id_format %r and %z expandos use a URL-safe Base64 encoding: + '-' and '_' instead of '+' and '/'. + +------------------------------------------------------------------- +Sun Dec 4 14:27:41 UTC 2022 - Dirk Müller + +- update to 2.2.9: + * Document the <1234> key syntax for bind. + * Fix non-printable keyname printing to use syntax. + * Move AM_PATH_GPG_ERROR before AM_PATH_GPGME. + * Update gpgme autoconf files to the latest versions. + * Adjust manual concerning IMAP Fcc in batch mode. + * Add explicit void to 0-parameter function definitions. + +------------------------------------------------------------------- +Mon Sep 12 08:50:33 UTC 2022 - Dr. Werner Fink + +- Refresh offsets of patches + * aw.listreply.diff + * mutt-1.10.1-imap.patch + * mutt-1.5.15-wrapcolumn.diff + * mutt-1.5.20-sendgroupreplyto.diff + * mutt-1.6.1-opennfs.dif + * patch-1.5.24.vk.pgp_verbose_mime + +------------------------------------------------------------------- +Wed Sep 7 15:52:06 UTC 2022 - Andreas Stieger + +- enable optional verbose debugging at run-time (boo#1203184) + +------------------------------------------------------------------- +Tue Aug 9 19:05:21 UTC 2022 - Dirk Müller + +- update to 2.2.7: + * This is a bug-fix release, fixing a $edit_headers bug on MacOS, along with + a few other small bugs. It also tightens the $query_command parser to + accept a single tab between fields, and changes $pager to accept a %s + expando. + +------------------------------------------------------------------- +Sat Jun 25 20:25:53 UTC 2022 - Dirk Müller + +- update to 2.2.6: + * This is a bug-fix release, fixing a variety of small issues + +------------------------------------------------------------------- +Sat Jun 4 08:27:54 UTC 2022 - Dirk Müller + +- update to 2.2.5: + * fixing two issues with libgsasl authentication. + * fixing some regressions with Maildir/mh mailbox path normalization that were + added in 2.2.0. Please see the UPDATING file for more details. + +------------------------------------------------------------------- +Tue Apr 19 10:50:23 UTC 2022 - Dr. Werner Fink + +- Update to mutt 2.2.3 (bsc#1198518 for CVE-2022-1328) + * Fix read past end of buf in is_mmnoask(). + * Fix strlen() assigns to be of type size_t where obvious. + * Flush iconv() in mutt_convert_string(). + * Add convert_string() size check. + * Fix integer overflow in mutt_convert_string(). + * Fix uudecode cleanup on unexpected eof. + * Fix uudecode buffer overflow. + * automatic post-release commit for mutt-2.2.2 + * Protect prompt completion memcpy() calls with a NULL check. + * Fix mutt.man formatting. + * Fix query menu tagging behavior. + * Fix some mailbox prompts to use mailbox history ring. + * automatic post-release commit for mutt-2.2.1 + * Fix ambiguity in translation + * Update the Polish translation for Mutt 2.2.0 + * Improve Turkish translations + * Fix mutt_paddstr() to properly filter unprintable chars. + * Change mailto_allow to be exact match only. + * Filter headers passed via the command line. + * Fix mbox.man asctime(3) reference. + * Clarify description of $local_date_header + * Don't queue IMAP close commands. + * Update Finnish translation. + * Updated Catalan translation. + * Updated Russian translation. + * Updated Ukrainian translation. + * Fix argc==0 handling. + * Update de.po. + * Update Turkish translations. + * Update Czech translation for mutt-2.2.0 + * Update translation files copyright string. + * Updated French translation. + * Fix $status_format documentation of $sort_thread_groups expando. + * Update source file copyright lines based on commit history. + * Update manual and program copyright notices. + * Updated French translation. + * Add very basic cd path completion. + * Simplify the mutt_select_file() call for MUTT_CMD completion. + * Add memcpy on MUTT_CMD completion to invoke the file selector. + * Enable $rfc2047_parameters by default. + * Set environ for sendmail execvp() call. + * Updated French translation. + * Convert SMTP cyrus sasl to use buffers. + * Move hard_redraw() after sendmail invocation. + * Revert "Add $reply_prefix." + * Add config.h dependency for keymap_defs.h generation. + * Force resort_init if $reply_regexp changes. + * Add $reply_prefix. + * Localize $reply_regexp. + * Fix $reply_regexp default value. + * Fix manual generation string_unescape() of backslash values. + * Improve Turkish translations + * Add pager REDRAW_FLOW redraw flag when popping a menu. + * Merge branch 'stable' + * Add new gsasl files to POTFILES.in. + * Add GNU SASL support for authentication. + * Add mutt_socket_buffer_readln(). + * Merge branch 'stable' + * simplify envelope subject handling code a little + * Update de.po + * Fix sidebar counters with $maildir_trash. + * Improve the statusbar modified flag for $maildir_trash. + * Ignore $delete when sync'ing with $maildir_trash set. + * Fix unused variable warning. + * Allow an empty To: address prompt. + * Convert COLOR_DEFAULT constant to -1. + * [Fix] poll to use PollFdsCount and no PollFdsLen + * Add a few mutt variable configure dependency comments. + * Fix color object case insensitive comparisons. + * Correct multipart/alternative manual section slightly. + * Add internal mutt_ctime() implementation. + * Improve pattern compiler whitespace skipping. + * Updated French translation. + * Remove trailing slashes when opening maildir/mh mailboxes. + * Note that IMAP mailboxes polling doesn't support flag counts. + * Add $attach_save_charset_convert quadoption. + * Remove unneeded type save/restores around mutt_decode_attachment(). + * Improve smime_verify_one() error handling and general flow. + * Assert mutt_decode_attachment() doesn't modify body fields. + * Don't use subtraction for qsort numeric value comparisons. + * Fix alias menu multi-select documentation. + * Implement as in index menu. + * Use km_error_key() in index only for OP_NULL. + * Generate URLs with user/password as parsed. + * Ensure embedded IMAP passwords are stored in context->path. + * Updated French translation. + * Fix yesorno help prompt printing of choice. + * Add $compose_confirm_detach_first, default set. + * Add a comment about msn_seqset generation and header cache holes. + * Use cms utility for SMIME encryption/decryption. + * Improve conststrings.c generation, mainly for GNU Autoconf 2.71. + * Updated French translation. + * Merge branch 'stable' + * Update Esperanto translation. + * Add robustness checks to file attach functions. + * Prompt for password when using encrypted client certificate + * Lazily update header colors after a thread-flag update. + * Add $sort_thread_groups for top-level thread sorting. + * Make index sort compare functions independent from config variables. + * Improve generic menu type handling. + * Break the menu OPS/funcs and keybindings into separate tables. + * Enable nonl() mode for ncurses. closes #362. + * Revert "Silence strfcpy() warning in dotlock_deference_symlink()." + * Use memccpy() in the strfcpy macro if it's available. + * Fix typo in comment and function name: deference -> dereference. + * Silence strfcpy() warning in dotlock_deference_symlink(). + * Add dprint for a backtick expansion with non-0 exit code. + * Use SEEK_SET and SEEK_END for fseek/fseeko whence parameter. + * Rewrite mutt_apply_replace() to use buffers. + * Increase scratch buf size in mutt_canonical_charset(). + * Change hdrline make_from(_addr) to use snprintf for from. + * Silence compiler warning in _mutt_buffer_select_file(). + * Use memcpy in fseek_last_message() instead of strncpy. + * Fix mutt_sasl buffer size to hold ip_port strings. + * Silence imap_make_date() warning by switching to a BUFFER. + * Silence compiler "may be uninitialized" warnings. + * Updated French translation. + * Add a help choice '?' to the yes or no prompt for quadoptions. + * Filter out group delimiters for encrypt keylist generation. + * contrib/markdown2html: properly deal with lead-ins + * contrib/markdown2html: properly deal with missing context + * contrib/markdown: fix bug when dealing with quotelead classes + * Exit with a failure for any usage or version write error. + * Really fix usage and version write error checking. + * Fix usage and version write error checking. + * Add usage and version write error checking. + * Check stdout is a terminal in curses mode. + * Add a hard redraw after oauth authentication. + * Fix classic pgp decrypt_part() hard redraw on error. + * Reset SIGPIPE signal handler in child process before exec(). + * Add $pager_skip_quoted_context option. + * Updated French translation. + * Suggested translation changes. + * Directly add full mailbox to GPG search hints. +- Port patches mainly hunk offsets + * aw.listreply.diff + * mutt-1.10.1-imap.patch + * mutt-1.13.3.dif + * mutt-1.5.15-wrapcolumn.diff + * mutt-1.5.20-sendgroupreplyto.diff + * mutt-1.5.21-mailcap.diff + * mutt-1.5.23-carriage-return.path + * mutt-1.6.1-opennfs.dif + * mutt-Fix-SIGQUIT-handling.patch + * patch-1.5.24.vk.pgp_verbose_mime + * widechar.sidebar.dif + +------------------------------------------------------------------- +Mon Feb 7 10:22:43 UTC 2022 - Dr. Werner Fink + +- For iconv glibc-locale should be installed + +------------------------------------------------------------------- +Tue Jan 11 10:50:42 UTC 2022 - Dr. Werner Fink + +- Update to mutt 2.1.5 + * This is a bug-fix release, fixing two SMTP authentication + issues, a crash bug on NetBSD, and a couple other issues. + * Mutt 2.1.4 was released on December 11, 2021. This is a bug-fix + release, fixing a performance issue when used with DavMail. + * Mutt 2.1.3 was released on September 10, 2021. This is a + bug-fix release, fixing some of the fixes in the last release. IMAP + and QRESYNC users are advised to upgrade. + * Mutt 2.1.2 was released on August 24, 2021. This is an + important bug-fix release, fixing a potential data-loss IMAP + bug, a couple QRESYNC bugs, and a few other issues. IMAP users + are strongly advised to upgrade. + * Mutt 2.1.1 was released on July 12, 2021. This is a bug-fix + release, fixing some redraw issues and a problem with the new List + Menu for mbox mailboxes. + * Mutt 2.1.0 was released on June 12, 2021. This release has new + features and bug fixes. + ! The -d option allows a negative number. If negative, debug files are + not rotated. The debug level is the absolute value. + + in the attachment menu uses a copiousoutput mailcap + entry, or falls back to raw text. + + , , and functions added to the + compose menu. + + in the compose menu allows previewing the output + of the $send_multipart_alternative_filter the way does. + + , bound to Esc-L in the index and pager menu, brings + up a menu of operations to perform on mailing list emails, such as + subscribe/unsubscribe. + + , bound to 'H' in the pager, will skip to the first + blank line following the headers. + ! ~h patterns over IMAP and POP3 will only download the headers of the + message. However with message caching enabled (via $message_cachedir) + the whole message will still be downloaded. + + $ssl_verify_host_override allows manually specifying the host name + to verify a server certificate against. + ! --enable-hcache, with no particular backend enabled, will scan in + the order: kyotocabinet, tokyocabinet, lmdb, qdbm, gdbm, bdb. + ! $allow_ansi understands 256-color ANSI escape sequences. + + $message_id_format can be used to specify a custom message-id + format. Since it's a format string, this can also use a filter. + Please use this option with care, as Mutt won't check if your + message-id is legal. + ! mailboxes -nonotify will poll a mailbox for new mail, but will not + trigger new mail notifications (e.g. $beep_new or $new_mail_command). + ! $reverse_name affects tagged reply/forward/compose-to-sender + actions too. + ! ANSI sequences are filtered for inline-forwarded autoview content, + in addition to replies. + ! $forward_decrypt is now a quadoption, defaulting 'yes' for backward + compatibility. + ! Pattern functions, (e.g. search and limit) can be interrupted with + ctrl-c. + ! The default mailto_allow list now includes cc, in-reply-to, and + references. + + $sort_browser_mailboxes controls mailbox browsing, and defaults + "unsorted". $sort_browser now only controls directory browsing. + ! $sort_browser and $sort_browser_mailboxes "unsorted" now means the + order added (e.g. specified in the muttrc). Switching back to + "unsorted" will now resort in that order (previously it was a no-op.) + ! In the browser ".." is excluded from sorting and kept at the top. + ! Temp filenames generated for mailcap invocation now allow non-ascii + characters. + + $local_date_header, when unset, causes the date in the Date header + to be formatted using the GMT timezone. +- Port patches + * aw.listreply.diff + * bsc907453-CVE-2014-9116-jessie.patch + * mutt-1.10.1-imap.patch + * mutt-1.13.3.dif + * mutt-1.5.15-wrapcolumn.diff + * mutt-1.5.20-sendgroupreplyto.diff + * mutt-1.5.21-mailcap.diff + * mutt-1.5.23-carriage-return.path + * mutt-1.6.1-opennfs.dif + * patch-1.5.24.vk.pgp_verbose_mime + * widechar.sidebar.dif +- Add keyring and signing of the tarball + +------------------------------------------------------------------- +Wed Jul 14 11:07:24 UTC 2021 - Dr. Werner Fink + +- Add mutt_oauth2.py ported to python 3.6 +- If required the package will include a backport to support + fromisoformat of the python class datetime + +------------------------------------------------------------------- +Tue Jul 13 14:37:42 UTC 2021 - Dr. Werner Fink + +- Correct gpg usage of skeleton muttrc +- Append the gpg usage to system wide Muttrc (boo#1188235) + +------------------------------------------------------------------- +Fri May 7 07:09:24 UTC 2021 - Dr. Werner Fink + +- Update to mutt 2.0.7 + * Update UPDATING file for 2.0.7. + * Fix seqset iterator when it ends in a comma (boo#1185705, CVE-2021-32055) + * Filter unprintables for 2231 encoded continuations too. + * Turn off pylint in gitlab-ci. + * Check if mutt_prepare_template() fails for -H command line arg. + * Fix resolve_types() newline removal and restoration. + * automatic post-release commit for mutt-2.0.6 +- Fix offset of patch mutt-1.5.21-mailcap.diff + +------------------------------------------------------------------- +Thu Mar 18 05:08:57 UTC 2021 - Andreas Stieger + +- mutt 2.0.6: + * Fix problems with hook processors + * Fix pattern compilation error for ~( !~>(~P) ) + * Fix contrib/markdown2html crash + * Fix yesorno prompt for autocrypt account creation + * Correctly handle CTRL-G on remaining background_edit sessions + prompt +- remove self-obsoletion on muttssl, last use in 2000. + +------------------------------------------------------------------- +Fri Jan 22 16:52:40 UTC 2021 - Andreas Stieger + +- mutt 2.0.5: + * CVE-2021-3181: recipient parsing memory leak (boo#1181221) + * fix other memory leak in IMAP code + * Fix color overlay when HAVE_COLOR is unset + +------------------------------------------------------------------- +Thu Dec 31 08:26:40 UTC 2020 - Andreas Stieger + +- mutt 2.0.4: + * Fix smtp debug segfault on invalid SmtpAuthenticators list + * Fix header cache BDB version checking + * Fix offset to use LOFF_T in a couple places + * Ensure idata->check_status is cleared on mailbox close + * Abort IMAP open if condstore/qresync updates fetch fails +- drop upstreamed bug-676388-largefile.patch + +------------------------------------------------------------------- +Sat Dec 5 17:42:33 UTC 2020 - Andreas Stieger + +- mutt 2.0.3: + * Fix pager dropped input on SigWinch flag handling + * Fix REPLY_TO environment variable handling + * Fix undefined NULL pointer arithmetic + * Fix exact-address recording of last value + * Fix exact-address handling when addr->personal is set + +------------------------------------------------------------------- +Fri Nov 20 22:13:06 UTC 2020 - Andreas Stieger + +- update to 2.0.2: + * CVE-2020-28896: Ensure IMAP connection is closed after a + connection error to avoid sending credentials over an + unencrypted connection boo#1179035 + +------------------------------------------------------------------- +Tue Nov 10 09:10:53 UTC 2020 - Dr. Werner Fink + +- update to 2.0.0 (2020-11-07): + + Domain-literal support for email addresses, e.g user@[IPv6:fcXX:...] + ! Buffy completion only occurs for the "change-folder" set of functions. + It has been disabled for , , the fcc + mailbox prompt, and the autocrypt scan mailbox prompt. + ! The "save/copy message to mailbox" set of functions use the "mailbox" + history list, instead of the "filename" list. + ! Message-ID extraction permits values missing angle brackets and '@' + to allow properly threading the garbage sent by some providers. + Mutt will add missing angle brackets when sending out replies, however. + ! When adding multiple attachments, via in the compose menu, + the browser menu can be exiting via after tagging the files. + Previously, had to be used. + ! ctrl-p/ctrl-n are by default bound to / in the + editor menu. + + The "cd" command allows changing the current working directory. + As part of this, Mutt expands relative paths internally. There + may be a change to some "prettified" relative paths because of this. + ! Some configuration variable default values are localizable by + translators. Currently these are: $attribution, $compose_format, + $forward_attribution_intro, $forward_attribution_trailer, $status_format, + $ts_icon_format, $ts_status_format. + + Mutt will try to automatically reconnect to an IMAP mailbox on error, + and will merge unsync'ed changes if possible. + ! $crypt_protected_headers_subject defaults to "...", following the + protected headers revised specification. + ! Date, From, To, Cc, and Reply-To headers are stored as protected headers. + + XOAUTH2 support. Please see the manual, contrib script mutt_oauth2.py, + and mutt_oauth.py.README for more details. + + $tunnel_is_secure, default set, assumes a connection via $tunnel is + encrypted. Unsetting this will cause $ssl_starttls and $ssl_force_tls + to be respected. + + Patterns are tab-completable in the editor menu. + ! $reply_to is consulted before $reply_self. + + $copy_decode_weed, default unset, controls header weeding for + and . + + $pipe_decode_weed, default set, enables header weeding for . + + $print_decode_weed, default set, enables header weeding for . + ! format=flowed attachments are space-unstuffed when viewed, saved, + piped, and printed. + + The "run" command will execute MuttLisp. $muttlisp_inline_eval, if set, will + execute unquoted parenthesized command arguments as MuttLisp. Please see + the manual for more details about both. + + $cursor_overlay, when set, will overlay the indicator, tree, + sidebar_highlight, and sidebar_indicator colors onto the current line. + "default" colors will be overridden and attributes will be merged. + ! The message-id generation algorithm uses a random number instead of + the step counter and PID. + ! $ssl_force_tls defaults set. (Trying this again for 2.0). + ! $hostname is set *after* muttrc processing. It can be manually set + in the muttrc to avoid using DNS calls to obtain the FQDN. + + $attach_save_dir specifies a directory to use when saving attachments. +- Port the patches to mutt 2.0.0 + * aw.listreply.diff + * bug-676388-largefile.patch + * mutt-1.10.1-imap.patch + * mutt-1.13.3.dif + * mutt-1.5.15-wrapcolumn.diff + * mutt-1.5.20-sendgroupreplyto.diff + * mutt-1.5.21-mailcap.diff + * mutt-1.5.23-carriage-return.path + * mutt-1.6.1-opennfs.dif + * mutt-Fix-SIGQUIT-handling.patch + * patch-1.5.24.vk.pgp_verbose_mime + * widechar.sidebar.dif + +------------------------------------------------------------------- +Thu Sep 17 19:00:58 UTC 2020 - Dirk Mueller + +- update to 1.14.7: + * Bug fix release. + +------------------------------------------------------------------- +Sat Aug 15 06:32:50 UTC 2020 - Andreas Stieger + +- mutt 1.14.6: + * fix bug where atimes were not being properly reset for mailbox + entries + * Remove $ssl_starttls check for IMAP PREAUTH + * Don't check IMAP PREAUTH encryption if $tunnel is in use + +------------------------------------------------------------------- +Mon Jun 22 13:57:52 UTC 2020 - Dr. Werner Fink + +- Update to 1.14.4 - bug-fix release (boo#1173197, CVE-2020-14954) + * Fix STARTTLS response injection attack. + +------------------------------------------------------------------- +Mon Jun 15 15:05:52 UTC 2020 - Werner Fink + +- Update to 1.14.3 - bug-fix release (boo#1172906, boo#1172935, + CVE-2020-14093, CVE-2020-14154) + * Prevent possible IMAP MITM via PREAUTH response. + * expired where certs not properly rejected with GnuTLS + * Fix GnuTLS interactive prompt short-circuiting. + * Abort GnuTLS certificate check if a cert in the chain is rejected. + * Fix GnuTLS tls_verify_peers() checking. + * Fix GNUTLS_E_NO_CERTIFICATE_FOUND check to be against verify_ret + instead of certstat. + * Fix gnutls_strerror() call to use verify_ret instead of certstat. +- Modify/refresh patches + * aw.listreply.diff + * bsc907453-CVE-2014-9116-jessie.patch + * bug-676388-largefile.patch + * mutt-1.10.1-imap.patch + * mutt-1.13.3.dif + * mutt-1.5.15-wrapcolumn.diff + * mutt-1.5.20-sendgroupreplyto.diff + * mutt-1.5.21-mailcap.diff + * mutt-1.5.23-carriage-return.path + * mutt-1.5.9i-pgpewrap.diff + * mutt-1.6.1-opennfs.dif + * mutt-Fix-SIGQUIT-handling.patch + * patch-1.5.24.vk.pgp_verbose_mime + * widechar.sidebar.dif + +------------------------------------------------------------------- +Mon May 25 11:54:08 UTC 2020 - Paolo Stivanin + +- Update to 1.14.1: + * bug-fix release, fixing a documentation build issue and a few other small bugs + +------------------------------------------------------------------- +Mon May 4 12:09:39 UTC 2020 - Paolo Stivanin + +- Update to version 1.14.0 + * $imap_check_subscribed will fetch the set of subscribed folders from + your server on connection. + * IMAP server-side simple string search using '=' instead of '~'. + ('=' also provides local simple string search.) + * IMAP IDLE support and $imap_idle + * function + * S/MIME support. Please see contrib/smime.rc for suggested settings. + * GPGME support via $crypt_use_gpgme + * Ability to encrypt postponed messages. See $postpone_encrypt and + $postpone_encrypt_as. + * GnuPG fingerprints are used internally when possible. + * $crypt_opportunistic_encrypt automatically enables/disables encryption + based on message recipients. + * IDNA support. Options $idn_decode and $idn_encode control whether + mutt will decode and encode international domains using IDNA. + * SMTPUTF8 support. Support for utf-8 domains without IDNA encoding. + To use this, unset idn_encode. + * $assumed_charset, $attach_charset, $ignore_linear_white_space + * Header caching for IMAP and Maildir. See $header_cache for more details. + * Internal ESMTP relay support. See $smtp_url. + * $mail_check_recent controls whether all unread mail or only new mail + since the last mailbox visit will be reported as new + * Support for saving history across sessions. See $save_history, + $history_file. + * More search patterns: + + thread patterns. Use ~(...) to match all threads that + contain a message that matches ... + + ~l matches all known lists, ~u only subscribed. + + ~$ pattern matches unreferenced messages. + + ~V pattern matches cryptographically verified messages. + * Improved flowed text support: $reflow_text, $reflow_wrap, + $reflow_space_quotes. + * $braille_friendly option will place the cursor at the beginning of + the current line in menus. + * Full large file support. + * Terminal status-line (TS) support, a.k.a. xterm title. see the + following variables: $ts_enabled, $ts_icon_format, $ts_status_format + * Generic spam detection: new configuration commands: 'spam' and + 'nospam', new options: $spam_separator, new expando: %H (for + $index_format), new pattern: ~H pattern + * New command line options: + + -A command line option for alias expansion. + + -D will print the value of all variables. + + -E command line option to edit draft and include files. + + -Q queries configuration variables + * New functions: + + you can edit threads via and + + lists mailboxes with new mail. + + displays the keycode for a key press. + + and + + and + * $resume_draft_files and $resume_edited_draft files control how + draft files are processed. + * $narrow_tree makes the thread tree narrower. + * new and changed hooks: reply-hook, send2-hook. crypt-hook can be + specified multiple times for the same regexp. + * The $alternates option has turned into the 'alternates' command. + * mime_lookup command specifies a list of MIME types that should not + be treated according to their mailcap entry + +------------------------------------------------------------------- +Mon Apr 20 10:29:04 UTC 2020 - Ismail Dönmez + +- Update to version 1.13.5 (2020-03-28) + * Fix use-after-free in mutt_str_replace() + * Fix format string parameters. + +------------------------------------------------------------------- +Tue Feb 18 09:23:40 UTC 2020 - Ismail Dönmez + +- Update to version 1.13.4 (2020-02-15) + * $ssl_force_tls reverted to default unset. Defaulting this set + was overly optimistic, and caused breakage. + +------------------------------------------------------------------- +Thu Jan 30 13:54:17 UTC 2020 - Dr. Werner Fink + +- Be aware that it might be that the version is not found (boo#1162245) + +------------------------------------------------------------------- +Tue Jan 28 13:42:02 UTC 2020 - Dr. Werner Fink + +- Add version check, that is if installed mutt version does not + fit the installing version then do notify message + +------------------------------------------------------------------- +Tue Jan 28 10:13:24 UTC 2020 - Dr. Werner Fink + +- Add a notify message about behaviour/variable changes to inform + users about these (thanks to Roger Whittaker) + +------------------------------------------------------------------- +Tue Jan 14 14:53:05 UTC 2020 - Dr. Werner Fink + +- Update to mutt 1.13.3 (2020-01-07): + * Fix crash when polling a closed ssl connection. + * Turn off auto-clear outside of autocrypt initialization. + * automatic post-release commit for mutt-1.13.2 + * Revert "Fixes unchecked return from link() in dotlock.c" + * automatic post-release commit for mutt-1.13.1 + * Fix segv in IMAP postponed menu caused by reopen_allow. + * Fix imap postponed mailbox use-after-free error. + * Rename sidebar mailbox shortcuts option and default off. + * Make shortpath/indent code guards explicit. + * Create $sidebar_relative_shortpath_indent, default unset. + * Fix new option order in the manual. + * Add $sidebar_use_mb_shortcuts to turn off shortcuts. + * Minor documentation fixes. + * automatic post-release commit for mutt-1.13.0 + * Change "Prf Enc" to "Prf Encr". + * Update de.po + * Update copyright year + * Update ja.po + * Clarify $write_bcc documentation. + * Add a bit more documentation about sending. + * Updated Catalan translation. + * Updated Czech translation. + * Updated Russian translation. + * Updated Ukrainian translation. + * Updated Danish translation. + * Update de.po + * Fix $fcc_attach to not prompt in batch mode. + * Change $send_multipart_alternative to run in batch mode on ask-yes. + * allow autoview preview of multipart/alternative content + * add view-alt function, so now we have + + view-alt "v" + + view-alt-text "Esc v" + + view-alt-mailcap "V" + * Fix __attribute__((warn_unused_result)) issue in query.c + * Fix __attribute__((warn_unused_result)) issue in help.c + * Fix __attribute__((warn_unused_result)) warning in enter.c + * Fixes unchecked return from link() in dotlock.c + * Update patchlist.sh to support `guilt' patch queues + * Add gcc comments for fallthrough case statements. + * Add $count_alternatives to count attachments inside alternatives. + * Remove nonreentrant calls from exit_handler() + * Add markdown2html contrib script. + * Remove input buffer flush on sigwinch in index. + * Fix sigwinch race in the index and menu processor. + * Change $write_bcc to default off. + * Block multipart type alternatives generation. + * s/Mercurial/Git/ in INSTALL + * Ensure APP_PGP flag is enabled for autocrypt. + * Add ability to generate multipart/alternative using a filter script. + * Create multipart/mixed helpers. + * mutt_parse_content_type: work around annoying charset behaviour from Outlook + * Convert smime_decrypt_mime() to use buffer pool. + * Convert smime_handle_entity() to use buffers. + * Convert smime_verify_one() to use buffer pool. + * Convert smime_sign_message() to use buffer pool. + * Convert smime_build_smime_entity() to use buffer pool. + * Convert smime_invoke_import() and helpers to use buffer pool. + * Convert smime_verify_sender() and helpers to use buffer pool. + * Convert smime_get_candidates() to use buffer pool. + * Convert mutt_write_fcc() to use buffer pool. + * Convert _mutt_bounce_message to use buffer pool. + * Convert send_msg() $sendmail_wait to use buffer pool. + * Convert transform_to_7bit() to use buffer pool. + * Convert mutt_message_to_7bit() to use buffer. + * Convert fcc to a buffer. + * Convert send_message() to use buffer pool. + * Add typelen parameter to rfc1524_mailcap_lookup(). + * Convert rfc1524_mailcap_lookup() to use buffer pool for path. + * Convert mutt_attach_reply() to use buffer pool. + * Convert attach_forward_msgs() to use buffer pool. + * Convert attach_forward_bodies to use buffer pool. + * Convert attach_fmt %f to use buffer pool. + * Convert mutt_num_postponed() maildir check to use buffer pool. + * Convert pop_fetch_message() to use buffer pool. + * Convert pop_read_header() to use buffer pool. + * Convert pgp_find_hash to use buffer pool. + * Convert pgp_make_key_attachment() to use buffer pool. + * Remove make_key_attachment parameter. + * Convert pgp_select_key() to use buffer pool. + * Convert pgp_traditional_encryptsign() to use buffer pool. + * Convert pgp_encrypt_message() to use buffer pool. + * Convert pgp_encrypted_handler() to use buffer pool. + * Convert pgp_decrypt_mime() to use buffer pool. + * Convert pgp_decrypt_part() to use buffer pool. + * Convert pgp_extract_keys_from_attachment() to use buffer pool. + * Convert pgp_verify_one() to use buffer pool. + * Convert pgp_check_traditional_one_body() to use buffer pool. + * Clean up pager change folder aborts to return to pager. + * Remove menu->menu hack when redirecting pager ops through index. + * Stable branch quick fix for pager change-mailbox push/exec bug. + * Convert pgp_app_handler to use buffer pool. + * Convert msg_search to use buffer. + * Convert mx_close_mailbox() to use buffer pool. + * Reduce line buffer size in mx_get_magic(). + * Convert mutt_save_confirm() to use buffer pool. + * Removed unused mutt_expand_link() + * Change ssl_init to use buffer pool for rand filename. + * Convert mbox_sync_mailbox() to use buffer pool. + * Update mime fields when piping a message with $pipe_decode set. + * Add new browse-mailboxes function in index and pager. + * Convert main() to use buffers for paths. + * Add sticky browser behavior for sorting. + * Convert start_debug() to use buffer pool. + * Convert set/reset and source_rc to use buffers for paths. + * Convert parse_path_(un)list to use buffer pool for path. + * Change message cache id to use SHORT_STRING. + * Convert imap_cachepath() and callers to use buffers. + * Convert imap_open_new_message() to use buffer pool. + * Convert save-hook and fcc-hook to use buffer pool internally. + * Convert mutt_parse_hook() to use buffer pool. + * Convert shrink_histfile() tempfile to use buffer pool. + * Convert mutt_help() to use buffer for tempfile. + * Convert mutt_edit_headers() to use buffer pool. + * Fix built-in pager checks for help and attachments. + * Memcpy header cache fetch values to ensure alignment. + * Convert hcache delete and open calls to use buffer pool. + * Convert hcache fetch and store raw to use buffer pool. + * Convert hcache_open to use buffer pool. + * Convert hcache db4 lockfile to buffer. + * Convert run_decode_and_handler() to use buffer pool. + * Convert edit_one_message() to use buffer pool. + * Convert mutt_error_history to use buffer pool. + * Convert crypt_extract_keys and signed handler to use buffers. + * Convert crypt-gpgme to use BUFFER for tempfiles. + * Fix memory leak in compose write-fcc function. + * Convert compress setup_paths() to use buffer. + * Remove nonull check from _mutt_enter_fname() + * Convert compose menu fname variable to buffer. + * Convert buffer callers of mutt_get_field() to use buffer version. + * Create mutt_buffer_get_field(). + * Convert compose check_attachments() to use buffer pool. + * Fix mutt_save_message() "enter_fname()" to use buffer version. + * Convert mutt_complete() to use the buffer pool. + * Improve sidebar indentation and shortpath behavior. + * Convert print_attachment_list to use buffer pool. + * Convert recvattach save_attachment functions to use buffer pool. + * Convert mutt_save_message() to use buffer pool. + * Convert mutt_display_message() to buffer pool. + * Change browser to show full_path. + * Convert remaining mutt_encode_path() call to use BUFFER. + * Add $browser_sticky_cursor default set. + * Rename browser fields to display_name and full_path. + * Convert bcache to use buffer pools. + * Fix memory leak when attaching messages. + * Reuse the static space_stuff function for unstuffing. + * Remove manual note about space-stuffing only once. + * Re-enable and cleanup format-flowed space stuffing. + * Properly revert on an autocrypt postpone failure. + * de.po: proper translation for term collapse + * Clean up the autocrypt doc a bit more. + * Update autocrypt keyring documentation. + * Fix --with-sqlite3 test for autocrypt. + * Add $ssl_use_tlsv1_3 config variable, default set. + * Add size display configuration variables. + * Fix LibreSSL build. + * Update POTFILES.in. + * Add checks for buffered OpenSSL or GnuTLS data when polling. + * Mention base64 keydata being stored in the autocrypt database. + * Move LIBAUTOCRYPT before MUTTLIBS to fix building issues. + * Add autocrypt and sqlite3 to .gitlab-ci.yml. + * Add L10N comment about autocrypt menu help line abbreviations. + * Add a note about autocrypt first-run and macros. + * Add autocrypt documentation about shared key and keyring strategies. + * Minor autocrypt manual section updates. + * Enabled writing protected subject with autocrypt too. + * Turn off macro processing during autocrypt initialization. + * Allow nested setting of OPTIGNOREMACROEVENTS. + * Add $autocrypt_reply. + * Automatically clear screen when popping the last menu. + * Add ability to create autocrypt account from an existing key. + * Don't try to decrypt autocrypt messages if the option is off. + * Manual typo fix. + * Add autocrypt README file + * Add documentation for the autocrypt feature. + * Add option to scan mailboxes during first run. + * Add more translation string comments for autocrypt. + * Basic autocrypt account menu. + * Convert peer_update to just pass the peer object. + * Improve gen-map-doc work on multi-word maps. + * Add account->enabled checks. + * Add prefer-encrypt prompt during account creation. + * Add AUTOCRYPT header to imap fetch list. + * Add L10N translation message comments. + * Add autocrypt source files to POTFILES.in + * Print an error message if an autocrypt key can't be found. + * Handle autocrypt message decryption. + * Slightly improve the gossip header key update. + * Fix process_gossip_headers() to look at the right envelope. + * Autocrypt outgoing emails. + * Postpone work: + + Change mutt_protect() to have a postpone parameter. Remove the + manual toggling of the SIGN bit outside the call when postponing. + + + Since autocrypt doesn't set the SIGN bit, this allows us to turn off + signing inside mutt_protect() for both normal and autocrypt mode. + + + Set the autocrypt postpone key in AutocryptDefaultKey. + + * Write autocrypt and gossip headers in outgoing emails. + * Add autocrypt line to the compose menu. + * Add another HEADER security bit for autocrypt. + * Change gossip header address comparison to use normalized addresses. + * Change autocrypt_db normalization to return ADDRESS. + * Add gossip header processing. + * Convert to use sqllite3_prepare_v3(). + * Process autocrypt headers. + * Add autocrypt header parsing to mutt_parse_rfc822_line(). + * Convert parse_parameters() for autocrypt header usage: + + change to use a BUFFER to accomodate large autocrypt keydata + attribute values. + + Autocrypt header parameters are not rfc2231 compliant. Rather + than rolling another very similar function, just change the + existing one to allow space separation. + * Add initial autocrypt account setup. + * Factor out mutt_edit_address() in send.c. + * Start autocrypt gpgme. + * Add database and schema initialization. + * Add autocrypt config vars. + * Initial autoconf and makefile setup for autocrypt. + * Add a comment to the OPTIGNOREMACROEVENTS km_dokey() change. + * Change OPTIGNOREMACROEVENTS to actuallly ignore macros instead of throwing errors on macros + * Added * option to unattachments command + * Add builds.sr.ht CI manifests + * Fix a reference to HeaderCachePageSize. + * Omit User-Agent: header by default + * Remove unnecessary "" checks for DT_STR and DT_PATH MuttVars. + * Convert $header_cache_pagesize to type DT_LNUM. + * Convert Commands to use the union pointer_long_t too. + * Fix the makedoc program to cope with the new MuttVars format. + * Convert MuttVars.data and .init to use a union type. + * Detail the documentation of %l for index_format. + * Add NULL checks to rfc1524_free_entry(). + * Clean up mutt_print_attachment() cleanup. + * Remove mutt_rfc1524_expand_filename() return value and checks. + * Remove unnecessary strcmp for mutt_view_attachment(). + * Remove NULL and 0 INITVAL declarataions. + * Combine DT_STR and DT_PATH in mutt_set_default(). + * Remove UL "" initialization from init.h. + * Allow imap_cmd_finish() to both expunge and fetch new mail. + * Check for GNU Make to allow version.h FORCE target. + * Change --disable-doc to only skip manual generation. + * Remove EXTRACT_MACROS check from EXTRACT_NUMBER in regex. + * Rename --with-regex to --with-bundled-regex. + * Remove undefined left-shift on negative value from regex.c. + * Change mutt_addr_is_user() to no for a NULL address. + * Turn on $ssl_force_tls by default. + * make OP_HALF_{UP,DOWN} behave symmetric. +- Post the patches + * aw.listreply.diff + * bsc907453-CVE-2014-9116-jessie.patch + * bug-676388-largefile.patch + * mutt-1.10.1-imap.patch + * mutt-1.5.15-wrapcolumn.diff + * mutt-1.5.20-sendgroupreplyto.diff + * mutt-1.5.21-mailcap.diff + * mutt-1.5.23-carriage-return.path + * mutt-1.6.1-opennfs.dif + * mutt-Fix-SIGQUIT-handling.patch + * patch-1.5.24.vk.pgp_verbose_mime + * widechar.sidebar.dif +- Port and rename patch mutt-1.12.2.dif whic is now mutt-1.13.3.dif + +------------------------------------------------------------------- +Thu Nov 14 08:46:14 UTC 2019 - Dr. Werner Fink + +- Update to mutt 1.12.2 (2019-09-21): + + $fcc_before_send, when set, causes Fcc to occur before sending instead of + afterwards. When set, the message is saved as-sent; please see the + documentation for details. + ! $ssl_use_tlsv1 and $ssl_use_tlsv1_1 now default to unset. + + $auto_subscribe, when set, automatically adds an email with the List-Post + header to the subscribe list. + ! Fcc now occurs after sending a message. If the fcc fails, mutt will prompt + to try again, or to try another mailbox. + + Basic protected header ("memory hole") support added for the Subject header. + See the config vars: $crypt_protected_headers_read, + $crypt_protected_headers_save, $crypt_protected_headers_subject, + and $crypt_protected_headers_write. + ! Color names can be prefixed with "light" in addition to "bright". "bright" + colors are bold face, while "light" are non-bold. + ! Color commands can now include an attribute (e.g. bold, underline). + ! $pgp_use_gpg_agent defaults set. + + in the browser menu allows entering nested maildir + directories. + + replies to all, but preserves To recipients in the reply. + + $include_encrypted, default unset, prevents separately encrypted contents + from being included in a reply. This helps to prevent a decryption oracle + attack. + ! With gpgme >= 1.11, recipient keys with a trailing '!' now force subkey use, + as with classic gpg. + ! In send mode, %{charset} mailcap expansion uses the current charset of the + file. + + $imap_fetch_chunk_size allows fetching new headers in groups of this size. + This might help with timeouts during opening of huge mailboxes. + If you have huge mailboxes, you should also try $imap_qresync. + ! can be invoked from the pager too. + + The $forward_attachments quadoption allows including attachments in + inline-forwards (i.e. $mime_forward unset, $forward_decode set.) +- Add patch mutt-Fix-SIGQUIT-handling.patch for boo#1156477e + * Mutt has an option to ask before quitting on ^C but quits immediately on ^4 +- Port main patch, that is mutt-1.10.0.dif becomes now mutt-1.12.2.dif +- Refresh patches + * aw.listreply.diff + * bsc907453-CVE-2014-9116-jessie.patch + * bug-676388-largefile.patch + * mutt-1.10.1-imap.patch + * mutt-1.5.15-wrapcolumn.diff + * mutt-1.5.20-sendgroupreplyto.diff + Note that the new function behaves the same way without + hard setting the option send_group_reply_to + * mutt-1.5.21-mailcap.diff + * mutt-1.5.23-carriage-return.path + * mutt-1.5.9i-pgpewrap.diff + * mutt-1.6.1-opennfs.dif + * patch-1.5.24.vk.pgp_verbose_mime + * widechar.sidebar.dif + +------------------------------------------------------------------- +Sun Nov 10 13:34:03 UTC 2019 - Michal Suchanek + + Fix SIGQUIT handling (boo#1156477). + + mutt-Fix-SIGQUIT-handling.patch + +------------------------------------------------------------------- +Sat Feb 23 17:41:10 UTC 2019 - Dr. Werner Fink + +- Update to mutt 1.11.3 + * This is a bug-fix release, fixing compilation with LibreSSL + and various other bug fixes. + * Show top-level decoded smime text/plain parts. + * Improve attachment menu for s/mime parts. (closes #113) + * Fix tunnels to also retry and write full buffer. + * Fix raw socket read/write to follow expected behavior. + * Fix gnutls tls_socket_write() to properly retry. + * Update the muttrc man page with added commands. + * Wrap ssl init calls for LibreSSL too. +- Modify the patches + * mutt-1.10.0.dif + * mutt-1.5.23-carriage-return.path + +------------------------------------------------------------------- +Tue Jan 15 07:19:42 UTC 2019 - Dr. Werner Fink + +- Update to mutt 1.11.2 + * This is a bug-fix release, fixing compilation with the latest + OpenSSL version and various other bug fixes. + +------------------------------------------------------------------- +Wed Jan 2 14:14:18 UTC 2019 - Dr. Werner Fink + +- Update to mutt 1.11.1 + * Bug fix release. + * IMAP retrieves the Sender header by default. It doesn't need to be added + to $imap_headers. + * inotify is used for local mailbox monitoring on Linux. Configuration flag + --disable-filemonitor turns this off. + * OAUTHBEARER support for IMAP, SMTP and POP via + $imap_oauth_refresh_command, $smtp_oauth_refresh_command, and + $pop_oauth_refresh_command. + * $pgp_timeout and $smime_timeout support 32-bit numbers. + * manually updates mailbox statistics, the same way + $mail_check_stats does when set. + * Thread limited views, e.g. ~(pattern), now show new mail as it arrives. + * Command line argument -z and -Z options also work for IMAP mailboxes. + * $imap_condstore and $imap_qresync enable IMAP CONDSTORE and QRESYNC + support, respectively. QRESYNC should provide much faster mailbox opening. + * $abort_noattach skips quoted lines (as defined by $quote_regexp and + $smileys). + * Initial IMAP header downloading can be aborted with ctrl-c. + * composes a message to the sender of the selected + message, in the index or attachment menu. + * Address book queries ($query_format) now support multibyte characters. + * Finnish translation. + * pgpring has been renamed to mutt_pgpring. + * Certificate prompts show sha-256 instead of md5 fingerprints. + * Non-threaded $sort_aux "reverse-" settings now work properly. + * The manual can be generated and installed in GNU Info format. + * index-format-hook and the new %@name@ expando for $index_format enable + dynamic index formats using pattern matching against the current message. + This can be used, for example, to format dates based on the age of + the message. + * Relative date matching allows hour, minute, and second units: HMS. +- Remove patch truncate.patch as it seems to be superfluous now +- Add patch mutt-1.10.1-imap.patch to enable mutt to change imap folders +- Modify the patches + * aw.listreply.diff + * bsc907453-CVE-2014-9116-jessie.patch + * bug-676388-largefile.patch + * mutt-1.10.0.dif + * mutt-1.5.15-wrapcolumn.diff + * mutt-1.5.20-sendgroupreplyto.diff + * mutt-1.5.21-mailcap.diff + * mutt-1.5.23-carriage-return.path + * mutt-1.6.1-opennfs.dif + * mutt.spec + * patch-1.5.24.vk.pgp_verbose_mime + +------------------------------------------------------------------- +Tue Jul 17 09:46:59 UTC 2018 - werner@suse.de + +- Update to mutt 1.10.1 (boo#1101428) + This is an important bug-fix release, fixing a code injection + and a couple path traversal vulnerabilities. + This also covers + * CVE-2018-14363 bnc#1101566 + * CVE-2018-14362 bnc#1101567 + * CVE-2018-14361 bnc#1101568 + * CVE-2018-14360 bnc#1101569 + * CVE-2018-14359 bnc#1101570 + * CVE-2018-14358 bnc#1101571 + * CVE-2018-14357 bnc#1101573 + * CVE-2018-14356 bnc#1101576 + * CVE-2018-14355 bnc#1101577 + * CVE-2018-14354 bnc#1101578 + * CVE-2018-14353 bnc#1101581 + * CVE-2018-14352 bnc#1101582 + * CVE-2018-14351 bnc#1101583 + * CVE-2018-14350 bnc#1101588 + * CVE-2018-14349 bnc#1101589 +- Modified patches + * bug-676388-largefile.patch + * mutt-1.5.15-wrapcolumn.diff + * mutt-1.5.20-sendgroupreplyto.diff + * mutt-1.5.23-carriage-return.path + * mutt-1.6.1-opennfs.dif + * patch-1.5.24.vk.pgp_verbose_mime + * truncate.patch + +------------------------------------------------------------------- +Thu Jul 5 11:41:44 UTC 2018 - werner@suse.de + +- Skip neomutt now (boo#1094717) + * There exists a package neomutt + * mutt-1.10.0 uses a lot of extensions now like compessed folders + and header caching, but still misses things like notmuch +- Modified patches + * aw.listreply.diff + * bsc907453-CVE-2014-9116-jessie.patch + * bug-676388-largefile.patch + * mutt-1.5.15-wrapcolumn.diff + * mutt-1.5.20-sendgroupreplyto.diff + * mutt-1.5.21-mailcap.diff + * mutt-1.5.23-carriage-return.path + * mutt-1.5.9i-pgpewrap.diff + * mutt-1.6.1-opennfs.dif + * patch-1.5.24.vk.pgp_verbose_mime + * widechar.sidebar.dif +- Renamed patch: mutt-1.9.1.dif becomes mutt-1.10.0.dif +- Deleted patches mutt-1.9.0-1.9.1.patch neomutt-c030a8b.patch +- Add patch truncate.patch to avoid truncated buffers due snprintf + +------------------------------------------------------------------- +Tue Oct 24 14:33:00 UTC 2017 - werner@suse.de + +- Add patch mutt-1.9.0-1.9.1.patch which is a backport of the + mutt upstream patch diff-1.9.0-1.9.1 to neomutt 20170912 +- Rename patch mutt-1.9.0.dif which now becomes mutt-1.9.1.dif + +------------------------------------------------------------------- +Wed Oct 4 07:55:59 UTC 2017 - werner@suse.de + +- Add patch neomutt-c030a8b.patch from upstream commit to fix + boo#1061343 + +------------------------------------------------------------------- +Fri Sep 15 09:07:55 UTC 2017 - werner@suse.de + +- Update to neomutt 20170912 which updates to mutt 1.9.0 + NeoMutt + Add guix build support + Only match real mailboxes when looking for new mail + Fix the printing of ncurses version in -v output + Bind editor to delete-char + Fix overflowing colours + Fix empty In-Reply-To generation + Trim trailing slash from completed dirs + Add guix-neomutt.scm + Fix setting custom query_type in notmuch query + Better curses identification + Use the system's wchar_t support + Use the system's md5 tool (or equivalent) + Clean up configure.ac + Teach gen-map-doc about the new opcode header + Rename functions (snake_case) + Rename constants/defines (UPPER_CASE) + Create library of shared functions + Much tidying + Rename globals to match user config + Drop unnecessary functions/macros + Use a standard list implementation + Coverity fixes + Use explicit NUL for string terminators + Drop OPS* in favour of opcodes.h + Upstream + Fix menu color calls to occur before positioning the cursor + When guessing an attachment type, don't allow text/plain if there is a null character + Add $imap_poll_timeout to allow mailbox polling to time out + Handle error if REGCOMP in pager fails when resizing + Change recvattach to allow nested encryption + Fix attachment check_traditional and extract_keys operations + Add edit-content-type helper and warning for decrypted attachments + Add option to run command to query attachment mime type + Add warning about using inline pgp with format=flowed +- Rename patch mutt-1.8.3.dif which becomes now mutt-1.9.0.dif +- Modify the patches + * aw.listreply.diff + * bsc907453-CVE-2014-9116-jessie.patch + * bug-676388-largefile.patch + * mutt-1.5.15-wrapcolumn.diff + * mutt-1.5.20-sendgroupreplyto.diff + * mutt-1.5.21-mailcap.diff + * mutt-1.5.23-carriage-return.path + * mutt-1.5.9i-pgpewrap.diff + * mutt-1.6.1-opennfs.dif + * patch-1.5.24.vk.pgp_verbose_mime + * widechar.sidebar.dif + +------------------------------------------------------------------- +Thu Aug 10 08:03:38 UTC 2017 - tchvatal@suse.com + +- Switch to hunspell as default spell-checking software wrt + fate#323578 +- Write SUSE in the skel.muttrc instead of SuSE +- Use the right folder for unpacking instead of symlink + * fixes quilt setup + +------------------------------------------------------------------- +Thu Jul 13 10:38:57 UTC 2017 - olaf@aepfle.de + +- If built with gnutls, set ssl_ca_certificates_file to avoid + warning about "server cert signed using an insecure algorithm" + +------------------------------------------------------------------- +Wed Jul 12 09:26:50 UTC 2017 - olaf@aepfle.de + +- Add buildconditional for openssl/gnutls + Disable gnutls, there can be only one of them and openssl was used +- Use pkgconfig to refer to openssl/gnutls +- Remove uneeded builddeps and recommends for smtp_daemon by + specifying the path to sendmail +- Remove uneeded builddep for ispell by specifying the path to it +- Update doc builddeps: add opensp, libxslt-tools, w3m + drop docbook_4,libxml2,libxslt,lynx,sgml-skel,xli +- Remove unneeded builddeps: fdupes,glibc-i18ndata,libassuan, + libcom_err,libgcrypt,libgpg-error +- Wrap desktop files handing in suse_version +- Remove included krb5-config, the copy in the devel pkg is good enough +- Use configure macro for ordinary autoconf result +- Build manual.txt with w3m to properly dump tables +- Move Requires perl-Expect to doc pkg, make it a Recommends +- Consistent suse_version for shared-mime-info usage +- Unconditional libgpgme usage +- Unconditional autoreconf + +------------------------------------------------------------------- +Tue Jun 13 08:21:30 UTC 2017 - werner@suse.de + +- Update to neomutt 20170609 which updates to mutt 1.8.3 + + Warn on bindkey aliasing + + Drop PATCHES, tidy 'mutt -v' output + + Add %z format strings to index_format + + Add debug_level/debug_file options + + Fix nntp group selection + + Fix status color + + Tidy up S/MIME contrib + + Do not try to create Maildir if it is an NNTP URI + + Fix missing NONULL for mutt.set() in Lua + + Fix German PGP shortkeys + + Remove feature muttrc files + + Merge README.notmuch into manual + + Remove unneded scripts + + Remove README.SECURITY + + Remove BEWARE and devel-notes.txt + + Update Makefiles + + Delete TODO files + + Remove legacy files + + Don't generate vim-neomutt syntax file + + Remove LaTeX/pdf manual generation + + Add missing docs for expandos + + Fix sidebar howto examples + + Remove some upstream references + + Drop refs to patches + + Improve PR template and CONTRIBUTING.md + + Fix list items in newbie-tutorial's Mailing List Guidelines + + Remove configure options that no longer exist + + fix newbie tutorial + + document signing tags / releases + + config: drop unused paginate command + + script: split tests up into several + + convert credits page to markdown + + simpify 404 page + + improve newbie tutorial + + remove help.html and integrate its content elsewhere + + make: "graphviz" program is needed for generating diagram + + improve getting started guide // include legacy files + + dev: add list of architectures/operating systems + + numerous small fixes + + Remove typedefs and rename ~130 structs + + Add separate hcache dir + + Move crypto files to ncrypt dir + + Split up mutt.h, protos.h + + Always build: sidebar, imap, pop, smtp, compressed, nntp + + Remove --enable-mailtool configure option + + Make dotlock optional + + Change gpgme requirement back to 1.1.0 + + Remove check_sec.sh + + Fix safe_calloc args + + Remove unused macros + + Remove unused option: SmimeSignOpaqueCommand + + Move configure-generated files + + Update distcheck build flags + + Drop obsolete iconv check + + Unused prototypes - unsupported systems + + Drop many configure tests for things defined in POSIX:2001 + + Kill useless crypthash.h file + + Run clang-format on the code + + Fail early if ncursesw cannot be found + + Add names prototype arguments + + Abbreviate pointer tests against NULL + + Initialise pointers to NULL + + Reduce the scope of for loop variables + + Coverity: fix defects + + Convert all exec calls to use mutt_envlist(), remove setenv function + + Note that mbox-hooks are dependent on $move + + Refresh header color when updating label + + Remove glibc-specific execvpe() call in sendlib.c + + Add color commands for the compose menu headers and security status + + Fix sidebar count updates when closing mailbox + + Don't modify LastFolder/CurrentFolder upon aborting a change folder operation + + Change message modifying operations to additively set redraw flags + + Improve maildir and mh to report flag changes in mx_check_mailbox() + + Add $header_color_partial to allow partial coloring of headers + + Rename REDRAW_SIGWINCH to REDRAW_FLOW + + Create R_PAGER_FLOW config variable flag + + Turn IMAP_EXPUNGE_EXPECTED back off when syncing + + Add $history_remove_dups option to remove dups from history ring + + Also remove duplicates from the history file + + Don't filter new entries when compacting history save file + + Move the IMAP msn field to IMAP_HEADER_DATA + + Fix imap expunge to match msn and fix index + + Fix cmd_parse_fetch() to match against MSN + + Start fixing imap_read_headers() to account for MSN gaps + + Add msn_index and max_msn to find and check boundaries by MSN + + Properly adjust fetch ranges when handling new mail + + Small imap fetch fixes + + Don't abort header cache evaluation when there is a hole + + Fix mfc overflow check and uninitialized variable + + Fix potential segv if mx_open_mailbox is passed an empty string + + Don't clean up idata when closing an open-append mailbox + + Don't clean up msn idata when closing an open-append mailbox + + Fix memory leak when closing mailbox and using the sidebar + + Change imap body cache cleanup to use the uid_hash + + Convert classic s/mime to space delimit findKeys output + + Add self-encrypt options for PGP and S/MIME + + Change $postpone_encrypt to use self-encrypt variables first + + Automatic post-release commit for mutt-1.8.3 + + Add note about message scoring and thread patterns + + unbind mappings before overwriting in vim-keys + + latest coverity issues (#624) + + don't pass colour-codes to filters + + Don't set a colour unless it's been defined. + + crash if no from is set or founds + + ifdef command + + fix translations + + fix some remaining translation problems + + explain binding warnings + + don't document unsupported arches + + fix make git_ver.h + + allow xsltproc and w3m calls to fail + + fix make dist + + Add a mutt_endwin() before invoking $sendmail + + Restore setenv function + + Fix tag-prefix to not abort on $timeout + + Change km_dokey() to return -2 on a timeout/sigwinch + + Enable TEXTDOMAINDIR override to make translation testing easier + + Fix "format string is not a string literal" warnings +- Modifyed and ported patches + * aw.listreply.diff + * bsc907453-CVE-2014-9116-jessie.patch + * bug-676388-largefile.patch + * mutt-1.5.15-wrapcolumn.diff + * mutt-1.5.20-sendgroupreplyto.diff + * mutt-1.5.21-mailcap.diff + * mutt-1.5.23-carriage-return.path + * mutt-1.6.1-opennfs.dif + * patch-1.5.24.vk.pgp_verbose_mime + * widechar.sidebar.dif +- Delete patch mutt-1.8.2-from4crypt.diff now upstream +- Renamed patch mutt-1.8.2.dif which becomes mutt-1.8.3.dif + +------------------------------------------------------------------- +Wed May 10 08:55:37 UTC 2017 - werner@suse.de + +- Add patch mutt-1.8.2-from4crypt.diff + to fix crash in crypt.c if no From is found or set + +------------------------------------------------------------------- +Mon May 1 16:06:58 UTC 2017 - werner@suse.de + +- Switch form TokyoCabinet over to KyotoCabinet + +------------------------------------------------------------------- +Sun Apr 30 23:32:51 UTC 2017 - thorsten.behrens@cib.de + +- Remove warning + +------------------------------------------------------------------- +Sun Apr 30 23:26:06 UTC 2017 - thorsten.behrens@cib.de + +- Make header cache work again, using TokyoCabinet as backend +- Remove now-obsolete configure parameters + +------------------------------------------------------------------- +Sun Apr 30 05:03:43 UTC 2017 - bwiedemann@suse.com + +- call gzip -n to make build more reproducible + +------------------------------------------------------------------- +Sat Apr 29 16:14:43 UTC 2017 - werner@suse.de + +- Yet an other package split: now there is a mutt-lang + +------------------------------------------------------------------- +Sat Apr 29 15:50:04 UTC 2017 - werner@suse.de + +- Provide a hint on the package split + +------------------------------------------------------------------- +Fri Apr 28 16:27:15 UTC 2017 - werner@suse.de + +- Move some extend documentation about mutt in a seperate package +- Remove mutt-1.5.21.de.po as mutt now have a de.po as well + +------------------------------------------------------------------- +Fri Apr 28 14:37:01 UTC 2017 - werner@suse.de + +- Update to neomutt 20170421 which updates to mutt 1.8.2 + 1.8.2 Bug fix release. + 1.8.1 Bug fix release. + 1.8.0 + - $locale has been removed. Mutt now respects the LC_TIME setting + instead. See also $attribution_locale. + + $attribution_locale can be used to override the date formatting in + attribution strings. When unset, Mutt will use the locale + environment, but note the default value of $date_format has a + leading '!' which says to use the C-locale. + ! Message-id and mail-followup-to headers are now preserved for recalled + messages. + + added to complement . + ! The pager position is reset to the top when toggling header-weed. + ! IMAP messages moved to $trash via server-side copy are marked as read. + + jumps to the root message of a thread. + ! Piped text attachments are charset converted. + + Added %F to $attach_format, to show the content-disposition filename. + %d will fall back to %F which will fall back to %f. + + allows an attachment name to be changed, without + modifying the underlying file's name. + ! Mutt will look for the user's muttrc additionally in + $XDG_CONFIG_HOME/mutt/. + + Compressed mbox and mmdf files are now supported via open-hook, + close-hook, and append-hook. See contrib/sample.muttrc-compress + for suggested settings. Note this is a compile-time option: + --enable-compressed. + + When $flag_safe is set, flagged messages cannot be deleted. + + The '@' pattern modifier can be used to limit matches to known aliases. + + creates a hotkey binding to a specific message. The hotkey + prefix is specified via $mark_macro_prefix. + + and can be used to add/remove environment variables + passed to children. + ! Mutt will now use the built-in OpenSSL SSL_set_verify() callback + to verify certificates. This allows better support for verifying + chains, including alternative chain support. + + $uncollapse_new controls whether a thread will be uncollapsed when a new + message arrives. + ! $to_chars and $status_chars now accept multibyte characters. + + allows replacing matching subjects with something else. + This can be used to declutter subject lines in the index. + + can be used to add, change, or delete a message's X-Label. + ! Pattern expressions with ~y support label tab completion. + + The header cache now also supports Kyoto Cabinet and LMDB as + backend databases. + 1.7.2 (2016-12-04): + ! Bug fix release. No features were modified or added. + ! Fixes for OpenSSL 1.1. Versions less than 0.9.6 are no longer supported. + 1.7.1 (2016-10-08): + ! Bug fix release. No features were modified or added. + 1.7.0 (2016-08-18): + ! Improved alignment when using multi-column characters with + soft-fill (%*X) and right-justified (%>X) format strings. + + The COLUMNS environment variable will be set to the width of the + pager when invoking display filters. This can be used in + copiousoutput mailcap entries to allow their output to match the + pager width. + + The sidebar patch has been merged. Please watch for airborne + bovine. See the documentation for all the options, or simply + enable it with 'set sidebar_visible'. + + $mail_check_stats and $mail_check_stats_interval control whether, + and how often, to scan for unread, flagged, and total message + counts when checking for new mail in mailboxes. These statistics + can be displayed in the sidebar and browser. + + $trash, when set, specifies the path of the folder where mails + marked for deletion will be moved, instead of being irremediably + purged. + + The function can be used to delete an entry and + bypass the trash folder. + + $folder_format has new format strings %m and %n, to display + total and unread message counts for mailboxes. Note that + $mail_check_stats should be enabled to use these. + ! When browsing IMAP, %N will now display 'N', instead of the unread + message count. Please use %n to display unread messages. +- Removed obsolete patches + * COLS-workaround.dif + * mutt-1.6.2-gpgme_set_sender.patch +- Modifyed and ported patches + * aw.listreply.diff + * bsc907453-CVE-2014-9116-jessie.patch + * bug-676388-largefile.patch + * mutt-1.5.15-wrapcolumn.diff + * mutt-1.5.20-sendgroupreplyto.diff + * mutt-1.5.21-mailcap.diff + * mutt-1.5.23-carriage-return.path + * mutt-1.5.9i-pgpewrap.diff + * mutt-1.6.1-opennfs.dif + * patch-1.5.24.vk.pgp_verbose_mime + * widechar.sidebar.dif +- Renamed patch + * mutt-1.6.2.dif becomes mutt-1.8.2.dif + +------------------------------------------------------------------- +Mon Mar 6 10:37:24 UTC 2017 - werner@suse.de + +- Explicite add package documentation directory to file list + +------------------------------------------------------------------- +Thu Mar 2 11:42:45 UTC 2017 - werner@suse.de + +- Also now recommend urlscan + +------------------------------------------------------------------- +Wed Nov 23 10:39:04 UTC 2016 - werner@suse.de + +- Add patch mutt-1.6.2-gpgme_set_sender.patch + that is avoid name space clash with gpgme_set_sender() from gpgme + +------------------------------------------------------------------- +Wed Nov 23 10:13:49 UTC 2016 - werner@suse.de + +- Rename patch mutt-1.5.23-cariage-return.path to + mutt-1.5.23-carriage-return.path +- Extend patch mutt-1.5.23-carriage-return.path + Be sure that also signed messages from Android can be verified + by gpgme interface of mutt + +------------------------------------------------------------------- +Tue Sep 13 10:05:16 UTC 2016 - werner@suse.de + +- Update to neomutt 20160826 + Build: + Disable fmemopen until bug is fixed + Contrib: + Keybase portability improvements Joshua Jordi (@JakkinStewart) + Keybase Integration - Joshua Jordi (@JakkinStewart) + Bug Fixes: + Fix notmuch crash toggling virtual folders + Fix display of pager index when sidebar toggled + Sidebar's inbox occasionally shows zero/wrong value + Fix crash opening a second compressed mailbox + Config: + Look for /etc/NeoMuttrc and ~/.neomuttrc + Docs: + Fix broken links, typos + Update project link + Fix version string in the manual + +------------------------------------------------------------------- +Tue Jul 26 12:36:47 UTC 2016 - werner@suse.de + +- Update to mutt version 1.6.2 (2016-07-01): + * send.c: Check $pgp_autoinline and $pgp_replyinline if oppenc is set. + (closes #3846) + * The first oppenc call takes place after the initial checks of + $pgp_autoline and $pgp_replyinline, and doesn't go through the pgp + menu. + * Therefore, check for $pgp_autoline and $pgp_replyinline if oppenc is + set too, to avoid oppenc enabling encryption without INLINE being + set in those cases. + * a6a4d6ed0f19 previously cleaned things up so that it is safe to set + INLINE even if encryption isn't enabled. + * keymap.c: Fix infinite loop when help is bound to a named key + combination. + * Commit a07e8215a0ef introduced a bug in km_error_key, which is + called when an unbound key is pressed. + * If help is bound to a sequence containing named keys (e.g. ), + the raw (untokenized) string would be pushed back into the unget + buffer. This could lead to an infinite loop of unbound key presses + triggering more unbound keys being put into the unget buffer. + * Change km_error_key to tokenize the string before putting it in the + unget buffer. + * Much thanks to Jiri Bohac for his bug report, analysis, and initial + patch! +- Update to neomutt 20160723 + New Features + New Mail Command - Execute a command on receipt of new mail + vim-keybindings - Mutt config for vim users + LMDB - In-memory header caching database + SMIME Encrypt to Self - Secure storage of sensitive email + Bug Fixes + rework mutt_draw_statusline() + fix cursor position after sidebar redraw + Add sidebar_format flag ‘%n’ to display ‘N’ on new mail. + fix index_format truncation problem + Fix compiler warnings due to always true condition + Change sidebar next/prev-new to look at buffy->new too. + Change the default for sidebar_format to use %n. + sidebar “unsorted” order to match Buffy list order. + Include ncurses tinfo library if found. + Sidebar width problem + sidebar crash for non-existent mailbox + Temporary compatibility workaround + Reset buffy->new for the current mailbox in IMAP. + version.sh regression + crash when notmuch tries to read a message (boo#986534) + status line wrapping +- Modify patches + * COLS-workaround.dif + * aw.listreply.diff + * bug-676388-largefile.patch + * mutt-1.5.15-wrapcolumn.diff + * mutt-1.5.20-sendgroupreplyto.diff + * mutt-1.5.21-mailcap.diff + * mutt-1.6.1-opennfs.dif + * patch-1.5.24.vk.pgp_verbose_mime + * widechar.sidebar.dif +- Rename patch mutt-1.6.1.dif to mutt-1.6.2.dif +- Delete patch mutt-1.5.21-tinfo.dif + +------------------------------------------------------------------- +Mon Jun 13 09:27:36 UTC 2016 - werner@suse.de + +- Update to neomutt 20160611 + - Temporarily disable $sidebar_refresh_time + Unfortunately, this was causing too many problems. + It will be fixed and re-enabled as soon as possible. + - Fix several crashes, on startup, in Keywords + - Reflow text now works as it should + - Lots of typos fixed + - Compress config bug prevented it working + - Some minor bug-fixes from mutt/default + - Single quote at line beginning misinterpreted by groff + - Setting $sidebar_width to more than 128 would cause bad things to happen. + - Fix alignment in the compose menu. + - Fix sidebar buffy stats updating on mailbox close. +- Modify patch mutt-1.6.1.dif, that is skip upstream of neo as now + part of neo +- Adopt patches COLS-workaround.dif, aw.listreply.diff, + bug-676388-largefile.patch, mutt-1.5.21-tinfo.dif, + mutt-1.6.1-opennfs.dif, and patch-1.5.24.vk.pgp_verbose_mime + +------------------------------------------------------------------- +Thu Jun 2 06:58:11 UTC 2016 - werner@suse.de + +- Yet an other crash due keywords.patch (boo#982129) + +------------------------------------------------------------------- +Wed Jun 1 11:04:06 UTC 2016 - werner@suse.de + +- Fix crash due keywords.patch which stumble over not existing + standard mailbox (boo#982129) + +------------------------------------------------------------------- +Tue May 31 12:35:33 UTC 2016 - werner@suse.de + +- Update to neomutt 20160530 +- Avoid sidebar patch from bother other users (boo#982129) +- Remove patch patch-1.6.1.rr.compressed.bz2 as now part of neumutt + +------------------------------------------------------------------- +Fri May 20 15:14:52 UTC 2016 - werner@suse.de + +- Enable some of the new patches like sidebar (boo#980830) +- Add patch COLS-workaround.dif which should become removed once + the sidebar patch does not modify COLS anymore + +------------------------------------------------------------------- +Thu May 12 13:50:14 UTC 2016 - werner@suse.de + +- Update to mutt version 1.6.1 (2016-05-01): + ! Bug fix release. No features were modified or added. +- Add and use neomutt-patches-20160502.tar.gz from + http://www.neomutt.org/ +- Modify the patches + aw.listreply.diff + bsc907453-CVE-2014-9116-jessie.patch + bug-676388-largefile.patch + mutt-1.5.15-wrapcolumn.diff + mutt-1.5.20-sendgroupreplyto.diff + mutt-1.5.21-mailcap.diff + mutt-1.5.21-tinfo.dif + mutt-1.5.23-cariage-return.path + mutt-1.5.9i-pgpewrap.diff + patch-1.5.24.vk.pgp_verbose_mime + widechar.sidebar.dif +- Modify and rename the patches + mutt-1.6.0-opennfs.dif becomes mutt-1.6.1-opennfs.dif + mutt-1.6.0.dif becomes mutt-1.6.1.dif + patch-1.6.0.rr.compressed.bz2 becomes patch-1.6.1.rr.compressed.bz2 +- Remove the patches + patch-1.6.0.sidebar.20160411.patch + nion.sidebar-color.diff + now upstream or part of neomutt patch collection + +------------------------------------------------------------------- +Mon Apr 11 12:04:29 UTC 2016 - werner@suse.de + +- Update to mutt version 1.6.0 (2016-04-04): + + Enabled utf-8 mailbox support for IMAP. + + New expandos %r and %R for comma separated list of To: and Cc: + recipients respectively. + + Improved support for internationalized email and SMTPUTF8 (RFC653[0-3]). + ! $use_idn has been renamed to $idn_decode. + + $idn_encode controls whether outgoing email address domains will + be IDNA encoded. If your MTA supports it, unset to use utf-8 + email address domains. + + The S/MIME message digest algorithm is now specified using the + option $smime_sign_digest_alg. Note that $smime_sign_command + should be modified to include "-md %d". Please see + contrib/smime.rc. + + $reflow_space_quotes allows format=flowed email quotes to be + displayed with spacing between them. + ! multipart draft files are now supported. + + The "-E" command line argument causes mutt to edit draft or include files. + All changes made in mutt will be saved back out to those files. + + $resume_draft_files and $resume_edited_draft_files control how + mutt processes draft files. + + For classic gpg mode, $pgp_decryption_okay should be set to verify + multipart/encrypted are actually encrypted. Please see + contrib/gpg.rc for the suggested value. + ! mailto URL header parameters by default are now restricted to + 'body' and 'subject'. + + mailto_allow and unmailto_allow can be used to add or remove + allowed mailto header parameters. + ! The method of setting $hostname has been changed. Rather than + scanning /etc/resolv.conf, the domain will now be determined using + DNS calls. +- Modfied patches + aw.listreply.diff + patch-1.5.24.vk.pgp_verbose_mime +- Ported patches + mutt-1.5.24.dif becomes mutt-1.6.0.dif + mutt-1.5.24-opennfs.dif becomes mutt-1.6.0-opennfs.dif + patch-1.5.24.rr.compressed.bz2 becomes patch-1.6.0.rr.compressed.bz2 + patch-1.5.24.sidebar.20151111.patch becomes patch-1.6.0.sidebar.20160411.patch + +------------------------------------------------------------------- +Mon Feb 29 15:22:58 UTC 2016 - werner@suse.de + +- Add perl(Expect) as requirement for mutt due to the fact that a + useful helper script below the samples depends on this (boo#968699) + +------------------------------------------------------------------- +Tue Jan 12 08:46:42 UTC 2016 - vmiklos@collabora.co.uk + +- Fix patch-1.5.24.sidebar.20151111.patch to shorten + imaps://imap.example.com/INBOX correctly to INBOX, not to NBOX. (boo#961470) + +------------------------------------------------------------------- +Tue Dec 22 09:44:55 UTC 2015 - vmiklos@collabora.co.uk + +- Update patch-1.5.24.sidebar.20140412.patch to + patch-1.5.24.sidebar.20151111.patch + + Updated patch for pristine mutt-1.5.24 source package. + + Corrected the version info in PATCHES for mutt-1.5.24 and added two small + patches courtesy of mutt user flatcap. The patch makes %S optional in + sidebar_format_str and the other patch fixes a problem with viewing an imap + folder that gets deleted by another user which causes a mutt crash. +- Modified patches + + aw.listreply.diff + + nion.sidebar-color.diff + + patch-1.5.24.vk.pgp_verbose_mime + + widechar.sidebar.dif + +------------------------------------------------------------------- +Fri Sep 11 15:14:48 UTC 2015 - werner@suse.de + +- Update to mutt version 1.5.24 + + terminal status-line (TS) support, a.k.a. xterm title. see the + following variables: $ts_enabled, $ts_icon_format, $ts_status_format + ! $ssl_use_sslv3 is disabled by default. + ! command-line arguments: -H now combines template and command-line + address arguments. + ! GnuPG signature name is set to signature.asc + + New color object "prompt" added. + + Ability to encrypt postponed messages. See $postpone_encrypt and + $postpone_encrypt_as. + ! History ring now has a scratch buffer. + ! mail-key is implemented for GPGME. (Requires a recent GPGME). + ! Removed GPG_AGENT_INFO check for GnuPG 2.1 compatibility. Please + set pgp_use_gpg_agent if using GnuPG 2.1 or later. + ! $smime_encrypt_with now defaults to aes256. + ! GnuPG fingerprints are used internally when possible. + "--with-fingerprint" should be added to $pgp_list_pubring_command and + $pgp_list_secring_command to enable this. Please see contrib/gpg.rc. + Fingerprints may also be used at the prompts for key selection. + + $crypt_opportunistic_encrypt automatically enables/disables encryption + based on message recipients. + ! Attachments for signed, unencrypted emails may be deleted. + ! Multiple crypt-hooks may be defined for the same regexp. + This means multiple keys may be used for a recipient. + + $crypt_confirmhook allows the confirmation prompt for crypt-hooks to + be disabled. + + $ssl_ciphers allows the SSL ciphers to be directly set. + ! sime_keys better handles importing certificate chains. + ! sime_keys now records certificate purposes (sign/encrypt). Run + "sime_keys refresh" to update smime index files. + + $maildir_check_cur polls the maildir "cur" directory for new mail. +- Ported patches + patch-1.5.21.vk.pgp_verbose_mime becomes patch-1.5.24.vk.pgp_verbose_mime + patch-1.5.23.rr.compressed.bz2 becomes patch-1.5.24.rr.compressed.bz2 + patch-1.5.23.sidebar.20140412.patch becomes patch-1.5.24.sidebar.20140412.patch + mutt-1.5.21-opennfs.dif becomes mutt-1.5.24-opennfs.dif + mutt-1.5.23.dif becomes mutt-1.5.24.dif +- Modfied patches + nion.sidebar-color.diff + widechar.sidebar.dif +- Removed patch + patch-1.5.23.xtitles.patch + +------------------------------------------------------------------- +Mon Jan 26 16:22:08 UTC 2015 - werner@suse.de + +- Update to mutt version 1.5.23 which is a security bugfix release + as well as add support for TLS 1.1/1.2 +- Remove the patches automake-1.12.patch, + mutt-1.5.20-gpgme_set_locale.patch, and mutt-CVE-2014-0467.patch +- Replace the patches + patch-1.5.23.rr.compressed.bz2 with patch-1.5.21.rr.compressed.1.bz2 + mutt-1.5.21.sidebar.20120829.patch with patch-1.5.23.sidebar.20140412.patch + patch-1.5.5.1.nt.xtitles.3.ab.1 with patch-1.5.23.xtitles.patch + mutt-1.5.21.dif with mutt-1.5.23.dif +- Modify the patches aw.listreply.diff, bug-676388-largefile.patch, + and bsc907453-CVE-2014-9116-jessie.patch +- Build with PIE + +------------------------------------------------------------------- +Thu Dec 4 12:03:10 UTC 2014 - werner@suse.de + +- Add patch bsc907453-CVE-2014-9116-jessie.patch to fix bsc#907453 + CVE-2014-9116: heap-based buffer overflow in mutt_substrdup() + +------------------------------------------------------------------- +Tue Nov 18 08:15:09 UTC 2014 - lnussel@suse.de + +- handle text/html by default (bnc#899712) + that is add patch mutt-1.5.21-mailcap.diff + +------------------------------------------------------------------- +Mon Mar 17 13:24:35 UTC 2014 - meissner@suse.com + +- mutt-CVE-2014-0467.patch: fixed a buffer overflow during header display. + CVE-2014-0467 / bnc#868115 + +------------------------------------------------------------------- +Mon Aug 5 18:06:01 CEST 2013 - ro@suse.de + +- BuildRequire libgcrpyt-devel instead of libgcrypt for > 12.3 + +------------------------------------------------------------------- +Wed May 29 10:26:45 UTC 2013 - werner@suse.de + +- Enable mutt to parse e.g. PGP markers with CRLF + +------------------------------------------------------------------- +Thu Apr 18 12:54:39 UTC 2013 - werner@suse.de + +- Add widechar.sidebar.dif as workaround: bnc#813498 - mutt crashes + in fgetwc in text_enriched_handler + +------------------------------------------------------------------- +Mon Jan 14 09:11:05 UTC 2013 - werner@suse.de + +- Remove spurious blank line from new patch to make older patch(1) + also work with this +- Make it build with older products + +------------------------------------------------------------------- +Tue Dec 18 16:26:45 UTC 2012 - aginies@suse.com + +- update sidebar to version 20120829 + +------------------------------------------------------------------- +Tue Sep 18 15:47:45 UTC 2012 - vmiklos@suse.cz + +- Add back lost sidebar color patch. + +------------------------------------------------------------------- +Thu Jun 21 10:04:20 UTC 2012 - asn@cryptomilk.org + +- Update sidebar patch. + +------------------------------------------------------------------- +Tue May 29 14:10:05 UTC 2012 - puzel@suse.com + +- fix build with automake-1.12 + - add: automake-1.12.patch + +------------------------------------------------------------------- +Fri Apr 13 12:58:09 UTC 2012 - multiple1902@gmail.com + +- Added patch automatically add a filename and description to PGP/MIME attachments. + +------------------------------------------------------------------- +Thu Dec 1 16:59:32 UTC 2011 - coolo@suse.com + +- add automake as buildrequire to avoid implicit dependency + +------------------------------------------------------------------- +Thu Nov 24 00:44:07 UTC 2011 - vmiklos@vmiklos.hu + +- Add patch to introduce a new (optional) check when + replying to messages originating from a mailing list + +------------------------------------------------------------------- +Tue Nov 22 12:58:28 UTC 2011 - werner@suse.de + +- Add patch to use libtinfo if available + +------------------------------------------------------------------- +Tue Oct 25 22:17:13 CEST 2011 - vmiklos@vmiklos.hu + +- Add patch to be able to specify the color of the sidebar + +------------------------------------------------------------------- +Thu Jul 7 11:26:18 UTC 2011 - werner@suse.de + +- Update patch for Mutt Ticket #3288 and check for empty headers + in mx_update_context() (bnx#704359) + +------------------------------------------------------------------- +Mon Jun 20 15:11:39 CEST 2011 - werner@suse.de + +- Add patches for the following Mutt Tickets: + #1771: pipe-mime + #2179: score-match + #3240: imapuser + #3261: readonly-open + #3288: mx_update_context-segfault + #3293: dont-recode-saved-attachments + #3300: gpgme-1.2 + #3324: smimekeys-tmpdir + #3326: emptycharset + #3335: thread-segfault + #3339: smime_keys-chaining + #3371: ansi-escape-segfault + #3378: references + #3457: pop3-segfault + #3459: split-fetches + #3483: header-strchr + #3496: no-implicit_autoview-for-text-html + #3506: gnutls-CN-validation + #3515: gnutls-deprecated-set-priority + #3516: gnutls-deprecated-verify-peers + with ticket #3506 bnc#700648 becomes fixed, with ticket #3496 + the autoview regression for text/html should be fixed. +- Add one line more for sidebar if displayed on top + +------------------------------------------------------------------- +Fri Apr 15 14:15:02 CEST 2011 - werner@suse.de + +- Support offsets in 2gig mbox files even on 32bit architectures (bnc#676388) + +------------------------------------------------------------------- +Thu Feb 3 02:00:55 CET 2011 - ro@suse.de + +- buildrequire gdbm-devel also on 11.4 to fix build + +------------------------------------------------------------------- +Wed Feb 2 09:47:43 CET 2011 - werner@suse.de + +- Switch from buildrequires gpgme-devel to libgpgme-devel for 11.4 +- Work around missing buildrequires of libgpgme-devel by adding + libassuan-devel for 11.4 + +------------------------------------------------------------------- +Mon Jan 31 13:55:54 UTC 2011 - gber@opensuse.org + +- recommend smtp_daemon since mutt has builtin SMTP support + +------------------------------------------------------------------- +Mon Jan 31 14:30:26 CET 2011 - werner@suse.de + +- Fix the orther sidebar patch as it is broken with MALLOC_CHECK=1 + now static buffers are used instead (re)alloced arrays. + +------------------------------------------------------------------- +Wed Jan 26 13:47:31 UTC 2011 - gber@opensuse.org + +- fix build by removing Makefiles from contrib +- added missing %mime_database_post/%mime_database_postun + +------------------------------------------------------------------- +Wed Jan 26 12:46:10 UTC 2011 - gber@opensuse.org + +- modified desktop file so mutt can be used as the default mailto + handler + +------------------------------------------------------------------- +Fri Nov 26 19:44:20 CET 2010 - pth@suse.de + +- Update and fix the german translation. +- Update all translations so that the user edits the right translation. + +------------------------------------------------------------------- +Thu Nov 4 15:28:59 CET 2010 - werner@suse.de + +- Update to mutt version 1.5.21 which include last three fixes + * Beside this better support of S/MIME certificates +- Use an other sidebar patch found for OpenBSD +- Update our patches + +------------------------------------------------------------------- +Mon May 10 20:37:10 UTC 2010 - guido+opensuse.org@berhoerster.name + +- add proper category to desktop file + +------------------------------------------------------------------- +Mon Apr 19 11:46:56 UTC 2010 - lnussel@suse.de + +- fix build against openssl 1.0 + +------------------------------------------------------------------- +Wed Dec 2 12:38:04 CET 2009 - werner@suse.de + +- Do not fold From lines into wrong format (bnc#559525) + +------------------------------------------------------------------- +Wed Nov 25 13:55:43 CET 2009 - werner@suse.de + +- Update for bnc#537141: do not add certificates with wrong hosts + +------------------------------------------------------------------- +Tue Nov 3 19:09:32 UTC 2009 - coolo@novell.com + +- updated patches to apply with fuzz=0 + +------------------------------------------------------------------- +Wed Sep 9 13:43:58 CEST 2009 - werner@suse.de + +- Fix incorrectly handling of \0 character in SSL certificate (bnc#537141) + +------------------------------------------------------------------- +Wed Jul 15 13:46:07 CEST 2009 - werner@suse.de + +- Make gpgme work even with locale, patch from Evan McClain + (bnc#519628) + +------------------------------------------------------------------- +Fri Jun 26 13:12:09 CEST 2009 - werner@suse.de + +- Update to mutt version 1.5.20 which include last fix + +------------------------------------------------------------------- +Tue Apr 21 11:20:19 CEST 2009 - werner@suse.de + +- Upstream fix to make mutt showing new message count (bnc#487718) + +------------------------------------------------------------------- +Tue Mar 3 17:17:51 CET 2009 - werner@suse.de + +- updated to mutt version 1.5.19 mostly a bugfix release +- updated sidebar patch to 1.5.18.sidebar.20080611 + * make it work with 1.5.19 + * make sidebar-fix also work +- updated compression patch to patch-1.5.19.rr.compressed +- enable smtp support +- enable mixmaster support +- use regex(7) of glibc + +------------------------------------------------------------------- +Thu Apr 10 15:18:29 CEST 2008 - werner@suse.de + +- Avoid trouble with krb5-config + +------------------------------------------------------------------- +Thu Dec 20 20:00:30 CET 2007 - bwalle@suse.de + +- updated to mutt version 1.5.17 the bug fix release +- updated sidebar patch to 1.5.17.sidebar.20071102 +- updated compression patch to 1.5.17.rr.compressed.1 + +------------------------------------------------------------------- +Wed Dec 5 18:09:25 CET 2007 - ro@suse.de + +- moved /etc/skel/.muttrc to this package + +------------------------------------------------------------------- +Thu Sep 20 13:05:05 CEST 2007 - werner@suse.de + +- Replace handmade sidebar patch with oringnal one +- Set check_mbox_sizes to make mutt backward compatible (#326697) +- Use imap_force_ssl alias for ssl_force_tls even in 10.3 + +------------------------------------------------------------------- +Thu Jun 21 14:05:33 CEST 2007 - werner@suse.de + +- Update to mutt version 1.5.16 the bug fix version + +------------------------------------------------------------------- +Fri Jun 1 14:03:12 CEST 2007 - werner@suse.de + +- Update to mutt version 1.5.15 due CVE-2007-1558 (bug #279843) + +------------------------------------------------------------------- +Wed May 16 11:29:09 CEST 2007 - werner@suse.de + +- Overflow: don't compare signed with unsigned (bug #275069) + +------------------------------------------------------------------- +Fri Mar 23 15:03:13 CET 2007 - rguenther@suse.de + +- add gdbm-devel and ncurses-devel BuildRequires + +------------------------------------------------------------------- +Mon Feb 26 15:10:11 CET 2007 - stbinner@suse.de + +- fix build by including icon and .desktop into package + +------------------------------------------------------------------- +Thu Nov 16 12:31:53 CET 2006 - werner@suse.de + +- Make sidebar fix smarter by not breaking new status (bug #221599) + +------------------------------------------------------------------- +Thu Nov 9 14:17:25 CET 2006 - werner@suse.de + +- Do security check for opening files on NFS file systems (#210159) +- Reenable SASL and GSSAPI +- Make LOGIN work even if SASL is enabled +- Make mutt use ispell again +- Update the sidebar patch +- Avoid reads of mailboxes if no sidebar is enabled (#215261) + +------------------------------------------------------------------- +Fri Sep 15 15:12:20 CEST 2006 - werner@suse.de + +- Enable libgpgme (bug #203486) + +------------------------------------------------------------------- +Mon Aug 28 14:22:33 CEST 2006 - werner@suse.de + +- Add sidebar patch to mutt to have the mailboxes around +- Make the old variable imap_force_ssl an alias to ssl_force_tls + for older SuSE distributions + +------------------------------------------------------------------- +Thu Aug 17 18:13:30 CEST 2006 - werner@suse.de + +- Update to mutt 1.5.13 + * Various fixes in imap handling + +------------------------------------------------------------------- +Mon Jul 17 16:54:25 CEST 2006 - werner@suse.de + +- Update to mutt 1.5.12 + * Include previous security fixes + * Fix bug in curses handling + * Better caching of mail bodies + * Remove memory leaks + +------------------------------------------------------------------- +Thu Jun 29 12:52:57 CEST 2006 - werner@suse.de + +- Update to mutt 1.5.11 + +------------------------------------------------------------------- +Wed Jun 28 13:49:59 CEST 2006 - werner@suse.de + +- Fix mutt IMAP buffer overflow in namespace parsing (bug #188872) + +------------------------------------------------------------------- +Wed Jan 25 21:38:29 CET 2006 - mls@suse.de + +- converted neededforbuild to BuildRequires + +------------------------------------------------------------------- +Mon Jan 16 14:16:36 CET 2006 - mmj@suse.de + +- Compile with -fstack-protector + +------------------------------------------------------------------- +Tue Nov 29 16:50:24 CET 2005 - sbrabec@suse.cz + +- Don't package icon already present in desktop-data-SuSE. + Cleans rpm -V output. + +------------------------------------------------------------------- +Mon Oct 10 12:55:59 CEST 2005 - mmj@suse.de + +- Readd -fno-strict-aliasing + +------------------------------------------------------------------- +Mon Oct 3 09:35:52 CEST 2005 - mmj@suse.de + +- Signatures with no newline should not cause mutt to think + it's a changed message [#117451] + +------------------------------------------------------------------- +Thu Jul 28 19:11:22 CEST 2005 - mmj@suse.de + +- Add patch to set term window title bar with the mbox name [#98557] + +------------------------------------------------------------------- +Sun Jul 24 17:10:09 CEST 2005 - mmj@suse.de + +- Fix segfault with S/Mime [#87177] + +------------------------------------------------------------------- +Fri Jul 8 15:21:45 CEST 2005 - mmj@suse.de + +- Remove bogus hunk from imap race fix patch + +------------------------------------------------------------------- +Mon Jun 27 12:53:44 CEST 2005 - mmj@suse.de + +- Add patch from Thomas Glanzmann to fix imap crashes + +------------------------------------------------------------------- +Mon May 9 14:44:09 CEST 2005 - mmj@suse.de + +- Add patch for wrapcolumn by Manfred Hollstein + +------------------------------------------------------------------- +Tue Mar 15 08:58:46 CET 2005 - mmj@suse.de + +- Update to 1.5.9 + +------------------------------------------------------------------- +Mon Feb 28 19:27:52 CET 2005 - mmj@suse.de + +- Make sure a pointer is not NULL before we start referencing it + +------------------------------------------------------------------- +Mon Feb 14 11:02:37 CET 2005 - mmj@suse.de + +- Update to 1.5.8 + +------------------------------------------------------------------- +Fri Feb 11 12:01:51 CET 2005 - mmj@suse.de + +- Disable inode sort due to recommendations from the header + cache developer + +------------------------------------------------------------------- +Fri Feb 4 10:07:17 CET 2005 - mmj@suse.de + +- Update header cache patch and fix build in PLUS + +------------------------------------------------------------------- +Wed Feb 2 10:11:30 CET 2005 - mmj@suse.de + +- Rename mmdf.5 -> mmdf_mutt.5 to not conflict with tin + +------------------------------------------------------------------- +Tue Feb 1 12:56:39 CET 2005 - mmj@suse.de + +- Update to 1.5.7 + +------------------------------------------------------------------- +Tue Jan 11 23:32:26 CET 2005 - mmj@suse.de + +- Fix plain auth for sasl with patch from HEAD [#49573] +- Update header cache patch to latest + +------------------------------------------------------------------- +Wed Nov 17 12:02:43 CET 2004 - mmj@suse.de + +- Package pixmaps + +------------------------------------------------------------------- +Sat Oct 23 14:30:21 CEST 2004 - mmj@suse.de + +- Switch heimdal-* to kerberos-devel-packages in #nfb as pr. requst + of Mr. Carsten Höger + +------------------------------------------------------------------- +Tue Aug 31 17:08:54 CEST 2004 - mmj@suse.de + +- Update to a new version with bugfixes of the header cache patch + +------------------------------------------------------------------- +Wed Aug 18 10:55:15 CEST 2004 - mmj@suse.de + +- Apply a new version of the header cache patch that also supports + IMAP. + +------------------------------------------------------------------- +Fri Jul 2 12:51:22 CEST 2004 - mmj@suse.de + +- Using upstream fix for problem with stat() on source files + which could contain extra chars such as pipe [#42658] + +------------------------------------------------------------------- +Sat Jun 5 07:16:30 CEST 2004 - mmj@suse.de + +- Enable idn support [#41456] + +------------------------------------------------------------------- +Thu May 13 15:34:58 CEST 2004 - mmj@suse.de + +- Add maildir header cache patch from + Thomas Glanzmann +- Don't remove buildroot in %install +- Don't strip when installing + +------------------------------------------------------------------- +Wed Apr 21 20:58:10 CEST 2004 - mmj@suse.de + +- When requiring postfix, don't install sendmail + +------------------------------------------------------------------- +Thu Apr 15 07:48:32 CEST 2004 - mmj@suse.de + +- Add the contrib/ directory to the documentation [#38955] + +------------------------------------------------------------------- +Fri Mar 26 11:08:47 CET 2004 - mmj@suse.de + +- Add # postfix to neededforbuild + +------------------------------------------------------------------- +Mon Feb 16 14:57:49 CET 2004 - mmj@suse.de + +- People are going to ask over and over again about the alternates + error, even though it's documented in the manual page, so install + /usr/share/doc/packages/mutt/README.alternates + +------------------------------------------------------------------- +Wed Feb 4 22:49:20 CET 2004 - mmj@suse.de + +- Readd cast that got lost when 99% of a patch was merged upstream + +------------------------------------------------------------------- +Wed Feb 4 22:18:28 CET 2004 - mmj@suse.de + +- Update to 1.5.6 +- Include patch from Joël Riou which + adds a variable config_charset that one may define in a rc file + that contains non ascii characters (aliases files for + instance). Where a rc file is sourced, the commands are + converted from this encoding, so that it works well if you are + used to working in UTF8 xterms but sometimes have to use a + latin-encoded terminal. + +------------------------------------------------------------------- +Mon Nov 17 09:06:15 CET 2003 - mmj@suse.de + +- Use rr.compressed for 1.5.5.1 from the author + +------------------------------------------------------------------- +Wed Nov 5 22:38:27 CET 2003 - mmj@suse.de + +- Update to mutt-1.5.5.1i which includes the missing files + +------------------------------------------------------------------- +Wed Nov 5 13:32:25 CET 2003 - mmj@suse.de + +- Update to mutt-1.5.5i which is the last planned development snap- + shot. +- Remove included/obsoleted patches +- Don't strip explicitly +- For now include snprintf.c and regex.c, they were forgotten in the + mutt tarball. + +------------------------------------------------------------------- +Wed Oct 15 15:59:21 CEST 2003 - mmj@suse.de + +- Don't build as root +- Cleanup specfile a bit + +------------------------------------------------------------------- +Thu Sep 18 11:00:32 CEST 2003 - mmj@suse.de + +- Fix head syntax [#31228] + +------------------------------------------------------------------- +Tue Sep 9 16:25:26 CEST 2003 - pthomas@suse.de + +- Fix for real :( + +------------------------------------------------------------------- +Tue Sep 9 10:06:21 CEST 2003 - pthomas@suse.de + +- Fix the type-punning patch. + +------------------------------------------------------------------- +Thu Sep 4 17:04:09 CEST 2003 - sndirsch@suse.de + +- fixed attaching signature; ".signature" must be "~/.signature" + +------------------------------------------------------------------- +Sat Aug 16 16:19:21 CEST 2003 - adrian@suse.de + +- install desktop file from kappfinder + +------------------------------------------------------------------- +Fri Aug 15 09:39:04 CEST 2003 - ro@suse.de + +- changed neededforbuild: cyrus-sasl + +------------------------------------------------------------------- +Wed Aug 13 19:48:39 CEST 2003 - pthomas@suse.de + +- Fix all cases of (unnecessary) type-punning, thus no need for + -fno-strict-aliasing. +- Include stdlib.h in lib.h for declaration of exit. +- Fix permissions for mutt-1.4.1i-authsasl.diff + +------------------------------------------------------------------- +Wed Aug 13 17:45:23 CEST 2003 - mmj@suse.de + +- Add a better fix from Brendan Cully to fix [#25026] +- Add -fno-strict-aliasing + +------------------------------------------------------------------- +Sat Jul 26 06:56:55 CEST 2003 - kukuk@suse.de + +- cryus-sasl2 was renamed to cyrus-sasl + +------------------------------------------------------------------- +Wed Jul 16 10:51:26 CEST 2003 - mmj@suse.de + +- Add patch from Brendan Cully to fix DIGEST-MD5 sasl + authentication. [#25026] + +------------------------------------------------------------------- +Wed Jun 11 10:19:44 CEST 2003 - mmj@suse.de + +- Rename mbox.5 to mbox_mutt.5 to avoid conflict with tin +- Use %find_lang macro + +------------------------------------------------------------------- +Mon Jun 2 13:47:49 CEST 2003 - mmj@suse.de + +- Add script from Mike Fabian to handle UTF-8 encodings back and + forth [#27140] + +------------------------------------------------------------------- +Tue May 13 12:41:27 CEST 2003 - mmj@suse.de + +- Use %defattr +- Package muttbug + +------------------------------------------------------------------- +Tue Apr 15 10:19:42 CEST 2003 - ro@suse.de + +- fixed neededforbuild + +------------------------------------------------------------------- +Fri Mar 21 14:16:23 CET 2003 - mmj@suse.de + +- Update to 1.4.1 which primarily fixes the imap/utf7.c buffer- + overflow. + +------------------------------------------------------------------- +Fri Jan 24 00:47:38 CET 2003 - mmj@suse.de + +- Add --enable-buffy-size which got lost because the maintainer + kept several versions around + +------------------------------------------------------------------- +Thu Jan 23 23:18:19 CET 2003 - mmj@suse.de + +- Add patch to use sasl2 instead og sasl + +------------------------------------------------------------------- +Mon Jan 6 00:06:01 CET 2003 - mmj@suse.de + +- Below action was not A Good Thing[tm] for all, so made it a + configure option again. + +------------------------------------------------------------------- +Fri Nov 15 07:56:36 CET 2002 - mmj@suse.de + +- Fold the group reply patch in to always be default behaviour + +------------------------------------------------------------------- +Fri Nov 8 01:03:59 CET 2002 - mmj@suse.de + +- Apply fresh 1.4 compressed folder patch instead of 1.3.99 repatch + +------------------------------------------------------------------- +Sat Nov 2 11:30:35 CET 2002 - mmj@suse.de + +- Better version from ME of longline patch + +------------------------------------------------------------------- +Fri Nov 1 20:13:25 CET 2002 - mmj@suse.de + +- Add patch from Michael Elkins to allow lines > 255 [#16030] +- Make patches have a unique name +- Trim the neededforbuild + +------------------------------------------------------------------- +Fri May 31 15:57:22 CEST 2002 - ro@suse.de + +- changed neededforbuild to + +------------------------------------------------------------------- +Fri May 31 11:06:44 CEST 2002 - mmj@suse.de + +- Disabled patches that broke IMAP support. + +------------------------------------------------------------------- +Wed May 29 19:55:01 CEST 2002 - mmj@suse.de + +- Updated to the next STABLE Mutt release 1.4, which includes + improved IMAP and POP support. Better maildir handling, + improved threading. And lots more, which is better summarized + on http://www.mutt.org + +------------------------------------------------------------------- +Tue May 28 22:29:18 CEST 2002 - mmj@suse.de + +- Added a patch to allow longer lines [Bug #16030] +- Added a patch to allow mailboxes > 2 GB [Bug #16356] + +------------------------------------------------------------------- +Tue May 14 11:55:36 CEST 2002 - mmj@suse.de + +- Added a patch from Matthias Eckermann to include the original + To: field in the new To: when doing group reply, and the boolean + 'send_group_reply_to' is set. + +------------------------------------------------------------------- +Fri May 3 12:27:57 CEST 2002 - mmj@suse.de + +- Update to 1.3.99 which is just bugfix release towards 1.4 + +------------------------------------------------------------------- +Wed Apr 3 13:15:08 CEST 2002 - mmj@suse.de + +- automake/autoconf fix. Use AC_LIBOBJ instead of LIBOBJS. + +------------------------------------------------------------------- +Wed Mar 20 09:10:34 MET 2002 - mmj@suse.de + +- Fix segfault in pgpewrap when invoked with incorrect arguments. + Fixes Bug #15213, patch from axboe@ + +------------------------------------------------------------------- +Wed Mar 13 16:31:34 MET 2002 - mmj@suse.de + +- Make /etc/Muttrc %config(noreplace) + +------------------------------------------------------------------- +Wed Mar 13 15:56:04 MET 2002 - mmj@suse.de + +- Updated to 1.3.28 + +------------------------------------------------------------------- +Sun Feb 24 19:06:25 MET 2002 - mmj@suse.de + +- Re-added patches known to work very well, but that was left out + to evaluate vanilla 1.3.27i: + - Compressed folder support + - Iconv patch that fixes qp problems in multibyte locales + +------------------------------------------------------------------- +Thu Feb 14 17:24:33 CET 2002 - schwab@suse.de + +- Don't add /usr/include to include search path. + +------------------------------------------------------------------- +Mon Feb 4 21:15:09 CET 2002 - mmj@suse.de + +- Updated to newest beta-release 1.3.27 + +------------------------------------------------------------------- +Wed Jan 2 14:15:37 CET 2002 - poeml@suse.de + +- add patch-1.2,3.rfc822_terminate.1 which fixes a remote + exploitable string buffer overflow + (minus hunks #8 and #10 which are already in 1.3.22.1) + +------------------------------------------------------------------- +Tue Sep 18 16:45:30 CEST 2001 - bjacke@suse.de + +- fix a possible segfault for a certain search pattern +- fix a possible crash scenario when using gpg and attachments + +------------------------------------------------------------------- +Tue Sep 4 18:34:55 CEST 2001 - bjacke@suse.de + +- fix some memory leaks in imap code +- fix bug where non-regular files could be attached +- po updates + +------------------------------------------------------------------- +Sun Sep 2 01:09:41 CEST 2001 - bjacke@suse.de + +- update to 1.3.22.1 + +------------------------------------------------------------------- +Fri Aug 24 00:44:20 CEST 2001 - bjacke@suse.de + +- update to 1.3.21 which fixes some MH bugs and others + +------------------------------------------------------------------- +Mon Aug 13 15:51:59 CEST 2001 - ro@suse.de + +- changed neededforbuild to + +------------------------------------------------------------------- +Thu Jul 26 17:53:25 CEST 2001 - bjacke@suse.de + +- update to 1.3.20 +- patched to speed up mbox-sort from n^2 to n*log(n) + +------------------------------------------------------------------- +Thu Apr 28 19:43:18 CEST 2001 - bjacke@suse.de + +- another l10n fix +- save manuals gzipped + +------------------------------------------------------------------- +Wed Apr 25 18:49:59 CEST 2001 - mfabian@suse.de + +- remove "fuzzy" in header of ja.po. When the header is marked + as "fuzzy", the charset will not be written to the .mo file + and mutt will not show Japanese messages correctly. +- don't convert string received from gettext again, the new + version of gettext already does the conversion to the charset + of the current locale. + +------------------------------------------------------------------- +Thu Apr 19 14:48:03 CEST 2001 - bjacke@suse.de + +- fixed a buffer underrun +- fixed possible segfault (#6979) +- redisabled buffy fix + +------------------------------------------------------------------- +Sun Mar 25 22:01:47 CEST 2001 - bjacke@suse.de + +- update to 1.3.16i +- dropped superfluous additional options patch +- add compressed folder patch +- activated buffy fix to circumvent recent NFS a-time problems + +------------------------------------------------------------------- +Wed Jan 31 17:15:51 CET 2001 - bjacke@suse.de + +- fixed version in specfile + +------------------------------------------------------------------- +Thu Jan 25 16:45:35 CET 2001 - bjacke@suse.de + +- dropped tmp patch wich did more bad than good + +------------------------------------------------------------------- +Wed Jan 10 19:23:53 CET 2001 - bjacke@suse.de + +- fixed latest fix + +------------------------------------------------------------------- +Tue Jan 9 06:31:16 CET 2001 - bjacke@suse.de + +- applied tmp file patch +- added smtp_daemon to requires + +------------------------------------------------------------------- +Mon Dec 18 13:34:35 CET 2000 - bjacke@suse.de + +- merged muttssl and mutt + +------------------------------------------------------------------- +Mon Dec 11 14:59:15 CET 2000 - bjacke@suse.de + +- enable fcntl and disable flock locking + +------------------------------------------------------------------- +Tue Nov 28 18:59:47 CET 2000 - bjacke@suse.de + +- update to 1.3.12i due to glibc 2.2 locale issues +- fixed neededforbuild (bug 4254) +- minor specfile changes + +------------------------------------------------------------------- +Mon Sep 4 16:24:17 CEST 2000 - vinil@suse.cz + +- czech po file corrected + +------------------------------------------------------------------- +Mon Jul 31 16:31:02 CEST 2000 - werner@suse.de + +- Update to 1.2.5i due bug fixes (IMAP, SIGSEGV in curs_main.c) + +------------------------------------------------------------------- +Fri Jul 7 12:23:47 CEST 2000 - werner@suse.de + +- Update to 1.2.4i due to fixes (IMAP, SSL, ...) done in 1.2.3 + and 1.2.4 + +------------------------------------------------------------------- +Thu Jun 29 20:17:07 CEST 2000 - werner@suse.de + +- Split spec of mutt and muttssl to avoid conflicts during build +- Use different build root to avoid mixed versions +- Update to 1.2.2i to avoid bugs in SSL code, core dumps, and + mailbox corruption + +------------------------------------------------------------------- +Mon May 15 14:25:02 CEST 2000 - werner@suse.de + +- Update to new version 1.2i + * move changes to 1.2i + * enable SSL for imap + * add *.rc from contrib path to doc (samples for pgp using) +- Split mutt into mutt and muttssl + +------------------------------------------------------------------- +Wed Mar 8 15:02:41 CET 2000 - werner@suse.de + +- Disable --enable-exact-address because it fools the users by + asking questions for nothing. + +------------------------------------------------------------------- +Tue Feb 22 15:13:27 CET 2000 - werner@suse.de + +- Fix programming bug: ncurses now does what the docu says. + Therefore use_default_color() should be called only once + after start_color(). + +------------------------------------------------------------------- +Tue Jan 25 20:35:23 CET 2000 - werner@suse.de + +- New version 1.0.1i with some minor bug fixes + +------------------------------------------------------------------- +Tue Jan 25 17:18:51 CET 2000 - kasal@suse.de + +- urlview moved to a new package + +------------------------------------------------------------------- +Tue Jan 18 19:37:52 CET 2000 - werner@suse.de + +- /usr/man -> /usr/share/man +- target is ${RPM_ARCH}-suse-linux and nothing more + +------------------------------------------------------------------- +Tue Jan 18 19:08:24 CET 2000 - werner@suse.de + +- New mutt version 1.0i + * patch for two letter year (e.g. 00) +- New urlview version + * A SuSE url_handler.sh script + * A SuSE urlview.conf + +------------------------------------------------------------------- +Mon Oct 18 18:22:25 CEST 1999 - garloff@suse.de + +- highlight_unread sometimes didn't work. Fixed. + +------------------------------------------------------------------- +Thu Oct 14 18:06:37 CEST 1999 - garloff@suse.de + +- Added contrib/Pine.rc and Mush.rc to as %docs + +------------------------------------------------------------------- +Wed Oct 13 23:00:43 CEST 1999 - garloff@suse.de + +- Two new options: "delete_tilde" and "highlight_unread". + The meaning is obvious ... + +------------------------------------------------------------------- +Fri Oct 1 16:41:55 CEST 1999 - werner@suse.de + +- Added gpg in neededforbuild to get both pgp and gpg + path included into mutt. + +------------------------------------------------------------------- +Tue Sep 28 22:39:27 CEST 1999 - werner@suse.de + +- Put urlview into mutt package +- Use changes Muttrc instead of my.Muttrc + * there is no variable web_browser anymore +- Require ispell to get spell feature +- A few sample muttrc and urlview(rc) for aaa_skel + +------------------------------------------------------------------- +Tue Sep 28 14:36:28 CEST 1999 - ro@suse.de + +- update to 1.0pre3 + +------------------------------------------------------------------- +Mon Sep 13 17:23:57 CEST 1999 - bs@suse.de + +- ran old prepare_spec on spec file to switch to new prepare_spec. + +------------------------------------------------------------------- +Tue Jul 20 12:51:51 MEST 1999 - florian@suse.de + +- update to 0.95.6i + +------------------------------------------------------------------- +Wed Apr 14 17:35:05 MEST 1999 - ro@suse.de + +- use gettext in neededforbuilt (builtin won't work) + +------------------------------------------------------------------- +Tue Apr 6 12:56:03 MEST 1999 - ro@suse.de + +- update to 0.95.4i + +------------------------------------------------------------------- +Thu Dec 3 18:33:14 MET 1998 - bs@suse.de + +- added sp and sp_libs to neededforbuild + +------------------------------------------------------------------- +Wed Dec 2 21:04:00 MET 1998 - bs@suse.de + +- use sgmtools instead of linuxdoc for build + +---------------------------------------------------------------------------- +Wed Jul 29 15:46:29 MEST 1998 - florian@suse.de + +- add security patch + +---------------------------------------------------------------------------- +Sun Jul 19 18:06:39 MEST 1998 - florian@suse.de + +- update to version 0.93.1i + +---------------------------------------------------------------------------- +Thu Feb 5 11:14:17 MET 1998 - florian@suse.de + +- update to version 0.89.1 + +---------------------------------------------------------------------------- +Thu Oct 9 19:08:47 MEST 1997 - florian@suse.de + +- update to version 0.85 + +---------------------------------------------------------------------------- +Tue May 20 14:10:37 MEST 1997 - florian@suse.de + + +- update to version 0.74 + + +---------------------------------------------------------------------------- +Sun Apr 13 23:04:29 MEST 1997 - florian@suse.de + + +- update to new version 0.69 + + + +---------------------------------------------------------------------------- +Tue Jan 28 14:37:08 CET 1997 - florian@suse.de + + +- update to new version 0.59 + +- pgp-support is enabled + + +---------------------------------------------------------------------------- +Tue Nov 26 20:15:03 CET 1996 - florian@suse.de + + +- update to version 0.52 + + +---------------------------------------------------------------------------- +Sat Nov 16 20:28:43 CET 1996 - florian@suse.de + + +- update to version 0.51 + + +---------------------------------------------------------------------------- +Mon Nov 11 01:29:48 CET 1996 - florian@suse.de + + +- update to version 0.50 + + + +---------------------------------------------------------------------------- +Sat Nov 2 17:35:11 CET 1996 - florian@suse.de + + +- update to version 0.49 + + +---------------------------------------------------------------------------- +Tue Oct 22 22:14:08 MEST 1996 - florian@suse.de + + +- Neue Version 0.48.1 mit vielen Veraenderungen. + +- Anpassungen fuer eine korrekte Host-Absenderadresse. + +- Umstieg auf non-sgid-mail spool-Verzeichnis. + + + +---------------------------------------------------------------------------- +Sat Sep 21 01:18:40 MET DST 1996 - florian@suse.de + + +- update to newer version + + +----------------------------------------------------------------------- +Mon Sep 2 03:06:07 MET DST 1996 + + +new version. diff --git a/mutt.desktop b/mutt.desktop new file mode 100644 index 0000000..0db683a --- /dev/null +++ b/mutt.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Categories=ConsoleOnly;Network;Email +Encoding=UTF-8 +Exec=mutt %u +Icon=mutt +Type=Application +Name=Mutt +GenericName=Mail Client +Terminal=true +MimeType=x-scheme-handler/mailto; diff --git a/mutt.keyring b/mutt.keyring new file mode 100644 index 0000000..8dbd4a7 --- /dev/null +++ b/mutt.keyring @@ -0,0 +1,52 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mQINBFVrOF8BEADyloq5SM1I7bN6CabfJMbd4kdd2hoeAlvcBOmI5TKoB5IDXhzQ +1WsNza4Afl0dRyP9y2ERn8wK7YYqD9UU50p9dw9WN/Ghyr0ZzBBF0d/hygEzfXR8 +byTPSWsBa+i7dEyYPEyTj8RBx7WkPr7XcV1pTTcK/qhHYLxynIa5yAJ5Hp/SmgRj +tu0LoNQ5P6XoQ1OVg/ItboqTnp1uYaVIy1j8mtCffUiyBiSB5fcM7wXiqBQMEe6i +egJM0Hnb38GTDZjdevlk2DMMXx6yWdvHa8y1U5pkY8vQsVPnJb/sErqoQK+q+UDX +lHoNGqfvGiq1VdQxW2NcY3RLkQmxlYo3Y0246XS+jift470Ip9bvDDUFoXF637B+ +LNrX8dwGAzb3nP6bW5N81SFv8lrGEEK6hj2rrBUsCFGDvkgl7EhLAKnySGJq/ZXo +Vk74whAC0DDRrSHQ402GfJEiEIeJQSbAQuExRwUmWC4K0VPbCKmrDHgO147TfJOb +cNVBrxXhgEuZV3/UEm0gL9fhK4MEZ+sf/qfLjdc400Xli4WtDFaOWtmcefuRAHbA +Huns2upG6Jh3ONByb9wPcJ9hzDFfBcXWjpvHpho9jH6ZreDlUg6AN6j3Fj6D3Sgo +1AAF0aGdc5KoeoD90P2vNI30AhSiYiJBg90rFyWCcPUYAZXwUMS8u4yOswARAQAB +tCBLZXZpbiBKLiBNY0NhcnRoeSA8a2V2aW5AOHQ4LnVzPokCVAQTAQoAPgIbAwUL +CQgHAwUVCgkICwUWAgMBAAIeAQIXgBYhBIl1qbM6o3kQOFxTCK3vdoSAMWvaBQJf +b644BQkPqBBZAAoJEK3vdoSAMWvaUYQQAOon9lb9iOZlvCU8jz3uM1EqOT8zcaSx +HVkAi8lpudurpp3B1j6QnAfZltnbSpzczUx7ar9fQ2C6FIxuCR9z3pnY8ETeHLfF +oSiNveBBUbWIRxGUjLjaid556VSYMfrk9jrE9OnHseEuHlnN/HKgmAgC/bJnUNPQ +NJ4jEsDIgKvWUoXV4SUffW+Z97AAMNhIXT+2IP1kuvPF4fU2ogsQOGTdVuuRUwv2 +3jR/YgOIH9+W1CIGXljZhXRus3sYFoxx3JaM5AYVgG3cK678O0uPgUsI0ihXc8Ab +tVCY04sA4/PtkeduDNlIfgwmLhA+a2c1NPbBYG8jYVaQsg3FHQ/OXaoYhbPus4is +uhcmExjmP2NMckYzBHrE32Ar9mRcEHvaoEwm/sJUkEUbqKZOvYb3kFsJnW8sl20B +SS8TIqnXdCgyxHANJihzQXoTSi++WzjPvKn7lMVptsN4lMQvbQo/9AZTxPhZrQAs +573UFmtgWbExHQkDv+bIIpWXmszNffdMpRvUyQMH87rF9vxZeepmwyDWB58ph+r0 +Pj5nBKiicA8hDM65It/S9xgPU/b+slrcw3htr2BvUnN+ygmTsWc87TqiiLpvpvw3 +W9AKHZjAakqYkkFmFXY4I7RmZEPn0ktkM8zrw2TJXPPgpWqFmP6LGtuyrd/OMqmZ +Fhr+hXSQOJtMuQINBFVrOF8BEAC8mH9Y69KnIrPPBShaw6DTXENRDZzbs0xWbYsX +K8Osqvq5bS+0YhqbNDlChQp92mkMx/Nj+duci2Vh4cfHZCaklEchTAkvCDp+plcM +ctOeohT0lPjC4X/Z1/tSfsbw7d9sKMVCTAEBXFTRPsw5wzRI1RUbdm0birwmqjpI +as8NmyDH/tUINOthKFlnzPPK7+L2s4gpuZvV8PyXTfhoose3UMcuT2SJ2JvKaYgz +XtpRn2bwfD7mCzfp3v7bfyAZtimUyXH3LXEmepxHtFQjINDwaPShIOxykDXfZghQ +0n8uTNmkcydLi6TcOkrN5JMFMCaT4JA2xsjhRBSxXhCQS1Z5Gow6CL8OuLhDT4/1 +3wSt4EWMdaDjPQGWO86GMjmb/BSQBGFb3NfIRMeqKslfSswLcbUDv5z8OuasCLE7 +e9aenuRyimU82PFdLnx6EObhG9F6zbYpMWxwwOnH1k7eXdh5rMhHrDT60G2ytQYb +kT0gux3ytP0N9eeVbkCKbXVIqNdil2fYAL9ydDm7+AtEi/aOWsybVX0Dy//yEUAt +Auqo8ifPDOpXi3mS2nLfk25sWumV/3qHn0YODk9ht9xMpU8LNZcJ99qhizEp+fuw +ZZJDWtqwIWguJ8au0zoHRXdkWoXBh6akoO3sEXzxMeCofKnYo6+GVayGGCUPbMtd +/xR9CQARAQABiQI8BBgBCgAmAhsMFiEEiXWpszqjeRA4XFMIre92hIAxa9oFAl9v +rkEFCQ+oEGIACgkQre92hIAxa9qh4w/+KpiZmFxNRewCpZTAclO8RFGhZznMsfgY +bEWuD+0zPE62JRKP73e6VjJaKLjv91Se394Wt1WCiM/xUioNIgTntj00N7mxNi91 +huQdm4HcY5MDtMVzUFimIYTDkO8lEV26klLr6csXQ1JLC7H4BPi+QMrWfYfn0dcv +ozmLK+OtR+Qdl6Se6KrGQmSq2Ic/hf0Pz1TkPH3wovolHDhvOPfrm2WG/nmnW1+O +xdAitfXVdLXaC53j0Aypbqlu7gBE3t1/vEplewCxpUrwe2Vig8SNjngV70/jZlHZ ++IaSk1cqpeUjIvT3l1xg6cGtkZeD6xKzHG3/pHiWGcwgQbHpwnpLo2Fp5NVVm/Sm +5ny3uK/JrmeqZjqSzmek635p9cVHQvscp2IwChI1HBMbvdAMNCOiwZdcTtDj2Lcf +r3DA3uV6cfeu6k3LPzX30igpVkM4Bmx+5z3C0tPDN52UpG0sz2khszmHVENpwD3N +599+w/Bn3dH97M7HywnH8RdWeyql7rhJMe4QjfO4VVLNFJbX40bRrdsFyCeza7Rl +gW5Dw0F2fFg/JHfk+KtWbz8GL5yK2O3ohUw6jk5qgett2JAH3ro7My6pfsvQrLNf +zfu3rcNcRPWDE+Fg3GhOyQWAYxN2lGncWuOBfNhDOyjvBsLUfrKQtIV5kuYf7/oi +Vpd8jtu9noc= +=uho+ +-----END PGP PUBLIC KEY BLOCK----- diff --git a/mutt.mailcap b/mutt.mailcap new file mode 100644 index 0000000..3f0dd60 --- /dev/null +++ b/mutt.mailcap @@ -0,0 +1,2 @@ +# render html mail with w3m +text/html; w3m -I %{charset} -T text/html -dump %s; copiousoutput diff --git a/mutt.png b/mutt.png new file mode 100644 index 0000000..255e17d --- /dev/null +++ b/mutt.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b623cb2197d6f07d4b8d13a0c38636c089631851c4adf450167a1b6e92414e51 +size 2460 diff --git a/mutt.spec b/mutt.spec new file mode 100644 index 0000000..acd6d71 --- /dev/null +++ b/mutt.spec @@ -0,0 +1,408 @@ +# +# spec file for package mutt +# +# Copyright (c) 2024 SUSE LLC +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# + + +%global _sysconfdir %{_sysconfdir} +%bcond_with mutt_openssl +%bcond_without mutt_gnutls +Name: mutt +Version: 2.2.13 +Release: 0 +Summary: Mail Program +# ftp://ftp.mutt.org/mutt/devel/ +# https:///bitbucket.org/mutt/mutt/downloads/%%name-%%version.tar.gz +License: GPL-2.0-or-later +Group: Productivity/Networking/Email/Clients +URL: http://www.mutt.org +Source0: https://bitbucket.org/mutt/mutt/downloads/mutt-%{version}.tar.gz +Source1: Signature_conversion +Source2: README.alternates +Source3: mutt.png +Source4: mutt.desktop +Source5: skel.muttrc +Source6: mutt_oauth2.py-3.6 +Source7: mutt_oauth2.py.README +Source8: backports-datetime-fromisoformat-1.0.0.tar.gz +Source9: mutt.mailcap +Source10: https://bitbucket.org/mutt/mutt/downloads/mutt-%{version}.tar.gz.asc +Source11: mutt.keyring +Patch0: %{name}-1.13.3.dif +# http://www.spinnaker.de/mutt/compressed/ +Patch2: %{name}-1.5.9i-pgpewrap.diff +Patch3: %{name}-1.5.20-sendgroupreplyto.diff +Patch4: %{name}-1.5.15-wrapcolumn.diff +Patch7: mutt-1.6.1-opennfs.dif +Patch12: patch-1.5.24.vk.pgp_verbose_mime +# PATCH-FIX-OPENSUSE: bnc#813498 - mutt crashes in fgetwc in text_enriched_handler +Patch15: widechar.sidebar.dif +# PATCH-FIX-OPENSUSE: Be able to read signed/encrypted messsages even with CRLF +Patch16: mutt-1.5.23-carriage-return.path +# PATCH-FIX-OPENSUSE bnc#899712 - fallback mailcap for e.g text/html +Patch18: mutt-1.5.21-mailcap.diff +# PATCH-FIX-SUSE: bsc#907453 - CVE-2014-9116: mutt: heap-based buffer overflow in mutt_substrdup() +Patch19: bsc907453-CVE-2014-9116-jessie.patch +# PATCH-ENHANCE-SUSE: allow to list current imap folders +Patch20: mutt-1.10.1-imap.patch +# PATCH-ENHANCE-SUSE: boo#1156477 - Mutt has an option to ask before quitting on ^C but quits immediately on ^4 +Patch21: mutt-Fix-SIGQUIT-handling.patch +BuildRequires: autoconf +BuildRequires: automake +BuildRequires: cyrus-sasl +BuildRequires: cyrus-sasl-gssapi +BuildRequires: cyrus-sasl-plain +BuildRequires: docbook-dsssl-stylesheets +BuildRequires: docbook-xsl-stylesheets +BuildRequires: docbook2x +BuildRequires: hunspell +BuildRequires: iso_ent +BuildRequires: libgpgme-devel +BuildRequires: libxslt-tools +BuildRequires: makeinfo +BuildRequires: openjade +BuildRequires: opensp +BuildRequires: pkgconfig +BuildRequires: texlive-jadetex +BuildRequires: w3m +BuildRequires: pkgconfig(gssrpc) +BuildRequires: pkgconfig(krb5) +BuildRequires: pkgconfig(libsasl2) +BuildRequires: pkgconfig(sqlite3) +BuildRequires: tex(8r.enc) +%if 0%{suse_version} >= 1500 +BuildRequires: python3-base +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: smtp_daemon +%endif +Requires: cyrus-sasl-gssapi +Requires: cyrus-sasl-plain +Requires: glibc-locale +Suggests: smtp_daemon +Requires(post): %{_bindir}/cat +Requires(post): %{_bindir}/mkdir +Requires(postun):%{_bindir}/rm +Requires(pre): %{_bindir}/grep +Requires(pre): %{_bindir}/zcat +Recommends: hunspell +Recommends: mutt-doc +Recommends: mutt-lang +Recommends: urlscan +Recommends: urlview +Recommends: w3m +%if %{with mutt_openssl} +BuildRequires: pkgconfig(openssl) +%endif +%if %{with mutt_gnutls} +BuildRequires: pkgconfig(gnutls) +%endif +%if 0%{?suse_version} > 1315 +BuildRequires: pkgconfig(kyotocabinet) +%else +BuildRequires: libkyotocabinet-devel +%endif +%if 0%{?suse_version} > 1315 +BuildRequires: pkgconfig(libidn2) +%else +BuildRequires: pkgconfig(libidn) +%endif +%if 0%{?suse_version} > 1315 +BuildRequires: pkgconfig(ncurses) +%else +BuildRequires: ncurses-devel +%endif +%if 0%{?suse_version} > 1130 +BuildRequires: pkgconfig(shared-mime-info) +%endif +%if 0%{?suse_version} +BuildRequires: update-desktop-files +%endif +%if 0%{?suse_version} > 1130 +Requires(post): shared-mime-info +Requires(postun):shared-mime-info +%endif + +%description +A very powerful mail user agent. It supports (among other nice things) +highlighting, threading, and PGP. It takes some time to get used to, +however. This version is based on NeoMutt, that is it includes many +enhancements. + +%package doc +Summary: Additional Documentation about Mutt +Group: Documentation/Other +Requires: %{name} = %{version} +Requires(post): %{install_info_prereq} +Requires(preun):%{install_info_prereq} +Recommends: perl(Expect) +Provides: %{name}:%{_docdir}/%{name}/COPYRIGHT +BuildArch: noarch + +%description doc +Some extend documentation about mutt together with muttrc examples +for different environments and requirements. + +%package lang +# FIXME: consider using %%lang_package macro +Summary: Languages for Mutt +Group: System/Localization +Requires: %{name} = %{version} +Provides: mutt:%{_datadir}/locale/en_GB/LC_MESSAGES/mutt.mo +BuildArch: noarch + +%description lang +Provides translations to the package mutt. + +%prep +%setup -q -n mutt-%{version} +%patch -P 0 -b .p0 +%patch -P 2 -b .pgpewrap +%patch -P 3 -b .sendgroupreplyto +%patch -P 4 -b .wrapcolumn +%patch -P 7 -b .opennfs +%patch -P 12 -b .pgp_verbose_mtime +%patch -P 15 -b .widechar.sidebar +%patch -P 16 -b .crlf +%patch -P 18 -b .mailcap +%patch -P 19 -b .cvw2014.9116 +%patch -P 20 -b .imap +%patch -P 21 -b .quit + +cp %{SOURCE2} . + +%build +mkdir bin +ln -sf /usr/bin/docbook-to-texi bin/docbook2texi +%if %{with mutt_gnutls} +echo 'set ssl_ca_certificates_file="%{_sysconfdir}/ssl/ca-bundle.pem"' >> doc/Muttrc.head +%endif +autoreconf -fi + cflags () + { + local flag=$1; shift + local var=$1; shift + test -n "${flag}" -a -n "${var}" || return + case "${!var}" in + *${flag}*) return + esac + set -o noclobber + case "$flag" in + -Wl,*) + if echo 'int main () { return 0; }' | \ + ${CC:-gcc} -Werror $flag -o /dev/null -xc - > /dev/null 2>&1 ; then + eval $var=\${$var:+\$$var\ }$flag + fi + ;; + *) + if ${CC:-gcc} -Werror $flag -S -o /dev/null -xc /dev/null > /dev/null 2>&1 ; then + eval $var=\${$var:+\$$var\ }$flag + fi + esac + set +o noclobber + } +CC=gcc +CFLAGS="-Wall %{optflags} -I. -D_GNU_SOURCE" +cflags -fno-strict-aliasing CFLAGS +cflags -fstack-protector CFLAGS +cflags -fPIE CFLAGS +cflags -g3 CFLAGS +cflags -pipe CFLAGS +cflags -Wl,--as-needed LDFLAGS +cflags -Wl,-O2 LDFLAGS +cflags -pie LDFLAGS +export CC CFLAGS LDFLAGS +export SENDMAIL=%{_sbindir}/sendmail +export ISPELL=%{_bindir}/hunspell +export PATH="%{_prefix}/lib/mit/bin:${PWD}/bin:$PATH" +export KRB5CFGPATH="$(type -p krb5-config)" +$KRB5CFGPATH --cflags gssapi +$KRB5CFGPATH --libs gssapi +$KRB5CFGPATH --version +%configure \ + --with-docdir=%{_docdir}/%{name} \ +%if %{with mutt_openssl} + --without-gnutls \ + --with-ssl=%{_prefix} \ +%endif +%if %{with mutt_gnutls} + --without-ssl \ + --with-gnutls=%{_prefix} \ +%endif + --enable-autocrypt \ + --enable-imap \ + --enable-pop \ + --enable-pgp \ + --enable-gpgme \ + --enable-nfs-fix \ + --enable-mailtool \ + --enable-compressed \ + --enable-sidebar \ + --disable-external-dotlock \ + --with-kyotocabinet \ + --with-sasl=%{_prefix} \ + --with-gss=%{_prefix} \ + --with-curses=%{_prefix} \ + --with-sqlite3=%{_prefix} \ + --enable-smtp \ + --enable-hcache \ + --enable-debug \ +%if 0%{?suse_version} > 1315 + --with-idn2 +%else + --with-idn +%endif +%make_build -C doc clean +%make_build +%make_build -C doc +%make_build manual.pdf -C doc + +%install +%make_install +install -m 755 %{SOURCE1} %{buildroot}%{_bindir} +gzip -n -9 doc/manu*.txt +rm -f contrib/Makefile* +# datadir not automatically created: +mkdir -p %{buildroot}%{_datadir}/mutt +# INSTALL file should be removed: +rm -rf %{buildroot}%{_docdir}/%{name}/INSTALL +# mbox/mmdf manual page conflicts with the one from tin, so rename it +mv %{buildroot}%{_mandir}/man5/mbox.5 \ + %{buildroot}%{_mandir}/man5/mbox_mutt.5 +mv %{buildroot}%{_mandir}/man5/mmdf.5 \ + %{buildroot}%{_mandir}/man5/mmdf_mutt.5 + %find_lang %{name} +# We get mime.types from aaa_base +rm -f %{buildroot}%{_sysconfdir}/mime.types +# Mutt BTS is gone +rm -f %{buildroot}%{_mandir}/man1/{flea*,muttbug*} +rm -f %{buildroot}%{_bindir}/{flea,muttbug} +rm -f %{buildroot}%{_sysconfdir}/Muttrc.dist +rm -f %{buildroot}%{_sysconfdir}/mime.types.dist +mkdir -p %{buildroot}%{_datadir}/pixmaps +install -m 644 %{SOURCE3} %{buildroot}%{_datadir}/pixmaps/ +mkdir -p %{buildroot}%{_datadir}/applications +install -m 644 %{SOURCE4} %{buildroot}%{_datadir}/applications/ +install -D -m 644 %{SOURCE5} %{buildroot}%{_sysconfdir}/skel/.muttrc +install -D -m 644 %{SOURCE9} %{buildroot}%{_datadir}/%{name}/mailcap +rm -vf %{buildroot}%{_docdir}/%{name}/manual.txt +install -D -m 644 doc/manual.txt.gz %{buildroot}%{_docdir}/%{name}/ +install -D -m 644 doc/manual.pdf %{buildroot}%{_docdir}/%{name}/ + +mv %{buildroot}%{_sysconfdir}/Muttrc %{buildroot}%{_datadir}/%{name}/Muttrc +sed -rn '/Command formats for gpg/,$p' %{SOURCE5} >> %{buildroot}%{_datadir}/%{name}/Muttrc + +%if 0%{?suse_version} +%suse_update_desktop_file mutt +%endif + +%if 0%{suse_version} >= 1500 +mkdir -p %{buildroot}%{_docdir}/%{name} +install -m 755 %{SOURCE6} %{buildroot}%{_docdir}/%{name}/mutt_oauth2.py +install -m 644 %{SOURCE7} %{buildroot}%{_docdir}/%{name}/mutt_oauth2.py.README +%if %{?pkg_vcmp:%{pkg_vcmp python3-base < 3.7.0}}%{!?pkg_vcmp:0} +tar xf %{SOURCE8} +pushd backports-datetime-fromisoformat-1.0.0 + python3 setup.py install --root %{buildroot} +popd +%endif +%endif + +%pre +if test $1 -gt 1 -a -e %{_docdir}/%{name}/manual.txt.gz +then + zcat %{_docdir}/%{name}/manual.txt.gz | grep -F 'version %{version}' > /run/mutt-version || : +fi + +%post +%mime_database_post +if test -f /run/mutt-version -a ! -s /run/mutt-version +then + mkdir -p %{_localstatedir}/adm/update-messages + cat > %{_localstatedir}/adm/update-messages/%{name}-%{version}-%{release}-notify <<-'EOF' + With %{name}-%{version} some variables and the behaviour changes: + $send_multipart_alternative changes to run in batch mode on ask-yes. + $write_bcc changes to default off + EOF +fi + +%postun +%mime_database_postun +rm -f %{_localstatedir}/adm/update-messages/%{name}-%{version}-%{release}-notify + +%post doc +%install_info --info-dir=%{_infodir} "%{_infodir}/mutt.info.gz" + +%preun doc +%install_info_delete --info-dir=%{_infodir} "%{_infodir}/mutt.info.gz" + +%files +%config(noreplace) %{_sysconfdir}/skel/.muttrc +%{_bindir}/mutt +%{_bindir}/pgpewrap +%{_bindir}/mutt_pgpring +%{_bindir}/smime_keys +%{_bindir}/Signature_conversion +%{_datadir}/applications/*.desktop +%{_datadir}/pixmaps/mutt.png +%{_mandir}/man1/mutt.1%{?ext_man} +%{_mandir}/man1/*pgp*.1%{?ext_man} +%{_mandir}/man1/smime_keys.1%{?ext_man} +%{_mandir}/man5/mmdf_mutt.5%{?ext_man} +%{_mandir}/man5/muttrc.5%{?ext_man} +%{_mandir}/man5/mbox_mutt.5%{?ext_man} +%dir %{_datadir}/mutt/ +%{_datadir}/mutt/mailcap +%dir %doc %{_docdir}/%{name}/ +%doc %{_docdir}/%{name}/manual.txt.gz +%{_datadir}/%{name}/Muttrc +%if 0%{suse_version} >= 1500 +%{_docdir}/%{name}/mutt_oauth2.py +%{_docdir}/%{name}/mutt_oauth2.py.README +%if %{?pkg_vcmp:%{pkg_vcmp python3-base < 3.7.0}}%{!?pkg_vcmp:0} +%{python3_sitearch}/backports +%{python3_sitearch}/backports_datetime_fromisoformat-1.0.0-py3.6.egg-info +%endif +%endif + +%files doc +%doc %{_docdir}/%{name}/manual.pdf +%doc %{_docdir}/%{name}/COPYRIGHT +%doc %{_docdir}/%{name}/ChangeLog +%doc %{_docdir}/%{name}/GPL +%doc %{_docdir}/%{name}/NEWS +%doc %{_docdir}/%{name}/README* +%doc %{_docdir}/%{name}/TODO +%doc %{_docdir}/%{name}/*.html +%doc %{_docdir}/%{name}/*.txt +%dir %doc %{_docdir}/%{name}/samples/ +%doc %{_docdir}/%{name}/samples/*.rc +%doc %{_docdir}/%{name}/samples/ca-bundle.crt +%doc %{_docdir}/%{name}/samples/colors.* +%doc %{_docdir}/%{name}/samples/markdown2html +%doc %{_docdir}/%{name}/samples/mutt_oauth2.py +%doc %{_docdir}/%{name}/samples/mutt_oauth2.py.README +%doc %{_docdir}/%{name}/samples/mutt_xtitle +%doc %{_docdir}/%{name}/samples/sample.* +%doc %{_docdir}/%{name}/samples/smime_keys_test.pl +%doc %{_docdir}/%{name}/samples/bgedit-detectgui.sh +%doc %{_docdir}/%{name}/samples/bgedit-screen-tmux.sh +%dir %doc %{_docdir}/%{name}/samples/iconv/ +%doc %{_docdir}/%{name}/samples/iconv/*.rc +%{_infodir}/*.gz + +%files lang -f %{name}.lang + +%changelog diff --git a/mutt_oauth2.py-3.6 b/mutt_oauth2.py-3.6 new file mode 100644 index 0000000..2a8bbb1 --- /dev/null +++ b/mutt_oauth2.py-3.6 @@ -0,0 +1,434 @@ +#!/usr/bin/python3 +# +# Mutt OAuth2 token management script, version 2020-08-07 +# Written against python 3.7.3, not tried with earlier python versions. +# +# Copyright (C) 2020 Alexander Perlis +# +# 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. +'''Mutt OAuth2 token management''' + +import sys +import json +import argparse +import urllib.parse +import urllib.request +import imaplib +import poplib +import smtplib +import base64 +import secrets +import hashlib +import time +if sys.version_info < (3,7): + from datetime import date, timedelta, datetime, time + from backports.datetime_fromisoformat import MonkeyPatch +else: + from datetime import timedelta, datetime +from pathlib import Path +import socket +import http.server +import subprocess +if sys.version_info < (3,7): + from subprocess import PIPE + MonkeyPatch.patch_fromisoformat() + +# The token file must be encrypted because it contains multi-use bearer tokens +# whose usage does not require additional verification. Specify whichever +# encryption and decryption pipes you prefer. They should read from standard +# input and write to standard output. The example values here invoke GPG, +# although won't work until an appropriate identity appears in the first line. +ENCRYPTION_PIPE = ['gpg', '--encrypt', '--recipient', 'YOUR_GPG_IDENTITY'] +DECRYPTION_PIPE = ['gpg', '--decrypt'] + +registrations = { + 'google': { + 'authorize_endpoint': 'https://accounts.google.com/o/oauth2/auth', + 'devicecode_endpoint': 'https://oauth2.googleapis.com/device/code', + 'token_endpoint': 'https://accounts.google.com/o/oauth2/token', + 'redirect_uri': 'urn:ietf:wg:oauth:2.0:oob', + 'imap_endpoint': 'imap.gmail.com', + 'pop_endpoint': 'pop.gmail.com', + 'smtp_endpoint': 'smtp.gmail.com', + 'sasl_method': 'OAUTHBEARER', + 'scope': 'https://mail.google.com/', + 'client_id': '', + 'client_secret': '', + }, + 'microsoft': { + 'authorize_endpoint': 'https://login.microsoftonline.com/common/oauth2/v2.0/authorize', + 'devicecode_endpoint': 'https://login.microsoftonline.com/common/oauth2/v2.0/devicecode', + 'token_endpoint': 'https://login.microsoftonline.com/common/oauth2/v2.0/token', + 'redirect_uri': 'https://login.microsoftonline.com/common/oauth2/nativeclient', + 'tenant': 'common', + 'imap_endpoint': 'outlook.office365.com', + 'pop_endpoint': 'outlook.office365.com', + 'smtp_endpoint': 'smtp.office365.com', + 'sasl_method': 'XOAUTH2', + 'scope': ('offline_access https://outlook.office.com/IMAP.AccessAsUser.All ' + 'https://outlook.office.com/POP.AccessAsUser.All ' + 'https://outlook.office.com/SMTP.Send'), + 'client_id': '', + 'client_secret': '', + }, +} + +ap = argparse.ArgumentParser(epilog=''' +This script obtains and prints a valid OAuth2 access token. State is maintained in an +encrypted TOKENFILE. Run with "--verbose --authorize" to get started or whenever all +tokens have expired, optionally with "--authflow" to override the default authorization +flow. To truly start over from scratch, first delete TOKENFILE. Use "--verbose --test" +to test the IMAP/POP/SMTP endpoints. +''') +ap.add_argument('-v', '--verbose', action='store_true', help='increase verbosity') +ap.add_argument('-d', '--debug', action='store_true', help='enable debug output') +ap.add_argument('tokenfile', help='persistent token storage') +ap.add_argument('-a', '--authorize', action='store_true', help='manually authorize new tokens') +ap.add_argument('--authflow', help='authcode | localhostauthcode | devicecode') +ap.add_argument('-t', '--test', action='store_true', help='test IMAP/POP/SMTP endpoints') +args = ap.parse_args() + +token = {} +path = Path(args.tokenfile) +if path.exists(): + if 0o777 & path.stat().st_mode != 0o600: + sys.exit('Token file has unsafe mode. Suggest deleting and starting over.') + try: + if sys.version_info < (3,7): + sub = subprocess.run(DECRYPTION_PIPE, check=True, input=path.read_bytes(), + stdout=PIPE, stderr=PIPE) + else: + sub = subprocess.run(DECRYPTION_PIPE, check=True, input=path.read_bytes(), + capture_output=True) + token = json.loads(sub.stdout) + except subprocess.CalledProcessError: + sys.exit('Difficulty decrypting token file. Is your decryption agent primed for ' + 'non-interactive usage, or an appropriate environment variable such as ' + 'GPG_TTY set to allow interactive agent usage from inside a pipe?') + + +def writetokenfile(): + '''Writes global token dictionary into token file.''' + if not path.exists(): + path.touch(mode=0o600) + if 0o777 & path.stat().st_mode != 0o600: + sys.exit('Token file has unsafe mode. Suggest deleting and starting over.') + if sys.version_info < (3,7): + sub2 = subprocess.run(ENCRYPTION_PIPE, check=True, input=json.dumps(token).encode(), + stdout=PIPE, stderr=PIPE) + else: + sub2 = subprocess.run(ENCRYPTION_PIPE, check=True, input=json.dumps(token).encode(), + capture_output=True) + path.write_bytes(sub2.stdout) + + +if args.debug: + print('Obtained from token file:', json.dumps(token)) +if not token: + if not args.authorize: + sys.exit('You must run script with "--authorize" at least once.') + print('Available app and endpoint registrations:', *registrations) + token['registration'] = input('OAuth2 registration: ') + token['authflow'] = input('Preferred OAuth2 flow ("authcode" or "localhostauthcode" ' + 'or "devicecode"): ') + token['email'] = input('Account e-mail address: ') + token['access_token'] = '' + token['access_token_expiration'] = '' + token['refresh_token'] = '' + writetokenfile() + +if token['registration'] not in registrations: + sys.exit(f'ERROR: Unknown registration "{token["registration"]}". Delete token file ' + f'and start over.') +registration = registrations[token['registration']] + +authflow = token['authflow'] +if args.authflow: + authflow = args.authflow + +baseparams = {'client_id': registration['client_id']} +# Microsoft uses 'tenant' but Google does not +if 'tenant' in registration: + baseparams['tenant'] = registration['tenant'] + + +def access_token_valid(): + '''Returns True when stored access token exists and is still valid at this time.''' + token_exp = token['access_token_expiration'] + return token_exp and datetime.now() < datetime.fromisoformat(token_exp) + + +def update_tokens(r): + '''Takes a response dictionary, extracts tokens out of it, and updates token file.''' + token['access_token'] = r['access_token'] + token['access_token_expiration'] = (datetime.now() + + timedelta(seconds=int(r['expires_in']))).isoformat() + if 'refresh_token' in r: + token['refresh_token'] = r['refresh_token'] + writetokenfile() + if args.verbose: + print(f'NOTICE: Obtained new access token, expires {token["access_token_expiration"]}.') + + +if args.authorize: + p = baseparams.copy() + p['scope'] = registration['scope'] + + if authflow in ('authcode', 'localhostauthcode'): + verifier = secrets.token_urlsafe(90) + challenge = base64.urlsafe_b64encode(hashlib.sha256(verifier.encode()).digest())[:-1] + redirect_uri = registration['redirect_uri'] + listen_port = 0 + if authflow == 'localhostauthcode': + # Find an available port to listen on + s = socket.socket() + s.bind(('127.0.0.1', 0)) + listen_port = s.getsockname()[1] + s.close() + redirect_uri = 'http://localhost:'+str(listen_port)+'/' + # Probably should edit the port number into the actual redirect URL. + + p.update({'login_hint': token['email'], + 'response_type': 'code', + 'redirect_uri': redirect_uri, + 'code_challenge': challenge, + 'code_challenge_method': 'S256'}) + print(registration["authorize_endpoint"] + '?' + + urllib.parse.urlencode(p, quote_via=urllib.parse.quote)) + + authcode = '' + if authflow == 'authcode': + authcode = input('Visit displayed URL to retrieve authorization code. Enter ' + 'code from server (might be in browser address bar): ') + else: + print('Visit displayed URL to authorize this application. Waiting...', + end='', flush=True) + + class MyHandler(http.server.BaseHTTPRequestHandler): + '''Handles the browser query resulting from redirect to redirect_uri.''' + + # pylint: disable=C0103 + def do_HEAD(self): + '''Response to a HEAD requests.''' + self.send_response(200) + self.send_header('Content-type', 'text/html') + self.end_headers() + + def do_GET(self): + '''For GET request, extract code parameter from URL.''' + # pylint: disable=W0603 + global authcode + querystring = urllib.parse.urlparse(self.path).query + querydict = urllib.parse.parse_qs(querystring) + if 'code' in querydict: + authcode = querydict['code'][0] + self.do_HEAD() + self.wfile.write(b'Authorizaton result') + self.wfile.write(b'

Authorization redirect completed. You may ' + b'close this window.

') + with http.server.HTTPServer(('127.0.0.1', listen_port), MyHandler) as httpd: + try: + httpd.handle_request() + except KeyboardInterrupt: + pass + + if not authcode: + sys.exit('Did not obtain an authcode.') + + for k in 'response_type', 'login_hint', 'code_challenge', 'code_challenge_method': + del p[k] + p.update({'grant_type': 'authorization_code', + 'code': authcode, + 'client_secret': registration['client_secret'], + 'code_verifier': verifier}) + try: + response = urllib.request.urlopen(registration['token_endpoint'], + urllib.parse.urlencode(p).encode()) + except urllib.error.HTTPError as err: + print(err.code, err.reason) + response = err + response = response.read() + if args.debug: + print(response) + response = json.loads(response) + if 'error' in response: + print(response['error']) + if 'error_description' in response: + print(response['error_description']) + sys.exit(1) + + elif authflow == 'devicecode': + try: + response = urllib.request.urlopen(registration['devicecode_endpoint'], + urllib.parse.urlencode(p).encode()) + except urllib.error.HTTPError as err: + print(err.code, err.reason) + response = err + response = response.read() + if args.debug: + print(response) + response = json.loads(response) + if 'error' in response: + print(response['error']) + if 'error_description' in response: + print(response['error_description']) + sys.exit(1) + print(response['message']) + del p['scope'] + p.update({'grant_type': 'urn:ietf:params:oauth:grant-type:device_code', + 'client_secret': registration['client_secret'], + 'device_code': response['device_code']}) + interval = int(response['interval']) + print('Polling...', end='', flush=True) + while True: + time.sleep(interval) + print('.', end='', flush=True) + try: + response = urllib.request.urlopen(registration['token_endpoint'], + urllib.parse.urlencode(p).encode()) + except urllib.error.HTTPError as err: + # Not actually always an error, might just mean "keep trying..." + response = err + response = response.read() + if args.debug: + print(response) + response = json.loads(response) + if 'error' not in response: + break + if response['error'] == 'authorization_declined': + print(' user declined authorization.') + sys.exit(1) + if response['error'] == 'expired_token': + print(' too much time has elapsed.') + sys.exit(1) + if response['error'] != 'authorization_pending': + print(response['error']) + if 'error_description' in response: + print(response['error_description']) + sys.exit(1) + print() + + else: + sys.exit(f'ERROR: Unknown OAuth2 flow "{token["authflow"]}. Delete token file and ' + f'start over.') + + update_tokens(response) + + +if not access_token_valid(): + if args.verbose: + print('NOTICE: Invalid or expired access token; using refresh token ' + 'to obtain new access token.') + if not token['refresh_token']: + sys.exit('ERROR: No refresh token. Run script with "--authorize".') + p = baseparams.copy() + p.update({'client_secret': registration['client_secret'], + 'refresh_token': token['refresh_token'], + 'grant_type': 'refresh_token'}) + try: + response = urllib.request.urlopen(registration['token_endpoint'], + urllib.parse.urlencode(p).encode()) + except urllib.error.HTTPError as err: + print(err.code, err.reason) + response = err + response = response.read() + if args.debug: + print(response) + response = json.loads(response) + if 'error' in response: + print(response['error']) + if 'error_description' in response: + print(response['error_description']) + print('Perhaps refresh token invalid. Try running once with "--authorize"') + sys.exit(1) + update_tokens(response) + + +if not access_token_valid(): + sys.exit('ERROR: No valid access token. This should not be able to happen.') + + +if args.verbose: + print('Access Token: ', end='') +print(token['access_token']) + + +def build_sasl_string(user, host, port, bearer_token): + '''Build appropriate SASL string, which depends on cloud server's supported SASL method.''' + if registration['sasl_method'] == 'OAUTHBEARER': + return f'n,a={user},\1host={host}\1port={port}\1auth=Bearer {bearer_token}\1\1' + if registration['sasl_method'] == 'XOAUTH2': + return f'user={user}\1auth=Bearer {bearer_token}\1\1' + sys.exit(f'Unknown SASL method {registration["sasl_method"]}.') + + +if args.test: + errors = False + + imap_conn = imaplib.IMAP4_SSL(registration['imap_endpoint']) + sasl_string = build_sasl_string(token['email'], registration['imap_endpoint'], 993, + token['access_token']) + if args.debug: + imap_conn.debug = 4 + try: + imap_conn.authenticate(registration['sasl_method'], lambda _: sasl_string.encode()) + # Microsoft has a bug wherein a mismatch between username and token can still report a + # successful login... (Try a consumer login with the token from a work/school account.) + # Fortunately subsequent commands fail with an error. Thus we follow AUTH with another + # IMAP command before reporting success. + imap_conn.list() + if args.verbose: + print('IMAP authentication succeeded') + except imaplib.IMAP4.error as e: + print('IMAP authentication FAILED (does your account allow IMAP?):', e) + errors = True + + pop_conn = poplib.POP3_SSL(registration['pop_endpoint']) + sasl_string = build_sasl_string(token['email'], registration['pop_endpoint'], 995, + token['access_token']) + if args.debug: + pop_conn.set_debuglevel(2) + try: + # poplib doesn't have an auth command taking an authenticator object + # Microsoft requires a two-line SASL for POP + # pylint: disable=W0212 + pop_conn._shortcmd('AUTH ' + registration['sasl_method']) + pop_conn._shortcmd(base64.standard_b64encode(sasl_string.encode()).decode()) + if args.verbose: + print('POP authentication succeeded') + except poplib.error_proto as e: + print('POP authentication FAILED (does your account allow POP?):', e.args[0].decode()) + errors = True + + # SMTP_SSL would be simpler but Microsoft does not answer on port 465. + smtp_conn = smtplib.SMTP(registration['smtp_endpoint'], 587) + sasl_string = build_sasl_string(token['email'], registration['smtp_endpoint'], 587, + token['access_token']) + smtp_conn.ehlo('test') + smtp_conn.starttls() + smtp_conn.ehlo('test') + if args.debug: + smtp_conn.set_debuglevel(2) + try: + smtp_conn.auth(registration['sasl_method'], lambda _=None: sasl_string) + if args.verbose: + print('SMTP authentication succeeded') + except smtplib.SMTPAuthenticationError as e: + print('SMTP authentication FAILED:', e) + errors = True + + if errors: + sys.exit(1) diff --git a/mutt_oauth2.py.README b/mutt_oauth2.py.README new file mode 100644 index 0000000..8c92f8a --- /dev/null +++ b/mutt_oauth2.py.README @@ -0,0 +1,290 @@ +mutt_oauth.py README by Alexander Perlis, 2020-07-15 +==================================================== + + +Background on plain passwords, app passwords, OAuth2 bearer tokens +------------------------------------------------------------------ + +An auth stage occurs near the start of the IMAP/POP/SMTP protocol +conversation. Various SASL methods can be used (depends on what the +server offers, and what the client supports). The PLAIN method, also +known as "basic auth", involves simply sending the username and +password (this occurs over an encrypted connection), and used to be +common; but, for large cloud mail providers, basic auth is a security +hole. User passwords often have low entropy (humans generally choose +passwords that can be produced from human memory), thus are targets +for various types of exhaustive attacks. Older attacks try different +passwords against one user, whereas newer spray attacks try one +password against different users. General mitigation efforts such as +rate-limiting, or detection and outright blocking efforts, lead to +degraded or outright denied services for legitimate users. The +security weakness is two-fold: the low entropy of the user password, +together with the alarming consequence that the password often unlocks +many disparate systems in a typical enterprise single-sign-on +environment. Also, humans type passwords or copy/paste them from +elsewhere on the screen, so they can also be grabbed via keyloggers or +screen capture (or a human bystander). Two ways to solve these +conundrums: + + - app passwords + - bearer tokens + +App passwords are simply high-entropy protocol-specific passwords, in +other words a long computer-generated random string, you use one for +your mail system, a different one for your payroll system, and so +on. With app passwords in use, brute-force attacks become useless. App +passwords require no modifications to client software, and only minor +changes on the server side. One way to think about app passwords is +that they essentially impose on you the use of a password manager. Any +user can go to the trouble of using a password manager but most users +don't bother. App passwords put the password manager inside the server +and force you to use it. + +Bearer tokens take the idea of app passwords to the next level. Much +like app passwords, they too are just long computer-generated random +strings, knowledge of which simply "lets you in". But unlike an app +password which the user must manually copy from a server password +screen and then paste into their client account config screen (a +process the user doesn't want to follow too often), bearer tokens get +swapped out approximately once an hour without user interaction. For +this to work, both clients and servers must be modified to speak a +separate out-of-band protocol (the "OAuth2" protocol) to swap out +tokens. More precisely, from start to finish, the process goes like +this: the client and server must once-and-for-all be informed about +each other (this is called "app registration" and might be done by the +client developer or left to each end user), then the client informs +the server that it wants to connect, then the user is informed to +independently use a web browser to visit a server destination to +approve this request (at this stage the server will require the user +to authenticate using say their password and perhaps additional +factors such as an SMS verification or crypto device), then the client +will have a long-term "refresh token" as well as an "access token" +good for about an hour. The access token can now be used with +IMAP/POP/SMTP to access the account. When it expires, the refresh +token is used to get a new access token and perhaps a new refresh +token. After several months of such usage, even the refresh token may +expire and the human user will have to go back and re-authenticate +(password, SMS, crypto device, etc) for things to start anew. + +Since app passwords and tokens are high-entropy and their compromise +should compromise only a particular system (rather than all systems in +a single-sign-on environment), they have similar security strength +when compared to stark weakness of traditional human passwords. But if +compared only to each other, tokens provide more security. App +passwords must be short enough for humans to easily copy/paste them, +might get written down or snooped during that process, and anyhow are +long-lived and thus could get compromised by other means. The main +drawback to tokens is that their support requires significant changes +to clients and servers, but once such support exists, they are +superior and easier to use. + +Many cloud providers are eliminating support for human passwords. Some are +allowing app passwords in addition to tokens. Some allow only tokens. + + +OAuth2 token support in mutt +---------------------------- + +Mutt supports the two SASL methods OAUTHBEARER and XOAUTH2 for presenting an +OAuth2 access token near the start of the IMAP/POP/SMTP connection. + +(Two different SASL methods exist for historical reasons. While OAuth2 +was under development, the experimental offering by servers was called +XOAUTH2, later fleshed out into a standard named OAUTHBEARER, but not +all servers have been updated to offer OAUTHBEARER. Once the major +cloud providers all support OAUTHBEARER, clients like mutt might be +modified to no longer know about XOAUTH2.) + +Mutt can present a token inside IMAP/POP/SMTP, but by design mutt itself +does not know how to have a separate conversation (outside of IMAP/POP/SMTP) +with the server to authorize the user and obtain refresh and access tokens. +Mutt just needs an access token, and has a hook for an external script to +somehow obtain one. + +mutt_oauth2.py is an example of such an external script. It likely can be +adapted to work with OAuth2 on many different cloud mail providers, and has +been tested against: + + - Google consumer account (@gmail.com) + - Google work/school account (G Suite tenant) + - Microsoft consumer account (e.g., @live.com, @outlook.com, ...) + - Microsoft work/school account (Azure tenant) + (Note that Microsoft uses the marketing term "Modern Auth" in lieu of + "OAuth2". In that terminology, mutt indeed supports "Modern Auth".) + + +Configure script's token file encryption +---------------------------------------- + +The script remembers tokens between invocations by keeping them in a +token file. This file is encrypted. Inside the script are two lines + ENCRYPTION_PIPE + DECRYPTION_PIPE +that must be edited to specify your choice of encryption system. A +popular choice is gpg. To use this: + + - Install gpg. For example, "sudo apt install gpg". + - "gpg --gen-key". Answer the questions. Instead of your email + address you could choose say "My mutt_oauth2 token store", then + choose a passphrase. You will need to produce that same passphrase + whenever mutt_oauth2 needs to unlock the token store. + - Edit mutt_oauth2.py and put your GPG identity (your email address or + whatever you picked above) in the ENCRYPTION_PIPE line. + - For the gpg-agent to be able to ask you the unlock passphrase, + the environment variable GPG_TTY must be set to the current tty. + Typically you would put the following inside your .bashrc or equivalent: + export GPG_TTY=$(tty) + + +Create an app registration +-------------------------- + +Before you can connect the script to an account, you need an +"app registration" for that service. Cloud entities (like Google and +Microsoft) and/or the tenant admins (the central technology admins at +your school or place of work) might be restrictive in who can create +app registrations, as well as who can subsequently use them. For +personal/consumer accounts, you can generally create your own +registration and then use it with a limited number of different personal +accounts. But for work/school accounts, the tenant admins might approve an +app registration that you created with a personal/consumer account, or +might want an official app registration from a developer (the creation of +which and blessing by the cloud provider might require payment and/or arduous +review), or might perhaps be willing to roll their own "in-house" registration. + +What you ultimately need is the "client_id" (and "client_secret" if +one was set) for this registration. Those values must be edited into +the mutt_oauth2.py script. If your work or school environment has a +knowledge base that provides the client_id, then someone already took +care of the app registration, and you can skip the step of creating +your own registration. + + +-- How to create a Google registration -- + +Go to console.developers.google.com, and create a new project. The name doesn't +matter and could be "mutt registration project". + + - Go to Library, choose Gmail API, and enable it + - Hit left arrow icon to get back to console.developers.google.com + - Choose OAuth Consent Screen + - Choose Internal for an organizational G Suite + - Choose External if that's your only choice + - For Application Name, put for example "Mutt" + - Under scopes, choose Add scope, scroll all the way down, enable the "https://mail.google.com/" scope + - Fill out additional fields (application logo, etc) if you feel like it (will make the consent screen look nicer) + - Back at console.developers.google.com, choose Credentials + - At top, choose Create Credentials / OAuth2 client iD + - Application type is "Desktop app" + +Edit the client_id (and client_secret if there is one) into the +mutt_oauth2.py script. + + +-- How to create a Microsoft registration -- + +Go to portal.azure.com, log in with a Microsoft account (get a free +one at outlook.com), then search for "app registration", and add a +new registration. On the initial form that appears, put a name like +"Mutt", allow any type of account, and put "http://localhost/" as +the redirect URI, then more carefully go through each +screen: + +Branding + - Leave fields blank or put in reasonable values + - For official registration, verify your choice of publisher domain +Authentication: + - Platform "Mobile and desktop" + - Redirect URI "http://localhost/" + - Any kind of account + - Enable public client (allow device code flow) +API permissions: + - Microsoft Graph, Delegated, "offline_access" + - Microsoft Graph, Delegated, "IMAP.AccessAsUser.All" + - Microsoft Graph, Delegated, "POP.AccessAsUser.All" + - Microsoft Graph, Delegated, "SMTP.Send" + - Microsoft Graph, Delegated, "User.Read" +Overview: + - Take note of the Application ID (a.k.a. Client ID), you'll need it shortly + +End users who aren't able to get to the app registration screen within +portal.azure.com for their work/school account can temporarily use an +incognito browser window to create a free outlook.com account and use that +to create the app registration. + +Edit the client_id (and client_secret if there is one) into the +mutt_oauth2.py script. + + +Running the script manually to authorize tokens +----------------------------------------------- + +Run "mutt_oauth2.py --help" to learn script usage. To obtain the +initial set of tokens, run the script specifying a name for a +disposable token storage file, as well as "--authorize", for example +using this naming scheme: + + mutt_oauth2.py userid@myschool.edu.tokens --verbose --authorize + +The script will ask questions and provide some instructions. For the +flow question: + + - "authcode": you paste a complicated URL into a browser, then +manually extract a "code" parameter from a subsequent URL in the +browser address bar and paste that back to the script. + +- "localhostauthcode": you again paste the complicated URL into a browser +but that's it --- the code is automatically extracted from the response +relying on a localhost redirect and temporarily listening on a localhost +port. This flow can only be used if the web browser opening the redirect +URL sits on the same machine as where mutt is running, in other words can not +be used if you ssh to a remote machine and run mutt on that remote machine +while your web browser remains on your local machine. + + - "devicecode": you go to a simple URL and just enter a short code. + +Your answer here determines the default flow, but on any invocation of +the script you can override the default with the optional "--authflow" +parameter. To change the default, delete your token file and start over. + +To figure out which flow to use, I suggest trying all three. +Depending on the OAuth2 provider and how the app registration was +configured, some flows might not work, so simply trying them is the +best way to figure out what works and which one you prefer. Personally +I prefer the "localhostauthcode" flow when I can use it. + + +Once you attempt an actual authorization, you might get stuck because +the web browser step might indicate your institution admins must grant +approval. Indeed engage them in a conversation about approving the +use of mutt to access mail. If that fails, an alternative is to +identify some other well-known IMAP/POP/SMTP client that they might +have already approved, or might be willing to approve, and first go +configure it for OAuth2 and see whether it will work to reach your +mail, and then you could dig into the source code for that client and +extract its client_id, client_secret, and redirect_uri and put those +into the mutt_oauth2.py script. This would be a temporary punt for +end-user experimentation, but not an approach for configuring systems +to be used by other people. Engaging your institution admins to create +a mutt registration is the better way to go. + +Once you've succeeded authorizing mutt_oauth2.py to obtain tokens, try +one of the following to see whether IMAP/POP/SMTP are working: + + mutt_oauth2.py userid@myschool.edu.tokens --verbose --test + mutt_oauth2.py userid@myschool.edu.tokens --verbose --debug --test + +Without optional parameters, the script simply returns an access token +(possibly first conducting a behind-the-scenes URL retrieval using a +stored refresh token to obtain an updated access token). Calling the +script without optional parameters is how it will be used by +mutt. Your .muttrc would look something like: + + set imap_user="userid@myschool.edu" + set folder="imap://outlook.office365.com/" + set smtp_url="smtp://${imap_user}@smtp.office365.com:587/" + set imap_authenticators="oauthbearer:xoauth2" + set imap_oauth_refresh_command="/path/to/script/mutt_oauth2.py ${imap_user}.tokens" + set smtp_authenticators=${imap_authenticators} + set smtp_oauth_refresh_command=${imap_oauth_refresh_command} + diff --git a/patch-1.5.24.vk.pgp_verbose_mime b/patch-1.5.24.vk.pgp_verbose_mime new file mode 100644 index 0000000..18019a1 --- /dev/null +++ b/patch-1.5.24.vk.pgp_verbose_mime @@ -0,0 +1,53 @@ +--- + globals.h | 2 ++ + init.h | 15 ++++++++++++--- + pgp.c | 3 ++- + 3 files changed, 16 insertions(+), 4 deletions(-) + +--- globals.h ++++ globals.h 2020-01-14 13:37:00.770606718 +0000 +@@ -280,6 +280,8 @@ WHERE char *PgpDefaultKey; + WHERE char *PgpSignAs; + WHERE long PgpTimeout; + WHERE char *PgpEntryFormat; ++WHERE char *PgpMimeSignatureFilename; ++WHERE char *PgpMimeSignatureDescription; + WHERE char *PgpClearSignCommand; + WHERE char *PgpDecodeCommand; + WHERE char *PgpVerifyCommand; +--- init.h ++++ init.h 2020-01-14 13:41:15.145875625 +0000 +@@ -3869,9 +3869,18 @@ struct option_t MuttVars[] = { + ** a line quoted text if it also matches $$smileys. This mostly + ** happens at the beginning of a line. + */ +- +- +- ++ { "pgp_mime_signature_filename", DT_STR, R_NONE, {.p=&PgpMimeSignatureFilename}, {.p="signature.asc"} }, ++ /* ++ ** .pp ++ ** This option sets the filename used for signature parts in PGP/MIME ++ ** signed messages. ++ */ ++ { "pgp_mime_signature_description", DT_STR, R_NONE, {.p=&PgpMimeSignatureDescription}, {.p="Digital signature"} }, ++ /* ++ ** .pp ++ ** This option sets the Content-Description used for signature parts in ++ ** PGP/MIME signed messages. ++ */ + { "smime_ask_cert_label", DT_BOOL, R_NONE, {.l=OPTASKCERTLABEL}, {.l=1} }, + /* + ** .pp +--- pgp.c ++++ pgp.c 2020-01-14 13:42:29.880485319 +0000 +@@ -1359,7 +1359,8 @@ BODY *pgp_sign_message (BODY *a) + t->disposition = DISPNONE; + t->encoding = ENC7BIT; + t->unlink = 1; /* ok to remove this file after sending. */ +- mutt_set_parameter ("name", "signature.asc", &t->parameter); ++ mutt_set_parameter ("name", PgpMimeSignatureFilename, &t->parameter); ++ t->description = safe_strdup (PgpMimeSignatureDescription); + + cleanup: + mutt_buffer_pool_release (&sigfile); diff --git a/skel.muttrc b/skel.muttrc new file mode 100644 index 0000000..2546c95 --- /dev/null +++ b/skel.muttrc @@ -0,0 +1,143 @@ +# Sample ~/.muttrc for SUSE Linux + +# Setting +set pager_context=4 +set pager_index_lines=10 +set pager_stop + +# Binding +bind pager previous-page +bind pager - previous-line +bind pager \eOm previous-line +bind pager + next-line +bind pager \eOk next-line +bind pager \eOM next-line +bind pager \e[1~ top +bind pager \e[4~ bottom + +bind index previous-entry +bind index - previous-entry +bind index \eOm previous-entry +bind index + next-entry +bind index \eOk next-entry +bind index \eOM display-message +bind index \e[H first-entry +bind index \e[F last-entry +bind index \e[1~ first-entry +bind index \e[4~ last-entry + +bind alias select-entry +bind alias x exit +bind attach x exit +bind browser x exit + +# What headers to show +ignore * +unignore from: date subject to cc reply-to: +unignore resent- x-resent + +# What order to show them +unhdr_order * +hdr_order Date: From: To: Reply-To: Cc: Subject: + +# On to the colors +color attachment blue default +color header green default "^message-id:" +color header green default "^x-mailer:" +color header green default "^user-agent:" +color header blue default "^date: " +color header brightblue default "^from: " +color header green default "^subject: " +color header brightblue default "^to: " +color header brightblue default "^cc: " +color header brightblue default "^reply-to: " +color index green default ~F +color index red default ~D +color index blue default ~T +color index brightblue default ~N +color indicator brightwhite blue +color markers red default +color quoted magenta default +color signature brightblue default +color status brightwhite green +color tilde cyan default +color tree blue default +color body black default "(^| )_[-a-z0-9_]+_[,.?]?[ \n]" + +# Command formats for gpg. +# +# This version uses gpg-2comp from +# http://muppet.faveve.uni-stuttgart.de/~gero/gpg-2comp.tar.gz +# +# $Id: gpg.rc,v 3.1 2002/03/26 22:23:58 roessler Exp $ +# +# %p The empty string when no passphrase is needed, +# the string "PGPPASSFD=0" if one is needed. +# +# This is mostly used in conditional % sequences. +# +# %f Most PGP commands operate on a single file or a file +# containing a message. %f expands to this file's name. +# +# %s When verifying signatures, there is another temporary file +# containing the detached signature. %s expands to this +# file's name. +# +# %a In "signing" contexts, this expands to the value of the +# configuration variable $pgp_sign_as. You probably need to +# use this within a conditional % sequence. +# +# %r In many contexts, mutt passes key IDs to pgp. %r expands to +# a list of key IDs. + +# Note that we explicitly set the comment armor header since GnuPG, when used +# in some localiaztion environments, generates 8bit data in that header, thereby +# breaking PGP/MIME. + +# decode application/pgp +set pgp_decode_command="/usr/bin/gpg --charset utf-8 --status-fd=2 %?p?--passphrase-fd 0? --no-verbose --quiet --batch --output - %f" + +# verify a pgp/mime signature +set pgp_verify_command="/usr/bin/gpg --status-fd=2 --no-verbose --quiet --batch --output - --verify %s %f" + +# decrypt a pgp/mime attachment +set pgp_decrypt_command="/usr/bin/gpg --status-fd=2 %?p?--passphrase-fd 0? --no-verbose --quiet --batch --output - %f" + +# create a pgp/mime signed attachment +set pgp_sign_command="/usr/bin/gpg --no-verbose --batch --quiet --output - %?p?--passphrase-fd 0? --armor --detach-sign --textmode %?a?-u %a? %f" + +# create a application/pgp signed (old-style) message +set pgp_clearsign_command="/usr/bin/gpg --charset utf-8 --no-verbose --batch --quiet --output - %?p?--passphrase-fd 0? --armor --textmode --clearsign %?a?-u %a? %f" + +# create a pgp/mime encrypted attachment +set pgp_encrypt_only_command="/usr/bin/pgpewrap /usr/bin/gpg --charset utf-8 --batch --quiet --no-verbose --output - --encrypt --textmode --armor --always-trust -- -r %r -- %f" + +# create a pgp/mime encrypted and signed attachment +set pgp_encrypt_sign_command="/usr/bin/pgpewrap /usr/bin/gpg --charset utf-8 %?p?--passphrase-fd 0? --batch --quiet --no-verbose --textmode --output - --encrypt --sign %?a?-u %a? --armor --always-trust -- -r %r -- %f" + +# import a key into the public key ring +set pgp_import_command="/usr/bin/gpg --no-verbose --import --verbose %f" + +# export a key from the public key ring +set pgp_export_command="/usr/bin/gpg --no-verbose --export --armor %r" + +# verify a key +set pgp_verify_key_command="/usr/bin/gpg --verbose --batch --fingerprint --check-sigs %r" + +# read in the public key ring +set pgp_list_pubring_command="/usr/bin/gpg --no-verbose --batch --quiet --with-colons --list-keys %r" + +# read in the secret key ring +set pgp_list_secring_command="/usr/bin/gpg --no-verbose --batch --quiet --with-colons --list-secret-keys %r" + +# fetch keys +# set pgp_getkeys_command="pkspxycwrap %r" + +# pattern for good signature - may need to be adapted to locale! + +set pgp_good_sign="gpg: Good signature from" + +# OK, here's a version which uses gnupg's message catalog: +# set pgp_good_sign="`gettext -d gnupg -s 'Good signature from "' | tr -d '"'`" + +#set pgp_auto_decode=yes diff --git a/widechar.sidebar.dif b/widechar.sidebar.dif new file mode 100644 index 0000000..aaf2a8e --- /dev/null +++ b/widechar.sidebar.dif @@ -0,0 +1,53 @@ +--- + handler.c | 11 ++++++----- + 1 file changed, 6 insertions(+), 5 deletions(-) + +--- handler.c ++++ handler.c 2022-01-11 10:41:03.491446992 +0000 +@@ -782,7 +782,7 @@ static void enriched_set_flags (const wc + static int text_enriched_handler (BODY *a, STATE *s) + { + enum { +- TEXT, LANGLE, TAG, BOGUS_TAG, NEWLINE, ST_EOF, DONE ++ TEXT, TEXT_GOTWC, LANGLE, TAG, BOGUS_TAG, NEWLINE, ST_EOF, DONE + } state = TEXT; + + LOFF_T bytes = a->length; +@@ -812,7 +812,7 @@ static int text_enriched_handler (BODY * + { + if (state != ST_EOF) + { +- if (!bytes || (wc = fgetwc (s->fpin)) == WEOF) ++ if (state != TEXT_GOTWC && (!bytes || (wc = fgetwc (s->fpin)) == WEOF)) + state = ST_EOF; + else + bytes--; +@@ -820,6 +820,8 @@ static int text_enriched_handler (BODY * + + switch (state) + { ++ case TEXT_GOTWC: ++ state = TEXT; + case TEXT : + switch (wc) + { +@@ -881,9 +883,8 @@ static int text_enriched_handler (BODY * + enriched_flush (&stte, 1); + else + { +- ungetwc (wc, s->fpin); + bytes++; +- state = TEXT; ++ state = TEXT_GOTWC; + } + break; + +@@ -1588,7 +1589,7 @@ void mutt_decode_attachment (BODY *b, ST + * strip all trailing spaces to improve interoperability; + * if $text_flowed is unset, simply verbatim copy input + */ +-static int text_plain_handler (BODY *b, STATE *s) ++static int text_plain_handler (BODY *b __attribute__((unused)), STATE *s) + { + char *buf = NULL; + size_t l = 0, sz = 0;