services: Make 'static-networking' extensible.
[jackhill/guix/guix.git] / gnu / packages / mail.scm
CommitLineData
a661e420 1;;; GNU Guix --- Functional package management for GNU
05aa576b 2;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
ee2b2d2f 3;;; Copyright © 2014, 2015, 2017 Mark H Weaver <mhw@netris.org>
29a7c98a 4;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net>
98e9e22f 5;;; Copyright © 2014 Sou Bunnbu <iyzsong@gmail.com>
f58f767b 6;;; Copyright © 2014 Julien Lepiller <julien@lepiller.eu>
66cc3ab2 7;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
17dd4329 8;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
f6292baf 9;;; Copyright © 2015, 2016 Eric Bavier <bavier@member.fsf.org>
2e88d113 10;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
21565719 11;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
34dd26af 12;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org>
8a75c589 13;;; Copyright © 2016 Al McElrath <hello@yrns.org>
823e2ed4 14;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
e90819c4 15;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
99404fff 16;;; Copyright © 2016 Alex Kost <alezost@gmail.com>
a2cb16b0 17;;; Copyright © 2016 Troy Sankey <sankeytms@gmail.com>
3163a289 18;;; Copyright © 2016, 2017 <contact.ng0@cryptolab.net>
24262239 19;;; Copyright © 2016 Clément Lassieur <clement@lassieur.org>
e0d7b421 20;;; Copyright © 2016 Arun Isaac <arunisaac@systemreboot.net>
5d87088c 21;;; Copyright © 2016 John Darrington <jmd@gnu.org>
7a6213cb 22;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com>
a661e420
LC
23;;;
24;;; This file is part of GNU Guix.
25;;;
26;;; GNU Guix is free software; you can redistribute it and/or modify it
27;;; under the terms of the GNU General Public License as published by
28;;; the Free Software Foundation; either version 3 of the License, or (at
29;;; your option) any later version.
30;;;
31;;; GNU Guix is distributed in the hope that it will be useful, but
32;;; WITHOUT ANY WARRANTY; without even the implied warranty of
33;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
34;;; GNU General Public License for more details.
35;;;
36;;; You should have received a copy of the GNU General Public License
37;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
38
1fdd3ee2 39(define-module (gnu packages mail)
59a43334 40 #:use-module (gnu packages)
d983a14f 41 #:use-module (gnu packages autotools)
d2938d59 42 #:use-module (gnu packages base)
e8435c4d 43 #:use-module (gnu packages backup)
ee886454 44 #:use-module (gnu packages bash)
f8ae32a2 45 #:use-module (gnu packages bison)
f58f767b 46 #:use-module (gnu packages curl)
4fd6bf53 47 #:use-module (gnu packages cyrus-sasl)
81ce19f4 48 #:use-module (gnu packages databases)
d983a14f 49 #:use-module (gnu packages dejagnu)
8b53366c 50 #:use-module (gnu packages dns)
7a6213cb 51 #:use-module (gnu packages documentation)
d2938d59 52 #:use-module (gnu packages emacs)
e8435c4d 53 #:use-module (gnu packages enchant)
e8435c4d 54 #:use-module (gnu packages ghostscript)
d2938d59 55 #:use-module (gnu packages glib)
e8435c4d 56 #:use-module (gnu packages gnome)
524e1df6 57 #:use-module (gnu packages gnupg)
152ffe7c 58 #:use-module (gnu packages groff)
d6e941bc 59 #:use-module (gnu packages gsasl)
e8435c4d 60 #:use-module (gnu packages gtk)
1ffa7090 61 #:use-module (gnu packages guile)
f8ae32a2 62 #:use-module (gnu packages flex)
e8435c4d 63 #:use-module (gnu packages libcanberra)
8b53366c 64 #:use-module (gnu packages libevent)
d6e941bc 65 #:use-module (gnu packages libidn)
d983a14f 66 #:use-module (gnu packages linux)
152ffe7c 67 #:use-module (gnu packages lua)
d983a14f 68 #:use-module (gnu packages m4)
1ffa7090 69 #:use-module (gnu packages ncurses)
66cc3ab2 70 #:use-module (gnu packages pcre)
13f04f48 71 #:use-module (gnu packages perl)
3919a31a 72 #:use-module (gnu packages python)
1ffa7090 73 #:use-module (gnu packages readline)
d2938d59 74 #:use-module (gnu packages search)
1ffa7090 75 #:use-module (gnu packages texinfo)
681a6588
MW
76 #:use-module (gnu packages compression)
77 #:use-module (gnu packages glib)
78 #:use-module (gnu packages pkg-config)
a7e59c50 79 #:use-module (gnu packages flex)
1bd3f849 80 #:use-module (gnu packages gdb)
6cf27c89 81 #:use-module (gnu packages man)
1bd3f849 82 #:use-module (gnu packages samba)
6cf27c89 83 #:use-module (gnu packages screen)
a7fd7b68 84 #:use-module (gnu packages tls)
be0c5733
DM
85 #:use-module (gnu packages networking)
86 #:use-module (gnu packages web)
f58f767b 87 #:use-module (gnu packages xml)
e8435c4d 88 #:use-module (gnu packages xorg)
d983a14f 89 #:use-module ((guix licenses)
61c30e9d 90 #:select (gpl2 gpl2+ gpl3 gpl3+ lgpl2.1 lgpl2.1+ lgpl3+
24262239 91 non-copyleft (expat . license:expat) bsd-3
8b53366c 92 public-domain bsd-4 isc (openssl . license:openssl)
ee6e780b 93 bsd-2 x11-style))
a661e420
LC
94 #:use-module (guix packages)
95 #:use-module (guix download)
f8ae32a2 96 #:use-module (guix git-download)
29a7c98a 97 #:use-module (guix utils)
681a6588 98 #:use-module (guix build-system gnu)
ebda902f 99 #:use-module (guix build-system perl)
24262239
CL
100 #:use-module (guix build-system python)
101 #:use-module (guix build-system trivial))
a661e420
LC
102
103(define-public mailutils
104 (package
105 (name "mailutils")
abe5d2dc 106 (version "3.1.1")
a661e420
LC
107 (source (origin
108 (method url-fetch)
109 (uri (string-append "mirror://gnu/mailutils/mailutils-"
110 version ".tar.bz2"))
111 (sha256
112 (base32
abe5d2dc 113 "1dpylyg79avi7brpkcmzaq7bqqkz45flp0ws6f2c8b1gyz4hdnzm"))))
a661e420
LC
114 (build-system gnu-build-system)
115 (arguments
de75f0b1
EF
116 '(#:phases
117 (modify-phases %standard-phases
118 (add-before 'build 'pre-build
119 (lambda _
120 ;; Use the right file name for `cat'.
121 (substitute* "testsuite/lib/mailutils.exp"
122 (("/bin/cat")
123 (which "cat")))
14253017 124
de75f0b1
EF
125 ;; Tests try to invoke 'maidag' such that it looks up the
126 ;; 'root' user, which does not exist in the build
127 ;; environment.
128 (substitute* "maidag/tests/testsuite"
129 (("root <") "nobody <")
130 (("spool/root") "spool/nobody")
131 (("root@localhost") "nobody@localhost"))
14253017 132
de75f0b1
EF
133 ;; The 'pipeact.at' tests generate a shell script; make
134 ;; sure it uses the right shell.
135 (substitute* '("sieve/tests/testsuite"
136 "mh/tests/testsuite")
137 (("#! /bin/sh")
138 (string-append "#!" (which "sh"))))
14253017 139
de75f0b1
EF
140 (substitute* "mh/tests/testsuite"
141 (("moreproc: /bin/cat")
142 (string-append "moreproc: " (which "cat"))))
14253017 143
de75f0b1
EF
144 ;; XXX: The comsatd tests rely on being able to open
145 ;; /dev/tty, but that gives ENODEV in the build
146 ;; environment. Thus, ignore test failures here.
147 (substitute* "comsat/tests/Makefile.in"
148 (("\\$\\(SHELL\\) \\$\\(TESTSUITE\\)" all)
149 (string-append "-" all)))
14253017 150
de75f0b1
EF
151 #t)))
152 ;; TODO: Add `--with-sql'.
abe5d2dc 153 #:configure-flags '("--sysconfdir=/etc")
a661e420
LC
154 #:parallel-tests? #f))
155 (inputs
156 `(("dejagnu" ,dejagnu)
157 ("m4" ,m4)
158 ("texinfo" ,texinfo)
159 ("guile" ,guile-2.0)
160 ("gnutls" ,gnutls)
161 ("ncurses" ,ncurses)
abe5d2dc 162 ("readline" ,readline)
a661e420 163 ("linux-pam" ,linux-pam)
3246cc91 164 ("libltdl" ,libltdl)
01eafd38 165 ("gdbm" ,gdbm)))
abe5d2dc 166 (home-page "https://www.gnu.org/software/mailutils/")
f50d2669 167 (synopsis "Utilities and library for reading and serving mail")
a661e420 168 (description
79c311b8
LC
169 "GNU Mailutils is a collection of programs for managing, viewing and
170processing electronic mail. It contains both utilities and server daemons
171and all operate in a protocol-agnostic way. The underlying libraries are
172also available, simplifying the addition of mail capabilities to new
173software.")
a661e420
LC
174 (license
175 ;; Libraries are under LGPLv3+, and programs under GPLv3+.
176 (list gpl3+ lgpl3+))))
d983a14f
AE
177
178(define-public fetchmail
179 (package
180 (name "fetchmail")
181 (version "6.3.26")
182 (source (origin
183 (method url-fetch)
184 (uri (string-append "mirror://sourceforge/fetchmail/branch_6.3/fetchmail-"
185 version ".tar.xz"))
186 (sha256
187 (base32
188 "0l78ayvi9dm8hd190gl139cs2xqsrf7r9ncilslw20mgvd6cbd3r"))))
189 (build-system gnu-build-system)
190 (inputs
191 `(("openssl" ,openssl)))
192 (arguments
193 `(#:configure-flags (list (string-append "--with-ssl="
194 (assoc-ref %build-inputs "openssl")))))
07af3e5e 195 (home-page "http://www.fetchmail.info/")
ae2189a9 196 (synopsis "Remote-mail retrieval and forwarding utility")
d983a14f
AE
197 (description
198 "Fetchmail is a full-featured, robust, well-documented remote-mail
199retrieval and forwarding utility intended to be used over on-demand
200TCP/IP links (such as SLIP or PPP connections). It supports every
201remote-mail protocol now in use on the Internet: POP2, POP3, RPOP, APOP,
202KPOP, all flavors of IMAP, ETRN, and ODMR. It can even support IPv6
203and IPSEC.
204
205Fetchmail retrieves mail from remote mail servers and forwards it via SMTP,
206so it can then be read by normal mail user agents such as mutt, elm
207or BSD Mail. It allows all your system MTA's filtering, forwarding, and
208aliasing facilities to work just as they would on normal mail.")
209 (license gpl2+))) ; most files are actually public domain or x11
13f04f48
AE
210
211(define-public mutt
212 (package
213 (name "mutt")
329e0a9c 214 (version "1.7.2")
13f04f48
AE
215 (source (origin
216 (method url-fetch)
d82633d0
AE
217 (uri (string-append "ftp://ftp.mutt.org/pub/mutt/mutt-"
218 version ".tar.gz"))
13f04f48
AE
219 (sha256
220 (base32
329e0a9c 221 "1yazrl82s9fxmamnlvwmsxhwrxnwv6kwakgfmawda8ndhwb50lqm"))
fc1adab1 222 (patches (search-patches "mutt-store-references.patch"))))
13f04f48
AE
223 (build-system gnu-build-system)
224 (inputs
4fd6bf53 225 `(("cyrus-sasl" ,cyrus-sasl)
b0bb0136 226 ("gdbm" ,gdbm)
524e1df6 227 ("gpgme" ,gpgme)
4fd6bf53 228 ("ncurses" ,ncurses)
13f04f48
AE
229 ("openssl" ,openssl)
230 ("perl" ,perl)))
231 (arguments
232 `(#:configure-flags '("--enable-smtp"
233 "--enable-imap"
234 "--enable-pop"
524e1df6 235 "--enable-gpgme"
b0bb0136 236 "--enable-hcache" ; for header caching
0323fe80 237 "--enable-sidebar"
13f04f48 238 "--with-ssl"
4fd6bf53 239 "--with-sasl"
13f04f48
AE
240 ;; so that mutt does not check whether the path
241 ;; exists, which it does not in the chroot
242 "--with-mailpath=/var/mail")))
243 (home-page "http://www.mutt.org/")
244 (synopsis "Mail client")
245 (description
246 "Mutt is a small but very powerful text-based mail client for Unix
247operating systems.")
248 (license gpl2+)))
681a6588
MW
249
250(define-public gmime
251 (package
252 (name "gmime")
ee2b2d2f 253 (version "2.6.22")
681a6588
MW
254 (source (origin
255 (method url-fetch)
75630043 256 (uri (string-append "mirror://gnome/sources/gmime/"
29a7c98a 257 (version-major+minor version)
681a6588
MW
258 "/gmime-" version ".tar.xz"))
259 (sha256
260 (base32
ee2b2d2f 261 "0fjmsphvz8srsmcdl4v13p2z4jp2migaybyny444hal4snbr0py2"))))
681a6588
MW
262 (build-system gnu-build-system)
263 (native-inputs
264 `(("pkg-config" ,pkg-config)
265 ("gnupg" ,gnupg))) ; for tests only
266 (inputs `(("glib" ,glib)
267 ("gpgme" ,gpgme)
268 ("zlib" ,zlib)))
269 (arguments
270 `(#:phases
cc955356
EF
271 (modify-phases %standard-phases
272 (add-after
273 'unpack 'patch-paths-in-tests
274 (lambda _
275 ;; The test programs run several programs using 'system' with
ae83dcf6 276 ;; hard-coded paths. Here we patch them all.
277 ;; We use ISO-8859-1 here because test-iconv.c contains
cc955356
EF
278 ;; raw byte sequences in several different encodings.
279 (with-fluids ((%default-port-encoding #f))
280 (substitute* (find-files "tests" "\\.c$")
281 (("(system *\\(\")(/[^ ]*)" all pre prog-path)
282 (let* ((base (basename prog-path))
ae83dcf6 283 (prog (which base)))
cc955356
EF
284 (string-append pre
285 (or prog (error "not found: " base))))))))))))
681a6588
MW
286 (home-page "http://spruce.sourceforge.net/gmime/")
287 (synopsis "MIME message parser and creator library")
288 (description
289 "GMime provides a core library and set of utilities which may be used for
290the creation and parsing of messages using the Multipurpose Internet Mail
291Extension (MIME).")
292 (license (list lgpl2.1+ gpl2+ gpl3+))))
293
a7e59c50
LC
294(define-public bogofilter
295 (package
296 (name "bogofilter")
297 (version "1.2.4")
298 (source (origin
299 (method url-fetch)
300 (uri (string-append "mirror://sourceforge/bogofilter/bogofilter-"
301 version "/bogofilter-"
302 version ".tar.bz2"))
303 (sha256
304 (base32
305 "1d56n2m9inm8gnzm88aa27xl2a7sp7aff3484vmflpqkinjqf0p1"))))
306 (build-system gnu-build-system)
307 (arguments
c55fa42b
EF
308 '(#:phases
309 (modify-phases %standard-phases
310 (add-before 'check 'pre-check
311 (lambda _
312 (substitute* "src/tests/t.frame"
313 (("GREP=/bin/grep")
314 (string-append "GREP=" (which "grep") "\n")))
315 #t)))))
a7e59c50
LC
316 (native-inputs `(("flex" ,flex)))
317 (inputs `(("bdb" ,bdb)))
318 (home-page "http://bogofilter.sourceforge.net/")
319 (synopsis "Mail classifier based on a Bayesian filter")
320 (description
321 "Bogofilter is a mail filter that classifies mail as spam or ham
322 (non-spam) by a statistical analysis of the message's header and
323content (body). The program is able to learn from the user's classifications
324and corrections. It is based on a Bayesian filter.")
325 (license gpl2)))
326
3919a31a
EB
327(define-public offlineimap
328 (package
329 (name "offlineimap")
d61b2482 330 (version "7.0.13")
3919a31a
EB
331 (source (origin
332 (method url-fetch)
333 (uri (string-append "https://github.com/OfflineIMAP/offlineimap/"
334 "archive/v" version ".tar.gz"))
f586c877 335 (file-name (string-append name "-" version ".tar.gz"))
3919a31a
EB
336 (sha256
337 (base32
d61b2482 338 "1kl72wcxnxb4y5lm2f7ymwjsisnnpwb4w971ajkxlsiwjhzq8i7p"))))
3919a31a 339 (build-system python-build-system)
7a6213cb
MB
340 (native-inputs
341 `(("asciidoc" ,asciidoc)
342 ("libxslt" ,libxslt))) ; for xsltproc
a4ea25d3
EF
343 (inputs `(("python2-pysqlite" ,python2-pysqlite)
344 ("python2-six" ,python2-six)))
3919a31a
EB
345 (arguments
346 ;; The setup.py script expects python-2.
347 `(#:python ,python-2
348 ;; Tests require a modifiable IMAP account.
42aa73b3
EF
349 #:tests? #f
350 #:phases
351 (modify-phases %standard-phases
7a6213cb
MB
352 (add-after 'build 'build-documentation
353 (lambda _
354 (substitute* "docs/Makefile"
355 ;; Prevent xmllint and xsltproc from downloading a DTD file.
356 (("a2x -v") "a2x --no-xmllint --xsltproc-opts=--nonet -v"))
357 (zero? (system* "make" "-C" "docs" "man"))))
358 (add-after 'install 'install-documentation
359 (lambda* (#:key outputs #:allow-other-keys)
360 (let* ((out (assoc-ref outputs "out"))
361 (man (string-append out "/share/man")))
362 (install-file "docs/offlineimap.1" (string-append man "/man1"))
363 (install-file "docs/offlineimapui.7" (string-append man "/man7"))
364 #t)))
365 (add-after 'install-documentation 'wrap-binary
366 (lambda* (#:key outputs #:allow-other-keys)
42aa73b3
EF
367 (let* ((out (assoc-ref outputs "out"))
368 (bin (string-append out "/bin/offlineimap")))
369 (wrap-program bin
370 `("PYTHONPATH" ":" prefix (,(getenv "PYTHONPATH"))))
371 #t))))))
3919a31a 372 (home-page "http://www.offlineimap.org")
31e98ca6 373 (synopsis "Sync emails between two repositories")
3919a31a
EB
374 (description
375 "OfflineImap synchronizes emails between two repositories, so that you
376can read the same mailbox from multiple computers. It supports IMAP as REMOTE
377repository and Maildir/IMAP as LOCAL repository.")
7886e23b 378 (license gpl2+)))
3919a31a 379
d2938d59
EB
380(define-public mu
381 (package
382 (name "mu")
e7b9da24 383 (version "0.9.18")
d2938d59
EB
384 (source (origin
385 (method url-fetch)
e7b9da24
RW
386 (uri (string-append "https://github.com/djcb/mu/releases/"
387 "download/" version "/mu-"
d2938d59
EB
388 version ".tar.gz"))
389 (sha256
390 (base32
e7b9da24 391 "02g82zvxfgn17wzy846bfxj0izjj7yklhwdnhwxy1y2kin4fqnb5"))))
d2938d59
EB
392 (build-system gnu-build-system)
393 (native-inputs
394 `(("pkg-config" ,pkg-config)
9fd571a2 395 ("glib" ,glib "bin") ; for gtester
e62e975b 396 ("emacs" ,emacs-minimal)))
d2938d59
EB
397 ;; TODO: Add webkit and gtk to build the mug GUI.
398 (inputs
399 `(("xapian" ,xapian)
d2938d59
EB
400 ("guile" ,guile-2.0)
401 ("glib" ,glib)
402 ("gmime" ,gmime)
403 ("tzdata" ,tzdata))) ;for mu/test/test-mu-query.c
404 (arguments
704f2196
AK
405 `(#:modules ((guix build gnu-build-system)
406 (guix build utils)
407 (guix build emacs-utils))
408 #:imported-modules (,@%gnu-build-system-modules
409 (guix build emacs-utils))
410 #:phases
99404fff 411 (modify-phases %standard-phases
e62e975b 412 (add-after 'unpack 'patch-configure
789bda83
AK
413 ;; By default, elisp code goes to "share/emacs/site-lisp/mu4e",
414 ;; so our Emacs package can't find it. Setting "--with-lispdir"
415 ;; configure flag doesn't help because "mu4e" will be added to
416 ;; the lispdir anyway, so we have to modify "configure.ac".
417 (lambda _
e62e975b
RW
418 (substitute* "configure"
419 (("^ +lispdir=\"\\$\\{lispdir\\}/mu4e/\".*") ""))
789bda83 420 #t))
99404fff
AK
421 (add-before 'check 'check-tz-setup
422 (lambda* (#:key inputs #:allow-other-keys)
423 ;; For mu/test/test-mu-query.c
424 (setenv "TZDIR"
425 (string-append (assoc-ref inputs "tzdata")
426 "/share/zoneinfo"))
704f2196
AK
427 #t))
428 (add-after 'install 'install-emacs-autoloads
429 (lambda* (#:key outputs #:allow-other-keys)
430 (emacs-generate-autoloads
431 "mu4e"
432 (string-append (assoc-ref outputs "out")
433 "/share/emacs/site-lisp"))
99404fff 434 #t)))))
d2938d59
EB
435 (home-page "http://www.djcbsoftware.nl/code/mu/")
436 (synopsis "Quickly find emails")
437 (description
438 "Mu is a tool for dealing with e-mail messages stored in the
439Maildir-format. Mu's purpose in life is to help you to quickly find the
440messages you need; in addition, it allows you to view messages, extract
441attachments, create new maildirs, and so on.")
442 (license gpl3+)))
443
a2cb16b0
TS
444(define-public alot
445 (package
446 (name "alot")
fe3b8862 447 (version "0.4")
a2cb16b0
TS
448 (source (origin
449 (method url-fetch)
1b94f182
TS
450 ;; package author intends on distributing via github rather
451 ;; than pypi:
452 ;; https://github.com/pazz/alot/issues/877#issuecomment-230173331
a2cb16b0
TS
453 (uri (string-append "https://github.com/pazz/alot/archive/"
454 version ".tar.gz"))
455 (file-name (string-append "alot-" version ".tar.gz"))
456 (sha256
457 (base32
fe3b8862 458 "0sl1kl2fhkv208llnbny4blcvrfdk4vx6bcw5pnyh9ylwb0pipi2"))))
a2cb16b0
TS
459 (build-system python-build-system)
460 (arguments
461 `(#:tests? #f ; no tests
fe3b8862
MB
462 ;; python 3 is currently unsupported, more info:
463 ;; https://github.com/pazz/alot/blob/master/docs/source/faq.rst
a2cb16b0
TS
464 #:python ,python-2))
465 (inputs
466 `(("python2-magic" ,python2-magic)
467 ("python2-configobj" ,python2-configobj)
468 ("python2-twisted" ,python2-twisted)
469 ("python2-urwid" ,python2-urwid)
470 ("python2-urwidtrees" ,python2-urwidtrees)
471 ("python2-pygpgme" ,python2-pygpgme)
472 ("python2-notmuch" ,python2-notmuch)))
473 (home-page "https://github.com/pazz/alot")
474 (synopsis "Commandline MUA using notmuch")
475 (description
476 "Alot is an experimental terminal mail user agent (MUA) based on
477@code{notmuch} mail. It is written in Python using the @code{urwid} toolkit.")
478 (license gpl3+)))
479
0350a8bb
HG
480(define-public notifymuch
481 (let
482 ((commit "9d4aaf54599282ce80643b38195ff501120807f0")
483 (revision "1"))
484 (package
485 (name "notifymuch")
486 (version (string-append "0.1-" revision "." (string-take commit 7)))
487 (source
488 (origin
489 (method git-fetch)
490 (uri (git-reference
491 (url "https://github.com/kspi/notifymuch.git")
492 (commit commit)))
493 (sha256
494 (base32
495 "1lssr7iv43mp5v6nzrfbqlfzx8jcc7m636wlfyhhnd8ydd39n6k4"))
496 (file-name (string-append name "-" version "-checkout"))))
497 (build-system python-build-system)
498 (inputs
499 `(("python-notmuch" ,python-notmuch)
500 ("python-pygobject" ,python-pygobject)
501 ("gobject-introspection" ,gobject-introspection)
502 ("libnotify" ,libnotify)
503 ("gtk+" ,gtk+)))
504 (arguments
505 `(#:phases
506 (modify-phases %standard-phases
507 (add-after 'install 'wrap-binary
508 (lambda* (#:key outputs #:allow-other-keys)
509 (let* ((out (assoc-ref outputs "out"))
510 (bin (string-append out "/bin/notifymuch")))
511 (wrap-program bin
512 `("PYTHONPATH" ":" prefix (,(getenv "PYTHONPATH")))
513 `("GI_TYPELIB_PATH" ":" prefix
514 (,(getenv "GI_TYPELIB_PATH")
515 ,(string-append out "/lib/girepository-1.0")))))
516 #t)))))
517 (home-page "https://github.com/kspi/notifymuch")
518 (synopsis "Displays notifications for changes in the notmuch email database")
519 (description "notifymuch displays desktop notifications for messages in
520the notmuch database. The notifications are sent using libnotify to a
521notification daemon. The query to find messages to send a notification about
522is configurable, and a notification for the same message will not be send
523within a configurable period (defaults to 48 hours). To use notifymuch, run
524@command{notifymuch} after new mail is indexed, this can be automated by
525invoking @command{notifymuch} from the post-new hook.")
526 (license gpl3))))
527
1bd3f849
DT
528(define-public notmuch
529 (package
530 (name "notmuch")
8966c6b4 531 (version "0.23.5")
1bd3f849
DT
532 (source (origin
533 (method url-fetch)
866fade9 534 (uri (string-append "https://notmuchmail.org/releases/notmuch-"
1bd3f849
DT
535 version ".tar.gz"))
536 (sha256
537 (base32
8966c6b4 538 "0ry2k9sdwd1vw8cf6svch8wk98523s07mwxvsf7b8kghqnrr89n6"))))
1bd3f849
DT
539 (build-system gnu-build-system)
540 (arguments
6cf27c89 541 '(#:make-flags (list "V=1") ; Verbose test output.
eb537f57 542 #:phases (modify-phases %standard-phases
6cf27c89
MB
543 (add-after 'unpack 'patch-notmuch-lib.el
544 (lambda _
545 (substitute* "emacs/notmuch-lib.el"
546 (("/bin/sh") (which "sh")))
547 #t))
eb537f57
DT
548 (replace 'configure
549 (lambda* (#:key outputs #:allow-other-keys)
550 (setenv "CC" "gcc")
551 (setenv "CONFIG_SHELL" (which "sh"))
ee886454 552
eb537f57
DT
553 (let ((out (assoc-ref outputs "out")))
554 (zero? (system* "./configure"
6cf27c89
MB
555 (string-append "--prefix=" out))))))
556 (add-before 'check 'prepare-test-environment
557 (lambda _
558 (setenv "TEST_CC" "gcc")
559 ;; Patch various inline shell invocations.
560 (substitute* (find-files "test" "\\.sh$")
561 (("/bin/sh") (which "sh")))
562 #t)))))
1bd3f849 563 (native-inputs
2c5b91dc 564 `(("bash-completion" ,bash-completion)
6cf27c89 565 ("emacs" ,emacs-no-x) ; Minimal lacks libxml, needed for some tests.
2c5b91dc 566 ("pkg-config" ,pkg-config)
ee886454 567 ("python" ,python-2)
eb537f57 568 ("python-docutils" ,python2-docutils)
6cf27c89
MB
569 ("python-sphinx" ,python2-sphinx)
570
571 ;; The following are required for tests only.
572 ("which" ,which)
573 ("dtach" ,dtach)
574 ("gnupg" ,gnupg)
575 ("man" ,man-db)
576 ("perl" ,perl)))
1bd3f849 577 (inputs
2c5b91dc 578 `(("glib" ,glib)
1bd3f849
DT
579 ("gmime" ,gmime)
580 ("talloc" ,talloc)
581 ("xapian" ,xapian)
582 ("zlib" ,zlib)))
540d6cc7 583 (home-page "https://notmuchmail.org/")
1bd3f849
DT
584 (synopsis "Thread-based email index, search, and tagging")
585 (description
586 "Notmuch is a command-line based program for indexing, searching, read-
587ing, and tagging large collections of email messages.")
588 (license gpl3+)))
589
8a75c589
AM
590(define-public notmuch-addrlookup-c
591 (package
592 (name "notmuch-addrlookup-c")
593 (version "7")
594 (source (origin
595 (method url-fetch)
596 (uri (string-append
597 "https://github.com/aperezdc/" name "/archive/v"
598 version ".tar.gz"))
599 (file-name (string-append name "-" version ".tar.gz"))
600 (sha256
601 (base32
602 "0rslg2ifgyhl6asv3yr1f62m9xjfcinv7i6qb07h2k217jqlmrri"))))
603 (build-system gnu-build-system)
604 (arguments
605 '(#:tests? #f ; no tests
606 #:make-flags (list "CC=gcc"
607 (string-append "PREFIX="
608 (assoc-ref %outputs "out")))
609 #:phases (modify-phases %standard-phases
610 (delete 'configure)
611 ;; Remove vim code completion config, it's not needed to
612 ;; build (or be patched).
613 (add-before 'patch-source-shebangs 'delete-ycm-file
614 (lambda _ (delete-file ".ycm_extra_conf.py")))
615 (replace 'install
616 (lambda* (#:key outputs #:allow-other-keys)
617 (let ((bin (string-append
618 (assoc-ref outputs "out") "/bin")))
619 (install-file "notmuch-addrlookup" bin)))))))
620 (native-inputs
621 `(("pkg-config" ,pkg-config)))
622 (inputs
623 `(("glib" ,glib)
624 ("notmuch" ,notmuch)))
625 (home-page "https://github.com/aperezdc/notmuch-addrlookup-c")
626 (synopsis "Address lookup tool for Notmuch")
627 (description "This is an address lookup tool using a Notmuch database,
628useful for email address completion.")
629 (license license:expat)))
630
4b6909bc
TS
631(define-public python-notmuch
632 (package
633 (name "python-notmuch")
540d6cc7 634 (version (package-version notmuch))
4b6909bc
TS
635 ;; Notmuch python bindings are now unavailable on pypi. The
636 ;; bindings are distributed via the notmuch release tarball.
637 (source (package-source notmuch))
638 (build-system python-build-system)
639 (inputs `(("notmuch" ,notmuch)))
640 (arguments
641 `(#:tests? #f ; no "test" target
642 #:phases
643 (modify-phases %standard-phases
644 ;; This python package lives in a subdirectory of the notmuch source
645 ;; tree, so chdir into it before building.
646 (add-after 'unpack 'enter-python-dir
647 (lambda _ (chdir "bindings/python") #t))
648 ;; Make sure the correct notmuch shared library gets loaded.
649 (add-before 'build 'set-libnotmuch-file-name
650 (lambda* (#:key inputs #:allow-other-keys)
651 (let ((notmuch (assoc-ref inputs "notmuch")))
652 (substitute* "notmuch/globals.py"
653 (("libnotmuch\\.so\\.")
654 (string-append notmuch "/lib/libnotmuch.so.")))
655 #t))))))
540d6cc7 656 (home-page (package-home-page notmuch))
4b6909bc
TS
657 (synopsis "Python bindings of the Notmuch mail indexing library")
658 (description
659 "This package provides Python bindings to use the Notmuch mail indexing
660and search library.")
661 (license gpl3+)))
662
1c74da21 663(define-public python2-notmuch
caa6fc89 664 (package-with-python2 python-notmuch))
1c74da21 665
98e9e22f
SB
666(define-public getmail
667 (package
668 (name "getmail")
837ca0f0 669 (version "4.52.0")
98e9e22f
SB
670 (source
671 (origin
672 (method url-fetch)
673 (uri (string-append "http://pyropus.ca/software/getmail/old-versions/"
674 name "-" version ".tar.gz"))
675 (sha256
676 (base32
837ca0f0 677 "0pzplrlxwbxydvfw4kkwn60l40hk1h5sxawaa6pi0k75c220k4ni"))))
98e9e22f
SB
678 (build-system python-build-system)
679 (arguments
680 `(#:tests? #f ; no tests
681 #:python ,python-2))
682 (home-page "http://pyropus.ca/software/getmail/")
683 (synopsis "Mail retriever")
684 (description
685 "A flexible, extensible mail retrieval system with support for
686POP3, IMAP4, SSL variants of both, maildirs, mboxrd files, external MDAs,
687arbitrary message filtering, single-user and domain-mailboxes, and many other
688useful features.")
689
690 ;; License is specified in file '__init__.py'.
691 (license gpl2)))
692
f58f767b
JL
693(define-public libetpan
694 (package
695 (name "libetpan")
c1748912 696 (version "1.7.2")
f58f767b
JL
697 (source (origin
698 (method url-fetch)
699 (uri (string-append "https://github.com/dinhviethoa/" name
700 "/archive/" version ".tar.gz"))
f586c877 701 (file-name (string-append name "-" version ".tar.gz"))
f58f767b 702 (sha256
c1748912 703 (base32 "081ixgj3skglq9i7v0jb835lmfx21zi4i5b7997igwr0lj174y9j"))))
f58f767b
JL
704 (build-system gnu-build-system)
705 (native-inputs `(("autoconf" ,(autoconf-wrapper))
706 ("automake" ,automake)
3246cc91 707 ("libtool" ,libtool)
f58f767b
JL
708 ("pkg-config" ,pkg-config)))
709 (propagated-inputs
710 ;; 'libetpan-config --libs' returns '-lssl -lcrypto -lsasl2', so these
711 ;; libraries need to be propagated.
712 `(("cyrus-sasl" ,cyrus-sasl)
713 ("openssl" ,openssl)))
714 (inputs
715 `(("curl" ,curl)
c1748912
EF
716 ("expat" ,expat)
717 ("zlib" ,zlib)))
f58f767b 718 (arguments
602460ea
EF
719 '(#:phases
720 (modify-phases %standard-phases
721 (add-after 'unpack 'autogen
722 (lambda _
723 (setenv "NOCONFIGURE" "true")
724 (zero? (system* "sh" "autogen.sh")))))
f58f767b
JL
725 #:configure-flags
726 '("--disable-static" "--disable-db")))
727 (home-page "http://www.etpan.org/libetpan.html")
728 (synopsis "Portable middleware for email access")
729 (description
730 "The purpose of this mail library is to provide a portable, efficient
731framework for different kinds of mail access: IMAP, SMTP, POP and NNTP. It
732provides an API for C language. It's the low-level API used by MailCore and
733MailCore 2.")
166191b3 734 (license (non-copyleft "file://COPYING"))))
f58f767b 735
ee6e780b
DM
736(define-public compface
737 (package
738 (name "compface")
739 (version "1.5.2")
740 (source (origin
741 (method url-fetch)
742 (uri (string-append "https://ftp.heanet.ie/mirrors/"
743 "ftp.xemacs.org/aux/"
744 name "-" version ".tar.gz"))
745 (sha256
746 (base32
747 "09b89wg63hg502hsz592cd2h87wdprb1dq1k1y07n89hym2q56d6"))))
748 (build-system gnu-build-system)
749 (arguments
750 `(#:tests? #f))
751 (synopsis "Portrait image compressor")
752 (description "This packages takes your 48x48x1 portrait image and
753compresses it.")
754 (home-page "http://www.cs.indiana.edu/pub/faces/")
755 (license (x11-style "file://README"))))
756
e8435c4d
JL
757(define-public claws-mail
758 (package
759 (name "claws-mail")
f34284ab 760 (version "3.14.1")
e8435c4d
JL
761 (source (origin
762 (method url-fetch)
763 (uri (string-append
762b1971 764 "http://www.claws-mail.org/releases/" name "-" version
6ea4b094 765 ".tar.xz"))
e8435c4d 766 (sha256
ec92806a 767 (base32
f34284ab 768 "0df34gj4r5cbb92834hph19gnh7ih9rgmmw47rliyg8b9z01v6mp"))))
e8435c4d
JL
769 (build-system gnu-build-system)
770 (native-inputs `(("pkg-config" ,pkg-config)))
771 (inputs `(("bogofilter" ,bogofilter)
772 ("curl" ,curl)
773 ("dbus-glib" ,dbus-glib)
e8435c4d
JL
774 ("enchant" ,enchant)
775 ("expat" ,expat)
776 ("ghostscript" ,ghostscript)
777 ("hicolor-icon-theme" ,hicolor-icon-theme)
778 ("gnupg" ,gnupg)
779 ("gnutls" ,gnutls)
780 ("gpgme" ,gpgme)
781 ("gtk" ,gtk+-2)
782 ("libarchive" ,libarchive)
783 ("libcanberra" ,libcanberra)
784 ("libetpan" ,libetpan)
785 ("libnotify" ,libnotify)
786 ("libsm" ,libsm)
787 ("libxml2" ,libxml2)
788 ("perl" ,perl)
f6292baf
EB
789 ("python-2" ,python-2)
790 ("mime-info" ,shared-mime-info)))
e8435c4d
JL
791 (arguments
792 '(#:configure-flags
f6292baf
EB
793 '("--enable-gnutls" "--enable-pgpmime-plugin" "--enable-enchant")
794 #:phases (modify-phases %standard-phases
795 (add-before 'build 'patch-mime
796 (lambda* (#:key inputs #:allow-other-keys)
797 (substitute* "src/procmime.c"
798 (("/usr/share/mime/globs")
799 (string-append (assoc-ref inputs "mime-info")
800 "/share/mime/globs"))))))))
e8435c4d
JL
801 (synopsis "GTK-based Email client")
802 (description
803 "Claws-Mail is an email client (and news reader) based on GTK+. The
804appearance and interface are designed to be familiar to new users coming from
805other popular email clients, as well as experienced users. Almost all commands
806are accessible with the keyboard. Plus, Claws-Mail is extensible via addons
807which can add many functionalities to the base client.")
808 (home-page "http://www.claws-mail.org/")
809 (license gpl3+))) ; most files are actually public domain or x11
810
d6e941bc
811(define-public msmtp
812 (package
813 (name "msmtp")
899358d1 814 (version "1.6.6")
d6e941bc
815 (source
816 (origin
817 (method url-fetch)
d23d1ddf
LF
818 (uri (string-append "mirror://sourceforge/msmtp/msmtp/" version
819 "/msmtp-" version ".tar.xz"))
820 (sha256
821 (base32
899358d1 822 "0ppvww0sb09bnsrpqnvlrn8vx231r24xn2iiwpy020mxc8gxn5fs"))))
d6e941bc
823 (build-system gnu-build-system)
824 (inputs
825 `(("libidn" ,libidn)
72d8b5ba 826 ("libsecret" ,libsecret)
d6e941bc
827 ("gnutls" ,gnutls)
828 ("zlib" ,zlib)
829 ("gsasl" ,gsasl)))
830 (native-inputs
831 `(("pkg-config" ,pkg-config)))
832 (home-page "http://msmtp.sourceforge.net/")
833 (arguments
834 `(#:configure-flags (list "--with-libgsasl"
835 "--with-libidn"
823e2ed4
LF
836 "--with-tls=gnutls")
837 #:phases
838 (modify-phases %standard-phases
839 (add-after 'install 'install-msmtpq
840 (lambda* (#:key outputs #:allow-other-keys)
841 (let* ((out (assoc-ref outputs "out"))
842 (bin (string-append out "/bin"))
843 (doc (string-append out "/share/doc/msmtp"))
844 (msmtpq (string-append "scripts/msmtpq")))
845 (install-file (string-append msmtpq "/msmtpq") bin)
846 (install-file (string-append msmtpq "/msmtp-queue") bin)
847 (install-file (string-append msmtpq "/README.msmtpq") doc)
848 #t))))))
d6e941bc
849 (synopsis
850 "Simple and easy to use SMTP client with decent sendmail compatibility")
851 (description
852 "msmtp is an SMTP client. In the default mode, it transmits a mail to
853an SMTP server (for example at a free mail provider) which takes care of further
854delivery.")
855 (license gpl3+)))
856
66cc3ab2
TUBK
857(define-public exim
858 (package
859 (name "exim")
4a95b388 860 (version "4.87.1")
66cc3ab2
TUBK
861 (source
862 (origin
863 (method url-fetch)
fc6fdc05
LF
864 (uri (list (string-append "ftp://ftp.exim.org/pub/exim/exim4/exim-"
865 version ".tar.bz2")
866 (string-append "ftp://ftp.exim.org/pub/exim/exim4/old/exim-"
867 version ".tar.bz2")))
66cc3ab2 868 (sha256
513f8ab4 869 (base32
4a95b388 870 "050m2gjzpc6vyik458h1j0vi8bxplkzjsyndkyd2y394i569kdyl"))))
66cc3ab2
TUBK
871 (build-system gnu-build-system)
872 (inputs
873 `(("bdb" ,bdb)
874 ("gnutls" ,gnutls)
875 ("gzip" ,gzip)
876 ("bzip2" ,bzip2)
877 ("xz" ,xz)
66cc3ab2
TUBK
878 ("perl" ,perl)
879 ("libxt" ,libxt)
880 ("libxaw" ,libxaw)))
881 (native-inputs
42773138
EF
882 `(("pcre" ,pcre "bin")
883 ("perl" ,perl)))
66cc3ab2
TUBK
884 (arguments
885 '(#:phases
886 (alist-replace
887 'configure
888 ;; We'd use #:make-flags but the top-level Makefile calls others
889 ;; recursively, so just set all variables this way.
890 (lambda* (#:key outputs inputs #:allow-other-keys)
891 (substitute* '("Makefile" "OS/Makefile-Default")
892 (("(RM_COMMAND=).*" all var)
893 (string-append var "rm\n")))
894 (copy-file "src/EDITME" "Local/Makefile")
895 (copy-file "exim_monitor/EDITME" "Local/eximon.conf")
896 (let ((out (assoc-ref outputs "out"))
897 (gzip (assoc-ref inputs "gzip"))
898 (bzip2 (assoc-ref inputs "bzip2"))
899 (xz (assoc-ref inputs "xz")))
900 (substitute* '("Local/Makefile")
901 (("(BIN_DIRECTORY=).*" all var)
902 (string-append var out "/bin\n"))
903 (("(CONFIGURE_FILE=).*" all var)
904 (string-append var out "/etc/exim.conf\n"))
905 (("(EXIM_USER=).*" all var)
906 (string-append var "nobody\n"))
907 (("(FIXED_NEVER_USERS=).*" all var)
908 (string-append var "\n")) ;XXX no root in build environment
909 (("(COMPRESS_COMMAND=).*" all var)
910 (string-append var gzip "/bin/gzip\n"))
911 (("(ZCAT_COMMAND=).*" all var)
912 (string-append var gzip "/bin/zcat\n")))
913 ;; This file has hardcoded names for tools despite the zcat
914 ;; configuration above.
915 (substitute* '("src/exigrep.src")
916 (("'zcat'") (string-append "'" gzip "/bin/zcat'"))
917 (("'bzcat'") (string-append "'" bzip2 "/bin/bzcat'"))
918 (("'xzcat'") (string-append "'" xz "/bin/xzcat'"))
919 (("'lzma'") (string-append "'" xz "/bin/lzma'")))))
920 (alist-cons-before
921 'build 'fix-sh-paths
922 (lambda* (#:key inputs #:allow-other-keys)
923 (substitute* '("scripts/lookups-Makefile" "scripts/reversion")
924 (("SHELL=/bin/sh") "SHELL=sh"))
925 (substitute* '("scripts/Configure-config.h")
926 (("\\| /bin/sh") "| sh"))
927 (let ((bash (assoc-ref inputs "bash")))
928 (substitute* '("scripts/Configure-eximon")
929 (("#!/bin/sh") (string-append "#!" bash "/bin/sh")))))
930 %standard-phases))
931 #:make-flags '("INSTALL_ARG=-no_chown")
932 ;; No 'check' target.
933 #:tests? #f))
934 (home-page "http://www.exim.org/")
935 (synopsis
936 "Message Transfer Agent (MTA) developed at the University of Cambridge")
937 (description
938 "Exim is a message transfer agent (MTA) developed at the University of
939Cambridge for use on Unix systems connected to the Internet. In style it is
940similar to Smail 3, but its facilities are more general. There is a great
941deal of flexibility in the way mail can be routed, and there are extensive
942facilities for checking incoming mail.")
943 (license gpl2+)))
944
7d2b784b
MW
945(define-public dovecot
946 (package
947 (name "dovecot")
c8608faf 948 (version "2.2.27")
7d2b784b
MW
949 (source
950 (origin
951 (method url-fetch)
c8608faf 952 (uri (string-append "https://www.dovecot.org/releases/"
7d2b784b
MW
953 (version-major+minor version) "/"
954 name "-" version ".tar.gz"))
955 (sha256 (base32
c8608faf 956 "1s8qvr6fa9d0n179kdwgpsi72zkvpbh9q57q8fr2fjysgjl94zw9"))))
7d2b784b
MW
957 (build-system gnu-build-system)
958 (native-inputs
959 `(("pkg-config" ,pkg-config)))
960 (inputs
961 `(("openssl" ,openssl)
962 ("zlib" ,zlib)
963 ("bzip2" ,bzip2)
fd5c70f8
AW
964 ("sqlite" ,sqlite)
965 ("linux-pam" ,linux-pam)))
7d2b784b
MW
966 (arguments
967 `(#:configure-flags '("--sysconfdir=/etc"
968 "--localstatedir=/var")
969 #:phases (modify-phases %standard-phases
970 (add-before
971 'configure 'pre-configure
972 (lambda _
973 ;; Simple hack to avoid installing in /etc
974 (substitute* '("doc/Makefile.in"
975 "doc/example-config/Makefile.in")
976 (("pkgsysconfdir = .*")
977 "pkgsysconfdir = /tmp/etc"))
072f1e22
EF
978 #t))
979 (add-after
980 'unpack 'patch-other-shebangs
981 (lambda _
982 (substitute*
983 "src/lib-program-client/test-program-client-local.c"
984 (("/bin/echo") (which "echo"))
985 (("/bin/cat") (which "cat"))
986 (("/bin/false") (which "false")))
7d2b784b 987 #t)))))
c8608faf 988 (home-page "https://www.dovecot.org")
7d2b784b
MW
989 (synopsis "Secure POP3/IMAP server")
990 (description
991 "Dovecot is a mail server whose major goals are security and reliability.
992It supports mbox/Maildir and its own dbox/mdbox formats.")
993 ;; Most source files are covered by either lgpl2.1 or expat. The SHA code
994 ;; is covered by a variant of BSD-3, and UnicodeData.txt is covered by the
995 ;; Unicode, Inc. License Agreement for Data Files and Software.
996 (license (list lgpl2.1 license:expat (non-copyleft "file://COPYING")))))
997
81ce19f4
998(define-public isync
999 (package
1000 (name "isync")
2c3d13fe 1001 (version "1.2.1")
81ce19f4
1002 (source
1003 (origin
1004 (method url-fetch)
1005 (uri (string-append "mirror://sourceforge/isync/isync/"
1006 version "/isync-" version ".tar.gz"))
1007 (sha256 (base32
2c3d13fe 1008 "1bij6nm06ghkg98n2pdyacam2fyg5y8f7ajw0d5653m0r4ldw5p7"))))
81ce19f4
1009 (build-system gnu-build-system)
1010 (inputs
1011 `(("bdb" ,bdb)
1012 ("openssl" ,openssl)))
1013 (home-page "http://isync.sourceforge.net/")
1014 (synopsis "Mailbox synchronization program")
1015 (description
1016 "isync/mbsync is command line tool for two-way synchronization of
1017mailboxes. Currently Maildir and IMAP are supported types.")
1018 (license gpl2+)))
1019
26b8de19
EB
1020(define-public perl-email-abstract
1021 (package
1022 (name "perl-email-abstract")
1023 (version "3.008")
1024 (source
1025 (origin
1026 (method url-fetch)
1027 (uri (string-append "mirror://cpan/authors/id/R/RJ/RJBS/"
1028 "Email-Abstract-" version ".tar.gz"))
1029 (sha256
1030 (base32
1031 "0h42rhvp769wb421cpbbg6v6xjp8iv86mvz70pqgfgf4nsn6jwgw"))))
1032 (build-system perl-build-system)
1033 (propagated-inputs
1034 `(("perl-email-simple" ,perl-email-simple)
a2190ccc 1035 ("perl-module-pluggable" ,perl-module-pluggable)
26b8de19
EB
1036 ("perl-mro-compat" ,perl-mro-compat)))
1037 (home-page "http://search.cpan.org/dist/Email-Abstract")
1038 (synopsis "Interface to mail representations")
1039 (description "Email::Abstract provides module writers with the ability to
1040write simple, representation-independent mail handling code.")
1041 (license (package-license perl))))
1042
ebda902f
EB
1043(define-public perl-email-address
1044 (package
1045 (name "perl-email-address")
151bba2b 1046 (version "1.908")
ebda902f
EB
1047 (source
1048 (origin
1049 (method url-fetch)
1050 (uri (string-append "mirror://cpan/authors/id/R/RJ/RJBS/"
1051 "Email-Address-" version ".tar.gz"))
1052 (sha256
1053 (base32
151bba2b 1054 "0i6ljdvpy279hpbqf6lgv4figr376rb2sh4yphj86xkdzsyn1y75"))))
ebda902f
EB
1055 (build-system perl-build-system)
1056 (home-page "http://search.cpan.org/dist/Email-Address")
1057 (synopsis "Email address parsing and creation")
1058 (description "Email::Address implements a regex-based RFC 2822 parser that
1059locates email addresses in strings and returns a list of Email::Address
1060objects found. Alternatively you may construct objects manually.")
1061 (license (package-license perl))))
1062
aa86a3be
EB
1063(define-public perl-email-date-format
1064 (package
1065 (name "perl-email-date-format")
1066 (version "1.005")
1067 (source
1068 (origin
1069 (method url-fetch)
1070 (uri (string-append "mirror://cpan/authors/id/R/RJ/RJBS/"
1071 "Email-Date-Format-" version ".tar.gz"))
1072 (sha256
1073 (base32
1074 "012ivfwpnbl3wr50f9c6f4azhdlxnm31pdn72528g79v61z6372p"))))
1075 (build-system perl-build-system)
1076 (home-page "http://search.cpan.org/dist/Email-Date-Format")
1077 (synopsis "Produce RFC 2822 date strings")
1078 (description "Email::Date::Format provides a means for generating an RFC
10792822 compliant datetime string.")
1080 (license (package-license perl))))
1081
08bf7095
EB
1082(define-public perl-email-messageid
1083 (package
1084 (name "perl-email-messageid")
1fb37ef0 1085 (version "1.406")
08bf7095
EB
1086 (source
1087 (origin
1088 (method url-fetch)
1089 (uri (string-append "mirror://cpan/authors/id/R/RJ/RJBS/"
1090 "Email-MessageID-" version ".tar.gz"))
1091 (sha256
1092 (base32
1fb37ef0 1093 "1f22sdnfq169qw1l0lg7y74pmiam7j9v95bggjnf3q4mygdmshpc"))))
08bf7095
EB
1094 (build-system perl-build-system)
1095 (home-page "http://search.cpan.org/dist/Email-MessageID")
1096 (synopsis "Generate world unique message-ids")
1097 (description "Email::MessageID generates recommended message-ids to
1098identify a message uniquely.")
1099 (license (package-license perl))))
1100
0a4c49f6
EB
1101(define-public perl-email-mime
1102 (package
1103 (name "perl-email-mime")
b4522b98 1104 (version "1.937")
0a4c49f6
EB
1105 (source
1106 (origin
1107 (method url-fetch)
1108 (uri (string-append "mirror://cpan/authors/id/R/RJ/RJBS/"
1109 "Email-MIME-" version ".tar.gz"))
1110 (sha256
1111 (base32
b4522b98 1112 "0s50i3nxi9dr81p4rn017nrarc40yrwz0qcw34q8k3pvdf46fr9n"))))
0a4c49f6
EB
1113 (build-system perl-build-system)
1114 (propagated-inputs
1115 `(("perl-email-address" ,perl-email-address)
1116 ("perl-email-messageid" ,perl-email-messageid)
1117 ("perl-email-mime-contenttype" ,perl-email-mime-contenttype)
1118 ("perl-email-mime-encodings" ,perl-email-mime-encodings)
1119 ("perl-email-simple" ,perl-email-simple)
1120 ("perl-mime-types" ,perl-mime-types)))
1121 (home-page "http://search.cpan.org/dist/Email-MIME")
1122 (synopsis "MIME message handling")
1123 (description "Email::MIME is an extension of the Email::Simple module, to
1124handle MIME encoded messages. It takes a message as a string, splits it up
1125into its constituent parts, and allows you access to various parts of the
1126message. Headers are decoded from MIME encoding.")
1127 (license (package-license perl))))
1128
55025bb5
EB
1129(define-public perl-email-mime-contenttype
1130 (package
1131 (name "perl-email-mime-contenttype")
a883ba02 1132 (version "1.018")
55025bb5
EB
1133 (source
1134 (origin
1135 (method url-fetch)
1136 (uri (string-append "mirror://cpan/authors/id/R/RJ/RJBS/"
1137 "Email-MIME-ContentType-" version ".tar.gz"))
1138 (sha256
1139 (base32
a883ba02 1140 "1y8hpwm7p5a9y2azy0cgvlv2i2d0nj66ajfa0fj51wdq4w9cs23m"))))
55025bb5
EB
1141 (build-system perl-build-system)
1142 (native-inputs
1143 `(("perl-capture-tiny" ,perl-capture-tiny)))
1144 (home-page "http://search.cpan.org/dist/Email-MIME-ContentType")
1145 (synopsis "Parse MIME Content-Type headers")
1146 (description "Email::MIME::ContentType parses a MIME Content-Type
1147header.")
1148 (license (package-license perl))))
1149
02e29936
EB
1150(define-public perl-email-mime-encodings
1151 (package
1152 (name "perl-email-mime-encodings")
1153 (version "1.315")
1154 (source
1155 (origin
1156 (method url-fetch)
1157 (uri (string-append "mirror://cpan/authors/id/R/RJ/RJBS/"
1158 "Email-MIME-Encodings-" version ".tar.gz"))
1159 (sha256
1160 (base32
1161 "0p5b8g9gh35m8fqrpx60g4bp98rvwd02n5b0vm9wh7mk0xah8wac"))))
1162 (build-system perl-build-system)
1163 (native-inputs
1164 `(("perl-capture-tiny" ,perl-capture-tiny)))
1165 (home-page "http://search.cpan.org/dist/Email-MIME-Encodings")
1166 (synopsis "Unified interface to MIME encoding and decoding")
1167 (description "This module wraps MIME::Base64 and MIME::QuotedPrint.")
1168 (license (package-license perl))))
1169
a24c5420
EB
1170(define-public perl-email-sender
1171 (package
1172 (name "perl-email-sender")
1b49fc8f 1173 (version "1.300028")
a24c5420
EB
1174 (source
1175 (origin
1176 (method url-fetch)
1177 (uri (string-append "mirror://cpan/authors/id/R/RJ/RJBS/"
1178 "Email-Sender-" version ".tar.gz"))
1179 (sha256
1180 (base32
1b49fc8f 1181 "0c5dv1x9856nryj5mcbgb67a4irmadz80g0qnf4van3bd8wbj72a"))))
a24c5420
EB
1182 (build-system perl-build-system)
1183 (native-inputs
1184 `(("perl-capture-tiny" ,perl-capture-tiny)))
1185 (propagated-inputs
1186 `(("perl-email-abstract" ,perl-email-abstract)
1187 ("perl-email-address" ,perl-email-address)
1188 ("perl-email-simple" ,perl-email-simple)
1189 ("perl-list-moreutils" ,perl-list-moreutils)
1190 ("perl-module-runtime" ,perl-module-runtime)
1191 ("perl-moo" ,perl-moo)
1192 ("perl-moox-types-mooselike" ,perl-moox-types-mooselike)
1193 ("perl-sub-exporter" ,perl-sub-exporter)
1194 ("perl-throwable" ,perl-throwable)
1195 ("perl-try-tiny" ,perl-try-tiny)))
1196 (home-page "http://search.cpan.org/dist/Email-Sender")
1197 (synopsis "Perl library for sending email")
1198 (description "Email::Sender replaces the old and sometimes problematic
1199Email::Send library.")
1200 (license (package-license perl))))
1201
151ef3ed
EB
1202(define-public perl-email-simple
1203 (package
1204 (name "perl-email-simple")
f363d5d8 1205 (version "2.211")
151ef3ed
EB
1206 (source
1207 (origin
1208 (method url-fetch)
1209 (uri (string-append "mirror://cpan/authors/id/R/RJ/RJBS/"
1210 "Email-Simple-" version ".tar.gz"))
1211 (sha256
1212 (base32
f363d5d8 1213 "1if4a2wh4iwlcycqrd2fhkx04ngmd75q444gh43w0r9p15ym5f8w"))))
151ef3ed
EB
1214 (build-system perl-build-system)
1215 (propagated-inputs
1216 `(("perl-email-date-format" ,perl-email-date-format)))
1217 (home-page "http://search.cpan.org/dist/Email-Simple")
1218 (synopsis "Parsing of RFC 2822 messages")
1219 (description "Email::Simple provides simple parsing of RFC 2822 message
1220format and headers.")
1221 (license (package-license perl))))
1222
f5dceecb
AW
1223(define-public libesmtp
1224 (package
1225 (name "libesmtp")
1226 (version "1.0.6")
1227 (source
1228 (origin
1229 (method url-fetch)
1230 (uri (string-append "http://www.stafford.uklinux.net/libesmtp/libesmtp-"
1231 version ".tar.bz2"))
1232 (sha256
1233 (base32
1234 "02zbniyz7qys1jmx3ghx21kxmns1wc3hmv80gp7ag7yra9f1m9nh"))))
1235 (build-system gnu-build-system)
1236 (propagated-inputs
1237 `(("openssl" ,openssl)))
1238 (home-page "http://www.stafford.uklinux.net/libesmtp/")
1239 (synopsis "Library for sending mail via remote hosts using SMTP")
1240 (description "libESMTP is an SMTP client which manages posting (or
1241submission of) electronic mail via a preconfigured Mail Transport Agent (MTA).
1242It may be used as part of a Mail User Agent (MUA) or other program that must
1243be able to post electronic mail where mail functionality may not be that
1244program's primary purpose.")
1245 (license (list lgpl2.1+ gpl2+))))
1246
f8ae32a2
AW
1247(define-public esmtp
1248 (package
1249 (name "esmtp")
1250 (version "1.2")
1251 (source
1252 (origin
1253 (method git-fetch)
1254 (uri (git-reference
1255 (url "https://github.com/andywingo/esmtp.git")
1256 (commit "01bf9fc")))
1257 (sha256
1258 (base32
1259 "1ay282rrl92h0m0m8z5zzjnwiiagi7c78aq2qvhia5mw7prwfyw2"))
1260 (file-name (string-append name "-" version "-checkout"))))
1261 (arguments
1262 `(#:phases (modify-phases %standard-phases
1263 (add-before
1264 'configure 'autoconf
1265 (lambda _ (zero? (system* "autoreconf" "-vfi")))))))
1266 (build-system gnu-build-system)
1267 (native-inputs
1268 `(("bison" ,bison)
1269 ("flex" ,flex)
1270 ("autoconf" ,autoconf)
1271 ("automake" ,automake)
1272 ("libtool" ,libtool)))
1273 (inputs
718c5dd6 1274 `(("libesmtp" ,libesmtp)))
3b3b60d0 1275 (home-page "https://sourceforge.net/projects/esmtp/")
f8ae32a2
AW
1276 (synopsis "Relay-only mail transfer agent (MTA)")
1277 (description "Esmtp is a simple relay-only mail transfer agent built using
1278libESMTP. It sends e-mail via a remote SMTP server using credentials from the
1279user's @file{$HOME/.esmtprc} configuration file; see the @command{esmtprc} man
1280page for more on configuration. This package also provides minimal
1281compatibility shims for the @command{sendmail}, @command{mailq}, and
1282@command{newaliases} commands.")
1283 (license gpl2+)))
1284
34dd26af
CAW
1285(define-public fdm
1286 (package
1287 (name "fdm")
1288 (version "1.9")
1289 (source (origin
1290 (method url-fetch)
1291 (uri (string-append "https://github.com/nicm/fdm/releases/download/"
1292 version "/fdm-"
1293 version ".tar.gz"))
1294 (file-name (string-append name "-" version ".tar.gz"))
1295 (sha256
1296 (base32 "054rscijahiza5f9qha79rg3siji3bk5mk10f8c2vqx7m4w6qh8n"))))
1297 (build-system gnu-build-system)
1298 (inputs
1299 `(("tdb" ,tdb)
1300 ("openssl" ,openssl)
1301 ("zlib" ,zlib)))
1302 (home-page "https://github.com/nicm/fdm")
1303 (synopsis "Mail Retrieval Agent (MRA) and Mail Delivery Agent (MDA)")
1304 (description "fdm is a program designed to fetch mail from POP3
1305or IMAP servers, or receive local mail from stdin, and
1306deliver it in various ways.")
1307 (license
1308 ;; Why point to a source file? Well, all the individual files have a
1309 ;; copy of this license in their headers, but there's no seprate file
1310 ;; with that information.
16966d5b 1311 (non-copyleft "https://github.com/nicm/fdm/blob/master/command.c"))))
34dd26af 1312
e90819c4
LG
1313
1314(define-public procmail
1315 (package
1316 (name "procmail")
1317 (version "3.22")
1318 (source
1319 (origin
1320 (method url-fetch)
1321 (uri (string-append
1322 "ftp://ftp.fu-berlin.de/pub/unix/mail/procmail/procmail-"
1323 version
1324 ".tar.gz"))
1325 (sha256
1326 (base32
1327 "05z1c803n5cppkcq99vkyd5myff904lf9sdgynfqngfk9nrpaz08"))
1328 ;; The following patch fixes an ambiguous definition of
1329 ;; getline() in formail.c. The patch is provided by Debian as
1330 ;; patch 24.
1d982d78
LF
1331 (patches (search-patches "procmail-ambiguous-getline-debian.patch"
1332 "procmail-CVE-2014-3618.patch"))))
e90819c4
LG
1333 (arguments
1334 `(#:phases (modify-phases %standard-phases
1335 (replace 'configure
1336 (lambda _
1337 (substitute* "Makefile"
1338 (("/bin/sh")
1339 (which "sh"))
1340 (("/usr")
1341 (assoc-ref %outputs "out"))
1342 (("/bin/rm")
1343 (which "rm")))
1344 #t)))
1345 #:tests? #f)) ;; There are no tests indicating a successful
1346 ;; build. Some tests of basic locking mechanisms provided by the
8f65585b 1347 ;; file system are performed during 'make install'. However, these
e90819c4
LG
1348 ;; are performed before the actual build process.
1349 (build-system gnu-build-system)
05aa576b 1350 (inputs `(("exim" ,exim)))
e90819c4
LG
1351 (home-page "http://www.procmail.org/")
1352 (synopsis "Versatile mail delivery agent (MDA)")
1353 (description "Procmail is a mail delivery agent (MDA) featuring support
1354for a variety of mailbox formats such as mbox, mh and maildir. Incoming mail
1355can be sorted into separate files/directories and arbitrary commands can be
1356executed on mail arrival. Procmail is considered stable, but is no longer
1357maintained.")
1358 (license gpl2+))) ;; procmail allows to choose the
1359 ;; nonfree Artistic License 1.0
1360 ;; as alternative to the GPL2+.
1361 ;; This option is not listed here.
e90819c4 1362
61c30e9d
LF
1363(define-public khard
1364 (package
1365 (name "khard")
a57495e2 1366 (version "0.11.3")
61c30e9d
LF
1367 (source (origin
1368 (method url-fetch)
1369 (uri (pypi-uri name version))
1370 (sha256
1371 (base32
a57495e2 1372 "1v66khq5w17xdbkpb00pf9xbl84dlzx4lq286fvzskb949b3y4yn"))))
61c30e9d
LF
1373 (build-system python-build-system)
1374 (arguments
a57495e2 1375 `(#:phases
61c30e9d 1376 (modify-phases %standard-phases
61c30e9d
LF
1377 (add-after 'install 'install-doc
1378 (lambda* (#:key outputs #:allow-other-keys)
1379 (let* ((out (assoc-ref outputs "out"))
1380 (doc (string-append out "/share/doc/khard")))
1381 (copy-recursively "misc/khard" doc)))))))
61c30e9d 1382 (propagated-inputs
a57495e2
LF
1383 `(("python-vobject" ,python-vobject)
1384 ("python-pyyaml" ,python-pyyaml)
1385 ("python-atomicwrites" ,python-atomicwrites)
1386 ("python-configobj" ,python-configobj)))
61c30e9d
LF
1387 (synopsis "Console address book using CardDAV")
1388 (description "Khard is an address book for the console. It creates, reads,
1389modifies and removes CardDAV address book entries at your local machine. For
1390synchronizing with a remote address book, @command{vdirsyncer} is recommended.
1391Khard can also be used from within the email client @command{mutt}.")
1392 (home-page "https://github.com/scheibler/khard")
1393 (license gpl3+)))
be0c5733
DM
1394
1395(define-public perl-mail-spf
1396 (package
1397 (name "perl-mail-spf")
1398 (version "v2.9.0")
1399 (source
1400 (origin
1401 (method url-fetch)
1402 (uri (string-append
1403 "mirror://cpan/authors/id/J/JM/JMEHNLE/mail-spf/Mail-SPF-"
1404 version
1405 ".tar.gz"))
1406 (sha256
1407 (base32
1408 "0qk1rfgfm5drj4iyniiabrasrpqv570vzhgz66lwgb67y4amkjv1"))))
1409 (build-system perl-build-system)
1410 (native-inputs
1411 `(("perl-module-build" ,perl-module-build)
1412 ("perl-net-dns-resolver-programmable"
1413 ,perl-net-dns-resolver-programmable)))
1414 (arguments
1415 `(#:phases (modify-phases %standard-phases
1416 (add-before 'configure 'modify-Build.PL
1417 (lambda* (#:key outputs #:allow-other-keys)
1418 (substitute* "Build.PL"
1419 (("'/usr/sbin'") (string-append "'"
1420 (assoc-ref outputs "out")
1421 "/sbin'")))
1422 #t)))))
1423 (inputs
1424 `(("perl-error" ,perl-error)
1425 ("perl-net-dns" ,perl-net-dns)
1426 ("perl-netaddr-ip" ,perl-netaddr-ip)
1427 ("perl-uri" ,perl-uri)))
1428 (home-page
1429 "http://search.cpan.org/dist/Mail-SPF")
1430 (synopsis
1431 "Perl implementation of Sender Policy Framework")
1432 (description "Mail::SPF is the Sender Policy Framework implemented
1433in Perl.")
1434 (license bsd-3)))
24262239
CL
1435
1436(define-public mb2md
1437 (package
1438 (name "mb2md")
1439 (version "3.20")
1440 (source (origin
1441 (method url-fetch)
1442 (uri (string-append
1443 "http://batleth.sapienti-sat.org/projects/mb2md/mb2md-"
1444 version ".pl.gz"))
1445 (sha256
1446 (base32
1447 "0bvkky3c90738h3skd2f1b2yy5xzhl25cbh9w2dy97rs86ssjidg"))))
1448 (build-system trivial-build-system)
1449 (arguments
1450 '(#:modules ((guix build utils))
1451 #:builder
1452 (begin
1453 (use-modules (guix build utils))
1454 (let* ((source (assoc-ref %build-inputs "source"))
1455 (out (assoc-ref %outputs "out"))
1456 (bin (string-append out "/bin"))
1457 (perl (assoc-ref %build-inputs "perl"))
1458 (gzip (assoc-ref %build-inputs "gzip"))
1459 (perl-timedate (assoc-ref %build-inputs "perl-timedate"))
1460 (perl5lib (string-append perl-timedate "/lib/perl5/site_perl")))
1461 (mkdir-p bin)
1462 (with-directory-excursion bin
1463 (copy-file source "mb2md.gz")
1464 (system* (string-append gzip "/bin/gzip") "-d" "mb2md.gz")
1465 (substitute* "mb2md"
1466 (("#!/usr/bin/perl")
1467 (string-append "#!/usr/bin/perl -I " perl5lib)))
1468 (patch-shebang "mb2md" (list (string-append perl "/bin")))
1469 (chmod "mb2md" #o555))
1470 #t))))
1471 (native-inputs `(("gzip", gzip)))
1472 (inputs `(("perl" ,perl)
1473 ("perl-timedate" ,perl-timedate)))
1474 (home-page "http://batleth.sapienti-sat.org/projects/mb2md/")
1475 (synopsis "Mbox to maildir converter")
1476 (description
1477 "Mb2md is a Perl script that takes one or more mbox format files and
1478converts them to maildir format directories.")
1479 (license public-domain)))
e0d7b421
AI
1480
1481(define-public mpop
1482 (package
1483 (name "mpop")
5837e699 1484 (version "1.2.6")
e0d7b421
AI
1485 (source
1486 (origin
1487 (method url-fetch)
175c9103
LF
1488 (uri (string-append "mirror://sourceforge/mpop/mpop/" version
1489 "/mpop-" version ".tar.xz"))
e0d7b421
AI
1490 (sha256
1491 (base32
5837e699 1492 "0p1ix63jh64dibrlccch8q7gxl9nn18wd2qpyr5z1h4gs2fpmv4z"))))
e0d7b421
AI
1493 (build-system gnu-build-system)
1494 (inputs
1495 `(("gnutls" ,gnutls)
1496 ("libidn" ,libidn)))
1497 (native-inputs
1498 `(("pkg-config" ,pkg-config)))
1499 (arguments
1500 `(#:configure-flags (list "--with-tls=gnutls")))
1501 (home-page "http://mpop.sourceforge.net/")
1502 (synopsis "POP3 mail client")
1503 (description "mpop is a small and fast POP3 client suitable as a
1504fetchmail replacement.
1505
1506mpop supports multiple accounts, header based mail filtering, delivery
1507to mbox files, maildir folders or a Mail Delivery Agent (MDA),
1508TLS/SSL, several authentication methods, Internationalized Domain
1509Names (IDN) and SOCKS proxies.")
1510 (license gpl3+)))
74c0282c 1511
1512(define-public mhonarc
1513 (package
1514 (name "mhonarc")
1515 (version "2.6.19")
1516 (source
1517 (origin
1518 (method url-fetch)
1519 (uri (string-append "mirror://cpan/authors/id/E/EH/EHOOD/MHonArc-"
1520 version ".tar.gz"))
1521 (sha256
1522 (base32
1523 "0ll3v93yji334zqp6xfzfxc0127pmjcznmai1l5q6dzawrs2igzq"))))
1524 (build-system perl-build-system)
1525 (home-page "https://www.mhonarc.org/")
1526 (synopsis "Create HTML archives of mail/news messages")
1527 (description
1528 "MHonArc is a Perl mail-to-HTML converter. MHonArc
1529provides HTML mail archiving with index, mail thread linking,
1530etc; plus other capabilities including support for MIME and
1531powerful user customization features.")
1532 (license gpl2+)))
5d87088c
JD
1533
1534
1535(define-public sendmail
1536 (package
1537 (name "sendmail")
1538 (version "8.15.2")
1539 (source
1540 (origin
1541 (method url-fetch)
1542 (uri (string-append
1543 "ftp://ftp.sendmail.org/pub/sendmail/sendmail."
1544 version ".tar.gz"))
1545 (sha256
1546 (base32
1547 "0fdl9ndmspqspdlmghzxlaqk56j3yajk52d7jxcg21b7sxglpy94"))))
1548 (build-system gnu-build-system)
1549 (arguments
1550 `(#:phases
1551 (modify-phases %standard-phases
1552 (add-before 'build 'replace-/bin/sh
1553 (lambda _
1554 (substitute*
1555 (append
1556 (list "smrsh/smrsh.c" "sendmail/conf.c" "contrib/mailprio"
1557 "contrib/mmuegel" "devtools/bin/configure.sh")
1558 (find-files "." ".*\\.m4")
1559 (find-files "." ".*\\.cf"))
19527952 1560 (("/bin/sh") (which "sh")))
5d87088c
JD
1561
1562 (substitute* "devtools/bin/Build"
19527952 1563 (("SHELL=/bin/sh") (string-append "SHELL=" (which "sh"))))
5d87088c
JD
1564 #t))
1565 (replace 'configure
1566 (lambda _
1567
1568 ;; Render harmless any attempts to chown or chgrp
1569 (substitute* "devtools/bin/install.sh"
1570 (("owner=\\$2") "owner=''")
1571 (("group=\\$2") "group=''"))
1572
1573 (with-output-to-file "devtools/Site/site.config.m4"
1574 (lambda ()
1575 (format #t "
1576define(`confCC', `gcc')
1577define(`confOPTIMIZE', `-g -O2')
1578define(`confLIBS', `-lresolv')
1579define(`confINSTALL', `~a/devtools/bin/install.sh')
1580define(`confDEPEND_TYPE', `CC-M')
1581define(`confINST_DEP', `')
1582" (getcwd))))))
1583 (replace 'build
1584 (lambda _
1585 (and (zero? (system* "sh" "Build"))
1586 (with-directory-excursion "cf/cf"
1587 (begin
1588 (copy-file "generic-linux.mc" "sendmail.mc")
1589 (zero? (system* "sh" "Build" "sendmail.cf")))))))
1590 (add-before 'install 'pre-install
1591 (lambda _
1592 (let ((out (assoc-ref %outputs "out")))
1593 (mkdir-p (string-append out "/usr/bin"))
1594 (mkdir-p (string-append out "/usr/sbin"))
1595 (mkdir-p (string-append out "/etc/mail"))
1596 (setenv "DESTDIR" out)
1597 (with-directory-excursion "cf/cf"
1598 (zero? (system* "sh" "Build" "install-cf")))))))
1599 ;; There is no make check. There are some post installation tests, but those
1600 ;; require root privileges
1601 #:tests? #f))
1602 (inputs
1603 `(("m4" ,m4)
1604 ("perl" ,perl)))
1605 (home-page "http://sendmail.org")
1606 (synopsis
1607 "Highly configurable Mail Transfer Agent (MTA)")
1608 (description
1609 "Sendmail is a mail transfer agent (MTA) originally developed by Eric
1610Allman. It is highly configurable and supports many delivery methods and many
1611transfer protocols.")
1612 (license (non-copyleft "file://LICENSE"
1613 "See LICENSE in the distribution."))))
1614
8b53366c 1615(define-public opensmtpd
1616 (package
1617 (name "opensmtpd")
eb4b3e4b 1618 (version "6.0.2p1")
8b53366c 1619 (source (origin
1620 (method url-fetch)
1621 (uri (string-append "https://www.opensmtpd.org/archives/"
1622 name "-" version ".tar.gz"))
1623 (sha256
1624 (base32
eb4b3e4b 1625 "1b4h64w45hpmfq5721smhg4s0shs64gbcjqjpx3fbiw4hz8bdy9a"))))
8b53366c 1626 (build-system gnu-build-system)
1627 (inputs
1628 `(("bdb" ,bdb)
1629 ("libressl" ,libressl)
1630 ("libevent" ,libevent)
1631 ("libasr" ,libasr)
1632 ("linux-pam" ,linux-pam)
1633 ("zlib" ,zlib)))
1634 (native-inputs
d7da7604
SB
1635 `(("bison" ,bison)
1636 ("groff" ,groff)))
8b53366c 1637 (arguments
ae1e2133
SB
1638 `(#:configure-flags
1639 (list "--with-table-db" "--localstatedir=/var"
1640 "--with-user-smtpd=smtpd" "--with-user-queue=smtpq"
1641 "--with-group-queue=smtpq"
1642 "--with-path-socket=/var/run"
1643 "--with-path-CAfile=/etc/ssl/certs/ca-certificates.crt")
8b53366c 1644 #:phases
1645 (modify-phases %standard-phases
1646 ;; OpenSMTPD provides a single utility smtpctl to control the daemon and
1647 ;; the local submission subsystem. To accomodate systems that require
1648 ;; historical interfaces such as sendmail, newaliases or makemap, the
1649 ;; smtpctl utility can operate in compatibility mode if called with the
1650 ;; historical name.
1651 (add-after 'install 'install-compabilitymode
1652 (lambda _
1653 (let* ((out (assoc-ref %outputs "out"))
1654 (sbin (string-append out "/sbin/")))
1655 (for-each (lambda (cmd)
1656 (symlink "smtpctl" (string-append sbin cmd)))
1657 '("makemap" "sendmail" "send-mail"
1658 "newaliases" "mailq")))
1659 #t)))))
1660 (synopsis "Lightweight SMTP daemon")
1661 (description
1662 "OpenSMTPD is an implementation of the server-side SMTP protocol, with
1663some additional standard extensions. It allows ordinary machines to exchange
1664e-mails with other systems speaking the SMTP protocol.")
1665 (home-page "https://www.opensmtpd.org")
1666 (license (list bsd-2 bsd-3 bsd-4 (non-copyleft "file://COPYING")
19262a71 1667 public-domain isc license:openssl))))
152ffe7c 1668
1669(define-public opensmtpd-extras
1670 (package
1671 (name "opensmtpd-extras")
1672 (version "5.7.1")
1673 (source (origin
1674 (method url-fetch)
1675 (uri (string-append "https://www.opensmtpd.org/archives/"
1676 name "-" version ".tar.gz"))
1677 (sha256
1678 (base32
1679 "1kld4hxgz792s0cb2gl7m2n618ikzqkj88w5dhaxdrxg4x2c4vdm"))))
1680 (build-system gnu-build-system)
1681 (inputs
1682 `(("libressl" ,libressl)
1683 ("libevent" ,libevent)
1684 ("libasr" ,libasr)
1685 ("python-2" ,python-2)
1686 ("opensmtpd" ,opensmtpd)
1687 ("perl" ,perl)
1688 ("lua" ,lua)
1689 ("postgresql" ,postgresql)
1690 ("sqlite" ,sqlite)
1691 ("linux-pam" ,linux-pam)))
1692 (native-inputs
1693 `(("bison" ,bison)
1694 ("pkg-config" ,pkg-config)
1695 ("groff" ,groff)
1696 ("automake" ,automake)
1697 ("autoconf" ,autoconf)))
1698 (arguments
1699 `(;; We have to configure it like this because the default checks for for example
1700 ;; python in /usr/local/bin, /usr/bin and fails otherwise.
1701 #:configure-flags (list
1702 "--with-filter-clamav" "--with-filter-dkim-signer"
1703 "--with-filter-dnsbl" "--with-filter-lua"
1704 "--with-filter-monkey" "--with-filter-pause"
1705 "--with-filter-perl" "--with-filter-python"
1706 "--with-filter-regex" "--with-filter-spamassassin"
1707 "--with-filter-stub" "--with-filter-trace"
1708 "--with-filter-void"
1709
1710 "--with-queue-null" "--with-queue-python"
1711 "--with-queue-ram" "--with-queue-stub"
1712
1713 "--with-scheduler-python" "--with-scheduler-ram"
1714 "--with-scheduler-stub"
1715
1716 "--with-table-ldap" ; "--with-table-mysql"
1717 "--with-table-passwd" "--with-table-postgres"
1718 "--with-table-python" "--with-table-socketmap"
1719 "--with-table-sqlite" "--with-table-stub"
1720 ;;"--with-table-redis" ; TODO: package hiredis
1721
1722 "--with-user=smtpd" "--with-privsep-user=smtpd"
1723 "--localstatedir=/var" "--sysconfdir=/etc"
1724 "--with-lua-type=lua" ; can use lua or luajit
1725
1726 (string-append "--with-python="
1727 (assoc-ref %build-inputs "python-2"))
1728 (string-append "--with-lua="
1729 (assoc-ref %build-inputs "lua")))))
19262a71
LC
1730 (license (list bsd-2 bsd-3 bsd-4
1731 public-domain isc license:openssl))
152ffe7c 1732 (synopsis "Extra tables, filters, and various other addons for OpenSMTPD")
1733 (description
1734 "This package provides extra tables, filters, and various other addons
1735for OpenSMTPD to extend its functionality.")
1736 (home-page "https://www.opensmtpd.org")))
6d3dda4f 1737
1738(define-public python-mailmanclient
1739 (package
1740 (name "python-mailmanclient")
1741 (version "1.0.1")
1742 (source
1743 (origin
1744 (method url-fetch)
1745 (uri (pypi-uri "mailmanclient" version))
1746 (sha256
1747 (base32
1748 "1cfjh45fgbsax5hjj2inq9nk33dhdvh63xhysc8dhnqidgqgm8c5"))))
1749 (build-system python-build-system)
1750 (arguments
1751 `(#:tests? #f)) ; Requires mailman running
f22efa01 1752 (propagated-inputs
6d3dda4f 1753 `(("python-six" ,python-six)
1754 ("python-httplib2" ,python-httplib2)))
1755 (home-page "https://launchpad.net/mailman.client")
1756 (synopsis "Python bindings for the Mailman 3 REST API")
1757 (description
1758 "The mailmanclient library provides official Python bindings for
1759the GNU Mailman 3 REST API.")
6d3dda4f 1760 (license lgpl3+)))
1761
1762(define-public python2-mailmanclient
5c31f4aa 1763 (package-with-python2 python-mailmanclient))
3163a289 1764
1765(define-public mlmmj
1766 (package
1767 (name "mlmmj")
1768 (version "1.2.19.0")
1769 (source
1770 (origin
1771 (method url-fetch)
1772 (uri (string-append "http://mlmmj.org/releases/mlmmj-"
1773 version ".tar.bz2"))
1774 (sha256
1775 (base32
1776 "1piwvcxkqadjwk5x8jicaiyz9nngmaj3w13ghdqgaki32xd7zk9v"))))
1777 (build-system gnu-build-system)
1778 (inputs
1779 `(("perl" ,perl))) ; For "contrib/web/"
1780 (native-inputs
1781 `(("pkg-config" ,pkg-config)))
1782 (arguments
1783 `(#:configure-flags
1784 ;; mlmmj-receive-strip is a replacement for mlmmj-receive
1785 ;; It opens the files control/mimedeny and control/mimestrip to get a list
1786 ;; of mimetypes for parts of multipart/mime messages that should be denied
1787 ;; or stripped. The parts then get stripped directly when the mail is
1788 ;; received. mlmmj-receive-strip also appends an extra header
1789 ;; X-ThisMailContainsUnwantedMimeParts: Y when the mail contains unwanted
1790 ;; mime parts
1791 (list "--enable-receive-strip")
1792 #:phases
1793 (modify-phases %standard-phases
1794 (add-before 'install 'install-contrib
1795 (lambda* (#:key outputs #:allow-other-keys)
1796 (let* ((out (assoc-ref outputs "out"))
1797 (share (string-append out "/share/mlmmj"))
1798 (contrib (string-append share "/contrib/web"))
1799 (texts (string-append share "/listtexts")))
1800 (copy-recursively "contrib/web/" contrib)
1801 (copy-recursively "listtexts" texts)
1802 (rename-file texts (string-append share "/texts"))
1803 #t))))))
1804 (home-page "http://mlmmj.org")
1805 (synopsis "Mailing list managing made joyful")
1806 (description
1807 "Mlmmj is a simple and slim mailing list manager (MLM) inspired by ezmlm.
1808It works with many different Mail Transport Agents (MTAs) and is simple for a
1809system adminstrator to install, configure and integrate with other software.
1810As it uses very few resources, and requires no daemons, it is ideal for
1811installation on systems where resources are limited. Its features include:
1812@enumerate
1813@item Archive, Custom headers / footer,
1814@item Fully automated bounce handling (similar to ezmlm),
1815@item Complete requeueing functionality, Moderation functionality, Subject prefix,
1816@item Subscribers only posting, Regular expression access control,
1817@item Functionality to retrieve old posts, Web interface, Digests,
1818@item No-mail subscription, VERP support,
1819@item Delivery Status Notification (RFC1891) support,
1820@item Rich and customisable texts for automated operations.
1821@end enumerate\n")
1822 (license license:expat)))