Subject: bug#15057: 24.3.50; TLS error with reasonably high gnutls-min-prime-bits

From: Tassilo Horn <[email-masked]>
Date: Fri, 09 Aug 2013 10:52:14 +0200

When TLS support landed and Gnus used it, I frequently had messages like
"the Diffie-Hellman prime has been lowered to XXX bits" for XXX being
256(?) or something like that.  Then I've set

  (setq gnutls-min-prime-bits 2048)

and everything worked smoothly, I got no warning messages, and I felt
more secure.  Well, until today.  When I fired up Gnus today, I got this
error for my Fastmail IMAP account:

--8<---------------cut here---------------start------------->8---
20130809T100721.075> Opening connection to mail.messagingengine.com via tls...
gnutls.c: [0] (Emacs) fatal error: The Diffie-Hellman prime sent by the server is not acceptable (not long enough).
gnutls.el: (err=[-63] The Diffie-Hellman prime sent by the server is not acceptable (not long enough).) boot: (:priority NORMAL :hostname mail.messagingengine.com :loglevel 0 :min-prime-bits 2048 :trustfiles (/etc/ssl/certs/ca-certificates.crt) :crlfiles nil :keylist nil :verify-flags nil :verify-error nil :verify-hostname-error nil :callbacks nil)
20130809T100721.380> Unable to open server nnimap+Fastmail due to: GnuTLS error: #<process *nnimap*<1>>, -63
gnutls.c: [0] (Emacs) fatal error: An unexpected TLS handshake packet was received. [100 times]
--8<---------------cut here---------------end--------------->8---

All other accounts still worked just fine.  Lowering
`gnutls-min-prime-bits' to 1024 makes the Fastmail account work again,
too.  So apparently Fastmail doesn't support 2048 bit sized DH primes
anymore (or maybe just today/now) for whatever reason.

Would it be possible to have a new variable
`gnutls-preferred-prime-bits' which is tried first for every connection?
If the server doesn't want to, you'd get a warning and the number of
bits would be lowered, but never below `gnutls-min-prime-bits' which
would still be the hard limit where you get an error.

That way, I could have

  (setq gnutls-min-prime-bits 1024
        gnutls-preferred-prime-bits 2048)

which would successfully use 2048 for all my IMAP connections except for
the Fastmail one today.

In GNU Emacs 24.3.50.1 (x86_64-pc-linux-gnu, GTK+ Version 3.8.2)
 of 2013-08-09 on thinkpad
Bzr revision: [email-masked]
Windowing system distributor `The X.Org Foundation', version 11.0.11402901
System Description:	NAME=Gentoo

Configured using:
 `configure --prefix=/usr --build=x86_64-pc-linux-gnu
 --host=x86_64-pc-linux-gnu --mandir=/usr/share/man
 --infodir=/usr/share/info --datadir=/usr/share --sysconfdir=/etc
 --localstatedir=/var/lib --libdir=/usr/lib64 --disable-silent-rules
 --disable-dependency-tracking --program-suffix=-emacs-24-vcs
 --program-transform-name=s/^(emacs)-[0-9].*-././
 --infodir=/usr/share/info/emacs-24-vcs
 --enable-locallisppath=/etc/emacs:/usr/share/emacs/site-lisp
 --with-gameuser=games --without-compress-info
 --with-file-notification=inotify --disable-acl --with-dbus
 --with-gnutls --with-gpm --without-hesiod --without-kerberos
 --without-kerberos5 --with-xml2 --without-selinux --without-wide-int
 --with-sound --with-x --without-ns --without-gconf --with-gsettings
 --with-toolkit-scroll-bars --with-gif --with-jpeg --with-png
 --with-rsvg --with-tiff --with-xpm --with-imagemagick --with-xft
 --with-libotf --with-m17n-flt --with-x-toolkit=gtk3
 GENTOO_PACKAGE=app-editors/emacs-vcs-24.3.9999 EBZR_BRANCH=trunk
 EBZR_REVNO=113772 CFLAGS='-march=native -pipe -g3 -ggdb'
 LDFLAGS='-Wl,-O1 -Wl,--as-needed''

Important settings:
  value of $LC_COLLATE: C
  value of $LC_MONETARY: de_DE.utf8
  value of $LC_NUMERIC: de_DE.utf8
  value of $LC_TIME: de_DE.utf8
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix
  default enable-multibyte-characters: t

Major mode: Message

Minor modes in effect:
  gnus-message-citation-mode: t
  diff-auto-refine-mode: t
  mml-mode: t
  global-edit-server-edit-mode: t
  yas-minor-mode: t
  recentf-mode: t
  shell-dirtrack-mode: t
  global-subword-mode: t
  subword-mode: t
  savehist-mode: t
  show-paren-mode: t
  ido-everywhere: t
  minibuffer-depth-indicate-mode: t
  tooltip-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  column-number-mode: t
  line-number-mode: t
  auto-fill-function: message-do-auto-fill
  transient-mark-mode: t

Recent input:
l s - m i M-/ . M-q <up> <right> <right> <right> <right> 
<right> <right> <right> <right> <right> <right> <right> 
<right> <right> M-q <down> <return> <return> b <tab> 
<up> <up> <up> <up> <up> <up> <up> <up> <up> <up> <up> 
<up> <down> <left> <right> <right> <left> SPC SPC S 
o SPC a p p a r e n t l y SPC F a s t m a i l SPC d 
o e s n ' t SPC s u p p o r t SPC 2 0 4 8 SPC b i t 
SPC s i z e d SPC p r i m e s SPC a n y m o r e SPC 
f o r SPC w h a t e v e r SPC r i <backspace> e a s 
o n . <up> <down> <left> <left> <left> <left> <left> 
<left> <left> <left> <left> <left> <left> <left> <left> 
<left> <left> <left> <left> <left> <left> <left> <left> 
SPC ( o r SPC m a y b e SPC j u s t SPC t o d a y / 
n o w ) M-q <down> <down> <down> <right> <right> <right> 
<right> <right> <right> <right> <right> <right> <right> 
<right> <right> <right> <right> <right> <right> <right> 
<right> <right> <right> <right> <right> <right> <right> 
<right> <right> <right> <right> <right> <right> <right> 
<right> <right> <backspace> <backspace> <return> <return> 
M-q <down> <down> <right> <right> <right> <right> <right> 
<right> <M-backspace> <M-backspace> <M-backspace> f 
i r s t SPC f o r SPC e v e r y SPC s e r v e r M-q 
<right> <backspace> ? M-q <up> <up> <up> <up> <up> 
<up> <up> <up> <up> <up> <up> <up> <up> <up> <up> <up> 
<up> <up> <up> <up> <up> <up> <up> <up> <up> <up> M-x 
r e p o <tab> <return>

Recent messages:
Type C-x 1 to delete the help window.
Auto-saving...done
Mark set
Quit
Auto-saving...done
No expansion found [2 times]
Using try-expand-dabbrev
[yas] snippet expanded.
[yas] Snippet 2 exited.
Auto-saving...done

Load-path shadows:
~/Repos/el/magit/.dir-locals hides ~/Repos/el/highlight-symbol.el/.dir-locals
~/Repos/el/magit/.dir-locals hides ~/Repos/el/gnus/lisp/.dir-locals
~/Repos/el/auctex/lpath hides ~/Repos/el/gnus/lisp/lpath
~/Repos/el/gnus/lisp/hex-util hides /usr/share/emacs/24.3.50/lisp/hex-util
~/Repos/el/gnus/lisp/color hides /usr/share/emacs/24.3.50/lisp/color
~/Repos/el/gnus/lisp/format-spec hides /usr/share/emacs/24.3.50/lisp/format-spec
~/Repos/el/gnus/lisp/password-cache hides /usr/share/emacs/24.3.50/lisp/password-cache
~/Repos/el/gnus/lisp/md4 hides /usr/share/emacs/24.3.50/lisp/md4
~/Repos/el/gnus/lisp/dns-mode hides /usr/share/emacs/24.3.50/lisp/textmodes/dns-mode
~/Repos/el/gnus/lisp/hmac-def hides /usr/share/emacs/24.3.50/lisp/net/hmac-def
~/Repos/el/gnus/lisp/sasl hides /usr/share/emacs/24.3.50/lisp/net/sasl
~/Repos/el/gnus/lisp/dns hides /usr/share/emacs/24.3.50/lisp/net/dns
~/Repos/el/gnus/lisp/ntlm hides /usr/share/emacs/24.3.50/lisp/net/ntlm
~/Repos/el/gnus/lisp/sasl-digest hides /usr/share/emacs/24.3.50/lisp/net/sasl-digest
~/Repos/el/gnus/lisp/dig hides /usr/share/emacs/24.3.50/lisp/net/dig
~/Repos/el/gnus/lisp/hmac-md5 hides /usr/share/emacs/24.3.50/lisp/net/hmac-md5
~/Repos/el/gnus/lisp/tls hides /usr/share/emacs/24.3.50/lisp/net/tls
~/Repos/el/gnus/lisp/sasl-cram hides /usr/share/emacs/24.3.50/lisp/net/sasl-cram
~/Repos/el/gnus/lisp/sasl-ntlm hides /usr/share/emacs/24.3.50/lisp/net/sasl-ntlm
~/Repos/el/gnus/lisp/netrc hides /usr/share/emacs/24.3.50/lisp/net/netrc
~/Repos/el/gnus/lisp/binhex hides /usr/share/emacs/24.3.50/lisp/mail/binhex
~/Repos/el/gnus/lisp/hashcash hides /usr/share/emacs/24.3.50/lisp/mail/hashcash
~/Repos/el/gnus/lisp/uudecode hides /usr/share/emacs/24.3.50/lisp/mail/uudecode
~/Repos/el/gnus/lisp/gnus-undo hides /usr/share/emacs/24.3.50/lisp/gnus/gnus-undo
~/Repos/el/gnus/lisp/qp hides /usr/share/emacs/24.3.50/lisp/gnus/qp
~/Repos/el/gnus/lisp/nnmail hides /usr/share/emacs/24.3.50/lisp/gnus/nnmail
~/Repos/el/gnus/lisp/gnus-srvr hides /usr/share/emacs/24.3.50/lisp/gnus/gnus-srvr
~/Repos/el/gnus/lisp/smiley hides /usr/share/emacs/24.3.50/lisp/gnus/smiley
~/Repos/el/gnus/lisp/mm-encode hides /usr/share/emacs/24.3.50/lisp/gnus/mm-encode
~/Repos/el/gnus/lisp/spam-stat hides /usr/share/emacs/24.3.50/lisp/gnus/spam-stat
~/Repos/el/gnus/lisp/gnus-cite hides /usr/share/emacs/24.3.50/lisp/gnus/gnus-cite
~/Repos/el/gnus/lisp/nnnil hides /usr/share/emacs/24.3.50/lisp/gnus/nnnil
~/Repos/el/gnus/lisp/mm-bodies hides /usr/share/emacs/24.3.50/lisp/gnus/mm-bodies
~/Repos/el/gnus/lisp/nndir hides /usr/share/emacs/24.3.50/lisp/gnus/nndir
~/Repos/el/gnus/lisp/gnus-picon hides /usr/share/emacs/24.3.50/lisp/gnus/gnus-picon
~/Repos/el/gnus/lisp/score-mode hides /usr/share/emacs/24.3.50/lisp/gnus/score-mode
~/Repos/el/gnus/lisp/gnus-demon hides /usr/share/emacs/24.3.50/lisp/gnus/gnus-demon
~/Repos/el/gnus/lisp/gssapi hides /usr/share/emacs/24.3.50/lisp/gnus/gssapi
~/Repos/el/gnus/lisp/gnus-delay hides /usr/share/emacs/24.3.50/lisp/gnus/gnus-delay
~/Repos/el/gnus/lisp/nntp hides /usr/share/emacs/24.3.50/lisp/gnus/nntp
~/Repos/el/gnus/lisp/gnus-spec hides /usr/share/emacs/24.3.50/lisp/gnus/gnus-spec
~/Repos/el/gnus/lisp/mml hides /usr/share/emacs/24.3.50/lisp/gnus/mml
~/Repos/el/gnus/lisp/utf7 hides /usr/share/emacs/24.3.50/lisp/gnus/utf7
~/Repos/el/gnus/lisp/nndiary hides /usr/share/emacs/24.3.50/lisp/gnus/nndiary
~/Repos/el/gnus/lisp/rtree hides /usr/share/emacs/24.3.50/lisp/gnus/rtree
~/Repos/el/gnus/lisp/compface hides /usr/share/emacs/24.3.50/lisp/gnus/compface
~/Repos/el/gnus/lisp/smime hides /usr/share/emacs/24.3.50/lisp/gnus/smime
~/Repos/el/gnus/lisp/starttls hides /usr/share/emacs/24.3.50/lisp/gnus/starttls
~/Repos/el/gnus/lisp/gnus-win hides /usr/share/emacs/24.3.50/lisp/gnus/gnus-win
~/Repos/el/gnus/lisp/gnus-draft hides /usr/share/emacs/24.3.50/lisp/gnus/gnus-draft
~/Repos/el/gnus/lisp/gnus-dup hides /usr/share/emacs/24.3.50/lisp/gnus/gnus-dup
~/Repos/el/gnus/lisp/auth-source hides /usr/share/emacs/24.3.50/lisp/gnus/auth-source
~/Repos/el/gnus/lisp/nnrss hides /usr/share/emacs/24.3.50/lisp/gnus/nnrss
~/Repos/el/gnus/lisp/nndoc hides /usr/share/emacs/24.3.50/lisp/gnus/nndoc
~/Repos/el/gnus/lisp/mm-view hides /usr/share/emacs/24.3.50/lisp/gnus/mm-view
~/Repos/el/gnus/lisp/gnus-cache hides /usr/share/emacs/24.3.50/lisp/gnus/gnus-cache
~/Repos/el/gnus/lisp/gnus-cus hides /usr/share/emacs/24.3.50/lisp/gnus/gnus-cus
~/Repos/el/gnus/lisp/flow-fill hides /usr/share/emacs/24.3.50/lisp/gnus/flow-fill
~/Repos/el/gnus/lisp/nnfolder hides /usr/share/emacs/24.3.50/lisp/gnus/nnfolder
~/Repos/el/gnus/lisp/mml-sec hides /usr/share/emacs/24.3.50/lisp/gnus/mml-sec
~/Repos/el/gnus/lisp/rfc2045 hides /usr/share/emacs/24.3.50/lisp/gnus/rfc2045
~/Repos/el/gnus/lisp/nnheader hides /usr/share/emacs/24.3.50/lisp/gnus/nnheader
~/Repos/el/gnus/lisp/nnoo hides /usr/share/emacs/24.3.50/lisp/gnus/nnoo
~/Repos/el/gnus/lisp/nnvirtual hides /usr/share/emacs/24.3.50/lisp/gnus/nnvirtual
~/Repos/el/gnus/lisp/rfc2231 hides /usr/share/emacs/24.3.50/lisp/gnus/rfc2231
~/Repos/el/gnus/lisp/message hides /usr/share/emacs/24.3.50/lisp/gnus/message
~/Repos/el/gnus/lisp/gnus-sync hides /usr/share/emacs/24.3.50/lisp/gnus/gnus-sync
~/Repos/el/gnus/lisp/gmm-utils hides /usr/share/emacs/24.3.50/lisp/gnus/gmm-utils
~/Repos/el/magit/.dir-locals hides /usr/share/emacs/24.3.50/lisp/gnus/.dir-locals
~/Repos/el/gnus/lisp/nnbabyl hides /usr/share/emacs/24.3.50/lisp/gnus/nnbabyl
~/Repos/el/gnus/lisp/gnus-msg hides /usr/share/emacs/24.3.50/lisp/gnus/gnus-msg
~/Repos/el/gnus/lisp/registry hides /usr/share/emacs/24.3.50/lisp/gnus/registry
~/Repos/el/gnus/lisp/rfc2104 hides /usr/share/emacs/24.3.50/lisp/gnus/rfc2104
~/Repos/el/gnus/lisp/spam hides /usr/share/emacs/24.3.50/lisp/gnus/spam
~/Repos/el/gnus/lisp/nnmairix hides /usr/share/emacs/24.3.50/lisp/gnus/nnmairix
~/Repos/el/gnus/lisp/gnus-mlspl hides /usr/share/emacs/24.3.50/lisp/gnus/gnus-mlspl
~/Repos/el/gnus/lisp/gnus-mh hides /usr/share/emacs/24.3.50/lisp/gnus/gnus-mh
~/Repos/el/gnus/lisp/gnus-ml hides /usr/share/emacs/24.3.50/lisp/gnus/gnus-ml
~/Repos/el/gnus/lisp/nnimap hides /usr/share/emacs/24.3.50/lisp/gnus/nnimap
~/Repos/el/gnus/lisp/mailcap hides /usr/share/emacs/24.3.50/lisp/gnus/mailcap
~/Repos/el/gnus/lisp/gnus-start hides /usr/share/emacs/24.3.50/lisp/gnus/gnus-start
~/Repos/el/gnus/lisp/mm-decode hides /usr/share/emacs/24.3.50/lisp/gnus/mm-decode
~/Repos/el/gnus/lisp/plstore hides /usr/share/emacs/24.3.50/lisp/gnus/plstore
~/Repos/el/gnus/lisp/pop3 hides /usr/share/emacs/24.3.50/lisp/gnus/pop3
~/Repos/el/gnus/lisp/mm-extern hides /usr/share/emacs/24.3.50/lisp/gnus/mm-extern
~/Repos/el/gnus/lisp/sieve-manage hides /usr/share/emacs/24.3.50/lisp/gnus/sieve-manage
~/Repos/el/gnus/lisp/nnir hides /usr/share/emacs/24.3.50/lisp/gnus/nnir
~/Repos/el/gnus/lisp/mml1991 hides /usr/share/emacs/24.3.50/lisp/gnus/mml1991
~/Repos/el/gnus/lisp/nndraft hides /usr/share/emacs/24.3.50/lisp/gnus/nndraft
~/Repos/el/gnus/lisp/mail-source hides /usr/share/emacs/24.3.50/lisp/gnus/mail-source
~/Repos/el/gnus/lisp/gnus-salt hides /usr/share/emacs/24.3.50/lisp/gnus/gnus-salt
~/Repos/el/gnus/lisp/spam-wash hides /usr/share/emacs/24.3.50/lisp/gnus/spam-wash
~/Repos/el/gnus/lisp/nneething hides /usr/share/emacs/24.3.50/lisp/gnus/nneething
~/Repos/el/gnus/lisp/mml-smime hides /usr/share/emacs/24.3.50/lisp/gnus/mml-smime
~/Repos/el/gnus/lisp/deuglify hides /usr/share/emacs/24.3.50/lisp/gnus/deuglify
~/Repos/el/gnus/lisp/mm-partial hides /usr/share/emacs/24.3.50/lisp/gnus/mm-partial
~/Repos/el/gnus/lisp/spam-report hides /usr/share/emacs/24.3.50/lisp/gnus/spam-report
~/Repos/el/gnus/lisp/nnspool hides /usr/share/emacs/24.3.50/lisp/gnus/nnspool
~/Repos/el/gnus/lisp/gnus-gravatar hides /usr/share/emacs/24.3.50/lisp/gnus/gnus-gravatar
~/Repos/el/gnus/lisp/gnus hides /usr/share/emacs/24.3.50/lisp/gnus/gnus
~/Repos/el/gnus/lisp/gnus-dired hides /usr/share/emacs/24.3.50/lisp/gnus/gnus-dired
~/Repos/el/gnus/lisp/mml2015 hides /usr/share/emacs/24.3.50/lisp/gnus/mml2015
~/Repos/el/gnus/lisp/html2text hides /usr/share/emacs/24.3.50/lisp/gnus/html2text
~/Repos/el/gnus/lisp/nnmaildir hides /usr/share/emacs/24.3.50/lisp/gnus/nnmaildir
~/Repos/el/gnus/lisp/ecomplete hides /usr/share/emacs/24.3.50/lisp/gnus/ecomplete
~/Repos/el/gnus/lisp/gnus-ems hides /usr/share/emacs/24.3.50/lisp/gnus/gnus-ems
~/Repos/el/gnus/lisp/nnweb hides /usr/share/emacs/24.3.50/lisp/gnus/nnweb
~/Repos/el/gnus/lisp/gnus-group hides /usr/share/emacs/24.3.50/lisp/gnus/gnus-group
~/Repos/el/gnus/lisp/nnregistry hides /usr/share/emacs/24.3.50/lisp/gnus/nnregistry
~/Repos/el/gnus/lisp/ietf-drums hides /usr/share/emacs/24.3.50/lisp/gnus/ietf-drums
~/Repos/el/gnus/lisp/legacy-gnus-agent hides /usr/share/emacs/24.3.50/lisp/gnus/legacy-gnus-agent
~/Repos/el/gnus/lisp/gnus-bcklg hides /usr/share/emacs/24.3.50/lisp/gnus/gnus-bcklg
~/Repos/el/gnus/lisp/gnus-sum hides /usr/share/emacs/24.3.50/lisp/gnus/gnus-sum
~/Repos/el/gnus/lisp/gnus-icalendar hides /usr/share/emacs/24.3.50/lisp/gnus/gnus-icalendar
~/Repos/el/gnus/lisp/rfc2047 hides /usr/share/emacs/24.3.50/lisp/gnus/rfc2047
~/Repos/el/gnus/lisp/canlock hides /usr/share/emacs/24.3.50/lisp/gnus/canlock
~/Repos/el/gnus/lisp/sieve hides /usr/share/emacs/24.3.50/lisp/gnus/sieve
~/Repos/el/gnus/lisp/gnus-util hides /usr/share/emacs/24.3.50/lisp/gnus/gnus-util
~/Repos/el/gnus/lisp/gnus-fun hides /usr/share/emacs/24.3.50/lisp/gnus/gnus-fun
~/Repos/el/gnus/lisp/nnml hides /usr/share/emacs/24.3.50/lisp/gnus/nnml
~/Repos/el/gnus/lisp/mm-util hides /usr/share/emacs/24.3.50/lisp/gnus/mm-util
~/Repos/el/gnus/lisp/gnus-bookmark hides /usr/share/emacs/24.3.50/lisp/gnus/gnus-bookmark
~/Repos/el/gnus/lisp/gnus-kill hides /usr/share/emacs/24.3.50/lisp/gnus/gnus-kill
~/Repos/el/gnus/lisp/mm-url hides /usr/share/emacs/24.3.50/lisp/gnus/mm-url
~/Repos/el/gnus/lisp/gnus-async hides /usr/share/emacs/24.3.50/lisp/gnus/gnus-async
~/Repos/el/gnus/lisp/nngateway hides /usr/share/emacs/24.3.50/lisp/gnus/nngateway
~/Repos/el/gnus/lisp/sieve-mode hides /usr/share/emacs/24.3.50/lisp/gnus/sieve-mode
~/Repos/el/gnus/lisp/gnus-int hides /usr/share/emacs/24.3.50/lisp/gnus/gnus-int
~/Repos/el/gnus/lisp/gravatar hides /usr/share/emacs/24.3.50/lisp/gnus/gravatar
~/Repos/el/gnus/lisp/gnus-notifications hides /usr/share/emacs/24.3.50/lisp/gnus/gnus-notifications
~/Repos/el/gnus/lisp/gnus-art hides /usr/share/emacs/24.3.50/lisp/gnus/gnus-art
~/Repos/el/gnus/lisp/yenc hides /usr/share/emacs/24.3.50/lisp/gnus/yenc
~/Repos/el/gnus/lisp/nnmh hides /usr/share/emacs/24.3.50/lisp/gnus/nnmh
~/Repos/el/gnus/lisp/mail-prsvr hides /usr/share/emacs/24.3.50/lisp/gnus/mail-prsvr
~/Repos/el/gnus/lisp/gnus-range hides /usr/share/emacs/24.3.50/lisp/gnus/gnus-range
~/Repos/el/gnus/lisp/mm-archive hides /usr/share/emacs/24.3.50/lisp/gnus/mm-archive
~/Repos/el/gnus/lisp/gnus-sieve hides /usr/share/emacs/24.3.50/lisp/gnus/gnus-sieve
~/Repos/el/gnus/lisp/gnus-agent hides /usr/share/emacs/24.3.50/lisp/gnus/gnus-agent
~/Repos/el/gnus/lisp/messcompat hides /usr/share/emacs/24.3.50/lisp/gnus/messcompat
~/Repos/el/gnus/lisp/mm-uu hides /usr/share/emacs/24.3.50/lisp/gnus/mm-uu
~/Repos/el/gnus/lisp/gnus-logic hides /usr/share/emacs/24.3.50/lisp/gnus/gnus-logic
~/Repos/el/gnus/lisp/gnus-topic hides /usr/share/emacs/24.3.50/lisp/gnus/gnus-topic
~/Repos/el/gnus/lisp/gnus-diary hides /usr/share/emacs/24.3.50/lisp/gnus/gnus-diary
~/Repos/el/gnus/lisp/gnus-setup hides /usr/share/emacs/24.3.50/lisp/gnus/gnus-setup
~/Repos/el/gnus/lisp/nnmbox hides /usr/share/emacs/24.3.50/lisp/gnus/nnmbox
~/Repos/el/gnus/lisp/rfc1843 hides /usr/share/emacs/24.3.50/lisp/gnus/rfc1843
~/Repos/el/gnus/lisp/gnus-eform hides /usr/share/emacs/24.3.50/lisp/gnus/gnus-eform
~/Repos/el/gnus/lisp/gnus-vm hides /usr/share/emacs/24.3.50/lisp/gnus/gnus-vm
~/Repos/el/gnus/lisp/nnagent hides /usr/share/emacs/24.3.50/lisp/gnus/nnagent
~/Repos/el/gnus/lisp/mail-parse hides /usr/share/emacs/24.3.50/lisp/gnus/mail-parse
~/Repos/el/gnus/lisp/gnus-html hides /usr/share/emacs/24.3.50/lisp/gnus/gnus-html
~/Repos/el/gnus/lisp/gnus-uu hides /usr/share/emacs/24.3.50/lisp/gnus/gnus-uu
~/Repos/el/gnus/lisp/gnus-registry hides /usr/share/emacs/24.3.50/lisp/gnus/gnus-registry
~/Repos/el/gnus/lisp/gnus-score hides /usr/share/emacs/24.3.50/lisp/gnus/gnus-score
~/Repos/el/gnus/lisp/time-date hides /usr/share/emacs/24.3.50/lisp/calendar/time-date
~/Repos/el/gnus/lisp/parse-time hides /usr/share/emacs/24.3.50/lisp/calendar/parse-time

Features:
(shadow emacsbug flow-fill mm-archive hippie-exp timezone oauth2 json
plstore align url-http url-gw url-auth pp mailalias smtpmail sendmail qp
mule-util sort smiley gnus-cite gnus-async gnus-bcklg gnus-draft gnus-ml
misearch multi-isearch vc-git cus-start cus-load hl-line nndraft nnmh
rot13 utf-7 gnutls network-stream starttls nnimap parse-time tls utf7
netrc nnml nnnil gnus-agent gnus-srvr gnus-score score-mode nnvirtual
gnus-cache gnus-demon nntp spam spam-stat gnus-uu yenc gnus-msg
gnus-gravatar mail-extr gravatar gnus-topic nnir gnus-registry registry
eieio-base th-private highlight-parentheses stratego-mode go-mode-load
greql-mode tg-mode generic preview-latex tex-site auto-loads paredit
magit-cherry magit-bisect magit-log-edit log-edit pcvs-util add-log
magit-key-mode magit diff-mode magit-compat epa-file epa epg rdictcc
google-contacts-message google-contacts-gnus gnus-art mm-uu mml2015
epg-config mm-view mml-smime smime dig gnus-sum nnoo gnus-group
gnus-undo nnmail mail-source gnus-start gnus-spec gnus-int gnus-range
gnus-win gnus gnus-ems gnus-compat nnheader google-contacts url-cache
google-oauth dired-x em-term term ehelp electric esh-opt esh-ext
esh-util highlight-symbol boxquote ecomplete message idna rfc822 mml
mml-sec mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045
ietf-drums mailabbrev mail-utils gmm-utils mailheader info edit-server
server yasnippet help-mode disp-table noutline outline browse-kill-ring
recentf tree-widget wid-edit helm-nrepl helm-elisp helm-eval helm-info
helm-net browse-url xml url url-proxy url-privacy url-expand url-methods
url-history url-cookie url-domsuf url-util url-parse url-vars mailcap
helm-plugin nrepl ewoc eldoc arc-mode archive-mode etags clojure-mode
derived imenu inf-lisp tramp tramp-compat auth-source eieio byte-opt
bytecomp byte-compile cconv eieio-core gnus-util mm-util mail-prsvr
password-cache tramp-loaddefs trampver shell pcomplete format-spec
helm-buffers helm-grep helm-regexp grep helm-elscreen helm-utils dired
compile comint ansi-color ring helm helm-config helm-aliases easymenu
uniquify multiple-cursors mc-separate-operations rectangular-region-mode
mc-mark-pop mc-mark-more thingatpt mc-cycle-cursors mc-edit-lines
multiple-cursors-core easy-mmode rect iedit help-macro iedit-lib cl-macs
gv cl superword subword saveplace savehist paren ido mb-depth advice
help-fns diminish rx windmove edmacro kmacro cl-loaddefs cl-lib
gnus-load tsdh-dark-theme ack-and-a-half-autoloads boxquote-autoloads
browse-kill-ring-autoloads debbugs-autoloads graphviz-dot-mode-autoloads
highlight-parentheses-autoloads markdown-mode-autoloads
memory-usage-autoloads window-number-autoloads package site-gentoo
time-date tooltip ediff-hook vc-hooks lisp-float-type mwheel x-win x-dnd
tool-bar dnd fontset image regexp-opt fringe tabulated-list newcomment
lisp-mode prog-mode register page menu-bar rfn-eshadow timer select
scroll-bar mouse jit-lock font-lock syntax facemenu font-core frame cham
georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao
korean japanese hebrew greek romanian slovak czech european ethiopic
indian cyrillic chinese case-table epa-hook jka-cmpr-hook help simple
abbrev minibuffer nadvice loaddefs button faces cus-face macroexp files
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget hashtable-print-readable backquote make-network-process
dbusbind inotify dynamic-setting system-font-setting font-render-setting
move-toolbar gtk x-toolkit x multi-tty emacs)