1. 02 Jul, 2018 2 commits
  2. 29 Jun, 2018 1 commit
  3. 27 Jun, 2018 3 commits
  4. 26 Jun, 2018 1 commit
    • Kevin J. McCarthy's avatar
      Work around open mailbox monitor code check issue. · 550771fd
      Kevin J. McCarthy authored
      The monitor code is too fast, and can result in all the changes for a
      single directory stat update being missed.
      Work around this issue by not recording stat time updates when the
      check_mailbox() is triggered by the monitor.  This will cause the next
      subsequent check to take another look.
  5. 25 Jun, 2018 1 commit
    • Kevin J. McCarthy's avatar
      Generate error if makedoc is missing a type. · fc040a5b
      Kevin J. McCarthy authored
      Add a comment in init.h to remind devs to update makedoc.c when adding
      a new type.
      Change makedoc to fail on a missing type.  Otherwise it's too easy to
      miss the resulting problem in the documentation.
      Credit goes to Eike Rathke for noting that it was too easy to forget
      to do this, and something should be fixed.  I found his solution a bit
      too complicated though, and opted for just adding comment and program
  6. 23 Jun, 2018 1 commit
    • Eike Rathke's avatar
      Make make ctags actually work · f24a1bca
      Eike Rathke authored
      make ctags broke with
      Making ctags in po
      make[1]: Entering directory '.../mutt/po'
      make[1]: *** No rule to make target 'ctags'.  Stop.
      make[1]: Leaving directory '.../mutt/po'
      Makefile:867: recipe for target 'ctags-recursive' failed
      make: *** [ctags-recursive] Error 1
      and once fixed the same in intl/
      Note that this ctags target scatters tags files over directories.
      If you use exuberant ctags then simply run
      ctags -R
      once in mutt's root dir instead.
  7. 22 Jun, 2018 1 commit
  8. 19 Jun, 2018 3 commits
  9. 18 Jun, 2018 5 commits
    • Eike Rathke's avatar
      Allow larger passphrase timeout values · 4bc76c2f
      Eike Rathke authored
      This came up in the comp.mail.mutt newsgroup where a user wasn't
      satisfied with the SHORT_MAX seconds ~9 hours limit on passphrase
      For the first time made it necessary for the options parser to be
      able to parse numbers as long values. Also, introduced
      mutt_add_timeout() to detect possible overflow before adding a
      timeout to a time_t value and truncate to TIME_T_MAX instead.
    • Vincent Lefevre's avatar
      Updated French translation. · 508ff237
      Vincent Lefevre authored
    • Kevin J. McCarthy's avatar
      Merge branch 'stable' · e26e5664
      Kevin J. McCarthy authored
    • Ph. Gesang's avatar
      crypt-gpgme: prevent crash on bad S/MIME signature · df4affd1
      Ph. Gesang authored
      Inform the user about the fingerprint being unavailable instead
      of crashing if the S/MIME signature is bad.
    • Kevin J. McCarthy's avatar
      Convert context and buffy to use nanosecond timestamps. · 120f63a9
      Kevin J. McCarthy authored
      The inotify interface has an unfortunate side effect of making Mutt
      react too quickly to new mail.  Sometimes, the mail is only
      half-delivered when the mailbox is checked.  Because Mutt is using the
      stat mtime - seconds resolution - this means it won't realize there
      are more messages delivered during the same second.
      Nanosecond resolution fields were standardized in POSIX.1-2008, so
      check for and use those if they are available.
  10. 14 Jun, 2018 3 commits
    • Vincent Lefevre's avatar
      Updated French translation. · 7ec17b81
      Vincent Lefevre authored
    • Brandon Long's avatar
      Support for using OAUTHBEARER for smtp. · fcd33398
      Brandon Long authored
      This also means a bunch of smtp auth stuff is now compiled in by
      default (with --enable-smtp) without having sasl
    • Brandon Long's avatar
      Initial support for OAUTHBEARER for IMAP. · 798f749e
      Brandon Long authored
      Gmail supports RFC 7628 for using OAUTH with IMAP, and they really don't
      like you using password based auth.  You can still enable "less secure
      apps" and then generate an application specific password, but I figured it
      was time to support it.
      Being mutt, I punted on some of the "hard" work to an external script, ie
      getting/refreshing the OAUTH tokens.  This avoids the issue of how do you
      have a client-id and client-secret for an open source project, and the fact
      that OAUTH discovery is still nascent, so you'd likely need separate things
      for each of the providers.
      At least for Gmail, you can use the oauth2.py script from Google's
      You'd need to get your own oauth client credentials for Gmail here:
      Then, you'd use oauth2.py with --generate_oauth2_token to get a refresh
      token, and configure mutt with:
      set imap_authenticators="oauthbearer"
      set imap_user="<email_address>"
      set imap_pass=`/path/to/oauth2.py --quiet --user=<email_address>
      --client_id=<client_id> --client_secret=<client_secret>
      For this patch, I didn't add any new configuration, but I'm open to
      suggestions on that.
      The patch also only support SASL-IR to reduce round-trips to the server,
      but it's certainly possible to change that if we think there are
      OAUTHBEARER IMAP servers that don't support SASL-IR.  It also requires the
      connection to be encrypted as the access token is re-usable for an hour or
      so.  Again, Gmail only allows encrypted IMAP connections, not sure if any
      OAUTHBEARER services allow non-encrypted.
      Turns out that auth failure leaves you in SASL mode, so I have a hack to
      issue a noop command on error.  Not sure if that's just OAUTHBEARER
      oddness, or whether I should be using lower level mutt imap functions.
  11. 10 Jun, 2018 1 commit
    • Kevin J. McCarthy's avatar
      Move mutt_getch() timeout value into curs_lib.c · 1acb708b
      Kevin J. McCarthy authored
      Change monitor.c to reference the curs_lib value, instead of
      We need to store the value for both monitor.c's poll and for
      mutt_monitor_ch() to perform an initial non-blocking check of ncurses'
      getch() buffer.
  12. 08 Jun, 2018 3 commits
  13. 06 Jun, 2018 1 commit
  14. 05 Jun, 2018 2 commits
    • Kevin J. McCarthy's avatar
      Merge branch 'stable' · 8c99b1f3
      Kevin J. McCarthy authored
    • Kevin J. McCarthy's avatar
      Add GnuPG status fd checks for inline pgp. · edb4ec84
      Kevin J. McCarthy authored
      The difficulty is that "BEGIN PGP MESSAGE" could be a signed and
      armored part, so we can't fail hard if it isn't encrypted.
      Change pgp_check_decryption_okay() to return more status codes, with
      >=0 indicating an actual decryption; -2 and -1 indicating plaintext
      found; and -3 indicating an actual DECRYPTION_FAILED status code seen.
      Fail hard on -3, but change the message for -2 and -1 to indicate the
      message was not encrypted.
  15. 04 Jun, 2018 3 commits
    • Kevin J. McCarthy's avatar
      Merge branch 'stable' · 71263490
      Kevin J. McCarthy authored
    • Kevin J. McCarthy's avatar
      Add $pgp_check_gpg_decrypt_status_fd. · 8ec6d766
      Kevin J. McCarthy authored
      If set (the default) mutt performs more thorough checking of the
      $pgp_decrypt_command status output for GnuPG result codes.
      Ticket #39 revealed that GnuPG (currently) does not protect against
      messages that have been manipulated to contain an empty encryption
      packet followed by a plaintext packet.
      A huge thanks to Marcus Brinkmann for researching this issue, taking
      the time to report it to us (and the GnuPG team), and taking even more
      time to clarify exactly what needed to be checked for.   
    • Kevin J. McCarthy's avatar
      Add new timeout functions to work with inotify monitors. · 3d2cef4a
      Kevin J. McCarthy authored
      The ncurses timeout() function doesn't affect the new poll inside
      mutt_monitor_poll().  This meant that $imap_keepalive and $timeout
      were not being respected when the monitor was used.
      Create mutt_getch_timeout(), which delegates to timeout() and sets a
      timeout value mutt_monitor_poll() uses too.
  16. 03 Jun, 2018 6 commits
  17. 01 Jun, 2018 1 commit
  18. 28 May, 2018 2 commits