gnu: exim: Use HTTPS for home page.
[jackhill/guix/guix.git] / gnu / packages / mail.scm
index dd33130..c18b922 100644 (file)
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014, 2015, 2017 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net>
 ;;; Copyright © 2014 Sou Bunnbu <iyzsong@gmail.com>
@@ -14,8 +14,8 @@
 ;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
 ;;; Copyright © 2016 Alex Kost <alezost@gmail.com>
-;;; Copyright © 2016 Troy Sankey <sankeytms@gmail.com>
-;;; Copyright © 2016, 2017 ng0 <contact.ng0@cryptolab.net>
+;;; Copyright © 2016, 2017 Troy Sankey <sankeytms@gmail.com>
+;;; Copyright © 2016, 2017 ng0 <ng0@infotropique.org>
 ;;; Copyright © 2016 Clément Lassieur <clement@lassieur.org>
 ;;; Copyright © 2016, 2017 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2016 John Darrington <jmd@gnu.org>
@@ -23,6 +23,7 @@
 ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
 ;;; Copyright © 2017 Kyle Meyer <kyle@kyleam.com>
 ;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017 Rene Saavedra <rennes@openmailbox.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -47,6 +48,7 @@
   #:use-module (gnu packages backup)
   #:use-module (gnu packages bash)
   #:use-module (gnu packages bison)
+  #:use-module (gnu packages calendar)
   #:use-module (gnu packages crypto)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages cyrus-sasl)
@@ -58,6 +60,7 @@
   #:use-module (gnu packages emacs)
   #:use-module (gnu packages enchant)
   #:use-module (gnu packages ghostscript)
+  #:use-module (gnu packages gettext)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages gnupg)
@@ -78,6 +81,7 @@
   #:use-module (gnu packages pcre)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages python-web)
   #:use-module (gnu packages readline)
   #:use-module (gnu packages search)
   #:use-module (gnu packages texinfo)
@@ -94,6 +98,7 @@
   #:use-module (gnu packages tls)
   #:use-module (gnu packages networking)
   #:use-module (gnu packages web)
+  #:use-module (gnu packages webkit)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg)
   #:use-module (gnu packages docbook)
                 #:select (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))
+                           bsd-2 x11-style agpl3 asl2.0 perl-license))
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix git-download)
 (define-public mailutils
   (package
     (name "mailutils")
-    (version "3.2")
+    (version "3.4")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnu/mailutils/mailutils-"
                                  version ".tar.bz2"))
              (sha256
               (base32
-               "0c06yj5hgqibi24ib9sx865kq6i1h18wn201g6iwcfbpi2a7psdm"))))
+               "1dn71p85wlyisnwsb485sk3q5v393k3dizsa9fmimskdwjwgk3ch"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
        (modify-phases %standard-phases
-         (add-before 'build 'pre-build
+         (add-before 'check 'prepare-test-suite
            (lambda _
              ;; Use the right file name for `cat'.
              (substitute* "testsuite/lib/mailutils.exp"
                (("\\$\\(SHELL\\) \\$\\(TESTSUITE\\)" all)
                 (string-append "-" all)))
 
+             ;; 'frm' tests expect write access to $HOME.
+             (setenv "HOME" (getcwd))
+
+             ;; Avoid the message "I'm going to create the standard MH path
+             ;; for you", which would lead to one test failure (when diffing
+             ;; stdout of 'fmtcheck'.)
+             (call-with-output-file ".mh_profile"
+               (lambda (port)
+                 (format port "Path: ~a/Mail-for-tests~%"
+                         (getcwd))))
+
              #t)))
        ;; TODO: Add `--with-sql'.
        #:configure-flags '("--sysconfdir=/etc")
@@ -222,14 +238,14 @@ aliasing facilities to work just as they would on normal mail.")
 (define-public mutt
   (package
     (name "mutt")
-    (version "1.8.1")
+    (version "1.9.1")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://bitbucket.org/mutt/mutt/downloads/"
                                  "mutt-" version ".tar.gz"))
              (sha256
               (base32
-               "1b8dggq5x1b77a9i9250b3jhv2iddfzhr9rix1yfzckdms65mr8b"))
+               "1c8vv4anl555a03pbnwf8wnf0d8pcnd4p35y3q8f5ikkcflq76vl"))
              (patches (search-patches "mutt-store-references.patch"))))
     (build-system gnu-build-system)
     (inputs
@@ -260,18 +276,17 @@ operating systems.")
 
 (define-public neomutt
   (package
-    (inherit mutt)
     (name "neomutt")
-    (version "20170306")
+    (version "20171027")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://github.com/" name "/" name
                            "/archive/" name "-" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "0qwcbjm9j1hgzmybw15w53pvfbqcdf47d4sw21s6r2yaj8kx1hag"))))
+         "10z523cy3s6syh0mwpsncl87wrvyzsk99y7nzicwvx6y3hmdw01d"))))
+    (build-system gnu-build-system)
     (inputs
      `(("cyrus-sasl" ,cyrus-sasl)
        ("gdbm" ,gdbm)
@@ -290,13 +305,11 @@ operating systems.")
     (native-inputs
      `(("autoconf" ,autoconf)
        ("automake" ,automake)
+       ("gettext-minimal" ,gettext-minimal)
        ("pkg-config" ,pkg-config)))
     (arguments
      `(#:configure-flags
-       (list "--enable-smtp"
-             "--enable-imap"
-             "--enable-pop"
-             "--enable-gpgme"
+       (list "--enable-gpgme"
 
              ;; database, implies header caching
              "--without-tokyocabinet"
@@ -311,7 +324,6 @@ operating systems.")
              "--without-ssl"
              "--with-sasl"
 
-             "--with-regex"
              "--enable-smime"
              "--enable-notmuch"
              "--with-idn"
@@ -321,10 +333,6 @@ operating systems.")
              ;; in the chroot. The workaround is this.
              "--with-mailpath=/var/mail"
 
-             "--with-external-dotlock"
-             "--enable-nntp"
-             "--enable-compressed"
-
              (string-append "--with-curses="
                             (assoc-ref %build-inputs "ncurses")))
        #:phases
@@ -336,8 +344,8 @@ operating systems.")
     (synopsis "Command-line mail reader based on Mutt")
     (description
      "NeoMutt is a command-line mail reader which is based on mutt.
-It adds a large amount of features to mutt, and they all find their way
-into mutt, so it is not a fork but a large set of feature patches.")))
+It adds a large amount of new and improved features to mutt.")
+    (license gpl2+)))
 
 (define-public gmime
   (package
@@ -419,7 +427,7 @@ and corrections.  It is based on a Bayesian filter.")
 (define-public offlineimap
   (package
     (name "offlineimap")
-    (version "7.1.0")
+    (version "7.1.4")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/OfflineIMAP/offlineimap/"
@@ -427,7 +435,7 @@ and corrections.  It is based on a Bayesian filter.")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "1r0sbgwyirpbks82ri9g88raf3mp8shq9rg0r92gkr7h6888v6fw"))))
+                "0m34iks3l9p6shqkgfhfpiccglm6gk5nj98x20pvahl58nclmzn6"))))
     (build-system python-build-system)
     (native-inputs
      `(("asciidoc" ,asciidoc)))
@@ -539,7 +547,7 @@ security functionality including PGP, S/MIME, SSH, and SSL.")
     ;; TODO: Add webkit and gtk to build the mug GUI.
     (inputs
      `(("xapian" ,xapian)
-       ("guile" ,guile-2.0)
+       ("guile" ,guile-2.2)
        ("glib" ,glib)
        ("gmime" ,gmime)
        ("tzdata" ,tzdata)))             ;for mu/test/test-mu-query.c
@@ -558,7 +566,19 @@ security functionality including PGP, S/MIME, SSH, and SSL.")
            ;; the lispdir anyway, so we have to modify "configure.ac".
            (lambda _
              (substitute* "configure"
-               (("^ +lispdir=\"\\$\\{lispdir\\}/mu4e/\".*") ""))
+               (("^ +lispdir=\"\\$\\{lispdir\\}/mu4e/\".*") "")
+               ;; Use latest Guile
+               (("guile-2.0") "guile-2.2"))
+             (substitute* '("guile/Makefile.in"
+                            "guile/mu/Makefile.in")
+               (("share/guile/site/2.0/") "share/guile/site/2.2/"))
+             #t))
+         (add-before 'install 'fix-ffi
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* "guile/mu.scm"
+               (("\"libguile-mu\"")
+                (format #f "\"~a/lib/libguile-mu\""
+                        (assoc-ref outputs "out"))))
              #t))
          (add-before 'check 'check-tz-setup
            (lambda* (#:key inputs #:allow-other-keys)
@@ -586,7 +606,7 @@ attachments, create new maildirs, and so on.")
 (define-public alot
   (package
     (name "alot")
-    (version "0.4")
+    (version "0.5.1")
     (source (origin
               (method url-fetch)
               ;; package author intends on distributing via github rather
@@ -597,13 +617,14 @@ attachments, create new maildirs, and so on.")
               (file-name (string-append "alot-" version ".tar.gz"))
               (sha256
                (base32
-                "0sl1kl2fhkv208llnbny4blcvrfdk4vx6bcw5pnyh9ylwb0pipi2"))))
+                "0wax30hjzmkqfml7hig1dqw1v1y63yc0cgbzl96x58b9h2ggqx3a"))))
     (build-system python-build-system)
     (arguments
-     `(#:tests? #f ; no tests
-       ;; python 3 is currently unsupported, more info:
+     `(;; python 3 is currently unsupported, more info:
        ;; https://github.com/pazz/alot/blob/master/docs/source/faq.rst
        #:python ,python-2))
+    (native-inputs
+     `(("python2-mock" ,python2-mock)))
     (inputs
      `(("python2-magic" ,python2-magic)
        ("python2-configobj" ,python2-configobj)
@@ -670,14 +691,14 @@ invoking @command{notifymuch} from the post-new hook.")
 (define-public notmuch
   (package
     (name "notmuch")
-    (version "0.24.1")
+    (version "0.25.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://notmuchmail.org/releases/notmuch-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "18rw0rim6zxhnr2nggial029x4raaxqcgf9klfbdhv89qvi7s4gs"))))
+                "0ai6vbs9wzwfz7jcphgqsqpcbq137l34xhmcli4h5c8n82fvmdp4"))))
     (build-system gnu-build-system)
     (arguments
      '(#:make-flags (list "V=1") ; Verbose test output.
@@ -730,45 +751,51 @@ ing, and tagging large collections of email messages.")
     (license gpl3+)))
 
 (define-public notmuch-addrlookup-c
-  (package
-    (name "notmuch-addrlookup-c")
-    (version "7")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/aperezdc/" name "/archive/v"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "0rslg2ifgyhl6asv3yr1f62m9xjfcinv7i6qb07h2k217jqlmrri"))))
-    (build-system gnu-build-system)
-    (arguments
-     '(#:tests? #f ; no tests
-       #:make-flags (list "CC=gcc"
-                          (string-append "PREFIX="
-                                         (assoc-ref %outputs "out")))
-       #:phases (modify-phases %standard-phases
-                  (delete 'configure)
-                  ;; Remove vim code completion config, it's not needed to
-                  ;; build (or be patched).
-                  (add-before 'patch-source-shebangs 'delete-ycm-file
-                              (lambda _ (delete-file ".ycm_extra_conf.py")))
-                  (replace 'install
-                           (lambda* (#:key outputs #:allow-other-keys)
-                             (let ((bin (string-append
-                                         (assoc-ref outputs "out") "/bin")))
-                               (install-file "notmuch-addrlookup" bin)))))))
-    (native-inputs
-     `(("pkg-config" ,pkg-config)))
-    (inputs
-     `(("glib" ,glib)
-       ("notmuch" ,notmuch)))
-    (home-page "https://github.com/aperezdc/notmuch-addrlookup-c")
-    (synopsis "Address lookup tool for Notmuch")
-    (description "This is an address lookup tool using a Notmuch database,
+  ;; This commit includes a compatibility fix for notmuch-0.25, and is not
+  ;; currently part of any release.  Please update this package when
+  ;; notmuch-addrlookup-c-9 is released.
+  (let ((commit "88f156d04990a71c6ad6fc2757b537b44e3c4d00")
+        (revision "1"))          ;Guix package revision
+    (package
+      (name "notmuch-addrlookup-c")
+      (version (string-append "8-" revision "."
+                              (string-take commit 7)))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/aperezdc/notmuch-addrlookup-c.git")
+                      (commit commit)))
+                (file-name (string-append name "-" version "-checkout"))
+                (sha256
+                 (base32
+                  "0v0wzs7qzy4n1hbql8s10qrwgalcxdzbxf8pj6cii1pv2jwmkxbm"))))
+      (build-system gnu-build-system)
+      (arguments
+       '(#:tests? #f ; no tests
+         #:make-flags (list "CC=gcc"
+                            (string-append "PREFIX="
+                                           (assoc-ref %outputs "out")))
+         #:phases (modify-phases %standard-phases
+                    (delete 'configure)
+                    ;; Remove vim code completion config, it's not needed to
+                    ;; build (or be patched).
+                    (add-before 'patch-source-shebangs 'delete-ycm-file
+                                (lambda _ (delete-file ".ycm_extra_conf.py")))
+                    (replace 'install
+                             (lambda* (#:key outputs #:allow-other-keys)
+                               (let ((bin (string-append
+                                           (assoc-ref outputs "out") "/bin")))
+                                 (install-file "notmuch-addrlookup" bin)))))))
+      (native-inputs
+       `(("pkg-config" ,pkg-config)))
+      (inputs
+       `(("glib" ,glib)
+         ("notmuch" ,notmuch)))
+      (home-page "https://github.com/aperezdc/notmuch-addrlookup-c")
+      (synopsis "Address lookup tool for Notmuch")
+      (description "This is an address lookup tool using a Notmuch database,
 useful for email address completion.")
-    (license license:expat)))
+      (license license:expat))))
 
 (define-public python-notmuch
   (package
@@ -808,7 +835,7 @@ and search library.")
 (define-public getmail
   (package
     (name "getmail")
-    (version "4.52.0")
+    (version "5.4")
     (source
      (origin
        (method url-fetch)
@@ -816,7 +843,7 @@ and search library.")
                            name "-" version ".tar.gz"))
        (sha256
         (base32
-         "0pzplrlxwbxydvfw4kkwn60l40hk1h5sxawaa6pi0k75c220k4ni"))))
+         "1iwss9z94p165gxr2yw7s9q12a0bn71fcdbikzkykr5s7xxnz2ds"))))
     (build-system python-build-system)
     (arguments
      `(#:tests? #f ; no tests
@@ -835,14 +862,14 @@ useful features.")
 (define-public libetpan
   (package
     (name "libetpan")
-    (version "1.7.2")
+    (version "1.8")
     (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"))
              (sha256
-               (base32 "081ixgj3skglq9i7v0jb835lmfx21zi4i5b7997igwr0lj174y9j"))))
+               (base32 "1sxnaglp5hb0z78sgnfzva4x8m4flqhicvm1dz0krkxdmfsafrsf"))))
     (build-system gnu-build-system)
     (native-inputs `(("autoconf" ,(autoconf-wrapper))
                      ("automake" ,automake)
@@ -873,7 +900,7 @@ useful features.")
 framework for different kinds of mail access: IMAP, SMTP, POP and NNTP.  It
 provides an API for C language.  It's the low-level API used by MailCore and
 MailCore 2.")
-    (license (non-copyleft "file://COPYING"))))
+    (license bsd-3)))
 
 (define-public compface
   (package
@@ -899,7 +926,7 @@ compresses it.")
 (define-public claws-mail
   (package
     (name "claws-mail")
-    (version "3.15.0")
+    (version "3.15.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -907,7 +934,7 @@ compresses it.")
                     ".tar.xz"))
               (sha256
                (base32
-                "0bnwd3l04y6j1nw3h861rdy6k6lyjzsi51j04d33vbpq8c6jskaf"))))
+                "0hlm2jipyr4z6izlrpvabpz4ivh49i13avnm848kr1nv68pkq2cd"))))
     (build-system gnu-build-system)
     (native-inputs `(("pkg-config" ,pkg-config)))
     (inputs `(("bogofilter" ,bogofilter)
@@ -924,6 +951,7 @@ compresses it.")
               ("libarchive" ,libarchive)
               ("libcanberra" ,libcanberra)
               ("libetpan" ,libetpan)
+              ("libical" ,libical)
               ("libnotify" ,libnotify)
               ("libsm" ,libsm)
               ("libxml2" ,libxml2)
@@ -933,6 +961,11 @@ compresses it.")
     (arguments
       '(#:configure-flags
         '("--enable-gnutls" "--enable-pgpmime-plugin" "--enable-enchant")
+        #:make-flags
+        ;; Disable updating icon cache since it's done by the profile hook.
+        ;; Conflict with other packages in the profile would be inevitable
+        ;; otherwise.
+        '("gtk_update_icon_cache=true")
         #:phases (modify-phases %standard-phases
                    (add-before 'build 'patch-mime
                      (lambda* (#:key inputs #:allow-other-keys)
@@ -999,7 +1032,7 @@ delivery.")
 (define-public exim
   (package
     (name "exim")
-    (version "4.87.1")
+    (version "4.89")
     (source
      (origin
        (method url-fetch)
@@ -1007,9 +1040,10 @@ delivery.")
                                  version ".tar.bz2")
                   (string-append "ftp://ftp.exim.org/pub/exim/exim4/old/exim-"
                                  version ".tar.bz2")))
+       (patches (search-patches "exim-CVE-2017-1000369.patch"))
        (sha256
         (base32
-         "050m2gjzpc6vyik458h1j0vi8bxplkzjsyndkyd2y394i569kdyl"))))
+         "1c0syp7yxngmq7y8vqsrvijinzin5m941vn0ljihdfld7kh2wbwi"))))
     (build-system gnu-build-system)
     (inputs
      `(("bdb" ,bdb)
@@ -1025,55 +1059,55 @@ delivery.")
        ("perl" ,perl)))
     (arguments
      '(#:phases
-       (alist-replace
-        'configure
-        ;; We'd use #:make-flags but the top-level Makefile calls others
-        ;; recursively, so just set all variables this way.
-        (lambda* (#:key outputs inputs #:allow-other-keys)
-          (substitute* '("Makefile" "OS/Makefile-Default")
-            (("(RM_COMMAND=).*" all var)
-             (string-append var "rm\n")))
-          (copy-file "src/EDITME" "Local/Makefile")
-          (copy-file "exim_monitor/EDITME" "Local/eximon.conf")
-          (let ((out (assoc-ref outputs "out"))
-                (gzip (assoc-ref inputs "gzip"))
-                (bzip2 (assoc-ref inputs "bzip2"))
-                (xz (assoc-ref inputs "xz")))
-            (substitute* '("Local/Makefile")
-              (("(BIN_DIRECTORY=).*" all var)
-               (string-append var out "/bin\n"))
-              (("(CONFIGURE_FILE=).*" all var)
-               (string-append var out "/etc/exim.conf\n"))
-              (("(EXIM_USER=).*" all var)
-               (string-append var "nobody\n"))
-              (("(FIXED_NEVER_USERS=).*" all var)
-               (string-append var "\n"))  ;XXX no root in build environment
-              (("(COMPRESS_COMMAND=).*" all var)
-               (string-append var gzip "/bin/gzip\n"))
-              (("(ZCAT_COMMAND=).*" all var)
-               (string-append var gzip "/bin/zcat\n")))
-            ;; This file has hardcoded names for tools despite the zcat
-            ;; configuration above.
-            (substitute* '("src/exigrep.src")
-              (("'zcat'") (string-append "'" gzip "/bin/zcat'"))
-              (("'bzcat'") (string-append "'" bzip2 "/bin/bzcat'"))
-              (("'xzcat'") (string-append "'" xz "/bin/xzcat'"))
-              (("'lzma'") (string-append "'" xz "/bin/lzma'")))))
-        (alist-cons-before
-         'build 'fix-sh-paths
-         (lambda* (#:key inputs #:allow-other-keys)
-           (substitute* '("scripts/lookups-Makefile" "scripts/reversion")
-             (("SHELL=/bin/sh") "SHELL=sh"))
-           (substitute* '("scripts/Configure-config.h")
-             (("\\| /bin/sh") "| sh"))
-           (let ((bash (assoc-ref inputs "bash")))
-             (substitute* '("scripts/Configure-eximon")
-               (("#!/bin/sh") (string-append "#!" bash "/bin/sh")))))
-         %standard-phases))
+       (modify-phases %standard-phases
+         (replace 'configure
+           ;; We'd use #:make-flags but the top-level Makefile calls others
+           ;; recursively, so just set all variables this way.
+           (lambda* (#:key outputs inputs #:allow-other-keys)
+             (substitute* '("Makefile" "OS/Makefile-Default")
+               (("(RM_COMMAND=).*" all var)
+                (string-append var "rm\n")))
+             (copy-file "src/EDITME" "Local/Makefile")
+             (copy-file "exim_monitor/EDITME" "Local/eximon.conf")
+             (let ((out (assoc-ref outputs "out"))
+                   (gzip (assoc-ref inputs "gzip"))
+                   (bzip2 (assoc-ref inputs "bzip2"))
+                   (xz (assoc-ref inputs "xz")))
+               (substitute* '("Local/Makefile")
+                 (("(BIN_DIRECTORY=).*" all var)
+                  (string-append var out "/bin\n"))
+                 (("(CONFIGURE_FILE=).*" all var)
+                  (string-append var out "/etc/exim.conf\n"))
+                 (("(EXIM_USER=).*" all var)
+                  (string-append var "nobody\n"))
+                 (("(FIXED_NEVER_USERS=).*" all var)
+                  (string-append var "\n"))  ;XXX no root in build environment
+                 (("(COMPRESS_COMMAND=).*" all var)
+                  (string-append var gzip "/bin/gzip\n"))
+                 (("(ZCAT_COMMAND=).*" all var)
+                  (string-append var gzip "/bin/zcat\n")))
+               ;; This file has hardcoded names for tools despite the zcat
+               ;; configuration above.
+               (substitute* '("src/exigrep.src")
+                 (("'zcat'") (string-append "'" gzip "/bin/zcat'"))
+                 (("'bzcat'") (string-append "'" bzip2 "/bin/bzcat'"))
+                 (("'xzcat'") (string-append "'" xz "/bin/xzcat'"))
+                 (("'lzma'") (string-append "'" xz "/bin/lzma'"))))
+             #t))
+         (add-before 'build 'fix-sh-paths
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* '("scripts/lookups-Makefile" "scripts/reversion")
+               (("SHELL=/bin/sh") "SHELL=sh"))
+             (substitute* '("scripts/Configure-config.h")
+               (("\\| /bin/sh") "| sh"))
+             (let ((bash (assoc-ref inputs "bash")))
+               (substitute* '("scripts/Configure-eximon")
+                 (("#!/bin/sh") (string-append "#!" bash "/bin/sh"))))
+             #t)))
        #:make-flags '("INSTALL_ARG=-no_chown")
        ;; No 'check' target.
        #:tests? #f))
-    (home-page "http://www.exim.org/")
+    (home-page "https://www.exim.org/")
     (synopsis
      "Message Transfer Agent (MTA) developed at the University of Cambridge")
     (description
@@ -1087,7 +1121,7 @@ facilities for checking incoming mail.")
 (define-public dovecot
   (package
     (name "dovecot")
-    (version "2.2.29.1")
+    (version "2.2.33.2")
     (source
      (origin
        (method url-fetch)
@@ -1095,7 +1129,7 @@ facilities for checking incoming mail.")
                            (version-major+minor version) "/"
                            name "-" version ".tar.gz"))
        (sha256 (base32
-                "127kn3fgmahw9fvgz2w3zaghq98ip4j8640wqa3rw7mrgvxrzync"))))
+                "117f9i62liz2pm96zi2lpldzlj2knzj7g410zhifwmlsc1w3n7py"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -1166,9 +1200,9 @@ It supports mbox/Maildir and its own dbox/mdbox formats.")
                                               "/lib/dovecot"))
        #:phases
        (modify-phases %standard-phases
-         (add-before 'configure 'autogen
+         (add-after 'unpack 'autogen
            (lambda _
-             (zero? (system* "./autogen.sh")))))))
+             (zero? (system* "sh" "autogen.sh")))))))
     (home-page "https://0xacab.org/riseuplabs/trees")
     (synopsis "NaCL-based Dovecot email storage encryption plugin")
     (description
@@ -1222,9 +1256,9 @@ using lidsodium sealed boxes.
                                                 "/lib/dovecot"))
          #:phases
          (modify-phases %standard-phases
-           (add-before 'configure 'autogen
+           (add-after 'unpack 'autogen
              (lambda _
-               (zero? (system* "./autogen.sh")))))))
+               (zero? (system* "sh" "autogen.sh")))))))
       (home-page "https://github.com/LuckyFellow/dovecot-libsodium-plugin")
       (synopsis "Libsodium password hashing schemes plugin for Dovecot")
       (description
@@ -1235,15 +1269,17 @@ hashing schemes plugin for @code{Dovecot}.")
 (define-public isync
   (package
     (name "isync")
-    (version "1.2.1")
+    (version "1.3.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://sourceforge/isync/isync/"
                            version "/isync-" version ".tar.gz"))
        (sha256 (base32
-                "1bij6nm06ghkg98n2pdyacam2fyg5y8f7ajw0d5653m0r4ldw5p7"))))
+                "173wd7x8y5sp94slzwlnb7zhgs32r57zl9xspl2rf4g3fqwmhpwd"))))
     (build-system gnu-build-system)
+    (native-inputs
+     `(("perl" ,perl)))
     (inputs
      `(("bdb" ,bdb)
        ("openssl" ,openssl)))
@@ -1275,7 +1311,7 @@ mailboxes.  Currently Maildir and IMAP are supported types.")
     (synopsis "Interface to mail representations")
     (description "Email::Abstract provides module writers with the ability to
 write simple, representation-independent mail handling code.")
-    (license (package-license perl))))
+    (license perl-license)))
 
 (define-public perl-email-address
   (package
@@ -1295,7 +1331,7 @@ write simple, representation-independent mail handling code.")
     (description "Email::Address implements a regex-based RFC 2822 parser that
 locates email addresses in strings and returns a list of Email::Address
 objects found.  Alternatively you may construct objects manually.")
-    (license (package-license perl))))
+    (license perl-license)))
 
 (define-public perl-email-date-format
   (package
@@ -1314,7 +1350,7 @@ objects found.  Alternatively you may construct objects manually.")
     (synopsis "Produce RFC 2822 date strings")
     (description "Email::Date::Format provides a means for generating an RFC
 2822 compliant datetime string.")
-    (license (package-license perl))))
+    (license perl-license)))
 
 (define-public perl-email-messageid
   (package
@@ -1333,12 +1369,12 @@ objects found.  Alternatively you may construct objects manually.")
     (synopsis "Generate world unique message-ids")
     (description "Email::MessageID generates recommended message-ids to
 identify a message uniquely.")
-    (license (package-license perl))))
+    (license perl-license)))
 
 (define-public perl-email-mime
   (package
     (name "perl-email-mime")
-    (version "1.940")
+    (version "1.946")
     (source
      (origin
        (method url-fetch)
@@ -1346,7 +1382,7 @@ identify a message uniquely.")
                            "Email-MIME-" version ".tar.gz"))
        (sha256
         (base32
-         "0pnxbr16cn5qy96xqhp9zmd94ashc9ivqh10qbgbc3f637a0mfir"))))
+         "0z1k3i0lzp2k421gc8f3wq0jbqflkbw2xqd2k7n7pmv56417kvk8"))))
     (build-system perl-build-system)
     (propagated-inputs
      `(("perl-email-address" ,perl-email-address)
@@ -1354,19 +1390,20 @@ identify a message uniquely.")
        ("perl-email-mime-contenttype" ,perl-email-mime-contenttype)
        ("perl-email-mime-encodings" ,perl-email-mime-encodings)
        ("perl-email-simple" ,perl-email-simple)
-       ("perl-mime-types" ,perl-mime-types)))
+       ("perl-mime-types" ,perl-mime-types)
+       ("perl-module-runtime" ,perl-module-runtime)))
     (home-page "http://search.cpan.org/dist/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
 into its constituent parts, and allows you access to various parts of the
 message.  Headers are decoded from MIME encoding.")
-    (license (package-license perl))))
+    (license perl-license)))
 
 (define-public perl-email-mime-contenttype
   (package
     (name "perl-email-mime-contenttype")
-    (version "1.018")
+    (version "1.022")
     (source
      (origin
        (method url-fetch)
@@ -1374,7 +1411,7 @@ message.  Headers are decoded from MIME encoding.")
                            "Email-MIME-ContentType-" version ".tar.gz"))
        (sha256
         (base32
-         "1y8hpwm7p5a9y2azy0cgvlv2i2d0nj66ajfa0fj51wdq4w9cs23m"))))
+         "042kxhs3bp1ab9z0mbr1wy21ld4lxd6v2a2mmrashqnsn2075fws"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-capture-tiny" ,perl-capture-tiny)))
@@ -1382,7 +1419,7 @@ message.  Headers are decoded from MIME encoding.")
     (synopsis "Parse MIME Content-Type headers")
     (description "Email::MIME::ContentType parses a MIME Content-Type
 header.")
-    (license (package-license perl))))
+    (license perl-license)))
 
 (define-public perl-email-mime-encodings
   (package
@@ -1402,12 +1439,12 @@ header.")
     (home-page "http://search.cpan.org/dist/Email-MIME-Encodings")
     (synopsis "Unified interface to MIME encoding and decoding")
     (description "This module wraps MIME::Base64 and MIME::QuotedPrint.")
-    (license (package-license perl))))
+    (license perl-license)))
 
 (define-public perl-email-sender
   (package
     (name "perl-email-sender")
-    (version "1.300028")
+    (version "1.300031")
     (source
      (origin
        (method url-fetch)
@@ -1415,7 +1452,7 @@ header.")
                            "Email-Sender-" version ".tar.gz"))
        (sha256
         (base32
-         "0c5dv1x9856nryj5mcbgb67a4irmadz80g0qnf4van3bd8wbj72a"))))
+         "052g0slw3h2lzn93j71fi47nfawww2aph4jhr3c860ji70lkf4n4"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-capture-tiny" ,perl-capture-tiny)))
@@ -1434,12 +1471,12 @@ header.")
     (synopsis "Perl library for sending email")
     (description "Email::Sender replaces the old and sometimes problematic
 Email::Send library.")
-    (license (package-license perl))))
+    (license perl-license)))
 
 (define-public perl-email-simple
   (package
     (name "perl-email-simple")
-    (version "2.213")
+    (version "2.214")
     (source
      (origin
        (method url-fetch)
@@ -1447,7 +1484,7 @@ Email::Send library.")
                            "Email-Simple-" version ".tar.gz"))
        (sha256
         (base32
-         "1ibwsng63gvqqc6r2135mjwfdzazxkb1x8q7f87wqcbjcjfpmffd"))))
+         "14kb86hi0m0bqc7kxpm4x5kvfsyj2x86gggbvpxhx9hy8hvjpw5j"))))
     (build-system perl-build-system)
     (propagated-inputs
      `(("perl-email-date-format" ,perl-email-date-format)))
@@ -1455,7 +1492,7 @@ Email::Send library.")
     (synopsis "Parsing of RFC 2822 messages")
     (description "Email::Simple provides simple parsing of RFC 2822 message
 format and headers.")
-    (license (package-license perl))))
+    (license perl-license)))
 
 (define-public libesmtp
   (package
@@ -1606,13 +1643,13 @@ maintained.")
 (define-public khard
   (package
     (name "khard")
-    (version "0.11.3")
+    (version "0.11.4")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri name version))
               (sha256
                (base32
-                "1v66khq5w17xdbkpb00pf9xbl84dlzx4lq286fvzskb949b3y4yn"))))
+                "1shhlq6ljbd8095hd82v4mw56rjcfxf1ymmgknbgh8gix02nsxw1"))))
     (build-system python-build-system)
     (arguments
       `(#:phases
@@ -2053,7 +2090,7 @@ the GNU Mailman 3 REST API.")
     (description
      "Mlmmj is a simple and slim mailing list manager (MLM) inspired by ezmlm.
 It works with many different Mail Transport Agents (MTAs) and is simple for a
-system adminstrator to install, configure and integrate with other software.
+system administrator to install, configure and integrate with other software.
 As it uses very few resources, and requires no daemons, it is ideal for
 installation on systems where resources are limited.  Its features include:
 @enumerate
@@ -2230,8 +2267,8 @@ operators and scripters.")
        ;; There are two versions: the plain continuation of Alpine without extra
        ;; patches and the version which adds extra fixes. Every distro uses
        ;; the patched version, and so do we to not break expectations.
-       ;; http://patches.freeiz.com/alpine/readme/README.patches
-       (uri (string-append "http://patches.freeiz.com/alpine/patches/alpine-"
+       ;; http://alpine.freeiz.com/alpine/readme/README.patches
+       (uri (string-append "http://alpine.freeiz.com/alpine/patches/alpine-"
                            version "/alpine-" version ".tar.xz"))
        (sha256
         (base32
@@ -2273,7 +2310,7 @@ operators and scripters.")
        ("aspell" ,aspell)
        ("tcl" ,tcl)
        ("linux-pam" ,linux-pam)))
-    (home-page "http://patches.freeiz.com/alpine/")
+    (home-page "http://alpine.freeiz.com/alpine/")
     (synopsis "Alternatively Licensed Program for Internet News and Email")
     (description
      "Alpine is a text-based mail and news client.  Alpine includes several
@@ -2284,3 +2321,58 @@ tools and applications:
 @item pilot, the standalone file system navigator
 @end enumerate\n")
     (license asl2.0)))
+
+(define-public balsa
+  (package
+    (name "balsa")
+    (version "2.5.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://pawsa.fedorapeople.org/balsa/balsa-"
+                           version ".tar.bz2"))
+       (sha256
+        (base32
+         "15jkwp3ylbwd8iha4dr37z1xb6mkk31ym90vv3h2a5xk2rmym5mq"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:configure-flags
+       '(;; Balsa tries to install additional MIME icons
+         ;; under gtk+ directory.
+         "--enable-extra-mimeicons=no"
+         "--with-gtksourceview"
+         "--with-canberra"
+         "--with-spell-checker=gtkspell"
+         "--with-gpgme"
+         "--with-sqlite"
+         "--with-compface"
+         "--with-ldap")))
+    (inputs
+     `(("cyrus-sasl" ,cyrus-sasl)
+       ("enchant" ,enchant)
+       ("gdk-pixbuf" ,gdk-pixbuf)
+       ("gmime" ,gmime)
+       ("gnutls" ,gnutls)
+       ("gpgme" ,gpgme)
+       ("gtk+" ,gtk+)
+       ("gtksourceview" ,gtksourceview)
+       ("gtkspell3" ,gtkspell3)
+       ("libcanberra" ,libcanberra)
+       ("libesmtp" ,libesmtp)
+       ("libnotify" ,libnotify)
+       ("openldap" ,openldap)
+       ("sqlite" ,sqlite)
+       ("webkitgtk" ,webkitgtk)))
+    (native-inputs
+     `(("compface" ,compface)
+       ("glib" ,glib "bin")
+       ("intltool" ,intltool)
+       ("pkg-config" ,pkg-config)
+       ("yelp-tools" ,yelp-tools)))
+    (home-page "https://pawsa.fedorapeople.org/balsa")
+    (synopsis "E-mail client for GNOME")
+    (description "Balsa is a highly configurable and robust mail client for
+the GNOME desktop.  It supports both POP3 and IMAP servers as well as the
+mbox, maildir and mh local mailbox formats.  Balsa also supports SMTP and/or
+the use of a local MTA such as Sendmail.")
+    (license gpl3+)))