@@ -4876,3 +4876,128 @@ (define-public aerc
;; <https://lists.sr.ht/~rjarry/aerc-devel/%3Cb5cb213a7d0c699a886971658c2476
;; 1073eb2391%40disroot.org%3E>
(license license:gpl3+)))
+
+(define-public postfix
+ (package
+ (name "postfix")
+ (version "3.8-20221023")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "http://cdn.postfix.johnriley.me/mirrors/postfix-release/experimental/postfix-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "0aaylhn81n9z3kidx53kzf2jrilr3lgwfxsk1r4hn7nkrp62bcwm"))))
+ (build-system gnu-build-system)
+ (arguments
+ (list #:tests? #f
+ #:modules `((srfi srfi-26)
+ ,@%gnu-build-system-modules)
+ #:phases #~(modify-phases %standard-phases
+ (add-before 'configure 'patch-/bin/sh
+ (lambda _
+ (substitute* (find-files "." "^Makefile")
+ (("/bin/sh")
+ (which "sh")))))
+ (add-before 'configure 'patch-bdb-include
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "makedefs"
+ (("/usr/include")
+ (string-append (assoc-ref inputs "bdb")
+ "/include")))))
+ (add-before 'configure 'dont-hardcode-PATH
+ (lambda _
+ (substitute* '("postfix-install"
+ "conf/post-install")
+ (("^PATH=")
+ "# PATH="))))
+ (add-before 'configure 'fix-strict-PATH
+ (lambda _
+ (substitute* "src/util/sys_defs.h"
+ (("^#define (ROOT_PATH|_PATH_DEFPATH|_PATH_STDPATH).*")
+ "#define ROOT_PATH \"/run/setuid-programs:/run/current-system/profile/bin:/run/current-system/profile/sbin\"\n"))))
+ (add-before 'configure 'use-relative-symlink-to-store
+ (lambda _
+ (substitute* "postfix-install"
+ (("ln -sf")
+ "ln -rsf"))))
+ (add-before 'configure 'fix-absolute-path-to-setuid-programs
+ (lambda _
+ (substitute* "conf/postfix-script"
+ (("\\$command_directory/postqueue")
+ "/run/setuid-programs/postqueue")
+ (("\\$command_directory/postdrop")
+ "/run/setuid-programs/postdrop"))))
+ (add-before 'configure 'disable-warning-on-non-writable-config-files
+ (lambda _
+ (substitute* "conf/postfix-script"
+ (("find \\$todo \\\\\\( -perm -020 -o -perm -002 \\\\\\) \\\\\n")
+ " # find $todo \\( -perm -020 -o -perm -002 \\)"))))
+ (add-before 'configure 'disable-write-to-/etc/postfix
+ (lambda _
+ (substitute* "src/postconf/postconf_edit.c"
+ (("pcf_set_config_dir.*")
+ "return;"))))
+ (add-before 'configure 'setup-environment
+ (lambda* (#:key outputs inputs #:allow-other-keys)
+ (setenv "CCARGS"
+ (string-append
+ "-DUSE_TLS -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I"
+ (assoc-ref inputs "cyrus-sasl")
+ "/include/sasl"))
+ (setenv "AUXLIBS" "-lnsl -lcrypto -lssl -lsasl2")
+ (let* ((out (assoc-ref outputs "out"))
+ (bin (string-append out "/bin"))
+ (sbin (string-append out "/sbin"))
+ (lib (string-append out "/lib/postfix"))
+ (libexec (string-append out
+ "/libexec/postfix"))
+ (etc (string-append out "/etc/postfix"))
+ (man (string-append out "/share/man"))
+ (doc (string-append out
+ "/share/doc/postfix-"
+ #$version))
+ (html (string-append doc "/html")))
+ (setenv "install_root" "wip-prefix")
+ (setenv "newaliases_path"
+ (string-append bin "/newaliases"))
+ (setenv "mailq_path"
+ (string-append bin "/mailq"))
+ (setenv "sendmail_path"
+ (string-append sbin "/sendmail"))
+ (setenv "command_directory" sbin)
+ (setenv "shlib_directory" lib)
+ (setenv "daemon_directory" libexec)
+ (setenv "meta_directory" etc)
+ (setenv "sample_directory" etc)
+ (setenv "manpage_directory" man)
+ (setenv "readme_directory" doc)
+ (setenv "html_directory" html)
+ (setenv "sample_directory"
+ (string-append out "/share/postfix")))))
+ (replace 'configure
+ (lambda _
+ (invoke "make" "makefiles" "pie=yes"
+ "dynamicmaps=yes")))
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (invoke "make" "non-interactive-package")
+ (delete-file-recursively "wip-prefix/var")
+ (copy-recursively "wip-prefix/etc"
+ (string-append out "/etc"))
+ (copy-recursively (string-append "wip-prefix"
+ out) out)))))))
+ (inputs (list bdb cyrus-sasl libnsl openssl perl))
+ (native-inputs (list m4))
+ (home-page "https://www.postfix.org")
+ (synopsis "sendmail compatible MTA")
+ (description
+ "Postfix is Wietse Venema's mail server that started life at IBM research
+as an alternative to the widely-used Sendmail program. Now at Google, Wietse
+continues to support Postfix.
+
+Postfix attempts to be fast, easy to administer, and secure. The outside has a
+definite Sendmail-ish flavor, but the inside is completely different.")
+ (license (list license:ibmpl1.0 license:epl2.0))))