X-Git-Url: https://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/ce53048fb82d4d8fefa846aef989408aa1d98055..5e15ec6734d542eae6c7cfa2f7af25a39a779d30:/gnu/packages/mail.scm diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm index 2c06519e1f..1694b7c6b1 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm @@ -15,16 +15,16 @@ ;;; Copyright © 2016 Lukas Gradl ;;; Copyright © 2016 Alex Kost ;;; Copyright © 2016, 2017 Troy Sankey -;;; Copyright © 2016, 2017, 2018 Nils Gillmann +;;; Copyright © 2016, 2017, 2018 ng0 ;;; Copyright © 2016 Clément Lassieur ;;; Copyright © 2016, 2017, 2018, 2019 Arun Isaac ;;; Copyright © 2016 John Darrington ;;; Copyright © 2016, 2018 Marius Bakke ;;; Copyright © 2017 Thomas Danckaert ;;; Copyright © 2017 Kyle Meyer -;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice +;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice ;;; Copyright © 2017, 2018 Rene Saavedra -;;; Copyright © 2018 Pierre Langlois +;;; Copyright © 2018, 2019 Pierre Langlois ;;; Copyright © 2018 Alex Vong ;;; Copyright © 2018 Gábor Boskovits ;;; Copyright © 2018, 2019 Ricardo Wurmus @@ -46,6 +46,7 @@ (define-module (gnu packages mail) #:use-module (gnu packages) + #:use-module (gnu packages admin) #:use-module (gnu packages aspell) #:use-module (gnu packages autotools) #:use-module (gnu packages backup) @@ -83,6 +84,7 @@ #:use-module (gnu packages libcanberra) #:use-module (gnu packages libevent) #:use-module (gnu packages libidn) + #:use-module (gnu packages libunistring) #:use-module (gnu packages linux) #:use-module (gnu packages lua) #:use-module (gnu packages m4) @@ -93,6 +95,7 @@ #:use-module (gnu packages onc-rpc) #:use-module (gnu packages pcre) #:use-module (gnu packages perl) + #:use-module (gnu packages perl-web) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) #:use-module (gnu packages python-web) @@ -103,11 +106,13 @@ #:use-module (gnu packages serialization) #:use-module (gnu packages samba) #:use-module (gnu packages screen) + #:use-module (gnu packages sphinx) #:use-module (gnu packages sqlite) #:use-module (gnu packages tcl) #:use-module (gnu packages texinfo) #:use-module (gnu packages time) #:use-module (gnu packages tls) + #:use-module (gnu packages version-control) #:use-module (gnu packages w3m) #:use-module (gnu packages web) #:use-module (gnu packages webkit) @@ -133,14 +138,14 @@ (define-public mailutils (package (name "mailutils") - (version "3.5") + (version "3.6") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/mailutils/mailutils-" version ".tar.xz")) (sha256 (base32 - "1wx275w38fwni2abc8g7g3irbk332vr34byxd72zqfdiznsqgims")))) + "07phzpwrnkdclx6jvirljk9zcavl8wh02kpx3mfba9msr99kpqj6")))) (build-system gnu-build-system) (arguments '(#:phases @@ -212,7 +217,11 @@ ("readline" ,readline) ("linux-pam" ,linux-pam) ("libltdl" ,libltdl) - ("gdbm" ,gdbm))) + ("gdbm" ,gdbm) + + ;; Required for SEARCH CHARSET. + ("libiconv" ,libiconv) + ("libunistring" ,libunistring))) (home-page "https://mailutils.org") (synopsis "Utilities and library for reading and serving mail") (description @@ -225,6 +234,87 @@ software.") ;; Libraries are under LGPLv3+, and programs under GPLv3+. (list gpl3+ lgpl3+)))) +(define-public nullmailer + (package + (name "nullmailer") + (version "2.2") + (source + (origin + (method url-fetch) + (uri (list + (string-append "https://untroubled.org/nullmailer/" + "nullmailer-" version ".tar.gz") + ;; Previous releases are moved to this subdirectory. + (string-append "https://untroubled.org/nullmailer/archive/" + "nullmailer-" version ".tar.gz"))) + (sha256 + (base32 "0md8cf90fl2yf3zh9njjy42a673v4j4ygyq95xg7fzkygdigm1lq")))) + (build-system gnu-build-system) + (arguments + `(#:configure-flags + (list "--enable-tls" + "--localstatedir=/var" + "--sysconfdir=/etc") + #:phases + (modify-phases %standard-phases + (add-before 'check 'patch-test-FHS-file-names + (lambda _ + (with-directory-excursion "test" + (substitute* (list "functions.in" + "tests/send") + ;; Fix some shebangs later generated on the fly. + (("/bin/sh") (which "bash")))) + #t)) + (add-before 'check 'pass-PATH-to-tests + ;; ‘runtest’ launches each test through ‘env -’, clearing $PATH. The + ;; tests then source ‘functions’, which first demands a working $PATH + ;; only to clobber it later. Pass our $PATH to the test environment + ;; and don't touch it after that. + (lambda _ + (with-directory-excursion "test" + (substitute* "runtests" + (("env - bash") + (string-append "env - PATH=\"" (getenv "PATH") "\" bash"))) + (substitute* "functions.in" + (("export PATH=.*") ""))) + #t)) + (add-before 'check 'delete-failing-tests + (lambda _ + (with-directory-excursion "test/tests" + (for-each delete-file + (list + ;; XXX ‘nullmailer-inject: nullmailer-queue failed: 15’ + "inject/queue" + ;; XXX These require the not-yet-packaged tcpserver. + "protocols" "smtp-auth"))) + #t)) + (add-before 'install 'skip-install-data-local + ;; Don't attempt to install run-time files outside of the store. + (lambda _ + (substitute* "Makefile" + ((" install-data-local") "")) + #t))))) + (native-inputs + ;; For tests. + `(("daemontools" ,daemontools))) ; for svc + (inputs + `(("gnutls" ,gnutls))) + (home-page "https://untroubled.org/nullmailer/") + (synopsis "Simple relay-only mail transfer agent") + (description + "Nullmailer is a simple replacement @acronym{MTA, Mail Transfer Agent} for +hosts that receive no local mail and only relay mail to a fixed set of smart +relays. It's useful for systems such as Web servers that must be able to send +email notifications, without having to run a full-blown MTA such as sendmail +or qmail. + +Nullmailer is designed to be simple to configure, easy to extend, and secure. +It requires little ongoing administration. The included @command{sendmail} +emulator front-end should allow most (if not all) sendmail-compatible programs +to run without any changes.") + (license (list lgpl2.1+ ; lib/cli++/ (but some files lack headers) + gpl2+)))) ; everything else + (define-public fetchmail (package (name "fetchmail") @@ -261,14 +351,14 @@ aliasing facilities to work just as they would on normal mail.") (define-public mutt (package (name "mutt") - (version "1.11.2") + (version "1.12.1") (source (origin (method url-fetch) (uri (string-append "https://bitbucket.org/mutt/mutt/downloads/" "mutt-" version ".tar.gz")) (sha256 (base32 - "08w7lbhj5ba2zkjcd0cxkgfiy9y82yhg731xjg9i9292kz1x8p6s")) + "0311sip2q90aqaxn7h3cck1zl98b4vifqi8bp5fsizy4dr06bi81")) (patches (search-patches "mutt-store-references.patch")))) (build-system gnu-build-system) (inputs @@ -399,7 +489,7 @@ It adds a large amount of new and improved features to mutt.") (define-public gmime (package (name "gmime") - (version "3.2.0") + (version "3.2.3") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/gmime/" @@ -407,7 +497,7 @@ It adds a large amount of new and improved features to mutt.") "/gmime-" version ".tar.xz")) (sha256 (base32 - "1q6palbpf6lh6bvy9ly26q5apl5k0z0r4mvl6zzqh90rz4rn1v3m")))) + "04bk7rqs5slpvlvqf11i6s37s8b2xn6acls8smyl9asjnpp7a23a")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config) @@ -491,7 +581,7 @@ and corrections. It is based on a Bayesian filter.") (define-public offlineimap (package (name "offlineimap") - (version "7.2.2") + (version "7.2.4") (source (origin (method git-fetch) (uri (git-reference @@ -500,7 +590,7 @@ and corrections. It is based on a Bayesian filter.") (file-name (git-file-name name version)) (sha256 (base32 - "11nj7y9fa7v6vcxk3wr8smfgm3mxxnmq3l8q69rrjxlfzcv7dl8m")))) + "0h5q5nk2p2vx86w6rrbs7v70h81dpqqr68x6l3klzl3m0yj9agb1")))) (build-system python-build-system) (native-inputs `(("asciidoc" ,asciidoc))) @@ -537,14 +627,14 @@ repository and Maildir/IMAP as LOCAL repository.") (define-public emacs-mew (package (name "emacs-mew") - (version "6.7") + (version "6.8") (source (origin (method url-fetch) (uri (string-append "https://mew.org/Release/mew-" version ".tar.gz")) (sha256 (base32 - "03fzky2kz73vgx4cbps2psbbnrgqgkk5q7jwfldisymkzr9iz03y")))) + "0ixzyq33l6j34410kqav3lwn2wx171zvqd3irvns2jvhrbww8i6g")))) (native-inputs `(("emacs" ,emacs))) (propagated-inputs @@ -588,27 +678,27 @@ security functionality including PGP, S/MIME, SSH, and SSL.") (define-public mu (package (name "mu") - (version "1.0") + (version "1.2.0") (source (origin (method url-fetch) (uri (string-append "https://github.com/djcb/mu/releases/" - "download/v" version "/mu-" - version ".tar.xz")) + "download/" (version-major+minor version) "/" + "mu-" version ".tar.xz")) (sha256 (base32 - "04x5azl19gszw2h7argq666gf9xs4hy9q7w9cbqxvy08n56xqsln")))) + "0fh5bxvhjqv1p9z783lym8y1k3p4jcc3wg6wf7zl8s6w8krcfd7n")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config) ("glib" ,glib "bin") ; for gtester ("emacs" ,emacs-minimal) - ("tzdata" ,tzdata-for-tests))) ;for mu/test/test-mu-query.c + ("tzdata" ,tzdata-for-tests))) ; for mu/test/test-mu-query.c ;; TODO: Add webkit and gtk to build the mug GUI. (inputs `(("xapian" ,xapian) ("guile" ,guile-2.2) ("glib" ,glib) - ("gmime" ,gmime-2.6))) + ("gmime" ,gmime))) (arguments `(#:modules ((guix build gnu-build-system) (guix build utils) @@ -757,14 +847,14 @@ invoking @command{notifymuch} from the post-new hook.") (define-public notmuch (package (name "notmuch") - (version "0.28.1") + (version "0.29.1") (source (origin (method url-fetch) (uri (string-append "https://notmuchmail.org/releases/notmuch-" - version ".tar.gz")) + version ".tar.xz")) (sha256 (base32 - "0mcsfkrp6mpy374m5rwwgm9md8qzvwa3s4rbzid4cnkx2cwfj4fi")))) + "0rg3rwghd3wivf3bmqcqpkkd5c779ld5hi363zjcw5fl6a7gqilq")))) (build-system gnu-build-system) (arguments `(#:modules ((guix build gnu-build-system) @@ -773,7 +863,7 @@ invoking @command{notifymuch} from the post-new hook.") #:imported-modules (,@%gnu-build-system-modules (guix build emacs-build-system) (guix build emacs-utils)) - #:make-flags (list "V=1") ; Verbose test output. + #:make-flags (list "V=1") ; verbose test output #:phases (modify-phases %standard-phases (add-after 'unpack 'patch-notmuch-lib.el (lambda _ @@ -804,11 +894,11 @@ invoking @command{notifymuch} from the post-new hook.") (assoc-ref emacs:%standard-phases 'make-autoloads))))) (native-inputs `(("bash-completion" ,bash-completion) - ("emacs" ,emacs-no-x) ; Minimal lacks libxml, needed for some tests. + ("emacs" ,emacs-no-x) ; -minimal lacks libxml, needed for some tests ("pkg-config" ,pkg-config) - ("python" ,python-2) - ("python-docutils" ,python2-docutils) - ("python-sphinx" ,python2-sphinx) + ("python" ,python) + ("python-docutils" ,python-docutils) + ("sphinx" ,python-sphinx) ;; The following are required for tests only. ("which" ,which) @@ -830,51 +920,43 @@ ing, and tagging large collections of email messages.") (license gpl3+))) (define-public notmuch-addrlookup-c - ;; 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, + (package + (name "notmuch-addrlookup-c") + (version (string-append "9")) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/aperezdc/notmuch-addrlookup-c.git") + (commit (string-append "v" version)))) + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + "1j3zdx161i1x4w0nic14ix5i8hd501rb31daf8api0k8855sx4rc")))) + (build-system gnu-build-system) + (arguments + '(#:tests? #f ; no tests + #:make-flags (list "CC=gcc") + #: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 @@ -941,7 +1023,7 @@ useful features.") (define-public libetpan (package (name "libetpan") - (version "1.9.2") + (version "1.9.3") (source (origin (method git-fetch) (uri (git-reference @@ -949,7 +1031,7 @@ useful features.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "13jiy2ddxbp9f2mk1mip9sk8h97bva5m0pnq2mlvh5xhifs6gza4")))) + (base32 "19g4qskg71jv7sxfxsdkjmrxk9mk5kf9b6fhw06g6wvm3205n95f")))) (build-system gnu-build-system) (native-inputs `(("autoconf" ,autoconf-wrapper) ("automake" ,automake) @@ -998,7 +1080,7 @@ MailCore 2.") (arguments `(#:tests? #f)) (synopsis "Portrait image compressor") - (description "This packages takes your 48x48x1 portrait image and + (description "This package takes your 48x48x1 portrait image and compresses it.") (home-page "http://www.cs.indiana.edu/pub/faces/") (license (x11-style "file://README")))) @@ -1040,7 +1122,8 @@ compresses it.") ("mime-info" ,shared-mime-info))) (arguments '(#:configure-flags - '("--enable-gnutls" "--enable-pgpmime-plugin" "--enable-enchant") + '("--enable-gnutls" "--enable-pgpmime-plugin" "--enable-enchant" + "--enable-ldap") #:make-flags ;; Disable updating icon cache since it's done by the profile hook. ;; Conflict with other packages in the profile would be inevitable @@ -1066,7 +1149,7 @@ which can add many functionalities to the base client.") (define-public msmtp (package (name "msmtp") - (version "1.8.3") + (version "1.8.4") (source (origin (method url-fetch) @@ -1074,7 +1157,7 @@ which can add many functionalities to the base client.") "/msmtp-" version ".tar.xz")) (sha256 (base32 - "1d4jdgrx4czp66nnwdsy938lzr4llhwyy0715pwg0j6h6gyyxciw")))) + "1xr926lyy44baqdgv9q0sw5z6ll2cb4lx2g4lgpgbqn8bglpzpg5")))) (build-system gnu-build-system) (inputs `(("libsecret" ,libsecret) @@ -1111,7 +1194,7 @@ delivery.") (define-public exim (package (name "exim") - (version "4.90.1") + (version "4.92") (source (origin (method url-fetch) @@ -1120,11 +1203,10 @@ delivery.") (string-append "https://ftp.exim.org/pub/exim/exim4/old/exim-" version ".tar.bz2"))) (sha256 - (base32 - "1w6blvvrd87c649j8xpag034md2w1ib0db9c4ijqbzc5dh2i1xfq")))) + (base32 "127spqn009wa6irp6r1k7a24r8vdwb6mf0raamxn8lbxsnrwy7sl")))) (build-system gnu-build-system) (inputs - `(("bdb" ,bdb) + `(("bdb" ,bdb-5.3) ; ‘#error Version 6 and later BDB API is not supported’ ("gnutls" ,gnutls) ("gzip" ,gzip) ("bzip2" ,bzip2) @@ -1160,7 +1242,7 @@ delivery.") (("(EXIM_USER=).*" all var) (string-append var "nobody\n")) (("(FIXED_NEVER_USERS=).*" all var) - (string-append var "\n")) ;XXX no root in build environment + (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) @@ -1200,16 +1282,15 @@ facilities for checking incoming mail.") (define-public dovecot (package (name "dovecot") - (version "2.3.4.1") + (version "2.3.6") (source (origin (method url-fetch) (uri (string-append "https://www.dovecot.org/releases/" (version-major+minor version) "/" - name "-" version ".tar.gz")) + "dovecot-" version ".tar.gz")) (sha256 - (base32 - "01xa8d08c0j51w5kmqb3vnzrvh17hkzx5a5p7fb5hgn3wln3x1xq")))) + (base32 "1irnalplb47nlc26dn7zzdi95zhrxxi3miza7p3wdsgapv0qs7gd")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) @@ -1222,28 +1303,26 @@ facilities for checking incoming mail.") (arguments `(#:configure-flags '("--sysconfdir=/etc" "--localstatedir=/var") - #:phases (modify-phases %standard-phases - (add-before - 'configure 'pre-configure - (lambda _ - ;; Simple hack to avoid installing in /etc. - (substitute* '("doc/Makefile.in" - "doc/example-config/Makefile.in") - (("pkgsysconfdir = .*") - "pkgsysconfdir = /tmp/etc")) - #t)) - (add-after - 'unpack 'patch-other-file-names - (lambda _ - (substitute* - "src/lib-program-client/test-program-client-local.c" - (("(/bin/| )cat") (which "cat")) - (("/bin/echo") (which "echo")) - (("/bin/false") (which "false")) - (("/bin/sh") (which "bash")) - (("head") (which "head")) - (("sleep") (which "sleep"))) - #t))))) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-file-names + (lambda _ + (substitute* "src/lib-program-client/test-program-client-local.c" + (("(/bin/| )cat") (which "cat")) + (("/bin/echo") (which "echo")) + (("/bin/false") (which "false")) + (("/bin/sh") (which "bash")) + (("head") (which "head")) + (("sleep") (which "sleep"))) + (substitute* (list "src/lib-smtp/test-bin/sendmail-exit-1.sh" + "src/lib-smtp/test-bin/sendmail-success.sh") + (("cat") (which "cat"))) + #t)) + (replace 'install + (lambda* (#:key make-flags #:allow-other-keys) + ;; Simple hack to avoid installing a trivial README in /etc. + (apply invoke "make" "install" "sysconfdir=/tmp/bogus" + make-flags)))))) (home-page "https://www.dovecot.org") (synopsis "Secure POP3/IMAP server") (description @@ -1304,7 +1383,7 @@ How it works: @item This password digest is used as a symmetric secret to decrypt a libsodium secretbox. @item Inside the secretbox is stored a Curve25519 private key. @item The Curve25519 private key is used to decrypt each individual message, -using lidsodium sealed boxes. +using libsodium sealed boxes. @item New mail is encrypted as it arrives using the Curve25519 public key. @end enumerate\n") (license agpl3))) @@ -1354,14 +1433,14 @@ hashing schemes plugin for @code{Dovecot}.") (define-public isync (package (name "isync") - (version "1.3.0") + (version "1.3.1") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/isync/isync/" version "/isync-" version ".tar.gz")) (sha256 (base32 - "173wd7x8y5sp94slzwlnb7zhgs32r57zl9xspl2rf4g3fqwmhpwd")))) + "1sphd30jplii58y2zmw365bckm6pszmapcy905zhjll1sm1ldjv8")))) (build-system gnu-build-system) (native-inputs `(("perl" ,perl))) @@ -1403,15 +1482,14 @@ write simple, representation-independent mail handling code.") (define-public perl-email-address (package (name "perl-email-address") - (version "1.909") + (version "1.912") (source (origin (method url-fetch) (uri (string-append "mirror://cpan/authors/id/R/RJ/RJBS/" "Email-Address-" version ".tar.gz")) (sha256 - (base32 - "0l7x6sl06j9ffgfz5f9vgms2b5axd4cgp5fj03ivb3kia4km6b3g")))) + (base32 "1vzr0vx4zsw4zbc9xdffc31wnkc1raqmyfiyws06fbyck197i8qg")))) (build-system perl-build-system) (home-page "https://metacpan.org/release/Email-Address") (synopsis "Email address parsing and creation") @@ -1420,6 +1498,28 @@ locates email addresses in strings and returns a list of Email::Address objects found. Alternatively you may construct objects manually.") (license perl-license))) +(define-public perl-email-address-xs + (package + (name "perl-email-address-xs") + (version "1.04") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/P/PA/PALI/" + "Email-Address-XS-" version ".tar.gz")) + (sha256 + (base32 + "0gjrrl81z3sfwavgx5kwjd87gj44mlnbbqsm3dgdv1xllw26spwr")))) + (build-system perl-build-system) + (home-page "https://metacpan.org/release/Email-Address-XS") + (synopsis "Parse and format RFC 5322 email addresses and groups") + (description + "Email::Address::XS implements RFC 5322 parser and formatter of email +addresses and groups. Unlike Email::Address, this module does not use regular +expressions for parsing but instead is implemented in XS and uses shared code +from Dovecot IMAP server.") + (license perl-license))) + (define-public perl-email-date-format (package (name "perl-email-date-format") @@ -1651,15 +1751,13 @@ compatibility shims for the @command{sendmail}, @command{mailq}, and (define-public fdm (package (name "fdm") - (version "1.9") + (version "2.0") (source (origin (method url-fetch) (uri (string-append "https://github.com/nicm/fdm/releases/download/" - version "/fdm-" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) + version "/fdm-" version ".tar.gz")) (sha256 - (base32 "054rscijahiza5f9qha79rg3siji3bk5mk10f8c2vqx7m4w6qh8n")))) + (base32 "196fs1z8y7p12wmqn1bylzz94szl58yv2aby3p30nmwjnyv8rch6")))) (build-system gnu-build-system) (inputs `(("tdb" ,tdb) @@ -1763,45 +1861,43 @@ Khard can also be used from within the email client @command{mutt}.") (license gpl3+))) (define-public perl-mail-spf - (package - (name "perl-mail-spf") - (version "v2.9.0") - (source - (origin - (method url-fetch) - (uri (string-append - "mirror://cpan/authors/id/J/JM/JMEHNLE/mail-spf/Mail-SPF-" + (package + (name "perl-mail-spf") + (version "2.9.0") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://cpan/authors/id/J/JM/JMEHNLE/mail-spf/Mail-SPF-v" version ".tar.gz")) - (sha256 - (base32 - "0qk1rfgfm5drj4iyniiabrasrpqv570vzhgz66lwgb67y4amkjv1")))) - (build-system perl-build-system) - (native-inputs - `(("perl-module-build" ,perl-module-build) - ("perl-net-dns-resolver-programmable" - ,perl-net-dns-resolver-programmable))) - (arguments - `(#:phases (modify-phases %standard-phases - (add-before 'configure 'modify-Build.PL - (lambda* (#:key outputs #:allow-other-keys) - (substitute* "Build.PL" - (("'/usr/sbin'") (string-append "'" - (assoc-ref outputs "out") - "/sbin'"))) + (sha256 + (base32 "0qk1rfgfm5drj4iyniiabrasrpqv570vzhgz66lwgb67y4amkjv1")))) + (build-system perl-build-system) + (native-inputs + `(("perl-module-build" ,perl-module-build) + ("perl-net-dns-resolver-programmable" + ,perl-net-dns-resolver-programmable))) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'configure 'modify-Build.PL + (lambda* (#:key outputs #:allow-other-keys) + (substitute* "Build.PL" + (("'/usr/sbin'") (string-append "'" + (assoc-ref outputs "out") + "/sbin'"))) #t))))) - (inputs - `(("perl-error" ,perl-error) - ("perl-net-dns" ,perl-net-dns) - ("perl-netaddr-ip" ,perl-netaddr-ip) - ("perl-uri" ,perl-uri))) - (home-page - "https://metacpan.org/release/Mail-SPF") - (synopsis - "Perl implementation of Sender Policy Framework") - (description "Mail::SPF is the Sender Policy Framework implemented + (inputs + `(("perl-error" ,perl-error) + ("perl-net-dns" ,perl-net-dns) + ("perl-netaddr-ip" ,perl-netaddr-ip) + ("perl-uri" ,perl-uri))) + (home-page "https://metacpan.org/release/Mail-SPF") + (synopsis "Perl implementation of Sender Policy Framework") + (description "Mail::SPF is the Sender Policy Framework implemented in Perl.") - (license bsd-3))) + (license bsd-3))) (define-public mb2md (package @@ -1851,15 +1947,14 @@ converts them to maildir format directories.") (define-public mpop (package (name "mpop") - (version "1.4.2") + (version "1.4.4") (source (origin (method url-fetch) (uri (string-append "https://marlam.de/mpop/releases/" - name "-" version ".tar.xz")) + "mpop-" version ".tar.xz")) (sha256 - (base32 - "1rx5mhgqkm7swbynrhbsz32v85h0rydb4kqfgfs9jrznd9d14m2d")))) + (base32 "0j21cp8bw12vgfymxi3i4av3j97lrcyb5y9xa3mb59wr17izz73x")))) (build-system gnu-build-system) (inputs `(("gnutls" ,gnutls) @@ -2017,7 +2112,7 @@ transfer protocols.") (modify-phases %standard-phases ;; Fix some incorrectly hard-coded external tool file names. (add-after 'unpack 'patch-FHS-file-names - (lambda* (#:key inputs #:allow-other-keys) + (lambda _ (substitute* "smtpd/smtpctl.c" (("/bin/cat") (which "cat")) (("/bin/sh") (which "sh"))) @@ -2045,6 +2140,81 @@ e-mails with other systems speaking the SMTP protocol.") (license (list bsd-2 bsd-3 bsd-4 (non-copyleft "file://COPYING") public-domain isc license:openssl)))) +;; OpenSMTPd 6.4 introduced a new and incompatible configuration file format. +;; Use a different name, for now, to avoid auto-upgrades and broken mail boxes. +;; OPENSMTP-CONFIGURATION in (gnu services mail) will also need an overhaul. +(define-public opensmtpd-next + (package + (name "opensmtpd-next") + (version "6.4.1p2") + (source + (origin + (method url-fetch) + (uri (string-append "https://www.opensmtpd.org/archives/" + "opensmtpd-" version ".tar.gz")) + (sha256 + (base32 "0cppqlx4fk6l8rbim5symh2fm1kzshf421256g596j6c9f9q96xn")))) + (build-system gnu-build-system) + (inputs + `(("bdb" ,bdb) + ("libasr" ,libasr) + ("libevent" ,libevent) + ("libressl" ,libressl) + ("linux-pam" ,linux-pam) + ("zlib" ,zlib))) + (native-inputs + `(("bison" ,bison) + ("groff" ,groff))) ; for man pages + (arguments + `(#:configure-flags + (list "--localstatedir=/var" + ;; This is the default only if it exists at build time—it doesn't. + "--with-path-socket=/var/run" + "--with-path-CAfile=/etc/ssl/certs/ca-certificates.crt" + "--with-user-smtpd=smtpd" + "--with-user-queue=smtpq" "--with-group-queue=smtpq" + "--with-auth-pam" + "--with-table-db") + #:phases + (modify-phases %standard-phases + ;; Fix some incorrectly hard-coded external tool file names. + (add-after 'unpack 'patch-FHS-file-names + (lambda _ + (substitute* "smtpd/smtpctl.c" + ;; ‘gzcat’ is auto-detected at compile time, but ‘cat’ isn't. + (("/bin/cat") (which "cat"))) + (substitute* "smtpd/mda_unpriv.c" + (("/bin/sh") (which "sh"))) + #t)) + ;; OpenSMTPD provides a single smtpctl utility to control both the + ;; daemon and the local submission subsystem. To accomodate systems + ;; that require historical interfaces such as sendmail, newaliases or + ;; makemap, smtpctl operates in compatibility mode if called with the + ;; historical name. + (add-after 'install 'install-compability-links + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (sbin (string-append out "/sbin/"))) + (for-each (lambda (command) + (symlink "smtpctl" (string-append sbin command))) + (list "mailq" "makemap" "newaliases" + "send-mail" "sendmail"))) + #t))))) + (synopsis "Lightweight SMTP daemon") + (description + "OpenSMTPD is an implementation of server-side @acronym{SMTP, Simple Mail +Transfer Protocol}, with some additional standard extensions. It allows +ordinary machines to exchange e-mails with other systems speaking the SMTP +protocol, or to deliver them to local users. + +In order to simplify the use of SMTP, OpenSMTPD implements a smaller set of +functionality than those available in other SMTP daemons. The objective is to +provide enough features to satisfy typical usage at the risk of unsuitability +to esoteric or niche requirements.") + (home-page "https://www.opensmtpd.org") + (license (list bsd-2 bsd-3 bsd-4 (non-copyleft "file://COPYING") + public-domain isc license:openssl)))) + (define-public opensmtpd-extras (package (name "opensmtpd-extras") @@ -2422,15 +2592,14 @@ tools and applications: (define-public balsa (package (name "balsa") - (version "2.5.6") + (version "2.5.7") (source (origin (method url-fetch) (uri (string-append "https://pawsa.fedorapeople.org/balsa/" name "-" version ".tar.bz2")) (sha256 - (base32 - "17k6wcsl8gki7cskr3hhmfj6n54rha8ca3b6fzd8blsl5shsankx")))) + (base32 "0yfqhfpwm1qnwmbpr6dfn2f5w8a8xxq51pn8ypgg0fw973l1c1nx")))) (build-system gnu-build-system) (arguments `(#:configure-flags @@ -2452,7 +2621,7 @@ tools and applications: ("gnutls" ,gnutls) ("gpgme" ,gpgme) ("gtk+" ,gtk+) - ("gtksourceview" ,gtksourceview) + ("gtksourceview" ,gtksourceview-3) ("gtkspell3" ,gtkspell3) ("libcanberra" ,libcanberra) ("libesmtp" ,libesmtp) @@ -2688,3 +2857,103 @@ replacement for the @code{urlview} program.") (synopsis "Debbugs web interface") (description "Mumi is a Debbugs web interface.") (license agpl3+)))) + +(define-public ytnef + (package + (name "ytnef") + (version "1.9.3") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Yeraze/ytnef.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "07h48s5qf08503pp9kafqbwipdqghiif22ghki7z8j67gyp04l6l")))) + (build-system gnu-build-system) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("libtool" ,libtool))) + (home-page "https://github.com/Yeraze/ytnef/") + (synopsis "TNEF stream reader for winmail.dat files") + (description "This package provides a TNEF stream reader library and +related tools to process winmail.dat files.") + (license gpl2+))) + +(define-public public-inbox + (let ((commit "3cf66514aea9e958999973b9f104473b6d800fbe") + (revision "0")) + (package + (name "public-inbox") + (version (git-version "1.0.0" revision commit)) + (source + (origin (method git-fetch) + (uri (git-reference + (url "https://public-inbox.org") + (commit commit))) + (sha256 + (base32 + "1sxycwlm2n6p544gn9f0vf3xs6gz8vdswdhs2ha6fka8mgabvmdh")) + (file-name (git-file-name name version)))) + (build-system perl-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (add-before 'configure 'qualify-paths + (lambda _ + ;; Use absolute paths for 'xapian-compact'. + (let ((xapian-compact (which "xapian-compact"))) + (substitute* "script/public-inbox-compact" + (("xapian-compact") xapian-compact))) + #t)) + (add-before 'check 'pre-check + (lambda _ + (substitute* "t/spawn.t" + (("\\['env'\\]") (string-append "['" (which "env") "']"))) + #t)) + (add-after 'install 'wrap-programs + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (for-each + (lambda (prog) + (wrap-program prog + ;; Let those scripts find their perl modules. + `("PERL5LIB" ":" prefix + (,(string-append out "/lib/perl5/site_perl") + ,(getenv "PERL5LIB"))) + ;; 'git' is invoked in various files of the PublicInbox + ;; perl module. + `("PATH" ":" prefix + (,(string-append (assoc-ref inputs "git") "/bin"))))) + (find-files (string-append out "/bin")))) + #t))))) + (native-inputs + `(("git" ,git) + ("xapian" ,xapian))) + (inputs + `(("perl-danga-socket" ,perl-danga-socket) + ("perl-dbd-sqlite" ,perl-dbd-sqlite) + ("perl-dbi" ,perl-dbi) + ("perl-email-address-xs" ,perl-email-address-xs) + ("perl-email-mime-contenttype" ,perl-email-mime-contenttype) + ("perl-email-mime" ,perl-email-mime) + ("perl-email-simple" ,perl-email-simple) + ("perl-filesys-notify-simple" ,perl-filesys-notify-simple) + ("perl-plack-middleware-deflater" ,perl-plack-middleware-deflater) + ("perl-plack-middleware-reverseproxy" ,perl-plack-middleware-reverseproxy) + ("perl-plack" ,perl-plack) + ("perl-search-xapian" ,perl-search-xapian) + ("perl-timedate" ,perl-timedate) + ("perl-uri-escape" ,perl-uri-escape) + ;; For testing. + ("perl-ipc-run" ,perl-ipc-run) + ("perl-xml-feed" ,perl-xml-feed))) + (home-page "https://public-inbox.org/README.html") + (synopsis "Archive mailing lists in git repositories") + (description + "public-inbox implements the sharing of an email inbox via git to +complement or replace traditional mailing lists. Readers may read via NNTP, +Atom feeds or HTML archives.") + (license agpl3+))))