gnu: mpop: Don't use NAME in source URI.
[jackhill/guix/guix.git] / gnu / packages / mail.scm
index 5e59339..8d36701 100644 (file)
@@ -6,27 +6,28 @@
 ;;; Copyright © 2014 Julien Lepiller <julien@lepiller.eu>
 ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
 ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
-;;; Copyright © 2015, 2016 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2015, 2016, 2018 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
-;;; Copyright © 2015, 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2015, 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org>
 ;;; Copyright © 2016 Al McElrath <hello@yrns.org>
 ;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
 ;;; Copyright © 2016 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2016, 2017 Troy Sankey <sankeytms@gmail.com>
-;;; Copyright © 2016, 2017, 2018 Nils Gillmann <ng0@n0.is>
+;;; Copyright © 2016, 2017, 2018 ng0 <ng0@n0.is>
 ;;; Copyright © 2016 Clément Lassieur <clement@lassieur.org>
-;;; Copyright © 2016, 2017, 2018 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2016, 2017, 2018, 2019 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2016 John Darrington <jmd@gnu.org>
 ;;; Copyright © 2016, 2018 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
 ;;; Copyright © 2017 Kyle Meyer <kyle@kyleam.com>
 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
-;;; Copyright © 2017 Rene Saavedra <rennes@openmailbox.org>
+;;; Copyright © 2017, 2018 Rene Saavedra <pacoon@protonmail.com>
 ;;; Copyright © 2018 Pierre Langlois <pierre.langlois@gmx.com>
 ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
 ;;; Copyright © 2018 Gábor Boskovits <boskovits@gmail.com>
+;;; Copyright © 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
 
 (define-module (gnu packages mail)
   #:use-module (gnu packages)
+  #:use-module (gnu packages admin)
   #:use-module (gnu packages aspell)
   #:use-module (gnu packages autotools)
-  #:use-module (gnu packages base)
   #:use-module (gnu packages backup)
+  #:use-module (gnu packages base)
   #:use-module (gnu packages bash)
   #:use-module (gnu packages bison)
   #:use-module (gnu packages calendar)
   #:use-module (gnu packages check)
+  #:use-module (gnu packages compression)
   #:use-module (gnu packages crypto)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages cyrus-sasl)
   #:use-module (gnu packages databases)
+  #:use-module (gnu packages dbm)
   #:use-module (gnu packages dejagnu)
   #:use-module (gnu packages django)
   #:use-module (gnu packages dns)
+  #:use-module (gnu packages docbook)
   #:use-module (gnu packages documentation)
   #:use-module (gnu packages emacs)
   #:use-module (gnu packages enchant)
-  #:use-module (gnu packages ghostscript)
+  #:use-module (gnu packages gdb)
   #:use-module (gnu packages gettext)
+  #:use-module (gnu packages ghostscript)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages gnupg)
@@ -72,6 +78,7 @@
   #:use-module (gnu packages gsasl)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages guile)
+  #:use-module (gnu packages guile-xyz)
   #:use-module (gnu packages flex)
   #:use-module (gnu packages kerberos)
   #:use-module (gnu packages libcanberra)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages lua)
   #:use-module (gnu packages m4)
+  #:use-module (gnu packages man)
   #:use-module (gnu packages ncurses)
+  #:use-module (gnu packages networking)
   #:use-module (gnu packages openldap)
   #:use-module (gnu packages onc-rpc)
   #:use-module (gnu packages pcre)
   #:use-module (gnu packages perl)
+  #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-web)
+  #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages readline)
-  #:use-module (gnu packages search)
-  #:use-module (gnu packages texinfo)
-  #:use-module (gnu packages compression)
-  #:use-module (gnu packages glib)
-  #:use-module (gnu packages pkg-config)
-  #:use-module (gnu packages flex)
-  #:use-module (gnu packages gdb)
-  #:use-module (gnu packages man)
   #:use-module (gnu packages ruby)
+  #:use-module (gnu packages search)
+  #:use-module (gnu packages serialization)
   #:use-module (gnu packages samba)
   #:use-module (gnu packages screen)
+  #:use-module (gnu packages sqlite)
   #:use-module (gnu packages tcl)
+  #:use-module (gnu packages texinfo)
   #:use-module (gnu packages time)
   #:use-module (gnu packages tls)
-  #:use-module (gnu packages networking)
+  #:use-module (gnu packages w3m)
   #:use-module (gnu packages web)
   #:use-module (gnu packages webkit)
-  #:use-module (gnu packages w3m)
-  #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg)
-  #:use-module (gnu packages docbook)
+  #:use-module (gnu packages xml)
   #:use-module ((guix licenses)
-                #:select (fdl1.1+ gpl2 gpl2+ gpl3 gpl3+ lgpl2.1 lgpl2.1+ lgpl3+
+                #:select (fdl1.1+
+                           agpl3+
+                           gpl2 gpl2+ gpl3 gpl3+ lgpl2.1 lgpl2.1+ lgpl3+
                            non-copyleft (expat . license:expat) bsd-3
                            public-domain bsd-4 isc (openssl . license:openssl)
                            bsd-2 x11-style agpl3 asl2.0 perl-license))
   #:use-module (guix git-download)
   #:use-module (guix utils)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system guile)
   #:use-module (guix build-system perl)
   #:use-module (guix build-system python)
   #:use-module (guix build-system trivial))
 (define-public mailutils
   (package
     (name "mailutils")
-    (version "3.4")
+    (version "3.5")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnu/mailutils/mailutils-"
-                                 version ".tar.bz2"))
+                                 version ".tar.xz"))
              (sha256
               (base32
-               "1dn71p85wlyisnwsb485sk3q5v393k3dizsa9fmimskdwjwgk3ch"))
-             (patches
-              (search-patches "mailutils-uninitialized-memory.patch"))
-             (snippet
-              ;; For a rebuild of the Flex/Bison byproducts touched by the
-              ;; patch above.
-              '(begin
-                 (for-each delete-file
-                           '("mh/mh_alias_lex.c"
-                             "libmailutils/cfg/parser.c"))
-                 #t))))
+               "1wx275w38fwni2abc8g7g3irbk332vr34byxd72zqfdiznsqgims"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
 
              #t)))
        ;; TODO: Add `--with-sql'.
-       #:configure-flags '("--sysconfdir=/etc")
+       #:configure-flags (list "--sysconfdir=/etc"
+
+                               ;; Add "/2.2" to the installation directory.
+                               (string-append "--with-guile-site-dir="
+                                              (assoc-ref %outputs "out")
+                                              "/share/guile/site/2.2"))
+
        #:parallel-tests? #f))
     (native-inputs
-     ;; Note: Bison and Flex needed due to
-     ;; 'mailutils-uninitialized-memory.patch'.
-     `(("bison" ,bison)
-       ("flex" ,flex)
-       ("perl" ,perl)))                           ;for 'gylwrap'
+     `(("perl" ,perl)))                           ;for 'gylwrap'
     (inputs
      `(("dejagnu" ,dejagnu)
        ("m4" ,m4)
        ("texinfo" ,texinfo)
-       ("guile" ,guile-2.0)
+       ("guile" ,guile-2.2)
+       ("gsasl" ,gsasl)
        ("gnutls" ,gnutls)
        ("ncurses" ,ncurses)
        ("readline" ,readline)
@@ -225,6 +226,87 @@ software.")
      ;; Libraries are under LGPLv3+, and programs under GPLv3+.
      (list gpl3+ lgpl3+))))
 
+(define-public nullmailer
+  (package
+    (name "nullmailer")
+    (version "2.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (list
+             (string-append "https://untroubled.org/nullmailer/"
+                            "nullmailer-" version ".tar.gz")
+             ;; Previous releases are moved to this subdirectory.
+             (string-append "https://untroubled.org/nullmailer/archive/"
+                            "nullmailer-" version ".tar.gz")))
+       (sha256
+        (base32 "0md8cf90fl2yf3zh9njjy42a673v4j4ygyq95xg7fzkygdigm1lq"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:configure-flags
+       (list "--enable-tls"
+             "--localstatedir=/var"
+             "--sysconfdir=/etc")
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'patch-test-FHS-file-names
+           (lambda _
+             (with-directory-excursion "test"
+               (substitute* (list "functions.in"
+                                  "tests/send")
+                 ;; Fix some shebangs later generated on the fly.
+                 (("/bin/sh") (which "bash"))))
+             #t))
+         (add-before 'check 'pass-PATH-to-tests
+           ;; ‘runtest’ launches each test through ‘env -’, clearing $PATH. The
+           ;; tests then source ‘functions’, which first demands a working $PATH
+           ;; only to clobber it later.  Pass our $PATH to the test environment
+           ;; and don't touch it after that.
+           (lambda _
+             (with-directory-excursion "test"
+               (substitute* "runtests"
+                 (("env - bash")
+                  (string-append "env - PATH=\"" (getenv "PATH") "\" bash")))
+               (substitute* "functions.in"
+                 (("export PATH=.*") "")))
+             #t))
+         (add-before 'check 'delete-failing-tests
+           (lambda _
+             (with-directory-excursion "test/tests"
+               (for-each delete-file
+                         (list
+                          ;; XXX ‘nullmailer-inject: nullmailer-queue failed: 15’
+                          "inject/queue"
+                          ;; XXX These require the not-yet-packaged tcpserver.
+                          "protocols" "smtp-auth")))
+             #t))
+         (add-before 'install 'skip-install-data-local
+           ;; Don't attempt to install run-time files outside of the store.
+           (lambda _
+             (substitute* "Makefile"
+               ((" install-data-local") ""))
+             #t)))))
+    (native-inputs
+     ;; For tests.
+     `(("daemontools" ,daemontools)))   ; for svc
+    (inputs
+     `(("gnutls" ,gnutls)))
+    (home-page "https://untroubled.org/nullmailer/")
+    (synopsis "Simple relay-only mail transfer agent")
+    (description
+     "Nullmailer is a simple replacement @acronym{MTA, Mail Transfer Agent} for
+hosts that receive no local mail and only relay mail to a fixed set of smart
+relays.  It's useful for systems such as Web servers that must be able to send
+email notifications, without having to run a full-blown MTA such as sendmail
+or qmail.
+
+Nullmailer is designed to be simple to configure, easy to extend, and secure.
+It requires little ongoing administration.  The included @command{sendmail}
+emulator front-end should allow most (if not all) sendmail-compatible programs
+to run without any changes.")
+    (license (list lgpl2.1+         ; lib/cli++/ (but some files lack headers)
+                   gpl2+))))        ; everything else
+
 (define-public fetchmail
   (package
     (name "fetchmail")
@@ -261,14 +343,14 @@ aliasing facilities to work just as they would on normal mail.")
 (define-public mutt
   (package
     (name "mutt")
-    (version "1.10.1")
+    (version "1.11.3")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://bitbucket.org/mutt/mutt/downloads/"
                                  "mutt-" version ".tar.gz"))
              (sha256
               (base32
-               "182lkbkpd3q3l1x6bvyds90ycp38gyyxhf35ry0d3hwf2n1khjkk"))
+               "0h8rmcc62n1pagm7mjjccd5fxyhhi4vbvp8m88digkdf5z0g8hm5"))
              (patches (search-patches "mutt-store-references.patch"))))
     (build-system gnu-build-system)
     (inputs
@@ -491,15 +573,16 @@ and corrections.  It is based on a Bayesian filter.")
 (define-public offlineimap
   (package
     (name "offlineimap")
-    (version "7.2.1")
+    (version "7.2.3")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/OfflineIMAP/offlineimap/"
-                                  "archive/v" version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/OfflineIMAP/offlineimap")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "1022xf2w1xax4vx4kzhlfbhaf0b72wkpvrcscvs4q8qk2ja68h8x"))))
+                "18sdnhjldn8zs03bgqy1qa3ikmlfvyxcvwp3nbnv1a74biccqbpa"))))
     (build-system python-build-system)
     (native-inputs
      `(("asciidoc" ,asciidoc)))
@@ -524,15 +607,8 @@ and corrections.  It is based on a Bayesian filter.")
                     (man (string-append out "/share/man")))
                (install-file "docs/offlineimap.1" (string-append man "/man1"))
                (install-file "docs/offlineimapui.7" (string-append man "/man7"))
-               #t)))
-         (add-after 'install-documentation 'wrap-binary
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (bin (string-append out "/bin/offlineimap")))
-               (wrap-program bin
-                 `("PYTHONPATH" ":" prefix (,(getenv "PYTHONPATH"))))
                #t))))))
-    (home-page "http://www.offlineimap.org")
+    (home-page "https://www.offlineimap.org")
     (synopsis "Sync emails between two repositories")
     (description
      "OfflineImap synchronizes emails between two repositories, so that you
@@ -546,7 +622,7 @@ repository and Maildir/IMAP as LOCAL repository.")
     (version "6.7")
     (source (origin
               (method url-fetch)
-              (uri (string-append "http://mew.org/Release/mew-"
+              (uri (string-append "https://mew.org/Release/mew-"
                                   version ".tar.gz"))
               (sha256
                (base32
@@ -584,7 +660,7 @@ repository and Maildir/IMAP as LOCAL repository.")
                 "mew" (string-append (assoc-ref outputs "out") ,elisp-dir))
                #t)))
          #:tests? #f)))
-    (home-page "http://www.mew.org")
+    (home-page "https://mew.org")
     (synopsis "Emacs e-mail client")
     (description "Mew (Messaging in the Emacs World) is a user interface
 for text messages, multimedia messages (MIME), news articles and
@@ -706,9 +782,9 @@ attachments, create new maildirs, and so on.")
        ("python2-pygpgme" ,python2-pygpgme)
        ("python2-notmuch" ,python2-notmuch)))
     (home-page "https://github.com/pazz/alot")
-    (synopsis "Commandline MUA using notmuch")
+    (synopsis "Command-line MUA using @code{notmuch}")
     (description
-     "Alot is an experimental terminal mail user agent (MUA) based on
+     "Alot is an experimental terminal mail user agent (@dfn{MUA}) based on
 @code{notmuch} mail.  It is written in Python using the @code{urwid} toolkit.")
     (license gpl3+)))
 
@@ -763,14 +839,14 @@ invoking @command{notifymuch} from the post-new hook.")
 (define-public notmuch
   (package
     (name "notmuch")
-    (version "0.27")
+    (version "0.28.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://notmuchmail.org/releases/notmuch-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0xh8vq2sa7r07xb3n13drc6gdiqhcgl0pj0za5xj43qkiwpikls0"))))
+                "1v0ff6qqwj42p3n6qw30czzqi52nvgf3dn05vd7a03g39a5js8af"))))
     (build-system gnu-build-system)
     (arguments
      `(#:modules ((guix build gnu-build-system)
@@ -947,14 +1023,15 @@ useful features.")
 (define-public libetpan
   (package
     (name "libetpan")
-    (version "1.8")
+    (version "1.9.2")
     (source (origin
-             (method url-fetch)
-             (uri (string-append "https://github.com/dinhviethoa/" name
-                   "/archive/" version ".tar.gz"))
-             (file-name (string-append name "-" version ".tar.gz"))
+             (method git-fetch)
+             (uri (git-reference
+                   (url  "https://github.com/dinhviethoa/libetpan.git")
+                   (commit version)))
+             (file-name (git-file-name name version))
              (sha256
-               (base32 "1sxnaglp5hb0z78sgnfzva4x8m4flqhicvm1dz0krkxdmfsafrsf"))))
+               (base32 "13jiy2ddxbp9f2mk1mip9sk8h97bva5m0pnq2mlvh5xhifs6gza4"))))
     (build-system gnu-build-system)
     (native-inputs `(("autoconf" ,autoconf-wrapper)
                      ("automake" ,automake)
@@ -978,7 +1055,7 @@ useful features.")
               (invoke "sh" "autogen.sh"))))
         #:configure-flags
         '("--disable-static" "--disable-db")))
-    (home-page "http://www.etpan.org/libetpan.html")
+    (home-page "https://www.etpan.org/libetpan.html")
     (synopsis "Portable middleware for email access")
     (description
      "The purpose of this mail library is to provide a portable, efficient
@@ -1011,15 +1088,15 @@ compresses it.")
 (define-public claws-mail
   (package
     (name "claws-mail")
-    (version "3.16.0")
+    (version "3.17.3")
     (source (origin
               (method url-fetch)
               (uri (string-append
-                    "http://www.claws-mail.org/releases/" name "-" version
+                    "https://www.claws-mail.org/releases/claws-mail-" version
                     ".tar.xz"))
               (sha256
                (base32
-                "1awpr3s7n8bq8p3w10a4j6lg5bizjxyiqp4rqzc2j8cn7lyi64n2"))))
+                "1wnj6c9cbmhphs2l6wfvndkk2g08rmxw0sl2c8k1k008dxd1ykjh"))))
     (build-system gnu-build-system)
     (native-inputs `(("pkg-config" ,pkg-config)))
     (inputs `(("bogofilter" ,bogofilter)
@@ -1065,13 +1142,13 @@ appearance and interface are designed to be familiar to new users coming from
 other popular email clients, as well as experienced users.  Almost all commands
 are accessible with the keyboard.  Plus, Claws-Mail is extensible via addons
 which can add many functionalities to the base client.")
-    (home-page "http://www.claws-mail.org/")
+    (home-page "https://www.claws-mail.org/")
     (license gpl3+))) ; most files are actually public domain or x11
 
 (define-public msmtp
   (package
     (name "msmtp")
-    (version "1.6.8")
+    (version "1.8.3")
     (source
      (origin
        (method url-fetch)
@@ -1079,11 +1156,10 @@ which can add many functionalities to the base client.")
                            "/msmtp-" version ".tar.xz"))
        (sha256
         (base32
-         "1ysrnshvwhzwmvb2walw5i9jdzlvmckj7inr0xnvb26q0jirbzsm"))))
+         "1d4jdgrx4czp66nnwdsy938lzr4llhwyy0715pwg0j6h6gyyxciw"))))
     (build-system gnu-build-system)
     (inputs
-     `(("libidn" ,libidn)
-       ("libsecret" ,libsecret)
+     `(("libsecret" ,libsecret)
        ("gnutls" ,gnutls)
        ("zlib" ,zlib)
        ("gsasl" ,gsasl)))
@@ -1206,15 +1282,15 @@ facilities for checking incoming mail.")
 (define-public dovecot
   (package
     (name "dovecot")
-    (version "2.3.2.1")
+    (version "2.3.5")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://www.dovecot.org/releases/"
                            (version-major+minor version) "/"
-                           name "-" version ".tar.gz"))
-       (sha256 (base32
-                "0d2ffbicgl3wswbnyjbw6qigz7r1aqzprpchbwp5cynw122i2raa"))))
+                           "dovecot-" version ".tar.gz"))
+       (sha256
+        (base32 "1zxa9banams9nmk99sf1rqahr11cdqxhwi7hyz3ddxqidpn15qdz"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -1227,28 +1303,26 @@ facilities for checking incoming mail.")
     (arguments
      `(#:configure-flags '("--sysconfdir=/etc"
                            "--localstatedir=/var")
-       #:phases (modify-phases %standard-phases
-                  (add-before
-                   'configure 'pre-configure
-                   (lambda _
-                     ;; Simple hack to avoid installing in /etc.
-                     (substitute* '("doc/Makefile.in"
-                                    "doc/example-config/Makefile.in")
-                       (("pkgsysconfdir = .*")
-                        "pkgsysconfdir = /tmp/etc"))
-                     #t))
-                  (add-after
-                   'unpack 'patch-other-file-names
-                   (lambda _
-                     (substitute*
-                         "src/lib-program-client/test-program-client-local.c"
-                       (("(/bin/| )cat") (which "cat"))
-                       (("/bin/echo") (which "echo"))
-                       (("/bin/false") (which "false"))
-                       (("/bin/sh") (which "bash"))
-                       (("head") (which "head"))
-                       (("sleep") (which "sleep")))
-                     #t)))))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-file-names
+           (lambda _
+             (substitute* "src/lib-program-client/test-program-client-local.c"
+               (("(/bin/| )cat") (which "cat"))
+               (("/bin/echo") (which "echo"))
+               (("/bin/false") (which "false"))
+               (("/bin/sh") (which "bash"))
+               (("head") (which "head"))
+               (("sleep") (which "sleep")))
+             (substitute* (list "src/lib-smtp/test-bin/sendmail-exit-1.sh"
+                                "src/lib-smtp/test-bin/sendmail-success.sh")
+               (("cat") (which "cat")))
+             #t))
+         (replace 'install
+           (lambda* (#:key make-flags #:allow-other-keys)
+             ;; Simple hack to avoid installing a trivial README in /etc.
+             (apply invoke "make" "install" "sysconfdir=/tmp/bogus"
+                    make-flags))))))
     (home-page "https://www.dovecot.org")
     (synopsis "Secure POP3/IMAP server")
     (description
@@ -1399,7 +1473,7 @@ mailboxes.  Currently Maildir and IMAP are supported types.")
      `(("perl-email-simple" ,perl-email-simple)
        ("perl-module-pluggable" ,perl-module-pluggable)
        ("perl-mro-compat" ,perl-mro-compat)))
-    (home-page "http://search.cpan.org/dist/Email-Abstract")
+    (home-page "https://metacpan.org/release/Email-Abstract")
     (synopsis "Interface to mail representations")
     (description "Email::Abstract provides module writers with the ability to
 write simple, representation-independent mail handling code.")
@@ -1418,7 +1492,7 @@ write simple, representation-independent mail handling code.")
         (base32
          "0l7x6sl06j9ffgfz5f9vgms2b5axd4cgp5fj03ivb3kia4km6b3g"))))
     (build-system perl-build-system)
-    (home-page "http://search.cpan.org/dist/Email-Address")
+    (home-page "https://metacpan.org/release/Email-Address")
     (synopsis "Email address parsing and creation")
     (description "Email::Address implements a regex-based RFC 2822 parser that
 locates email addresses in strings and returns a list of Email::Address
@@ -1438,7 +1512,7 @@ objects found.  Alternatively you may construct objects manually.")
         (base32
          "012ivfwpnbl3wr50f9c6f4azhdlxnm31pdn72528g79v61z6372p"))))
     (build-system perl-build-system)
-    (home-page "http://search.cpan.org/dist/Email-Date-Format")
+    (home-page "https://metacpan.org/release/Email-Date-Format")
     (synopsis "Produce RFC 2822 date strings")
     (description "Email::Date::Format provides a means for generating an RFC
 2822 compliant datetime string.")
@@ -1457,7 +1531,7 @@ objects found.  Alternatively you may construct objects manually.")
         (base32
          "1f22sdnfq169qw1l0lg7y74pmiam7j9v95bggjnf3q4mygdmshpc"))))
     (build-system perl-build-system)
-    (home-page "http://search.cpan.org/dist/Email-MessageID")
+    (home-page "https://metacpan.org/release/Email-MessageID")
     (synopsis "Generate world unique message-ids")
     (description "Email::MessageID generates recommended message-ids to
 identify a message uniquely.")
@@ -1484,7 +1558,7 @@ identify a message uniquely.")
        ("perl-email-simple" ,perl-email-simple)
        ("perl-mime-types" ,perl-mime-types)
        ("perl-module-runtime" ,perl-module-runtime)))
-    (home-page "http://search.cpan.org/dist/Email-MIME")
+    (home-page "https://metacpan.org/release/Email-MIME")
     (synopsis "MIME message handling")
     (description "Email::MIME is an extension of the Email::Simple module, to
 handle MIME encoded messages.  It takes a message as a string, splits it up
@@ -1507,7 +1581,7 @@ message.  Headers are decoded from MIME encoding.")
     (build-system perl-build-system)
     (native-inputs
      `(("perl-capture-tiny" ,perl-capture-tiny)))
-    (home-page "http://search.cpan.org/dist/Email-MIME-ContentType")
+    (home-page "https://metacpan.org/release/Email-MIME-ContentType")
     (synopsis "Parse MIME Content-Type headers")
     (description "Email::MIME::ContentType parses a MIME Content-Type
 header.")
@@ -1528,7 +1602,7 @@ header.")
     (build-system perl-build-system)
     (native-inputs
      `(("perl-capture-tiny" ,perl-capture-tiny)))
-    (home-page "http://search.cpan.org/dist/Email-MIME-Encodings")
+    (home-page "https://metacpan.org/release/Email-MIME-Encodings")
     (synopsis "Unified interface to MIME encoding and decoding")
     (description "This module wraps MIME::Base64 and MIME::QuotedPrint.")
     (license perl-license)))
@@ -1559,7 +1633,7 @@ header.")
        ("perl-sub-exporter" ,perl-sub-exporter)
        ("perl-throwable" ,perl-throwable)
        ("perl-try-tiny" ,perl-try-tiny)))
-    (home-page "http://search.cpan.org/dist/Email-Sender")
+    (home-page "https://metacpan.org/release/Email-Sender")
     (synopsis "Perl library for sending email")
     (description "Email::Sender replaces the old and sometimes problematic
 Email::Send library.")
@@ -1568,7 +1642,7 @@ Email::Send library.")
 (define-public perl-email-simple
   (package
     (name "perl-email-simple")
-    (version "2.214")
+    (version "2.216")
     (source
      (origin
        (method url-fetch)
@@ -1576,11 +1650,11 @@ Email::Send library.")
                            "Email-Simple-" version ".tar.gz"))
        (sha256
         (base32
-         "14kb86hi0m0bqc7kxpm4x5kvfsyj2x86gggbvpxhx9hy8hvjpw5j"))))
+         "1m4brbjvalyp5kjqslqv4155dzwg977shxin208i7lc8236n6pyq"))))
     (build-system perl-build-system)
     (propagated-inputs
      `(("perl-email-date-format" ,perl-email-date-format)))
-    (home-page "http://search.cpan.org/dist/Email-Simple")
+    (home-page "https://metacpan.org/release/Email-Simple")
     (synopsis "Parsing of RFC 2822 messages")
     (description "Email::Simple provides simple parsing of RFC 2822 message
 format and headers.")
@@ -1735,31 +1809,30 @@ maintained.")
 (define-public khard
   (package
     (name "khard")
-    (version "0.11.4")
+    (version "0.13.0")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri name version))
               (sha256
                (base32
-                "1shhlq6ljbd8095hd82v4mw56rjcfxf1ymmgknbgh8gix02nsxw1"))))
+                "1lyjiskc6ckjjylzr04dnm66p3cnn7vlysw9c27qls3y3ywx14zw"))))
     (build-system python-build-system)
     (arguments
-      `(#:phases
-        (modify-phases %standard-phases
-          (add-after 'install 'install-doc
-            (lambda* (#:key outputs #:allow-other-keys)
-              (let* ((out (assoc-ref outputs "out"))
-                     (doc (string-append out "/share/doc/khard")))
-                (copy-recursively "misc/khard" doc)
-                #t))))
-        ;; FIXME: check phase fails with
-        ;; "Config file /tmp/.config/khard/khard.conf not available"
-        #:tests? #f))
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'install-doc
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (doc (string-append out "/share/doc/khard")))
+               (copy-recursively "misc/khard" doc)
+               #t))))))
     (propagated-inputs
-     `(("python-vobject" ,python-vobject)
+     `(("python-atomicwrites" ,python-atomicwrites)
+       ("python-configobj" ,python-configobj)
        ("python-pyyaml" ,python-pyyaml)
-       ("python-atomicwrites" ,python-atomicwrites)
-       ("python-configobj" ,python-configobj)))
+       ("python-ruamel.yaml" ,python-ruamel.yaml)
+       ("python-unidecode" ,python-unidecode)
+       ("python-vobject" ,python-vobject)))
     (synopsis "Console address book using CardDAV")
     (description "Khard is an address book for the console.  It creates, reads,
 modifies and removes CardDAV address book entries at your local machine.  For
@@ -1802,7 +1875,7 @@ Khard can also be used from within the email client @command{mutt}.")
       ("perl-netaddr-ip" ,perl-netaddr-ip)
       ("perl-uri" ,perl-uri)))
   (home-page
-    "http://search.cpan.org/dist/Mail-SPF")
+    "https://metacpan.org/release/Mail-SPF")
   (synopsis
     "Perl implementation of Sender Policy Framework")
   (description "Mail::SPF is the Sender Policy Framework implemented
@@ -1857,24 +1930,22 @@ converts them to maildir format directories.")
 (define-public mpop
   (package
     (name "mpop")
-    (version "1.2.6")
+    (version "1.4.2")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "mirror://sourceforge/mpop/mpop/" version
-                           "/mpop-" version ".tar.xz"))
+       (uri (string-append "https://marlam.de/mpop/releases/"
+                           "mpop-" version ".tar.xz"))
        (sha256
         (base32
-         "0p1ix63jh64dibrlccch8q7gxl9nn18wd2qpyr5z1h4gs2fpmv4z"))))
+         "1rx5mhgqkm7swbynrhbsz32v85h0rydb4kqfgfs9jrznd9d14m2d"))))
     (build-system gnu-build-system)
     (inputs
      `(("gnutls" ,gnutls)
        ("libidn" ,libidn)))
     (native-inputs
      `(("pkg-config" ,pkg-config)))
-    (arguments
-     `(#:configure-flags (list "--with-tls=gnutls")))
-    (home-page "http://mpop.sourceforge.net/")
+    (home-page "https://marlam.de/mpop/")
     (synopsis "POP3 mail client")
     (description "mpop is a small and fast POP3 client suitable as a
 fetchmail replacement.
@@ -2025,7 +2096,7 @@ transfer protocols.")
        (modify-phases %standard-phases
          ;; Fix some incorrectly hard-coded external tool file names.
          (add-after 'unpack 'patch-FHS-file-names
-           (lambda* (#:key inputs #:allow-other-keys)
+           (lambda _
              (substitute* "smtpd/smtpctl.c"
                (("/bin/cat") (which "cat"))
                (("/bin/sh") (which "sh")))
@@ -2053,6 +2124,81 @@ e-mails with other systems speaking the SMTP protocol.")
     (license (list bsd-2 bsd-3 bsd-4 (non-copyleft "file://COPYING")
                    public-domain isc license:openssl))))
 
+;; OpenSMTPd 6.4 introduced a new and incompatible configuration file format.
+;; Use a different name, for now, to avoid auto-upgrades and broken mail boxes.
+;; OPENSMTP-CONFIGURATION in (gnu services mail) will also need an overhaul.
+(define-public opensmtpd-next
+  (package
+    (name "opensmtpd-next")
+    (version "6.4.1p2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://www.opensmtpd.org/archives/"
+                           "opensmtpd-" version ".tar.gz"))
+       (sha256
+        (base32 "0cppqlx4fk6l8rbim5symh2fm1kzshf421256g596j6c9f9q96xn"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("bdb" ,bdb)
+       ("libasr" ,libasr)
+       ("libevent" ,libevent)
+       ("libressl" ,libressl)
+       ("linux-pam" ,linux-pam)
+       ("zlib" ,zlib)))
+    (native-inputs
+     `(("bison" ,bison)
+       ("groff" ,groff)))               ; for man pages
+    (arguments
+     `(#:configure-flags
+       (list "--localstatedir=/var"
+             ;; This is the default only if it exists at build time—it doesn't.
+             "--with-path-socket=/var/run"
+             "--with-path-CAfile=/etc/ssl/certs/ca-certificates.crt"
+             "--with-user-smtpd=smtpd"
+             "--with-user-queue=smtpq" "--with-group-queue=smtpq"
+             "--with-auth-pam"
+             "--with-table-db")
+       #:phases
+       (modify-phases %standard-phases
+         ;; Fix some incorrectly hard-coded external tool file names.
+         (add-after 'unpack 'patch-FHS-file-names
+           (lambda _
+             (substitute* "smtpd/smtpctl.c"
+               ;; ‘gzcat’ is auto-detected at compile time, but ‘cat’ isn't.
+               (("/bin/cat") (which "cat")))
+             (substitute* "smtpd/mda_unpriv.c"
+               (("/bin/sh") (which "sh")))
+             #t))
+         ;; OpenSMTPD provides a single smtpctl utility to control both the
+         ;; daemon and the local submission subsystem.  To accomodate systems
+         ;; that require historical interfaces such as sendmail, newaliases or
+         ;; makemap, smtpctl operates in compatibility mode if called with the
+         ;; historical name.
+         (add-after 'install 'install-compability-links
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out  (assoc-ref outputs "out"))
+                    (sbin (string-append out "/sbin/")))
+               (for-each (lambda (command)
+                           (symlink "smtpctl" (string-append sbin command)))
+                         (list "mailq" "makemap" "newaliases"
+                               "send-mail" "sendmail")))
+             #t)))))
+    (synopsis "Lightweight SMTP daemon")
+    (description
+     "OpenSMTPD is an implementation of server-side @acronym{SMTP, Simple Mail
+Transfer Protocol}, with some additional standard extensions.  It allows
+ordinary machines to exchange e-mails with other systems speaking the SMTP
+protocol, or to deliver them to local users.
+
+In order to simplify the use of SMTP, OpenSMTPD implements a smaller set of
+functionality than those available in other SMTP daemons.  The objective is to
+provide enough features to satisfy typical usage at the risk of unsuitability
+to esoteric or niche requirements.")
+    (home-page "https://www.opensmtpd.org")
+    (license (list bsd-2 bsd-3 bsd-4 (non-copyleft "file://COPYING")
+                   public-domain isc license:openssl))))
+
 (define-public opensmtpd-extras
   (package
     (name "opensmtpd-extras")
@@ -2315,7 +2461,7 @@ on the fly.  Both programs are written in C and are very fast.")
 (define-public swaks
   (package
     (name "swaks")
-    (version "20170101.0")
+    (version "20181104.0")
     (source
      (origin
        (method url-fetch)
@@ -2324,7 +2470,7 @@ on the fly.  Both programs are written in C and are very fast.")
              version ".tar.gz"))
        (sha256
         (base32
-         "0pli4mlhasnqqxmmxalwyg3x7n2vhcbgsnp2xgddamjavv82vrl4"))))
+         "0n1yd27xcyb1ylp5gln3yv5gzi9r377hjy1j32367kgb3247ygq2"))))
     (build-system perl-build-system)
     (inputs
      `(("perl-net-dns" ,perl-net-dns)
@@ -2430,15 +2576,15 @@ tools and applications:
 (define-public balsa
   (package
     (name "balsa")
-    (version "2.5.3")
+    (version "2.5.6")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "https://pawsa.fedorapeople.org/balsa/balsa-"
-                           version ".tar.bz2"))
+       (uri (string-append "https://pawsa.fedorapeople.org/balsa/"
+                           name "-" version ".tar.bz2"))
        (sha256
         (base32
-         "15jkwp3ylbwd8iha4dr37z1xb6mkk31ym90vv3h2a5xk2rmym5mq"))))
+         "17k6wcsl8gki7cskr3hhmfj6n54rha8ca3b6fzd8blsl5shsankx"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
@@ -2558,17 +2704,16 @@ PGP handling, multiple servers, and secure connections.")
 (define-public imapfilter
   (package
     (name "imapfilter")
-    (version "2.6.11")
+    (version "2.6.12")
     (source
      (origin
-       (method url-fetch)
-       (uri
-        (string-append "https://github.com/lefcha/imapfilter/archive/"
-                       "v" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/lefcha/imapfilter.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "1yslvwr3w5fnl06gfrp0lim8zdlasx3cvgd2fsqi0695xnb9bsms"))))
+        (base32 "0vzpc54fjf5vb5vx5w0fl20xvx1k9cg6a3hbl86mm8kwsqf3wrab"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f
@@ -2598,3 +2743,126 @@ processes mailboxes based on the results.  It can be used to delete, copy,
 move, flag, etc. messages residing in mailboxes at the same or different mail
 servers.  The 4rev1 and 4 versions of IMAP are supported.")
     (license license:expat)))
+
+(define-public urlscan
+  (package
+    (name "urlscan")
+    (version "0.9.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "urlscan" version))
+        (sha256
+         (base32
+          "1zldck7vnp7z04aacbx3cprf5kzha4gfhjmss4iv2lh5nccxjfzx"))))
+    (build-system python-build-system)
+    (propagated-inputs
+     `(("python-urwid" ,python-urwid)))
+    (home-page "https://github.com/firecat53/urlscan")
+    (synopsis "View/select the URLs in an email message or file")
+    (description
+     "Urlscan is a small program that is designed to integrate with the
+@code{mutt} mailreader to allow you to easily launch a Web browser for URLs
+contained in email messages.  It parses an email message or file and scans it
+for URLs and email addresses.  It then displays the URLs and their context
+within the message, and allows you to choose one or more URLs to send to your
+Web browser.  Alternatively, it send a list of all URLs to stdout.  It is a
+replacement for the @code{urlview} program.")
+    (license gpl2)))
+
+(define-public tnef
+  (package
+    (name "tnef")
+    (version "1.4.17")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/verdammelt/tnef.git")
+             (commit version)))
+       (sha256
+        (base32
+         "0cq2xh5wd74qn6k2nnw5rayxgqhjl3jbzf4zlc4babcwxrv32ldh"))
+       (file-name (git-file-name name version))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)))
+    (arguments `(#:parallel-tests? #f)) ;tests are side-effect'y
+    (home-page "https://github.com/verdammelt/tnef")
+    (synopsis "Unpack @code{application/ms-tnef} attachments")
+    (description
+     "TNEF is a tar-like program that unpacks MIME attachments of type
+@code{application/ms-tnef}.")
+    (license gpl2+)))
+
+(define-public mumi
+  (let ((commit "ea5a738010148284aed211da953ad670003aefea")
+        (revision "3"))
+    (package
+      (name "mumi")
+      (version (git-version "0.0.0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://git.elephly.net/software/mumi.git")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0ci5x8dqjmp74w33q2dbs5csxp4ilfmc1xxaa8q2jnh52d7597hl"))))
+      (build-system gnu-build-system)
+      (arguments
+       `(#:phases
+         (modify-phases %standard-phases
+           (add-after 'install 'wrap-executable
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let* ((out (assoc-ref outputs "out"))
+                      (bin (string-append out "/bin"))
+                      (scm (string-append out "/share/guile/site/2.2"))
+                      (go  (string-append out "/lib/guile/2.2/site-ccache")))
+                 (wrap-program (string-append bin "/mumi")
+                   `("GUILE_LOAD_PATH" ":" prefix
+                     (,scm ,(getenv "GUILE_LOAD_PATH")))
+                   `("GUILE_LOAD_COMPILED_PATH" ":" prefix
+                     (,go ,(getenv "GUILE_LOAD_COMPILED_PATH"))))
+                 #t))))))
+      (inputs
+       `(("guile-debbugs" ,guile-debbugs-next)
+         ("guile-email" ,guile-email)
+         ("guile-fibers" ,guile-fibers)
+         ("guile-json" ,guile-json)
+         ("guile-syntax-highlight" ,guile-syntax-highlight)
+         ("guile" ,guile-2.2)))
+      (native-inputs
+       `(("autoconf" ,autoconf)
+         ("automake" ,automake)
+         ("pkg-config" ,pkg-config)))
+      (home-page "https://git.elephly.net/software/mumi.git")
+      (synopsis "Debbugs web interface")
+      (description "Mumi is a Debbugs web interface.")
+      (license agpl3+))))
+
+(define-public ytnef
+  (package
+    (name "ytnef")
+    (version "1.9.3")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/Yeraze/ytnef.git")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "07h48s5qf08503pp9kafqbwipdqghiif22ghki7z8j67gyp04l6l"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("libtool" ,libtool)))
+    (home-page "https://github.com/Yeraze/ytnef/")
+    (synopsis "TNEF stream reader for winmail.dat files")
+    (description "This package provides a TNEF stream reader library and
+related tools to process winmail.dat files.")
+    (license gpl2+)))