gnu: dovecot: Add linux-pam to inputs.
[jackhill/guix/guix.git] / gnu / packages / mail.scm
index 10ad2f6..38cab27 100644 (file)
@@ -7,6 +7,8 @@
 ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
 ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
 ;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages base)
   #:use-module (gnu packages backup)
+  #:use-module (gnu packages bash)
+  #:use-module (gnu packages bison)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages cyrus-sasl)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages dejagnu)
   #:use-module (gnu packages emacs)
   #:use-module (gnu packages enchant)
-  #:use-module (gnu packages gdbm)
   #:use-module (gnu packages ghostscript)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages gnupg)
-  #:use-module (gnu packages gnutls)
   #:use-module (gnu packages gsasl)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages guile)
+  #:use-module (gnu packages flex)
   #:use-module (gnu packages libcanberra)
   #:use-module (gnu packages libidn)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages m4)
-  #:use-module (gnu packages databases)
   #:use-module (gnu packages ncurses)
-  #:use-module (gnu packages openssl)
   #:use-module (gnu packages pcre)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages python)
   #:use-module (gnu packages flex)
   #:use-module (gnu packages gdb)
   #:use-module (gnu packages samba)
+  #:use-module (gnu packages tls)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg)
   #:use-module ((guix licenses)
-                #:select (gpl2 gpl2+ gpl3+ lgpl2.1+ lgpl3+ non-copyleft))
+                #:select (gpl2 gpl2+ gpl3+ lgpl2.1 lgpl2.1+ lgpl3+ non-copyleft
+                          (expat . license:expat)))
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module (guix utils)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system perl)
@@ -169,19 +173,15 @@ aliasing facilities to work just as they would on normal mail.")
 (define-public mutt
   (package
     (name "mutt")
-    (version "1.5.23")
+    (version "1.5.24")
     (source (origin
              (method url-fetch)
-             (uri (list ;; Temporarily put bitbucket first, because
-                        ;; ftp.mutt.org has been down for a while.
-                        (string-append "https://bitbucket.org/mutt/mutt/downloads/mutt-"
-                                       version ".tar.gz")
-                        (string-append "ftp://ftp.mutt.org/mutt/devel/mutt-"
-                                       version ".tar.gz")))
+             (uri (string-append "ftp://ftp.mutt.org/pub/mutt/mutt-"
+                                 version ".tar.gz"))
              (sha256
               (base32
-               "0dzx4qk50pjfsb6cs5jahng96a52k12f7pm0sc78iqdrawg71w1s"))
-             (patches (list (search-patch "mutt-CVE-2014-9116.patch")))))
+               "0012njrgxf1barjksqkx7ccid2l0xyikhna9mjs9vcfpbrvcm4m2"))
+             (patches (list (search-patch "mutt-store-references.patch")))))
     (build-system gnu-build-system)
     (inputs
      `(("cyrus-sasl" ,cyrus-sasl)
@@ -209,7 +209,7 @@ operating systems.")
 (define-public gmime
   (package
     (name "gmime")
-    (version "2.6.19")
+    (version "2.6.20")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/gmime/"
@@ -217,7 +217,7 @@ operating systems.")
                                   "/gmime-" version ".tar.xz"))
               (sha256
                (base32
-                "0jm1fgbjgh496rsc0il2y46qd4bqq2ln9168p4zzh68mk4ml1yxg"))))
+                "0rfzbgsh8ira5p76kdghygl5i3fvmmx4wbw5rp7f8ajc4vxp18g0"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -227,20 +227,21 @@ operating systems.")
               ("zlib" ,zlib)))
     (arguments
      `(#:phases
-       (alist-cons-after
-        'unpack 'patch-paths-in-tests
-        (lambda _
-          ;; The test programs run several programs using 'system' with
-          ;; hard-coded paths.  Here we patch them all.  We also change "gpg"
-          ;; to "gpg2".  We use ISO-8859-1 here because test-iconv.c contains
-          ;; raw byte sequences in several different encodings.
-          (with-fluids ((%default-port-encoding #f))
-            (substitute* (find-files "tests" "\\.c$")
-              (("(system *\\(\")(/[^ ]*)" all pre prog-path)
-               (let* ((base (basename prog-path))
-                      (prog (which (if (string=? base "gpg") "gpg2" base))))
-                 (string-append pre (or prog (error "not found: " base))))))))
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-after
+          'unpack 'patch-paths-in-tests
+          (lambda _
+            ;; The test programs run several programs using 'system' with
+            ;; hard-coded paths.  Here we patch them all.  We also change "gpg"
+            ;; to "gpg2".  We use ISO-8859-1 here because test-iconv.c contains
+            ;; raw byte sequences in several different encodings.
+            (with-fluids ((%default-port-encoding #f))
+              (substitute* (find-files "tests" "\\.c$")
+                (("(system *\\(\")(/[^ ]*)" all pre prog-path)
+                 (let* ((base (basename prog-path))
+                        (prog (which (if (string=? base "gpg") "gpg2" base))))
+                   (string-append pre
+                                  (or prog (error "not found: " base))))))))))))
     (home-page "http://spruce.sourceforge.net/gmime/")
     (synopsis "MIME message parser and creator library")
     (description
@@ -284,7 +285,7 @@ and corrections.  It is based on a Bayesian filter.")
 (define-public offlineimap
   (package
     (name "offlineimap")
-    (version "6.5.5")
+    (version "6.5.7")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/OfflineIMAP/offlineimap/"
@@ -292,7 +293,7 @@ and corrections.  It is based on a Bayesian filter.")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "00k84qagph3xnxss6rkxm61x07ngz8fvffx4z9jyw5baf3cdd32p"))))
+                "18whwc4f8nk8gi3mjw9153c9cvwd3i9i7njmpdbhcplrv33m5pmp"))))
     (build-system python-build-system)
     (native-inputs `(("python" ,python-2)))
     (arguments
@@ -308,10 +309,19 @@ can read the same mailbox from multiple computers.  It supports IMAP as REMOTE
 repository and Maildir/IMAP as LOCAL repository.")
     (license gpl2+)))
 
+(define %mu-gtester-patch
+  ;; Ensure tests have unique names, to placate GLib 2.6's gtester.
+  (origin
+    (method url-fetch)
+    (uri "https://github.com/djcb/mu/commit/b44039ed.patch")
+    (sha256
+     (base32
+      "165hryqqhx3wah8a4f5jaq465azx1pm9r4jid7880pys9gd88qlv"))))
+
 (define-public mu
   (package
     (name "mu")
-    (version "0.9.12")
+    (version "0.9.13")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/djcb/mu/archive/v"
@@ -319,7 +329,8 @@ repository and Maildir/IMAP as LOCAL repository.")
               (file-name (string-append "mu-" version ".tar.gz"))
               (sha256
                (base32
-                "1bxryacmas2llj68m2dv8dr1vwx8f5k2i2azh69jajkpqx7i4wdq"))))
+                "0wj33pma8xgjvn2akk7khzbycwn4c9sshxvzdph9dnpy7gyqxj51"))
+              (patches (list %mu-gtester-patch))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -361,27 +372,32 @@ attachments, create new maildirs, and so on.")
 (define-public notmuch
   (package
     (name "notmuch")
-    (version "0.18.1")
+    (version "0.20.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://notmuchmail.org/releases/notmuch-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "1pdp9l7yv71d3fjb30qyccva8h03hvg88q4a00yi50v2j70kvmgj"))))
+                "1v5dcnlg4km5hfaq0i0qywq5fn66fi0rq4aaibyqkwxz8mis4hgp"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:tests? #f ;; FIXME: Test suite hangs and times out.
-       #:phases (alist-replace
-                 'configure
-                 (lambda* (#:key outputs #:allow-other-keys)
-                   (setenv "CONFIG_SHELL" (which "sh"))
-                   (let ((out (assoc-ref outputs "out")))
-                     (zero? (system* "./configure"
-                                     (string-append "--prefix=" out)))))
-                 %standard-phases)))
+     '(#:tests? #f ;; FIXME: 637 tests; 70 fail and 98 are skipped
+       #:phases (modify-phases %standard-phases
+                  (replace 'configure
+                    (lambda* (#:key outputs #:allow-other-keys)
+                      (setenv "CC" "gcc")
+                      (setenv "CONFIG_SHELL" (which "sh"))
+
+                      (let ((out (assoc-ref outputs "out")))
+                        (zero? (system* "./configure"
+                                        (string-append "--prefix=" out)))))))))
     (native-inputs
-     `(("pkg-config" ,pkg-config)))
+     `(("pkg-config" ,pkg-config)
+       ("python" ,python-2)
+       ("python-docutils" ,python2-docutils)
+       ("python-sphinx" ,python2-sphinx)
+       ("bash-completion" ,bash-completion)))
     (inputs
      `(("emacs" ,emacs)
        ("glib" ,glib)
@@ -396,6 +412,40 @@ attachments, create new maildirs, and so on.")
 ing, and tagging large collections of email messages.")
     (license gpl3+)))
 
+(define-public python2-notmuch
+  (package
+    (name "python2-notmuch")
+    (version "0.15.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://pypi.python.org/packages/source/n/notmuch/notmuch-"
+                    version
+                    ".tar.gz"))
+              (sha256
+               (base32
+                "18g8701ibr153ngsz258kgcd42wqnbf9ifpqig1bijy6b0zx9xn5"))))
+    (build-system python-build-system)
+    (inputs `(("notmuch" ,notmuch)))
+    (arguments
+     `(#:python ,python-2
+       #:phases (modify-phases %standard-phases
+                  (add-before
+                   'build 'set-libnotmuch-file-name
+                   (lambda* (#:key inputs #:allow-other-keys)
+                     (let ((notmuch (assoc-ref inputs "notmuch")))
+                       (substitute* "notmuch/globals.py"
+                         (("libnotmuch\\.so\\.[0-9]")
+                          (string-append notmuch "/lib/libnotmuch.so.4")))
+                       #t))))
+       #:tests? #f))                              ;no "test" target
+    (home-page "http://notmuchmail.org/")
+    (synopsis "Python bindings of the Notmuch mail indexing library")
+    (description
+     "This package provides Python bindings to use the Notmuch mail indexing
+and search library.")
+    (license gpl3+)))
+
 (define-public getmail
   (package
     (name "getmail")
@@ -468,20 +518,19 @@ MailCore 2.")
 (define-public claws-mail
   (package
     (name "claws-mail")
-    (version "3.11.1")
+    (version "3.13.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
-                    "mirror://sourceforge/claws-mail/claws-mail-" version
+                    "http://www.claws-mail.org/releases/" name "-" version
                     ".tar.xz"))
               (sha256
-               (base32 "0cyixz1jgfpi8abh9fbb8ylx9mcvw4jqj81cms666wpqr6v828yp"))))
+               (base32 "0fpr9gdgrs5yggm61a6135ca06x0cflddsh8dwfqmpb3dj07cl1n"))))
     (build-system gnu-build-system)
     (native-inputs `(("pkg-config" ,pkg-config)))
     (inputs `(("bogofilter" ,bogofilter)
               ("curl" ,curl)
               ("dbus-glib" ,dbus-glib)
-              ("dbus" ,dbus)
               ("enchant" ,enchant)
               ("expat" ,expat)
               ("ghostscript" ,ghostscript)
@@ -514,14 +563,14 @@ which can add many functionalities to the base client.")
 (define-public msmtp
   (package
     (name "msmtp")
-    (version "1.4.32")
+    (version "1.6.2")
     (source
      (origin
        (method url-fetch)
        (uri (string-append
-             "mirror://sourceforge/msmtp/msmtp-" version ".tar.bz2"))
+             "mirror://sourceforge/msmtp/msmtp-" version ".tar.xz"))
        (sha256 (base32
-                "122z38pv4q03w3mbnhrhg4w85a51258sfdg2ips0b6cgwz3wbw1b"))))
+                "12c7ljahb06pgn8yvvw526xvr11vnr6d4nr0apylixddpxycsvig"))))
     (build-system gnu-build-system)
     (inputs
      `(("libidn" ,libidn)
@@ -534,7 +583,7 @@ which can add many functionalities to the base client.")
     (arguments
      `(#:configure-flags (list "--with-libgsasl"
                                "--with-libidn"
-                               "--with-ssl=gnutls")))
+                               "--with-tls=gnutls")))
     (synopsis
      "Simple and easy to use SMTP client with decent sendmail compatibility")
     (description
@@ -628,6 +677,50 @@ deal of flexibility in the way mail can be routed, and there are extensive
 facilities for checking incoming mail.")
     (license gpl2+)))
 
+(define-public dovecot
+  (package
+    (name "dovecot")
+    (version "2.2.19")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "http://www.dovecot.org/releases/"
+                           (version-major+minor version) "/"
+                           name "-" version ".tar.gz"))
+       (sha256 (base32
+                "17sf5aancad4pg1vx1606k99389wg76blpqzmnmxlz4hklzix7km"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("openssl" ,openssl)
+       ("zlib" ,zlib)
+       ("bzip2" ,bzip2)
+       ("sqlite" ,sqlite)
+       ("linux-pam" ,linux-pam)))
+    (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)))))
+    (home-page "http://www.dovecot.org")
+    (synopsis "Secure POP3/IMAP server")
+    (description
+     "Dovecot is a mail server whose major goals are security and reliability.
+It supports mbox/Maildir and its own dbox/mdbox formats.")
+    ;; Most source files are covered by either lgpl2.1 or expat.  The SHA code
+    ;; is covered by a variant of BSD-3, and UnicodeData.txt is covered by the
+    ;; Unicode, Inc. License Agreement for Data Files and Software.
+    (license (list lgpl2.1 license:expat (non-copyleft "file://COPYING")))))
+
 (define-public isync
   (package
     (name "isync")
@@ -650,6 +743,28 @@ facilities for checking incoming mail.")
 mailboxes.  Currently Maildir and IMAP are supported types.")
     (license gpl2+)))
 
+(define-public perl-email-abstract
+  (package
+    (name "perl-email-abstract")
+    (version "3.008")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/R/RJ/RJBS/"
+                           "Email-Abstract-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0h42rhvp769wb421cpbbg6v6xjp8iv86mvz70pqgfgf4nsn6jwgw"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-email-simple" ,perl-email-simple)
+       ("perl-mro-compat" ,perl-mro-compat)))
+    (home-page "http://search.cpan.org/dist/Email-Abstract")
+    (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))))
+
 (define-public perl-email-address
   (package
     (name "perl-email-address")
@@ -708,6 +823,34 @@ objects found.  Alternatively you may construct objects manually.")
 identify a message uniquely.")
     (license (package-license perl))))
 
+(define-public perl-email-mime
+  (package
+    (name "perl-email-mime")
+    (version "1.929")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/R/RJ/RJBS/"
+                           "Email-MIME-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1sf7dldg4dvicyw6dl1vx6s1gjq3fcppi0103ikl0vi6v5xjdjdh"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-email-address" ,perl-email-address)
+       ("perl-email-messageid" ,perl-email-messageid)
+       ("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)))
+    (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))))
+
 (define-public perl-email-mime-contenttype
   (package
     (name "perl-email-mime-contenttype")
@@ -749,4 +892,119 @@ header.")
     (description "This module wraps MIME::Base64 and MIME::QuotedPrint.")
     (license (package-license perl))))
 
+(define-public perl-email-sender
+  (package
+    (name "perl-email-sender")
+    (version "1.300016")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/R/RJ/RJBS/"
+                           "Email-Sender-" version ".tar.gz"))
+       (sha256
+        (base32
+         "18x26fjh399q3s2g8dajb9r10633c46jrnbvycpnpclgnzhjs100"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-capture-tiny" ,perl-capture-tiny)))
+    (propagated-inputs
+     `(("perl-email-abstract" ,perl-email-abstract)
+       ("perl-email-address" ,perl-email-address)
+       ("perl-email-simple" ,perl-email-simple)
+       ("perl-list-moreutils" ,perl-list-moreutils)
+       ("perl-module-runtime" ,perl-module-runtime)
+       ("perl-moo" ,perl-moo)
+       ("perl-moox-types-mooselike" ,perl-moox-types-mooselike)
+       ("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")
+    (synopsis "Perl library for sending email")
+    (description "Email::Sender replaces the old and sometimes problematic
+Email::Send library.")
+    (license (package-license perl))))
+
+(define-public perl-email-simple
+  (package
+    (name "perl-email-simple")
+    (version "2.206")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/R/RJ/RJBS/"
+                           "Email-Simple-" version ".tar.gz"))
+       (sha256
+        (base32
+         "19dpy3j5na2k9qw1jcpc8ia25038068r9j1bn34f9yyrisz7s522"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-email-date-format" ,perl-email-date-format)))
+    (home-page "http://search.cpan.org/dist/Email-Simple")
+    (synopsis "Parsing of RFC 2822 messages")
+    (description "Email::Simple provides simple parsing of RFC 2822 message
+format and headers.")
+    (license (package-license perl))))
+
+(define-public libesmtp
+  (package
+    (name "libesmtp")
+    (version "1.0.6")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "http://www.stafford.uklinux.net/libesmtp/libesmtp-"
+                           version ".tar.bz2"))
+       (sha256
+        (base32
+         "02zbniyz7qys1jmx3ghx21kxmns1wc3hmv80gp7ag7yra9f1m9nh"))))
+    (build-system gnu-build-system)
+    (propagated-inputs
+     `(("openssl" ,openssl)))
+    (home-page "http://www.stafford.uklinux.net/libesmtp/")
+    (synopsis "Library for sending mail via remote hosts using SMTP")
+    (description "libESMTP is an SMTP client which manages posting (or
+submission of) electronic mail via a preconfigured Mail Transport Agent (MTA).
+It may be used as part of a Mail User Agent (MUA) or other program that must
+be able to post electronic mail where mail functionality may not be that
+program's primary purpose.")
+    (license (list lgpl2.1+ gpl2+))))
+
+(define-public esmtp
+  (package
+    (name "esmtp")
+    (version "1.2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/andywingo/esmtp.git")
+             (commit "01bf9fc")))
+       (sha256
+        (base32
+         "1ay282rrl92h0m0m8z5zzjnwiiagi7c78aq2qvhia5mw7prwfyw2"))
+       (file-name (string-append name "-" version "-checkout"))))
+    (arguments
+     `(#:phases (modify-phases %standard-phases
+                  (add-before
+                   'configure 'autoconf
+                   (lambda _ (zero? (system* "autoreconf" "-vfi")))))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("bison" ,bison)
+       ("flex" ,flex)
+       ("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("libtool" ,libtool)))
+    (inputs
+     `(("libesmtp" ,libesmtp)))
+    (home-page "http://sourceforge.net/projects/esmtp/")
+    (synopsis "Relay-only mail transfer agent (MTA)")
+    (description "Esmtp is a simple relay-only mail transfer agent built using
+libESMTP.  It sends e-mail via a remote SMTP server using credentials from the
+user's @file{$HOME/.esmtprc} configuration file; see the @command{esmtprc} man
+page for more on configuration.  This package also provides minimal
+compatibility shims for the @command{sendmail}, @command{mailq}, and
+@command{newaliases} commands.")
+    (license gpl2+)))
+
 ;;; mail.scm ends here