diff options
Diffstat (limited to 'gnu/packages/mail.scm')
-rw-r--r-- | gnu/packages/mail.scm | 388 |
1 files changed, 193 insertions, 195 deletions
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm index 9dcc4660d0..efed5867df 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm @@ -32,7 +32,7 @@ ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com> ;;; Copyright © 2020 Justus Winter <justus@sequoia-pgp.org> ;;; Copyright © 2020 Eric Brown <ecbrown@ericcbrown.com> -;;; Copyright © 2020, 2021, 2022, 2024 Maxim Cournoyer <maxim.cournoyer@gmail.com> +;;; Copyright © 2020, 2021, 2022, 2024 Maxim Cournoyer <maxim@guixotic.coop> ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de> ;;; Copyright © 2020, 2021 Alexey Abramov <levenson@mmer.org> ;;; Copyright © 2020 Tim Gesthuizen <tim.gesthuizen@yahoo.de> @@ -64,6 +64,7 @@ ;;; Copyright © 2025 Jelle Licht <jlicht@fsfe.org> ;;; Copyright © 2024 Janneke Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2025 Zacchaeus <eikcaz@zacchae.us> +;;; Copyright © 2025 Andreas Enge <andreas@enge.fr> ;;; ;;; This file is part of GNU Guix. ;;; @@ -146,6 +147,7 @@ #:use-module (gnu packages lua) #:use-module (gnu packages m4) #:use-module (gnu packages man) + #:use-module (gnu packages maths) #:use-module (gnu packages mercury) #:use-module (gnu packages ncurses) #:use-module (gnu packages nettle) @@ -501,16 +503,16 @@ Maildir, MH, MMDF or mbox folders.") (define-public nmail (package (name "nmail") - (version "4.54") + (version "5.5.1") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/d99kris/nmail/") - (commit (string-append "v" version)))) + (url "https://github.com/d99kris/nmail/") + (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0bk2kq0pk1r4w5xv94yh37vrwxs8lczjg11gfraxh9cxyjigwsrp")))) + (base32 "1ikl5n6s08gh62cs54mr874walm440w0nxmi0fgnx8giaj3mc436")))) (build-system cmake-build-system) (arguments (list @@ -528,9 +530,9 @@ Maildir, MH, MMDF or mbox folders.") ncurses openssl sqlite - (list util-linux "lib") xapian - zlib)) + zlib + (list util-linux "lib"))) (native-inputs (list pkg-config)) (home-page "https://github.com/d99kris/nmail") (synopsis "Terminal-based email client") @@ -1174,28 +1176,38 @@ MIME-encoded email package.") license:public-domain))))) ; mailcap and mime.types (define-public bogofilter +;; This is version 1.3.0rc1 from 2025-04-18. +(let ((revision "0") + (commit "e264b66d44fb8a908965b6f1f98497048a0db98b")) (package (name "bogofilter") - (version "1.2.5") + (version (git-version "1.2.5" revision commit)) (source (origin - (method url-fetch) - (uri (string-append "mirror://sourceforge/bogofilter/bogofilter-stable/" - "bogofilter-" version ".tar.xz")) + (method git-fetch) + (uri (git-reference + (url "https://gitlab.com/bogofilter/bogofilter") + (commit commit))) + (file-name (git-file-name name version)) (sha256 - (base32 "1sl9xrnnlk2sn8gmibhn8li09vnansjbxb9l1182qmgz7cvs2j1j")))) + (base32 "1xplhq674gpcinj8c4fgivalqzjayiwq3ykplg3cg25f2wxlzq7z")))) (build-system gnu-build-system) (arguments - '(#:phases - (modify-phases %standard-phases - (add-before 'check 'pre-check - (lambda _ - (substitute* "src/tests/t.frame" - (("GREP=/bin/grep") - (string-append "GREP=" (which "grep") "\n"))) - #t))))) - (native-inputs (list flex)) - (inputs (list bdb)) + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'chdir + (lambda _ + (chdir "bogofilter"))) + (add-before 'check 'pre-check + (lambda _ + (substitute* "src/tests/t.frame" + (("GREP=/bin/grep") + (string-append "GREP=" (which "grep") "\n")))))))) + (native-inputs (list autoconf automake gettext-minimal pkg-config + flex + docbook-xml-4.1.2 docbook-xsl libxml2 perl xmlto)) + (inputs (list gsl sqlite)) (home-page "https://bogofilter.sourceforge.io/") (synopsis "Mail classifier based on a Bayesian filter") (description @@ -1203,7 +1215,7 @@ MIME-encoded email package.") (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 license:gpl3+))) + (license license:gpl3+)))) (define-public offlineimap3 ;; No release supporting Python3.11, but the latest commit contains it, see @@ -1403,54 +1415,43 @@ attachments, create new maildirs, and so on.") (define-public alot (package (name "alot") - (version "0.10") - (source (origin - (method git-fetch) - ;; package author intends on distributing via github rather - ;; than pypi: - ;; https://github.com/pazz/alot/issues/877#issuecomment-230173331 - (uri (git-reference - (url "https://github.com/pazz/alot") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0awf1phdy1wqm01cy9zmvqlw6c8pvkxm2f9ncjd0cmzxqnmq1dyn")))) - (build-system python-build-system) + (version "0.11") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/pazz/alot") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "19rn587n81gwx1f49bvm34m60708h5z47hcgiaqlpsznbv792xlr")))) + (build-system pyproject-build-system) (arguments - `(#:phases - (modify-phases %standard-phases - (add-before 'check 'fix-tests - (lambda* (#:key inputs #:allow-other-keys) - (let ((gnupg (assoc-ref inputs "gnupg"))) - (substitute* "tests/test_crypto.py" - (("gpg2") (string-append gnupg "/bin/gpg"))) - #t))) - (add-before 'check 'disable-failing-tests - ;; FIXME: Investigate why these tests are failing. - (lambda _ - (substitute* "tests/test_helper.py" - (("def test_env_set") "def _test_env_set")) - (substitute* "tests/commands/test_global.py" - (("def test_no_spawn_no_stdin_attached") - "def _test_no_spawn_no_stdin_attached")) - ;; FIXME: Investigate why this test hangs. - (substitute* "tests/db/test_manager.py" - (("def test_save_named_query") - "def _test_save_named_query")) - #t))))) + (list + ;; TODO: Tests fail with error: alot.settings.errors.ConfigError: + ;; failed to read notmuch config with command + ;; + ;; CI is complex, see: <.github/workflows/test.yml>. + #:tests? #f + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'relax-requirements + (lambda _ + (substitute* "pyproject.toml" + ;; python-gpg is added and it's on the latest version. + (("gpg>1.10.0") "gpg"))))))) (native-inputs - (list procps python-mock)) + (list procps + python-setuptools)) (inputs (list gnupg - python-magic python-configobj + python-gpg + python-notmuch2 + python-magic python-twisted - python-service-identity python-urwid - python-urwidtrees - python-gpg - python-notmuch2)) + python-urwidtrees)) (home-page "https://github.com/pazz/alot") (synopsis "Command-line MUA using Notmuch") (description @@ -1673,11 +1674,8 @@ useful for email address completion.") (("libnotmuch\\.so\\.") (format #f "~a/lib/libnotmuch.so." #$(this-package-input "notmuch"))))))))) - (native-inputs - (list python-setuptools - python-wheel)) - (inputs - (list notmuch)) + (native-inputs (list python-setuptools)) + (inputs (list notmuch)) (home-page (package-home-page notmuch)) (synopsis "Python bindings of the Notmuch mail indexing library") (description @@ -1690,7 +1688,6 @@ and search library.") (inherit python-notmuch) (name "python-notmuch2") (version (package-version notmuch)) - (propagated-inputs (list python-cffi)) (arguments (list #:phases @@ -1719,6 +1716,8 @@ and search library.") "'/dev/null'") (("version=VERSION,") (string-append "version='" #$version "',")))))))) + (propagated-inputs (list python-cffi)) + (native-inputs (list python-pytest python-pytest-cov python-setuptools)) (synopsis "Pythonic bindings for the notmuch mail database using CFFI") (license license:gpl3+))) @@ -1895,7 +1894,17 @@ MailCore 2.") "09b89wg63hg502hsz592cd2h87wdprb1dq1k1y07n89hym2q56d6")))) (build-system gnu-build-system) (arguments - `(#:tests? #f)) + (list + #:tests? #f + #:configure-flags + #~(list "CFLAGS=-g -O2 -DSTDC_HEADERS") + #:phases + #~(modify-phases %standard-phases + (add-before 'configure 'fix-includes + (lambda _ + (substitute* "config.h" + (("#include <stdlib.h>" all) + (string-append all "\n#include <unistd.h>")))))))) (synopsis "Portrait image compressor") (description "This package takes your 48x48x1 portrait image and compresses it.") @@ -2674,22 +2683,24 @@ format and headers.") (license license:perl-license))) (define-public libesmtp + (let ((commit "335ee8d2fa5cb7d30db7b818ec05563ad139ee2f") + (revision "0")) (package (name "libesmtp") - (version "1.1.0") + (version (git-version "1.1.0" revision commit)) (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/libesmtp/libESMTP") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 "1bhh8hlsl9597x0bnfl563k2c09b61qnkb9mfyqcmzlq63m1zw5y")))) + (method git-fetch) + (uri (git-reference + (url "https://github.com/libesmtp/libESMTP") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1b6s6xyap9g4irw6wl9rhkvjjn7cc5q7xkxx5z0r1x1ab6fxn6p0")))) (build-system meson-build-system) (propagated-inputs (list openssl)) - (home-page "http://www.stafford.uklinux.net/libesmtp/") + (home-page "https://libesmtp.github.io/") (synopsis "Library for sending mail via remote hosts using SMTP") (description "libESMTP is an @acronym{SMTP, Simple Mail Transfer Protocol} client that @@ -2705,7 +2716,7 @@ transparently handles many SMTP extensions including authentication, @acronym{TLS, Transport-Level Security}, and PIPELINING for performance. Even without a pipelining server, libESMTP offers much better performance than would be expected from a simple client.") - (license (list license:lgpl2.1+ license:gpl2+)))) + (license (list license:lgpl2.1+ license:gpl2+))))) (define-public esmtp (package @@ -2829,27 +2840,36 @@ maintained.") (define-public khard (package (name "khard") - (version "0.19.1") + (version "0.20.0") (source (origin (method url-fetch) (uri (pypi-uri name version)) (sha256 (base32 - "1464j728hjjpzlc89v4rbml3p4b38zp1igjd9yq3xnn3lc6hmwsr")))) - (build-system python-build-system) + "1l5xkdi0f8krvy407q4qzm2n96nyhcjjhdp7v5f0n18wy36353qp")))) + (build-system pyproject-build-system) (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'install 'install-completions - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (zsh (string-append out "/share/zsh/site-functions"))) - (copy-recursively "misc/zsh" zsh))))))) + (list + #:test-flags + #~(list "-k" + (string-join + (list "not test_sorting_of_korean_names" + "test_sort_order_for_accentuated_names" + ;; These two only fail with pytest + "test_edit_source_file_without_modifications" + "test_simple_edit_without_modification") + " and not ")) + #:phases + #~(modify-phases %standard-phases + (add-after 'install 'install-completions + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (zsh (string-append out "/share/zsh/site-functions"))) + (copy-recursively "misc/zsh" zsh))))))) (native-inputs - (list python-setuptools-scm)) + (list python-pytest python-setuptools python-setuptools-scm)) (inputs - (list python-atomicwrites python-configobj python-ruamel.yaml - python-unidecode python-vobject)) + (list python-configobj python-ruamel.yaml python-vobject)) (synopsis "Console address book using CardDAV") (description "Khard is an address book for the console. It creates, reads, modifies and removes CardDAV address book entries at your local machine. For @@ -3849,16 +3869,21 @@ which sends emails to HyperKitty, the official Mailman3 web archiver.") (license license:gpl3+))) (define-public python-hyperkitty + ;; 1.3.12 was released in 2024 where master provides comparability with + ;; Django 5, use the latest commit instead of the tag for now. + (let ((commit "9a008473fadb95370cd54b0782df9fb956e323c0") + (revision "0")) (package (name "python-hyperkitty") - (version "1.3.12") + (version (git-version "1.3.12" revision commit)) (source - (origin - (method url-fetch) - (uri (pypi-uri "hyperkitty" version)) - (sha256 - (base32 - "078nrxkwdrv4d7ysdzp1c2dl5nm4fvxnpn6mq6lrxg65gs9q5dfy")))) + (origin + (method git-fetch) + (uri (git-reference + (url "https://gitlab.com/mailman/hyperkitty") + (commit commit))) + (sha256 + (base32 "011mv6xn2cry0yr30qc1219k2xcjjilnb8mflvzlf77y83m4d1vb")))) (build-system pyproject-build-system) (arguments (list @@ -3902,7 +3927,7 @@ which sends emails to HyperKitty, the official Mailman3 web archiver.") "The hyperkitty Django app provides a web user interface to access GNU Mailman3 archives, and manage it. This interface uses django, and requires some configuration.") - (license license:gpl3))) ; Some files are gpl2+ + (license license:gpl3)))) ; Some files are gpl2+ (define-public postorius (package @@ -4342,16 +4367,16 @@ It is a replacement for the @command{urlview} program.") (define-public mumi (package (name "mumi") - (version "0.13.0") + (version "0.14.0") (source (origin (method git-fetch) (uri (git-reference - (url "https://git.savannah.gnu.org/git/guix/mumi.git/") + (url "https://codeberg.org/guix/mumi.git") (commit version))) (file-name (git-file-name name version)) (sha256 (base32 - "04mcd1xkdpvxlvpf4k4mvnwi06sdy8vy1di6gxxsr9msgdb366ir")))) + "1v5gjzh8idz926518c0bv0qsmyggr6lvqn5vksf5j0qdh6r6dar7")))) (build-system gnu-build-system) (arguments (list @@ -4644,40 +4669,6 @@ complement or replace traditional mailing lists. Readers may read via NNTP, IMAP, Atom feeds or HTML archives.") (license license:agpl3+))) -(define-public sylpheed - (package - (name "sylpheed") - (version "3.7.0") - (source (origin - (method url-fetch) - (uri (string-append "https://sylpheed.sraoss.jp/sylpheed/v3.7/" - name "-" version ".tar.xz")) - (sha256 - (base32 - "0j9y5vdzch251s264diw9clrn88dn20bqqkwfmis9l7m8vmwasqd")))) - (build-system gnu-build-system) - (native-inputs - (list pkg-config)) - (inputs - (list bogofilter - compface - gnupg-1 - gpgme - gtk+-2 - gtkspell3 - libnsl - openldap - openssl)) - (home-page "https://sylpheed.sraoss.jp/en/") - (synopsis "Lightweight GTK+ email client") - (description - "Sylpheed is a simple, lightweight but featureful, and easy-to-use e-mail -client. Sylpheed provides intuitive user-interface. Sylpheed is also -designed for keyboard-oriented operation.") - (properties '((release-monitoring-url - . "https://sylpheed.sraoss.jp/en/download.html"))) - (license license:gpl2+))) - (define-public python-authres (package (name "python-authres") @@ -4726,23 +4717,23 @@ and Conformance} (uri (pypi-uri "dkimpy" version)) (sha256 (base32 "088iz5cqjqh4c7141d94pvn13bh25aizqlrifwv6fs5g16zj094s")))) - (build-system python-build-system) + (build-system pyproject-build-system) (arguments - '(#:phases - (modify-phases %standard-phases - (add-after 'patch-source-shebangs 'patch-more-source - (lambda* (#:key inputs #:allow-other-keys) - (let ((openssl (assoc-ref inputs "openssl"))) - (substitute* "dkim/dknewkey.py" - (("/usr/bin/openssl") (string-append openssl "/bin/openssl")))) - #t)) - (replace 'check - (lambda _ - (invoke "python" "test.py")))))) + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'patch-source-shebangs 'patch-more-source + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "dkim/dknewkey.py" + (("/usr/bin/openssl") + (search-input-file inputs "bin/openssl"))))) + (replace 'check + (lambda _ + (invoke "python" "test.py")))))) (propagated-inputs (list python-dnspython)) (native-inputs - (list python-authres python-pynacl)) + (list python-authres python-pynacl python-setuptools python-wheel)) (inputs (list openssl)) (home-page "https://launchpad.net/dkimpy") @@ -4766,11 +4757,15 @@ the RFC 8617 Authenticated Received Chain (ARC) protocol.") (base32 "12hl93336w64iyqalpv4rma2ijigav68qy1xmgziibdi7inxr3hi")))) (build-system pyproject-build-system) + (arguments + (list + ;; dns.resolver.NoResolverConfiguration: cannot open /etc/resolv.conf + #:test-flags #~(list "-k" "not test_authenticate_dmarc_psdsub"))) (propagated-inputs (list python-authres python-dkimpy python-dnspython python-publicsuffix2)) (native-inputs - (list python-setuptools python-wheel)) + (list python-pytest python-setuptools)) (home-page "https://github.com/ValiMail/authentication-headers") (synopsis "Library wrapping email authentication header verification and generation") (description @@ -4783,38 +4778,40 @@ DKIM and ARC sign messages and output the corresponding signature headers.") (license (list license:zpl2.1 license:zlib license:mpl2.0)))) (define-public python-aiosmtpd - (package - (name "python-aiosmtpd") - (version "1.4.6") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/aio-libs/aiosmtpd") - (commit (string-append "v" version)))) - (sha256 - (base32 "0b5y94zc8pq75sjwsifblzgjnliyclkwypi68b2zffrxcdnz27r2")) - (file-name (git-file-name name version)))) - (build-system pyproject-build-system) - (arguments - ;; This QA test requires git. - (list #:test-flags ''("-k" "not test_ge_master"))) - (native-inputs - (list python-pytest - python-pytest-asyncio - python-pytest-cov - python-pytest-mock - python-setuptools - python-wheel)) - (propagated-inputs - (list python-atpublic)) - (home-page "https://aiosmtpd.readthedocs.io/") - (synopsis "Asyncio based SMTP server") - (description - "This project is a reimplementation of the Python stdlib @code{smtpd.py} + ;; Tests run fixed on not yet released version. + (let ((commit "98f578389ae86e5345cc343fa4e5a17b21d9c96d") + (revision "0")) + (package + (name "python-aiosmtpd") + (version (git-version "1.4.6" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/aio-libs/aiosmtpd") + (commit commit))) + (sha256 + (base32 "1pmvlzxfcqjplvn2bzi9jd3m3941ff7nlgxxfwc7pzhmazlkqf8z")) + (file-name (git-file-name name version)))) + (build-system pyproject-build-system) + (arguments + ;; This QA test requires git. + (list #:test-flags ''("-k" "not test_ge_master"))) + (native-inputs + (list python-pytest + python-pytest-cov + python-pytest-mock + python-setuptools)) + (propagated-inputs + (list python-atpublic + python-attrs)) + (home-page "https://aiosmtpd.readthedocs.io/") + (synopsis "Asyncio based SMTP server") + (description + "This project is a reimplementation of the Python stdlib @code{smtpd.py} based on asyncio.") - (license (list license:asl2.0 - license:lgpl3)))) ; only for setup_helpers.py + (license (list license:asl2.0 + license:lgpl3))))) ; only for setup_helpers.py (define-public python-imaplib2 (package @@ -5191,7 +5188,7 @@ remote SMTP server.") (define-public aerc (package (name "aerc") - (version "0.20.1") + (version "0.21.0") (source (origin (method git-fetch) (uri (git-reference @@ -5200,7 +5197,7 @@ remote SMTP server.") (file-name (git-file-name name version)) (sha256 (base32 - "04412inhzj8vwybafqz6nw8wrsyf51zjv0881aacr6zc9bfcq510")))) + "10pkgh8rk1michv0qva4l4mi0pnxgx0s8r273gh5xl41ic0cq5ah")))) (build-system go-build-system) (arguments (list #:import-path "git.sr.ht/~rjarry/aerc" @@ -5266,7 +5263,6 @@ remote SMTP server.") (list go-git-sr-ht-rjarry-go-opt-v2 go-git-sr-ht-rockorager-go-jmap go-git-sr-ht-rockorager-vaxis - go-github-com-protonmail-go-crypto go-github-com-arran4-golang-ical go-github-com-danwakefield-fnmatch go-github-com-emersion-go-imap @@ -5278,13 +5274,14 @@ remote SMTP server.") go-github-com-emersion-go-pgpmail go-github-com-emersion-go-sasl go-github-com-emersion-go-smtp + ;; go-github-com-fsnotify-fsevents ;macOS FS notifications for Go go-github-com-fsnotify-fsnotify - go-github-com-gatherstars-com-jwz go-github-com-go-ini-ini go-github-com-lithammer-fuzzysearch go-github-com-mattn-go-isatty go-github-com-mattn-go-runewidth go-github-com-pkg-errors + go-github-com-protonmail-go-crypto go-github-com-riywo-loginshell go-github-com-stretchr-testify go-github-com-syndtr-goleveldb @@ -5312,16 +5309,16 @@ features: (define-public hydroxide (package (name "hydroxide") - (version "0.2.29") + (version "0.2.30") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/emersion/hydroxide") - (commit (string-append "v" version)))) + (url "https://github.com/emersion/hydroxide") + (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "11gbikrgm7nf0zjav64202wsnr9pvrmslm2rzg9d9rbvwdqcq1jl")))) + (base32 "12mfly2nnl1zrwjnnwigmi2kkn0aw8jvhfpcbsyqg4xnhj8gqd1y")))) (build-system go-build-system) (arguments (list @@ -5329,15 +5326,16 @@ features: #:import-path "github.com/emersion/hydroxide/cmd/hydroxide" #:unpack-path "github.com/emersion/hydroxide")) (native-inputs - (list go-github-com-protonmail-go-crypto - go-github-com-boltdb-bolt - go-github-com-emersion-go-bcrypt + (list go-github-com-emersion-go-bcrypt go-github-com-emersion-go-imap go-github-com-emersion-go-mbox go-github-com-emersion-go-message + go-github-com-emersion-go-sasl go-github-com-emersion-go-smtp go-github-com-emersion-go-vcard go-github-com-emersion-go-webdav + go-github-com-protonmail-go-crypto + go-go-etcd-io-bbolt go-golang-org-x-crypto go-golang-org-x-term)) (home-page "https://github.com/emersion/hydroxide") |