gnu: libetpan: Update to 1.9.4.
[jackhill/guix/guix.git] / gnu / packages / mail.scm
index 8a3f64b..57cc8eb 100644 (file)
@@ -3,7 +3,7 @@
 ;;; Copyright © 2014, 2015, 2017 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net>
 ;;; Copyright © 2014 Sou Bunnbu <iyzsong@gmail.com>
-;;; Copyright © 2014 Julien Lepiller <julien@lepiller.eu>
+;;; Copyright © 2014, 2019 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, 2018 Eric Bavier <bavier@member.fsf.org>
@@ -28,6 +28,7 @@
 ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
 ;;; Copyright © 2018 Gábor Boskovits <boskovits@gmail.com>
 ;;; Copyright © 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2019 Tanguy Le Carrour <tanguy@bioneland.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -95,6 +96,7 @@
   #:use-module (gnu packages onc-rpc)
   #:use-module (gnu packages pcre)
   #:use-module (gnu packages perl)
+  #:use-module (gnu packages perl-check)
   #:use-module (gnu packages perl-web)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
   #:use-module (gnu packages w3m)
   #:use-module (gnu packages web)
   #:use-module (gnu packages webkit)
+  #:use-module (gnu packages xdisorg)
   #:use-module (gnu packages xorg)
   #:use-module (gnu packages xml)
   #:use-module ((guix licenses)
 (define-public mailutils
   (package
     (name "mailutils")
-    (version "3.6")
+    (version "3.7")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnu/mailutils/mailutils-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "07phzpwrnkdclx6jvirljk9zcavl8wh02kpx3mfba9msr99kpqj6"))))
+               "1gwajsl39f1dkzrjld0dm9px8hrj7l7rwzazz00h5rwghk9mhwhq"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
@@ -318,21 +321,30 @@ to run without any changes.")
 (define-public fetchmail
   (package
     (name "fetchmail")
-    (version "6.3.26")
-    (source (origin
-             (method url-fetch)
-             (uri (string-append "mirror://sourceforge/fetchmail/branch_6.3/fetchmail-"
-                                 version ".tar.xz"))
-             (sha256
-              (base32
-               "0l78ayvi9dm8hd190gl139cs2xqsrf7r9ncilslw20mgvd6cbd3r"))))
+    (version "6.4.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://sourceforge/fetchmail/branch_"
+                           (version-major+minor version) "/"
+                           "fetchmail-" version ".tar.xz"))
+       (sha256
+        (base32 "1859wvfc9fq72mwp4njdiy0x89hnddlfr3nix71qqglcs0fz2crz"))))
     (build-system gnu-build-system)
     (inputs
      `(("openssl" ,openssl)))
     (arguments
-     `(#:configure-flags (list (string-append "--with-ssl="
-                                              (assoc-ref %build-inputs "openssl")))))
-    (home-page "http://www.fetchmail.info/")
+     `(#:configure-flags
+       (list (string-append "--with-ssl="
+                            (assoc-ref %build-inputs "openssl")))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'create-test-environment
+           (lambda _
+             ;; Fix ‘Cannot find absolute path for user's home directory’.
+             (setenv "HOME" "/tmp")
+             #t)))))
+    (home-page "https://www.fetchmail.info/")
     (synopsis "Remote-mail retrieval and forwarding utility")
     (description
      "Fetchmail is a full-featured, robust, well-documented remote-mail
@@ -351,14 +363,17 @@ aliasing facilities to work just as they would on normal mail.")
 (define-public mutt
   (package
     (name "mutt")
-    (version "1.12.1")
+    (version "1.13.2")
     (source (origin
              (method url-fetch)
-             (uri (string-append "https://bitbucket.org/mutt/mutt/downloads/"
-                                 "mutt-" version ".tar.gz"))
+             (uri (list
+                    (string-append "ftp://ftp.mutt.org/pub/mutt/mutt-"
+                                   version ".tar.gz")
+                    (string-append "https://bitbucket.org/mutt/mutt/downloads/"
+                                   "mutt-" version ".tar.gz")))
              (sha256
               (base32
-               "0311sip2q90aqaxn7h3cck1zl98b4vifqi8bp5fsizy4dr06bi81"))
+               "0x4yfvk8415p80h9an242n6q3b43mw6mnnczh95zd3j0zwdr6wrg"))
              (patches (search-patches "mutt-store-references.patch"))))
     (build-system gnu-build-system)
     (inputs
@@ -390,15 +405,16 @@ operating systems.")
 (define-public neomutt
   (package
     (name "neomutt")
-    (version "20180716")
+    (version "20191102")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/" name "/" name
-                           "/archive/" name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/neomutt/neomutt.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32
-         "0072in2d6znwqq461shsaxlf40r4zr7w3j9848qvm4xlh1lq52dx"))))
+        (base32 "0x5f9zbvxsxg5y2ir4xq4xw1q2snaxkidhdyhcxw5ljw3qqwhlyq"))))
     (build-system gnu-build-system)
     (inputs
      `(("cyrus-sasl" ,cyrus-sasl)
@@ -406,11 +422,11 @@ operating systems.")
        ("gpgme" ,gpgme)
        ("ncurses" ,ncurses)
        ("gnutls" ,gnutls)
-       ("openssl" ,openssl) ;For smime
+       ("openssl" ,openssl)             ; for S/MIME
        ("perl" ,perl)
        ("kyotocabinet" ,kyotocabinet)
        ("libxslt" ,libxslt)
-       ("libidn" ,libidn)
+       ("libidn2" ,libidn2)
        ("libxml2" ,libxml2)
        ("lmdb" ,lmdb)
        ("notmuch" ,notmuch)))
@@ -423,11 +439,11 @@ operating systems.")
        ("w3m" ,w3m)
        ("tcl" ,tcl)))
     (arguments
-     `(#:tests? #f
+     `(#:test-target "test"
        #:configure-flags
        (list "--gpgme"
 
-             ;; database, implies header caching
+             ;; Database, implies header caching.
              "--disable-tokyocabinet"
              "--disable-qdbm"
              "--disable-bdb"
@@ -445,11 +461,12 @@ operating systems.")
 
              "--smime"
              "--notmuch"
-             "--idn"
+             "--disable-idn"
+             "--idn2"
 
              ;; If we do not set this, neomutt wants to check
              ;; whether the path exists, which it does not
-             ;; in the chroot. The workaround is this.
+             ;; in the chroot.
              "--with-mailpath=/var/mail"
 
              "--with-ui=ncurses"
@@ -462,13 +479,6 @@ operating systems.")
        (modify-phases %standard-phases
          ;; TODO: autosetup is meant to be included in the source,
          ;; but we should package autosetup and use our own version of it.
-         (add-before 'configure 'fix-sasl-test
-           (lambda _
-             ;; Upstream suggestion to fix the failing sasl autosetup test.
-             (substitute* "auto.def"
-               (("cc-with \\[list -cflags -I\\$prefix/include -libs")
-                "cc-with [list -includes stddef.h -cflags -I$prefix/include -libs"))
-             #t))
          (replace 'configure
            (lambda* (#:key outputs inputs configure-flags #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
@@ -489,7 +499,7 @@ It adds a large amount of new and improved features to mutt.")
 (define-public gmime
   (package
     (name "gmime")
-    (version "3.2.3")
+    (version "3.2.5")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/gmime/"
@@ -497,7 +507,7 @@ It adds a large amount of new and improved features to mutt.")
                                   "/gmime-" version ".tar.xz"))
               (sha256
                (base32
-                "04bk7rqs5slpvlvqf11i6s37s8b2xn6acls8smyl9asjnpp7a23a"))))
+                "0ndsg1z1kq4w4caascydvialpyn4rfbjdn7xclzbzhw53x85cxgv"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -548,15 +558,14 @@ Extension (MIME).")
 (define-public bogofilter
   (package
     (name "bogofilter")
-    (version "1.2.4")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "mirror://sourceforge/bogofilter/bogofilter-"
-                                  version "/bogofilter-"
-                                  version ".tar.bz2"))
-              (sha256
-               (base32
-                "1d56n2m9inm8gnzm88aa27xl2a7sp7aff3484vmflpqkinjqf0p1"))))
+    (version "1.2.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://sourceforge/bogofilter/bogofilter-stable/"
+                           "bogofilter-" version ".tar.xz"))
+       (sha256
+        (base32 "1sl9xrnnlk2sn8gmibhn8li09vnansjbxb9l1182qmgz7cvs2j1j"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
@@ -569,14 +578,14 @@ Extension (MIME).")
              #t)))))
     (native-inputs `(("flex" ,flex)))
     (inputs `(("bdb" ,bdb)))
-    (home-page "http://bogofilter.sourceforge.net/")
+    (home-page "https://bogofilter.sourceforge.io/")
     (synopsis "Mail classifier based on a Bayesian filter")
     (description
      "Bogofilter is a mail filter that classifies mail as spam or ham
  (non-spam) by a statistical analysis of the message's header and
 content (body).  The program is able to learn from the user's classifications
 and corrections.  It is based on a Bayesian filter.")
-    (license gpl2)))
+    (license gpl3+)))
 
 (define-public offlineimap
   (package
@@ -759,6 +768,63 @@ messages you need; in addition, it allows you to view messages, extract
 attachments, create new maildirs, and so on.")
     (license gpl3+)))
 
+(define mumimu
+  ;; This is a fork of mu for use in Mumi that stores message bug IDs in its
+  ;; database.  It also renames the library to "mumimu" to avoid confusion.
+  (let ((commit "ad30b5e9c85f0465aeeeac461d8c32d95775d450")
+        (revision "1"))
+    (package
+      (inherit mu)
+      (name "mumimu")
+      ;; TODO The version here used to be (package-version guile-email), but
+      ;; that code caused problems
+      (version (git-version "0.2.2" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://git.elephly.net/software/mumimu.git")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "1y8r8csvkyxncgpi469dir4n4sga4z9xdzc18qh5s8bk29qj689n"))))
+      (arguments
+       (substitute-keyword-arguments (package-arguments mu)
+         ((#:tests? anything '())
+          #f)
+         ((#:phases phases)
+          `(modify-phases ,phases
+             (replace 'patch-configure
+               (lambda _
+                 (delete-file "autogen.sh")
+                 (substitute* "configure.ac"
+                   ;; Use latest Guile
+                   (("guile-2.0") "guile-2.2"))
+                 (substitute* '("guile/Makefile.am"
+                                "guile/mu/Makefile.am")
+                   (("share/guile/site/2.0/") "share/guile/site/2.2/"))
+                 #t))
+             (replace 'fix-ffi
+               (lambda* (#:key outputs #:allow-other-keys)
+                 (substitute* "guile/mumimu.scm"
+                   (("\"libguile-mu\"")
+                    (format #f "\"~a/lib/libguile-mumimu\""
+                            (assoc-ref outputs "out"))))
+                 #t))
+             (delete 'install-emacs-autoloads)))
+         ((#:configure-flags flags)
+          '("--disable-gtk"
+            "--disable-webkit"
+            "--disable-mu4e"))))
+      (native-inputs
+       `(("pkg-config" ,pkg-config)
+         ("autoconf" ,autoconf)
+         ("automake" ,automake)
+         ("libtool" ,libtool)
+         ("glib" ,glib "bin")
+         ("tzdata" ,tzdata-for-tests)
+         ("texinfo" ,texinfo))))))
+
 (define-public alot
   (package
     (name "alot")
@@ -847,14 +913,14 @@ invoking @command{notifymuch} from the post-new hook.")
 (define-public notmuch
   (package
     (name "notmuch")
-    (version "0.29.1")
+    (version "0.29.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://notmuchmail.org/releases/notmuch-"
                                   version ".tar.xz"))
               (sha256
                (base32
-                "0rg3rwghd3wivf3bmqcqpkkd5c779ld5hi363zjcw5fl6a7gqilq"))))
+                "0dfwa38vgnxk9cvvpza66szjgp8lir6iz6yy0cry9593lywh9xym"))))
     (build-system gnu-build-system)
     (arguments
      `(#:modules ((guix build gnu-build-system)
@@ -877,8 +943,7 @@ invoking @command{notifymuch} from the post-new hook.")
 
                       (let* ((out (assoc-ref outputs "out"))
                              (elisp
-                              (string-append out "/share/emacs/site-lisp/guix.d/"
-                                             ,name "-" ,version)))
+                              (string-append out "/share/emacs/site-lisp/")))
                         (invoke "./configure"
                                 (string-append "--prefix=" out)
                                 (string-append "--emacslispdir=" elisp)
@@ -996,18 +1061,17 @@ and search library.")
 (define-public getmail
   (package
     (name "getmail")
-    (version "5.6")
+    (version "5.14")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "http://pyropus.ca/software/getmail/old-versions/"
-                           name "-" version ".tar.gz"))
+                           "getmail-" version ".tar.gz"))
        (sha256
-        (base32
-         "16nmvj80szr6yvcxxgmxn2lxqpjqqj4xg5a0b66zhvck6j42q3a6"))))
+        (base32 "1hcrd9h4g12f5gvl1djsbchcjry02ghq4icdr897s8v48pkrzagk"))))
     (build-system python-build-system)
     (arguments
-     `(#:tests? #f ; no tests
+     `(#:tests? #f                      ; no tests
        #:python ,python-2))
     (home-page "http://pyropus.ca/software/getmail/")
     (synopsis "Mail retriever")
@@ -1023,7 +1087,7 @@ useful features.")
 (define-public libetpan
   (package
     (name "libetpan")
-    (version "1.9.3")
+    (version "1.9.4")
     (source (origin
              (method git-fetch)
              (uri (git-reference
@@ -1031,7 +1095,7 @@ useful features.")
                    (commit version)))
              (file-name (git-file-name name version))
              (sha256
-               (base32 "19g4qskg71jv7sxfxsdkjmrxk9mk5kf9b6fhw06g6wvm3205n95f"))))
+              (base32 "0g7an003simfdn7ihg9yjv7hl2czsmjsndjrp39i7cad8icixscn"))))
     (build-system gnu-build-system)
     (native-inputs `(("autoconf" ,autoconf-wrapper)
                      ("automake" ,automake)
@@ -1049,7 +1113,7 @@ useful features.")
     (arguments
       '(#:phases
         (modify-phases %standard-phases
-          (add-after 'unpack 'autogen
+          (replace 'bootstrap
             (lambda _
               (setenv "NOCONFIGURE" "true")
               (invoke "sh" "autogen.sh"))))
@@ -1088,7 +1152,7 @@ compresses it.")
 (define-public claws-mail
   (package
     (name "claws-mail")
-    (version "3.17.3")
+    (version "3.17.4")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1096,7 +1160,7 @@ compresses it.")
                     ".tar.xz"))
               (sha256
                (base32
-                "1wnj6c9cbmhphs2l6wfvndkk2g08rmxw0sl2c8k1k008dxd1ykjh"))))
+                "00mfhaac16sv67rwiq98hr4nl5zmd1h2afswwwksdcsi3q9x23jr"))))
     (build-system gnu-build-system)
     (native-inputs `(("pkg-config" ,pkg-config)))
     (inputs `(("bogofilter" ,bogofilter)
@@ -1119,7 +1183,8 @@ compresses it.")
               ("libxml2" ,libxml2)
               ("perl" ,perl)
               ("python-2" ,python-2)
-              ("mime-info" ,shared-mime-info)))
+              ("mime-info" ,shared-mime-info)
+              ("startup-notification" ,startup-notification)))
     (arguments
       '(#:configure-flags
         '("--enable-gnutls" "--enable-pgpmime-plugin" "--enable-enchant"
@@ -1149,14 +1214,14 @@ which can add many functionalities to the base client.")
 (define-public msmtp
   (package
     (name "msmtp")
-    (version "1.8.5")
+    (version "1.8.7")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://marlam.de/msmtp/releases/"
                            "/msmtp-" version ".tar.xz"))
        (sha256
-        (base32 "0fczpfxlr62wkr7bwhp24clxg962k5khgz14h818qyy4v77dl4qn"))))
+        (base32 "1waiiksa57byb7gvx1zmh6srvl6r8rvwqklk0slb3iaf4kfbqlws"))))
     (build-system gnu-build-system)
     (inputs
      `(("libsecret" ,libsecret)
@@ -1195,7 +1260,7 @@ delivery.")
 (define-public exim
   (package
     (name "exim")
-    (version "4.92")
+    (version "4.92.3")
     (source
      (origin
        (method url-fetch)
@@ -1204,7 +1269,8 @@ delivery.")
                   (string-append "https://ftp.exim.org/pub/exim/exim4/old/exim-"
                                  version ".tar.bz2")))
        (sha256
-        (base32 "127spqn009wa6irp6r1k7a24r8vdwb6mf0raamxn8lbxsnrwy7sl"))))
+        (base32
+         "0d0h0j9pl3yf089sc59ia60m3dqnkb3qh1qaz6vxfg2ja2mnm5i9"))))
     (build-system gnu-build-system)
     (inputs
      `(("bdb" ,bdb-5.3) ; ‘#error Version 6 and later BDB API is not supported’
@@ -1283,7 +1349,7 @@ facilities for checking incoming mail.")
 (define-public dovecot
   (package
     (name "dovecot")
-    (version "2.3.6")
+    (version "2.3.9.2")
     (source
      (origin
        (method url-fetch)
@@ -1291,7 +1357,7 @@ facilities for checking incoming mail.")
                            (version-major+minor version) "/"
                            "dovecot-" version ".tar.gz"))
        (sha256
-        (base32 "1irnalplb47nlc26dn7zzdi95zhrxxi3miza7p3wdsgapv0qs7gd"))))
+        (base32 "1yc6hi4hqg4hcc4495sf4m5f1lnargphi6dawj43if21vncgp127"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -1362,12 +1428,7 @@ It supports mbox/Maildir and its own dbox/mdbox formats.")
      `(#:tests? #f ;No tests exist.
        #:configure-flags (list (string-append "--with-dovecot="
                                               (assoc-ref %build-inputs "dovecot")
-                                              "/lib/dovecot"))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'autogen
-           (lambda _
-             (invoke "sh" "autogen.sh"))))))
+                                              "/lib/dovecot"))))
     (home-page "https://0xacab.org/riseuplabs/trees")
     (synopsis "NaCL-based Dovecot email storage encryption plugin")
     (description
@@ -1418,12 +1479,7 @@ using libsodium sealed boxes.
        `(#:tests? #f ;No tests exist.
          #:configure-flags (list (string-append "--with-dovecot="
                                                 (assoc-ref %build-inputs "dovecot")
-                                                "/lib/dovecot"))
-         #:phases
-         (modify-phases %standard-phases
-           (add-after 'unpack 'autogen
-             (lambda _
-               (invoke "sh" "autogen.sh"))))))
+                                                "/lib/dovecot"))))
       (home-page "https://github.com/LuckyFellow/dovecot-libsodium-plugin")
       (synopsis "Libsodium password hashing schemes plugin for Dovecot")
       (description
@@ -1448,7 +1504,7 @@ hashing schemes plugin for @code{Dovecot}.")
     (inputs
      `(("bdb" ,bdb)
        ("cyrus-sasl" ,cyrus-sasl)
-       ("openssl" ,openssl)
+       ("openssl" ,openssl-1.0)
        ("zlib" ,zlib)))
     (home-page "http://isync.sourceforge.net/")
     (synopsis "Mailbox synchronization program")
@@ -1632,15 +1688,14 @@ header.")
 (define-public perl-email-sender
   (package
     (name "perl-email-sender")
-    (version "1.300031")
+    (version "1.300034")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/R/RJ/RJBS/"
                            "Email-Sender-" version ".tar.gz"))
        (sha256
-        (base32
-         "052g0slw3h2lzn93j71fi47nfawww2aph4jhr3c860ji70lkf4n4"))))
+        (base32 "14aj9kqa9dr2bdhzn2qvjj2mffj8wjb5397z8qw7qg057fk3ib05"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-capture-tiny" ,perl-capture-tiny)))
@@ -1829,13 +1884,13 @@ maintained.")
 (define-public khard
   (package
     (name "khard")
-    (version "0.13.0")
+    (version "0.15.1")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri name version))
               (sha256
                (base32
-                "1lyjiskc6ckjjylzr04dnm66p3cnn7vlysw9c27qls3y3ywx14zw"))))
+                "18ba2xgfq8sw0bg6xmlfjpizid1hkzgswcfcc54gl21y2dwfda2w"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -1846,6 +1901,8 @@ maintained.")
                     (doc (string-append out "/share/doc/khard")))
                (copy-recursively "misc/khard" doc)
                #t))))))
+    (native-inputs
+     `(("python-setuptools-scm" ,python-setuptools-scm)))
     (propagated-inputs
      `(("python-atomicwrites" ,python-atomicwrites)
        ("python-configobj" ,python-configobj)
@@ -1900,6 +1957,136 @@ Khard can also be used from within the email client @command{mutt}.")
 in Perl.")
     (license bsd-3)))
 
+(define-public perl-mail-authenticationresults
+  (package
+    (name "perl-mail-authenticationresults")
+    (version "1.20180923")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                     "mirror://cpan/authors/id/M/MB/MBRADSHAW/"
+                     "Mail-AuthenticationResults-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1g1wym9vcbhldwvi4w5pl0fhd4jh2icj975awf4wr5xmkli9mxbz"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-test-exception" ,perl-test-exception)))
+    (home-page "https://metacpan.org/release/Mail-AuthenticationResults")
+    (synopsis "Object Oriented Authentication-Results Headers")
+    (description "Mail::AuthenticationResults parses the message header field
+that indicates the message authentication status as per RFC7601.  This module
+is not fully compliant with the RFC but it tries to implement most styles of
+Authentication-Results header seen in the wild.")
+    (license perl-license)))
+
+(define-public perl-mail-dkim
+  (package
+    (name "perl-mail-dkim")
+    (version "0.58")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                     "mirror://cpan/authors/id/M/MB/MBRADSHAW/Mail-DKIM-"
+                     version
+                     ".tar.gz"))
+              (sha256
+               (base32
+                "0cgkal65qqcy57b21lgij90ba36wl66byw9i76g5yhwaa8ms8hqa"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-crypt-openssl-rsa" ,perl-crypt-openssl-rsa)
+       ("perl-mail-authenticationresults" ,perl-mail-authenticationresults)
+       ("perl-mailtools" ,perl-mailtools)
+       ("perl-net-dns" ,perl-net-dns)))
+    (native-inputs
+     `(("perl-net-dns-resolver-mock" ,perl-net-dns-resolver-mock)
+       ("perl-test-requiresinternet" ,perl-test-requiresinternet)
+       ("perl-yaml-libyaml" ,perl-yaml-libyaml)))
+    (home-page "https://metacpan.org/release/Mail-DKIM")
+    (synopsis "Signs/verifies Internet mail with DKIM/DomainKey signatures")
+    (description "Mail::DKIM is a Perl module that implements the new Domain
+Keys Identified Mail (DKIM) standard, and the older Yahoo! DomainKeys standard,
+both of which sign and verify emails using digital signatures and DNS records.
+Mail-DKIM can be used by any Perl program that wants to provide support for
+DKIM and/or DomainKeys.")
+    (license gpl3+)))
+
+(define-public dkimproxy
+  (package
+    (name "dkimproxy")
+    (version "1.4.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                     "mirror://sourceforge/dkimproxy/dkimproxy/"
+                     version "/dkimproxy-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1gc5c7lg2qrlck7b0lvjfqr824ch6jkrzkpsn0gjvlzg7hfmld75"))
+              (patches
+               (search-patches "dkimproxy-add-ipv6-support.patch"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'make-wrapper
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (wrap.pl (lambda (scripts keys)
+                               (for-each
+                                (lambda (script)
+                                  (wrap-program (string-append out script)
+                                    `("PERL5LIB" ":" prefix
+                                      ,(map (λ (input)
+                                              (string-append
+                                               (assoc-ref inputs input)
+                                               "/lib/perl5/site_perl"))
+                                            keys))))
+                                scripts))))
+               (wrap.pl (list "/bin/dkimproxy.in"
+                              "/bin/dkimproxy.out")
+                        (list "perl-crypt-openssl-rsa"
+                              "perl-io-socket-inet6"
+                              "perl-mailtools"
+                              "perl-mail-authenticationresults"
+                              "perl-mail-dkim"
+                              "perl-net-dns"
+                              "perl-net-server"
+                              "perl-socket6"))
+               (wrap.pl (list "/bin/dkim_responder.pl")
+                        (list "perl-crypt-openssl-rsa"
+                              "perl-mail-dkim"
+                              "perl-mailtools"
+                              "perl-mime-tools"
+                              "perl-net-dns"
+                              "perl-timedate"))
+               #t))))))
+    (inputs
+     `(("perl" ,perl)
+       ("perl-crypt-openssl-rsa" ,perl-crypt-openssl-rsa)
+       ("perl-io-socket-inet6" ,perl-io-socket-inet6)
+       ("perl-mailtools" ,perl-mailtools)
+       ("perl-mail-authenticationresults" ,perl-mail-authenticationresults)
+       ("perl-mail-dkim" ,perl-mail-dkim)
+       ("perl-mime-tools" ,perl-mime-tools)
+       ("perl-net-dns" ,perl-net-dns)
+       ("perl-net-server" ,perl-net-server)
+       ("perl-socket6" ,perl-socket6)
+       ("perl-timedate" ,perl-timedate)))
+    (home-page "http://dkimproxy.sourceforge.net/")
+    (synopsis "SMTP proxy to sign and verify Internet mail with DKIM headers")
+    (description
+     "DKIMproxy is an SMTP proxy that signs and verifies Internet mail using the
+@code{Mail::DKIM} Perl module.  It comprises two separate proxies: an outbound
+proxy for signing outgoing email, and an inbound proxy for verifying signatures
+of incoming messages.
+
+It was designed for Postfix, but can be used to add DKIM support to nearly any
+existing mail server.  With Postfix, the proxies can operate as either
+@code{Before-Queue} or @code{After-Queue} content filters.")
+    (license gpl2+)))
+
 (define-public mb2md
   (package
     (name "mb2md")
@@ -1948,14 +2135,14 @@ converts them to maildir format directories.")
 (define-public mpop
   (package
     (name "mpop")
-    (version "1.4.5")
+    (version "1.4.6")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://marlam.de/mpop/releases/"
                            "mpop-" version ".tar.xz"))
        (sha256
-        (base32 "1m6743j8g777lijvxqw2wz6pv2g5a9wlh6zq7awk0hvd44xp4sav"))))
+        (base32 "0q4ifzvl1gcndvqqqk7n9mc599r4s2knxjc7alflwb366fql58gv"))))
     (build-system gnu-build-system)
     (inputs
      `(("gnutls" ,gnutls)
@@ -2147,20 +2334,22 @@ e-mails with other systems speaking the SMTP protocol.")
 (define-public opensmtpd-next
   (package
     (name "opensmtpd-next")
-    (version "6.4.1p2")
+    (version "6.6.1p1")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://www.opensmtpd.org/archives/"
                            "opensmtpd-" version ".tar.gz"))
        (sha256
-        (base32 "0cppqlx4fk6l8rbim5symh2fm1kzshf421256g596j6c9f9q96xn"))))
+        (base32 "1ngil8j13m2rq07g94j4yjr6zmaimzy8wbfr17shi7rxnazys6zb"))))
     (build-system gnu-build-system)
     (inputs
      `(("bdb" ,bdb)
        ("libasr" ,libasr)
        ("libevent" ,libevent)
-       ("libressl" ,libressl)
+       ;; XXX Upstream recommends LibreSSL, which doesn't support TLS 1.3 yet,
+       ;; and requires a development release (3.0.2).  Use OpenSSL instead.
+       ("openssl" ,openssl)
        ("linux-pam" ,linux-pam)
        ("zlib" ,zlib)))
     (native-inputs
@@ -2673,15 +2862,14 @@ killed threads.")
 (define-public pan
   (package
     (name "pan")
-    (version "0.145")
+    (version "0.146")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "http://pan.rebelbase.com/download/releases/"
                            version "/source/" name "-" version ".tar.bz2"))
        (sha256
-        (base32
-         "1b4wamv33hprghcjk903bpvnd233yxyrm18qnh13alc8h1553nk8"))))
+        (base32 "17agd27sn4a7nahvkpg0w39kv74njgdrrygs74bbvpaj8rk2hb55"))))
     (arguments
      `(#:configure-flags '("--with-gtk3" "--with-gtkspell" "--with-gnutls"
                            "--enable-libnotify" "--enable-manual"
@@ -2721,7 +2909,7 @@ PGP handling, multiple servers, and secure connections.")
 (define-public imapfilter
   (package
     (name "imapfilter")
-    (version "2.6.12")
+    (version "2.6.16")
     (source
      (origin
        (method git-fetch)
@@ -2730,7 +2918,7 @@ PGP handling, multiple servers, and secure connections.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0vzpc54fjf5vb5vx5w0fl20xvx1k9cg6a3hbl86mm8kwsqf3wrab"))))
+        (base32 "0f65sg6hhv6778fxwsz4hvarbm97dsb8jj0mg7a9qs273r35pqck"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f
@@ -2739,15 +2927,7 @@ PGP handling, multiple servers, and secure connections.")
              "CC=gcc")
        #:phases
        (modify-phases %standard-phases
-         (delete 'configure)
-         (add-after 'unpack 'fix-include-path
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((pcre (assoc-ref inputs "pcre")))
-               (substitute* "src/Makefile"
-                 (("INCDIRS =")
-                  (string-append "INCDIRS ="
-                                 "-I" pcre "/include")))
-               #t))))))
+         (delete 'configure))))         ; no configure script
     (native-inputs
      `(("lua" ,lua)
        ("pcre" ,pcre)
@@ -2764,14 +2944,13 @@ servers.  The 4rev1 and 4 versions of IMAP are supported.")
 (define-public urlscan
   (package
     (name "urlscan")
-    (version "0.9.2")
+    (version "0.9.4")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "urlscan" version))
         (sha256
-         (base32
-          "1zldck7vnp7z04aacbx3cprf5kzha4gfhjmss4iv2lh5nccxjfzx"))))
+         (base32 "1q0vxv9haap01vz1cbkzss62cgwb9365lv5vnkg2gbpx4g5y7a9l"))))
     (build-system python-build-system)
     (propagated-inputs
      `(("python-urwid" ,python-urwid)))
@@ -2790,7 +2969,7 @@ replacement for the @code{urlview} program.")
 (define-public tnef
   (package
     (name "tnef")
-    (version "1.4.17")
+    (version "1.4.18")
     (source
      (origin
        (method git-fetch)
@@ -2798,8 +2977,7 @@ replacement for the @code{urlview} program.")
              (url "https://github.com/verdammelt/tnef.git")
              (commit version)))
        (sha256
-        (base32
-         "0cq2xh5wd74qn6k2nnw5rayxgqhjl3jbzf4zlc4babcwxrv32ldh"))
+        (base32 "104g48mcm00bgiyzas2vf86331w7bnw7h3bc11ib4lp7rz6zqfck"))
        (file-name (git-file-name name version))))
     (build-system gnu-build-system)
     (native-inputs
@@ -2814,8 +2992,8 @@ replacement for the @code{urlview} program.")
     (license gpl2+)))
 
 (define-public mumi
-  (let ((commit "ea0a28f8d5db5761765eb60043b8593901552e25")
-        (revision "4"))
+  (let ((commit "8a57c87797ffb07baa88697130204184db643521")
+        (revision "5"))
     (package
       (name "mumi")
       (version (git-version "0.0.0" revision commit))
@@ -2827,17 +3005,50 @@ replacement for the @code{urlview} program.")
                 (file-name (git-file-name name version))
                 (sha256
                  (base32
-                  "0b6dmi41vhssyf983blgi8a2kj3zjccc9cz7b7kvwh781ldqcywh"))))
+                  "1575gn5p086sjxz5hvg6iyskq6cxf6vf50s9nsc4xgrbcqa3pv2c"))
+                (modules '((guix build utils)))
+                (snippet
+                 '(begin
+                    (substitute* "Makefile.am"
+                      ;; Install .go files to $prefix/lib instead of
+                      ;; $prefix/share.
+                      (("^godir[[:space:]]*=.*")
+                       "godir = \
+$(libdir)/guile/@GUILE_EFFECTIVE_VERSION@/site-ccache\n")
+
+                      ;; Install assets.
+                      (("^assetsdir.*" _)
+                       "\
+assetsdir    = $(pkgdatadir)/assets
+assetscssdir = $(assetsdir)/css
+assetsimgdir = $(assetsdir)/img
+assetsjsdir  = $(assetsdir)/js
+
+assetscss_DATA = $(wildcard assets/css/*)
+assetsimg_DATA = $(wildcard assets/img/*)
+assetsjs_DATA  = $(wildcard assets/js/*)\n"))
+                    #t))))
       (build-system gnu-build-system)
       (arguments
-       `(#:phases
+       `(#:modules ((guix build gnu-build-system)
+                    ((guix build guile-build-system)
+                     #:select (target-guile-effective-version))
+                    (guix build utils))
+         #:imported-modules ((guix build guile-build-system)
+                             ,@%gnu-build-system-modules)
+
+         #:configure-flags '("--localstatedir=/var")
+
+         #: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")))
+                      (version (target-guile-effective-version))
+                      (scm (string-append out "/share/guile/site/" version))
+                      (go  (string-append out "/lib/guile/" version
+                                          "/site-ccache")))
                  (wrap-program (string-append bin "/mumi")
                    `("GUILE_LOAD_PATH" ":" prefix
                      (,scm ,(getenv "GUILE_LOAD_PATH")))
@@ -2850,7 +3061,9 @@ replacement for the @code{urlview} program.")
          ("guile-fibers" ,guile-fibers)
          ("guile-json" ,guile-json-1)
          ("guile-syntax-highlight" ,guile-syntax-highlight)
-         ("guile" ,guile-2.2)))
+         ("gnutls" ,gnutls)         ;needed to talk to https://debbugs.gnu.org
+         ("guile" ,guile-2.2)
+         ("mumimu" ,mumimu)))   ;'mumimu' executable recorded in (mumi config)
       (native-inputs
        `(("autoconf" ,autoconf)
          ("automake" ,automake)