WIP version of postfix.scm

OpenSubmitted by Brant Gardner.
Details
5 participants
  • Gábor Boskovits
  • Brant Gardner
  • Christine Lemmer-Webber
  • Jan Nieuwenhuizen
  • Ricardo Wurmus
Owner
unassigned
Severity
normal
B
B
Brant Gardner wrote on 7 May 2019 17:15
(address . guix-patches@gnu.org)
567ff351-d0f4-4143-af85-4a0e5c83c012@www.fastmail.com
I've gotten it to the point where it builds but does not install - Postfix seems to have a non-standard install procedure and I'm not sure how to proceed.

'guix lint' is mostly happy with it and I tried to follow standards but I'm still new at this so any comments are appreciated.

Thank you!

--
Brant Gardner
Attachment: file
From 212731a40d9ad0f41c757d42aacc98efbf3f9ddf Mon Sep 17 00:00:00 2001
From: Brant Gardner <brantcgardner@brantware.com>
Date: Tue, 7 May 2019 10:09:08 -0500
Subject: [PATCH] gnu: Add postfix WIP.

* gnu/packages/postfix.scm (postfix): New public variable.
---
gnu/packages/postfix.scm | 85 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 85 insertions(+)
create mode 100644 gnu/packages/postfix.scm

Toggle diff (93 lines)
diff --git a/gnu/packages/postfix.scm b/gnu/packages/postfix.scm
new file mode 100644
index 0000000000..6585c108e4
--- /dev/null
+++ b/gnu/packages/postfix.scm
@@ -0,0 +1,85 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2019 Brant Gardner <bcg@member.fsf.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages postfix)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix build-system gnu)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (gnu packages autotools)
+  #:use-module (gnu packages base)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages dbm)
+  #:use-module (gnu packages onc-rpc)
+  #:use-module (gnu packages perl))
+
+(define-public postfix
+  (package
+    (name "postfix")
+    (version "3.4.5")
+    (source (origin
+              (method url-fetch)
+              (uri
+               (string-append
+                "ftp://ftp.porcupine.org/mirrors/project-history/postfix/official/postfix-"
+                version ".tar.gz"))
+              (sha256
+               (base32
+                "17riwr21i9p1h17wpagfiwkpx9bbx7dy4gpdl219a11akm7saawb"))))
+    (build-system gnu-build-system)
+    (arguments '(#:phases
+                 (modify-phases %standard-phases
+                   (add-before 'build 'patch-/bin/sh
+                     (lambda _
+                       (substitute* (find-files "." "^Makefile.in")
+                         (("/bin/sh") (which "sh")))
+                       #t))
+                   (add-before 'build 'auxlibs
+                     (lambda _
+                       (setenv "AUXLIBS"
+                               "-lnsl -lresolv") ; Required, but postfix OS
+                                                 ; detection in leaves these
+                                                 ; unset for Guix
+                       #t))
+                   (add-before 'build 'patch-/usr/include
+                     (lambda* (#:key inputs #:allow-other-keys)
+                       (substitute* '("makedefs")
+                         (("/usr/include") (string-append (assoc-ref
+                                                           inputs "bdb")
+                                                          "/include"))) #t))
+                   (add-before 'build 'configure-postfix ; Move configuration folder
+                     (lambda* (#:key outputs #:allow-other-keys)
+                       (invoke "make" "makefiles"
+                               (string-append "CCARGS=-DDEF_CONFIG_DIR=\\\""
+                                (assoc-ref outputs "out") "/etc\\\"")) #t))
+                   (delete 'configure) ; no configure script
+                   (delete 'check)))) ; no check
+    (inputs `(("bdb" ,bdb)
+              ("libnsl" ,libnsl)))
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("libtool" ,libtool)
+       ("perl" ,perl)
+       ("pkg-config" ,pkg-config)))
+    (synopsis "Full-featured & secure sendmail replacement")
+    (description "Postfix attempts to be fast, easy to administer, and
+secure.  The outside has a definite Sendmail-ish flavor, but the inside is
+completely different.")
+    (home-page "https://www.postfix.org/")
+    (license license:ibmpl1.0)))
-- 
2.21.0
J
J
Jan Nieuwenhuizen wrote on 10 Aug 2020 08:49
Re: wip-postfix
(name . Gábor Boskovits)(address . boskovits@gmail.com)
878sen0zcd.fsf@gnu.org
Gábor Boskovits writes:

Hello!

Toggle quote (4 lines)
>> Jan Nieuwenhuizen <janneke@gnu.org> ezt írta (időpont: 2020. márc. 17., Ke 9:02):
>
> Gábor Boskovits writes:

I took the liberty of rebasing wip-postfix on latest master and
found it does not compile

Toggle snippet (13 lines)
gcc -fPIC -I. -I../../include -DNO_EAI -DDEF_SMTPUTF8_ENABLE=\"no\" -DHAS_DEV_URANDOM -DDEF_SHLIB_DIR=\"/gnu/store/hbdrbb84krvjvw58vmr1pvzb6l3gbmyv-postfix-minimal-3.4.8\" -DUSE_DYNAMIC_LIBS -DUSE_DYNAMIC_MAPS -Wmissing-prototypes -Wformat -Wno-comment -fPIC -g -O -I. -I../../include -DLINUX5 -c dns_str_resflags.c
dns_str_resflags.c:55:13: warning: RES_AAONLY is deprecated
"RES_AAONLY", RES_AAONLY,
^~~~~~~~~~~~~~~~~
dns_str_resflags.c:57:13: warning: RES_PRIMARY is deprecated
"RES_PRIMARY", RES_PRIMARY,
^~~~~~~~~~~~~~~~~~~
dns_str_resflags.c:63:22: error: ‘RES_INSECURE1’ undeclared here (not in a function); did you mean ‘RES_RECURSE’?
"RES_INSECURE1", RES_INSECURE1,
^~~~~~~~~~~~~
RES_RECURSE

Luckily, that was easily fixed by updating postfix to 3.5.0.

Toggle quote (3 lines)
>> When I hack around and create /etc/ailases.db, it works.
> I would like to add a service config for this.

I found we already have mail-aliases-service-type, so I used that,
together with running postalias. Now, queuing mail works ootb...but
delivery seems not to work: it remains queued.

I rebased wip-postfix and added a couple of patches for this. Please
feel free to revert them if you don't like it :-)

When starting postfix like so

Toggle snippet (5 lines)
./pre-inst-env guix system vm gnu/system/examples/postfix.tmpl`\
--nographic -m 1G\
--nic user,model=virtio-net-pci,hostfwd=tcp::12025-:25,hostfwd=tcp:127.0.0.1:12022-:2222

I'm seeing

Toggle snippet (33 lines)
07:39:18 janneke@dundal:~/src/guix/wip-postfix [env]
$ telnet localhost 12025
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 komputilo.localdomain ESMTP Postfix
mail from: root
mail from: root
250 2.1.0 Ok
rcpt to: alice
rcpt to: alice
250 2.1.5 Ok
data
data
354 End data with <CR><LF>.<CR><LF>
hello Alice!
hello Alice!
.
.
250 2.0.0 Ok: queued as E26BA3116
quit
quit
221 2.0.0 Bye
Connection closed by foreign host.
08:03:53 janneke@dundal:~/src/guix/wip-postfix [env]
$ ssh -p 12022 root@localhost /gnu/store/mydn0wr0bs7mz3rx9fwihpma26r0dpqq-postfix-minimal-3.5.0/mailq -C /gnu/store/nj5pa9l9zy6vx5484pbdsqnilva8bivc-postfix-config-dir
-Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------
E26BA3116* 175 Mon Aug 10 08:00:50 root@komputilo.localdomain
alice@komputilo.localdomain

-- 0 Kbytes in 1 Request.

Ideas?

Toggle quote (10 lines)
>> It looks like most everything is installed in a single, flat directory
>>
>> /gnu/store/pyv0rpd6zs0m2i482cb8qxd6mhf5b47z-postfix-minimal-3.4.8
>>
>> executables, copies of readmes, (unused?) config files (main.cf,
>> aliases)?
>
> Yes, but can be easily separated. The config files are installer
> generated, and not used.

Ok => TODO :-)

Toggle quote (7 lines)
>> Anyhow, this is a great start; next Mailman?
>
> One thing that blocks me from finishing this is that the setuid
> programs in the os declatation should be extended, so that we can use
> the privilege separation of postfix. I would like to propose a patch
> later this week.

Any insight here, something blocking maybe?

Greetings,
Janneke

Jan (janneke) Nieuwenhuizen (5):
gnu: postfix-minimal: Updato to 3.5.0.
system: examples: Add postfix.tmpl.
gnu: postfix-minimal: Fix startup warnings.
service: postfix: Use mail-aliases-service-type.
system: postfix.tmpl: Add mail-aliases-service.

gnu/packages/mail.scm | 32 ++++++++++++-------
gnu/services/mail.scm | 12 ++++++-
gnu/system/examples/postfix.tmpl | 54 ++++++++++++++++++++++++++++++++
3 files changed, 86 insertions(+), 12 deletions(-)
create mode 100644 gnu/system/examples/postfix.tmpl

--
Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com| Avatar® http://AvatarAcademy.com
J
J
Jan (janneke) Nieuwenhuizen wrote on 10 Aug 2020 08:51
[PATCH 1/5] gnu: postfix-minimal: Updato to 3.5.0.
20200810065112.6879-1-janneke@gnu.org
* gnu/packages/mail.scm (postfix-minimal): Update to 3.5.0. Fixes build with
glibc-2.30.
---
gnu/packages/mail.scm | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

Toggle diff (25 lines)
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index a2708ed1a2..94236bbbcd 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -3558,7 +3558,7 @@ based on asyncio.")
 (define-public postfix-minimal
   (package
     (name "postfix-minimal")
-    (version "3.4.8")
+    (version "3.5.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://cdn.postfix.johnriley.me/"
@@ -3566,7 +3566,7 @@ based on asyncio.")
                                   "postfix-" version ".tar.gz"))
               (sha256
                (base32
-                "0hw9kbr05qdzvfqhxi4dp4n3s9xvdh0gr0la08a4bip06ybl4pcd"))))
+                "1k2mxx9yx8lif804ff7zjyllizv4najfv3dca912k6j46fbr5b12"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
-- 
Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com
J
J
Jan (janneke) Nieuwenhuizen wrote on 10 Aug 2020 08:51
[PATCH 2/5] system: examples: Add postfix.tmpl.
20200810065112.6879-2-janneke@gnu.org
* gnu/system/examples/postfix.tmpl: New file.
---
gnu/system/examples/postfix.tmpl | 52 ++++++++++++++++++++++++++++++++
1 file changed, 52 insertions(+)
create mode 100644 gnu/system/examples/postfix.tmpl

Toggle diff (61 lines)
diff --git a/gnu/system/examples/postfix.tmpl b/gnu/system/examples/postfix.tmpl
new file mode 100644
index 0000000000..e0b335954e
--- /dev/null
+++ b/gnu/system/examples/postfix.tmpl
@@ -0,0 +1,52 @@
+;; This is an operating system configuration template for testing postfix.
+
+(use-modules (gnu))
+(use-service-modules mail networking ssh)
+(use-package-modules ssh)
+
+(operating-system
+  (host-name "komputilo")
+  (timezone "Europe/Berlin")
+  (locale "en_US.utf8")
+
+  ;; Boot in "legacy" BIOS mode, assuming /dev/sdX is the
+  ;; target hard disk, and "my-root" is the label of the target
+  ;; root file system.
+  (bootloader (bootloader-configuration
+                (bootloader grub-bootloader)
+                (target "/dev/sdX")))
+
+  ;; Allow run-vm.sh --nographic
+  (kernel-arguments '("console=tty0" "console=ttyS0"))
+  (file-systems (cons (file-system
+                        (device (file-system-label "guix"))
+                        (mount-point "/")
+                        (type "ext4"))
+                      %base-file-systems))
+
+  ;; This is where user accounts are specified.  The "root"
+  ;; account is implicit, and is initially created with the
+  ;; empty password.
+  (users (cons (user-account
+                (name "alice")
+                (comment "Bob's sister")
+                (group "users")
+
+                ;; Adding the account to the "wheel" group
+                ;; makes it a sudoer.
+                (supplementary-groups '("wheel")))
+               %base-user-accounts))
+
+  ;; Add services to the baseline: a DHCP client, POSTFIX and
+  ;; an SSH server.
+  (services (append (list (service dhcp-client-service-type)
+                          (service openssh-service-type
+                             (openssh-configuration
+                              (openssh openssh-sans-x)
+                              (use-pam? #f)
+                              (port-number 2222)
+                              (permit-root-login #t)
+                              (allow-empty-passwords? #t)
+                              (password-authentication? #t)))
+                          (service postfix-service-type))
+                    %base-services)))
-- 
Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com
J
J
Jan (janneke) Nieuwenhuizen wrote on 10 Aug 2020 08:51
[PATCH 3/5] gnu: postfix-minimal: Fix startup warnings.
20200810065112.6879-3-janneke@gnu.org
This avoids kind of funny replacements like these of `rm'

find -prune -perm -020
=>
find -prune -pe/gnu/store/zibwkb5xavnv6z3gzknfqjsxb9b0izh0-coreutils-8.31/bin/rm -020

* gnu/packages/mail.scm (postfix-minimal)[phases]: Set PATH rather than
substituting individual commands.
---
gnu/packages/mail.scm | 28 +++++++++++++++++++---------
1 file changed, 19 insertions(+), 9 deletions(-)

Toggle diff (56 lines)
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index 94236bbbcd..5f622595c9 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -35,6 +35,7 @@
 ;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
 ;;; Copyright © 2020 Brant Gardner <brantcgardner@brantware.com>
+;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -3569,7 +3570,10 @@ based on asyncio.")
                 "1k2mxx9yx8lif804ff7zjyllizv4najfv3dca912k6j46fbr5b12"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases
+     '(#:modules ((srfi srfi-26)
+                  (guix build utils)
+                  (guix build gnu-build-system))
+       #:phases
        (modify-phases %standard-phases
          (add-before 'build 'patch-/bin/sh
            (lambda _
@@ -3601,14 +3605,20 @@ based on asyncio.")
            (lambda _
              (invoke "make" "makefiles" "pie=yes" "dynamicmaps=yes")))
          (add-before 'install 'fix-postfix-scripts-path
-           (lambda _
-             (for-each
-              (lambda (command)
-                (substitute* '("postfix-install" "conf/post-install" "conf/postfix-script")
-                  (((string-append command " ")) (string-append (which command) " "))))
-              '("awk" "chmod" "chown" "chgrp" "cp" "find" "ln" "mkdir" "mv" "rm" "sed"
-                "sleep" "sort" "touch" "uname"))
-             #t))
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((path (string-join
+                          (map (compose (cute string-append <> "/bin")
+                                        (cute assoc-ref inputs <>))
+                               '("bash" "coreutils" "findutils" "gawk" "grep"
+                                 "sed"))
+                          ":")))
+               (substitute* '("postfix-install"
+                              "conf/post-install"
+                              "conf/postfix-script")
+                 (("^SHELL=/bin/sh")
+                  (string-append "PATH=" path "\n"
+                                 "SHELL=" (assoc-ref inputs "bash") "/bin/sh")))
+               #t)))
          (add-before 'install 'configure-install
            (lambda* (#:key outputs #:allow-other-keys)
              (let ((out (assoc-ref outputs "out")))
-- 
Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com
J
J
Jan (janneke) Nieuwenhuizen wrote on 10 Aug 2020 08:51
[PATCH 4/5] service: postfix: Use mail-aliases-service-type.
20200810065112.6879-4-janneke@gnu.org
* gnu/services/mail.scm (postfix-service-type): Extend mail-aliases-service-type.
(postfix-shepherd-service): Generate /etc/aliases.db if necessary.
---
gnu/services/mail.scm | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)

Toggle diff (42 lines)
diff --git a/gnu/services/mail.scm b/gnu/services/mail.scm
index 59cb373fbf..9a0066d920 100644
--- a/gnu/services/mail.scm
+++ b/gnu/services/mail.scm
@@ -5,6 +5,7 @@
 ;;; Copyright © 2017, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019 Kristofer Buffington <kristoferbuffington@gmail.com>
 ;;; Copyright © 2020 Gábor Boskovits <boskovits@gmail.com>
+;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -1956,9 +1957,17 @@ inet_protocols = ipv4
   (match-record config <postfix-configuration>
     (postfix)
     (let* ((postfix-binary (file-append postfix "/postfix"))
+           (postalias-binary (file-append postfix "/postalias"))
            (postfix-action
             (lambda (action)
               #~(lambda _
+                  (when (or (not (file-exists? "/etc/aliases.db"))
+                            (> (stat:mtime (stat "/etc/aliases"))
+                               (stat:mtime (stat "/etc/aliases.db"))))
+                    (invoke #$postalias-binary
+                            "-c"
+                            #$(postfix-configuration-directory config)
+                            "/etc/aliases"))
                   (invoke #$postfix-binary "-c"
                           #$(postfix-configuration-directory config)
                           #$action)))))
@@ -1974,6 +1983,7 @@ inet_protocols = ipv4
    (name 'postfix)
    (extensions (list (service-extension account-service-type postfix-accounts)
                      (service-extension activation-service-type postfix-activation)
-                     (service-extension shepherd-root-service-type postfix-shepherd-service)))
+                     (service-extension shepherd-root-service-type postfix-shepherd-service)
+                     (service-extension mail-aliases-service-type (const '()))))
    (description "Run the Postfix MTA.")
    (default-value (postfix-configuration))))
-- 
Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com
J
J
Jan (janneke) Nieuwenhuizen wrote on 10 Aug 2020 08:51
[PATCH 5/5] system: postfix.tmpl: Add mail-aliases-service.
20200810065112.6879-5-janneke@gnu.org
* gnu/system/examples/postfix.tmpl: Add mail-aliases-service-type.
---
gnu/system/examples/postfix.tmpl | 2 ++
1 file changed, 2 insertions(+)

Toggle diff (15 lines)
diff --git a/gnu/system/examples/postfix.tmpl b/gnu/system/examples/postfix.tmpl
index e0b335954e..7ebc8544f5 100644
--- a/gnu/system/examples/postfix.tmpl
+++ b/gnu/system/examples/postfix.tmpl
@@ -48,5 +48,7 @@
                               (permit-root-login #t)
                               (allow-empty-passwords? #t)
                               (password-authentication? #t)))
+                          (service mail-aliases-service-type
+                                   '(("postmaster" "root")))
                           (service postfix-service-type))
                     %base-services)))
-- 
Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com
G
G
Gábor Boskovits wrote on 11 Aug 2020 04:16
Re: wip-postfix
(name . Jan Nieuwenhuizen)(address . janneke@gnu.org)
CAE4v=pjVDxmC3p4+mWrCoMX_AtEJ_Ksbf1rQWJPm+NeHuGmY9A@mail.gmail.com
Hello Jan,

Jan Nieuwenhuizen <janneke@gnu.org> ezt írta (időpont: 2020. aug. 10., Hét
8:50):

Toggle quote (34 lines)
> Gábor Boskovits writes:
>
> Hello!
>
> >> Jan Nieuwenhuizen <janneke@gnu.org> ezt írta (időpont: 2020. márc.
> 17., Ke 9:02):
> >
> > Gábor Boskovits writes:
>
> I took the liberty of rebasing wip-postfix on latest master and
> found it does not compile
>
> --8<---------------cut here---------------start------------->8---
> gcc -fPIC -I. -I../../include -DNO_EAI -DDEF_SMTPUTF8_ENABLE=\"no\"
> -DHAS_DEV_URANDOM
> -DDEF_SHLIB_DIR=\"/gnu/store/hbdrbb84krvjvw58vmr1pvzb6l3gbmyv-postfix-minimal-3.4.8\"
> -DUSE_DYNAMIC_LIBS -DUSE_DYNAMIC_MAPS -Wmissing-prototypes -Wformat
> -Wno-comment -fPIC -g -O -I. -I../../include -DLINUX5 -c dns_str_resflags.c
> dns_str_resflags.c:55:13: warning: RES_AAONLY is deprecated
> "RES_AAONLY", RES_AAONLY,
> ^~~~~~~~~~~~~~~~~
> dns_str_resflags.c:57:13: warning: RES_PRIMARY is deprecated
> "RES_PRIMARY", RES_PRIMARY,
> ^~~~~~~~~~~~~~~~~~~
> dns_str_resflags.c:63:22: error: ‘RES_INSECURE1’ undeclared here (not in a
> function); did you mean ‘RES_RECURSE’?
> "RES_INSECURE1", RES_INSECURE1,
> ^~~~~~~~~~~~~
> RES_RECURSE
> --8<---------------cut here---------------end--------------->8---
>
> Luckily, that was easily fixed by updating postfix to 3.5.0.
>

Thanks for having a look.

Toggle quote (62 lines)
>
> >> When I hack around and create /etc/ailases.db, it works.
> > I would like to add a service config for this.
>
> I found we already have mail-aliases-service-type, so I used that,
> together with running postalias. Now, queuing mail works ootb...but
> delivery seems not to work: it remains queued.
>
> I rebased wip-postfix and added a couple of patches for this. Please
> feel free to revert them if you don't like it :-)
>
> When starting postfix like so
>
> --8<---------------cut here---------------start------------->8---
> ./pre-inst-env guix system vm gnu/system/examples/postfix.tmpl`\
> --nographic -m 1G\
> --nic
> user,model=virtio-net-pci,hostfwd=tcp::12025-:25,hostfwd=tcp:127.0.0.1:12022
> -:2222
> --8<---------------cut here---------------end--------------->8---
>
> I'm seeing
>
> --8<---------------cut here---------------start------------->8---
> 07:39:18 janneke@dundal:~/src/guix/wip-postfix [env]
> $ telnet localhost 12025
> Trying 127.0.0.1...
> Connected to localhost.
> Escape character is '^]'.
> 220 komputilo.localdomain ESMTP Postfix
> mail from: root
> mail from: root
> 250 2.1.0 Ok
> rcpt to: alice
> rcpt to: alice
> 250 2.1.5 Ok
> data
> data
> 354 End data with <CR><LF>.<CR><LF>
> hello Alice!
> hello Alice!
> .
> .
> 250 2.0.0 Ok: queued as E26BA3116
> quit
> quit
> 221 2.0.0 Bye
> Connection closed by foreign host.
> 08:03:53 janneke@dundal:~/src/guix/wip-postfix [env]
> $ ssh -p 12022 root@localhost
> /gnu/store/mydn0wr0bs7mz3rx9fwihpma26r0dpqq-postfix-minimal-3.5.0/mailq -C
> /gnu/store/nj5pa9l9zy6vx5484pbdsqnilva8bivc-postfix-config-dir
> -Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------
> E26BA3116* 175 Mon Aug 10 08:00:50 root@komputilo.localdomain
> alice@komputilo.localdomain
>
> -- 0 Kbytes in 1 Request.
> --8<---------------cut here---------------end--------------->8---
>
> Ideas?
>

I will have a look early next week. Most probably the setuid stuff is
missing, and access is denied to something.

Toggle quote (23 lines)
>
> >> It looks like most everything is installed in a single, flat directory
> >>
> >> /gnu/store/pyv0rpd6zs0m2i482cb8qxd6mhf5b47z-postfix-minimal-3.4.8
> >>
> >> executables, copies of readmes, (unused?) config files (main.cf,
> >> aliases)?
> >
> > Yes, but can be easily separated. The config files are installer
> > generated, and not used.
>
> Ok => TODO :-)
>
> >> Anyhow, this is a great start; next Mailman?
> >
> > One thing that blocks me from finishing this is that the setuid
> > programs in the os declatation should be extended, so that we can use
> > the privilege separation of postfix. I would like to propose a patch
> > later this week.
>
> Any insight here, something blocking maybe?
>

Nothing in particular. I had little time recently. I just finished a bigger
project, and I was on holiday. I will try to propose an interface for this
next week.


Toggle quote (4 lines)
> Greetings,
> Janneke
>

Regards,
g_bor

Toggle quote (18 lines)
>
> Jan (janneke) Nieuwenhuizen (5):
> gnu: postfix-minimal: Updato to 3.5.0.
> system: examples: Add postfix.tmpl.
> gnu: postfix-minimal: Fix startup warnings.
> service: postfix: Use mail-aliases-service-type.
> system: postfix.tmpl: Add mail-aliases-service.
>
> gnu/packages/mail.scm | 32 ++++++++++++-------
> gnu/services/mail.scm | 12 ++++++-
> gnu/system/examples/postfix.tmpl | 54 ++++++++++++++++++++++++++++++++
> 3 files changed, 86 insertions(+), 12 deletions(-)
> create mode 100644 gnu/system/examples/postfix.tmpl
>
> --
> Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org
> Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com
>
Attachment: file
C
C
Christine Lemmer-Webber wrote on 29 Jul 2021 18:19
(name . Gábor Boskovits)(address . boskovits@gmail.com)
87bl6lks91.fsf@dustycloud.org
Gábor Boskovits writes:

Toggle quote (94 lines)
> Hello Jan,
>
>> I took the liberty of rebasing wip-postfix on latest master and
>> found it does not compile
>>
>> --8<---------------cut here---------------start------------->8---
>> gcc -fPIC -I. -I../../include -DNO_EAI -DDEF_SMTPUTF8_ENABLE=\"no\"
>> -DHAS_DEV_URANDOM
>> -DDEF_SHLIB_DIR=\"/gnu/store/hbdrbb84krvjvw58vmr1pvzb6l3gbmyv-postfix-minimal-3.4.8\"
>> -DUSE_DYNAMIC_LIBS -DUSE_DYNAMIC_MAPS -Wmissing-prototypes -Wformat
>> -Wno-comment -fPIC -g -O -I. -I../../include -DLINUX5 -c dns_str_resflags.c
>> dns_str_resflags.c:55:13: warning: RES_AAONLY is deprecated
>> "RES_AAONLY", RES_AAONLY,
>> ^~~~~~~~~~~~~~~~~
>> dns_str_resflags.c:57:13: warning: RES_PRIMARY is deprecated
>> "RES_PRIMARY", RES_PRIMARY,
>> ^~~~~~~~~~~~~~~~~~~
>> dns_str_resflags.c:63:22: error: ‘RES_INSECURE1’ undeclared here (not in a
>> function); did you mean ‘RES_RECURSE’?
>> "RES_INSECURE1", RES_INSECURE1,
>> ^~~~~~~~~~~~~
>> RES_RECURSE
>> --8<---------------cut here---------------end--------------->8---
>>
>> Luckily, that was easily fixed by updating postfix to 3.5.0.
>>
>
> Thanks for having a look.
>
>>
>> >> When I hack around and create /etc/ailases.db, it works.
>> > I would like to add a service config for this.
>>
>> I found we already have mail-aliases-service-type, so I used that,
>> together with running postalias. Now, queuing mail works ootb...but
>> delivery seems not to work: it remains queued.
>>
>> I rebased wip-postfix and added a couple of patches for this. Please
>> feel free to revert them if you don't like it :-)
>>
>> When starting postfix like so
>>
>> --8<---------------cut here---------------start------------->8---
>> ./pre-inst-env guix system vm gnu/system/examples/postfix.tmpl`\
>> --nographic -m 1G\
>> --nic
>> user,model=virtio-net-pci,hostfwd=tcp::12025-:25,hostfwd=tcp:127.0.0.1:12022
>> -:2222
>> --8<---------------cut here---------------end--------------->8---
>>
>> I'm seeing
>>
>> --8<---------------cut here---------------start------------->8---
>> 07:39:18 janneke@dundal:~/src/guix/wip-postfix [env]
>> $ telnet localhost 12025
>> Trying 127.0.0.1...
>> Connected to localhost.
>> Escape character is '^]'.
>> 220 komputilo.localdomain ESMTP Postfix
>> mail from: root
>> mail from: root
>> 250 2.1.0 Ok
>> rcpt to: alice
>> rcpt to: alice
>> 250 2.1.5 Ok
>> data
>> data
>> 354 End data with <CR><LF>.<CR><LF>
>> hello Alice!
>> hello Alice!
>> .
>> .
>> 250 2.0.0 Ok: queued as E26BA3116
>> quit
>> quit
>> 221 2.0.0 Bye
>> Connection closed by foreign host.
>> 08:03:53 janneke@dundal:~/src/guix/wip-postfix [env]
>> $ ssh -p 12022 root@localhost
>> /gnu/store/mydn0wr0bs7mz3rx9fwihpma26r0dpqq-postfix-minimal-3.5.0/mailq -C
>> /gnu/store/nj5pa9l9zy6vx5484pbdsqnilva8bivc-postfix-config-dir
>> -Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------
>> E26BA3116* 175 Mon Aug 10 08:00:50 root@komputilo.localdomain
>> alice@komputilo.localdomain
>>
>> -- 0 Kbytes in 1 Request.
>> --8<---------------cut here---------------end--------------->8---
>>
>> Ideas?
>>
>
> I will have a look early next week. Most probably the setuid stuff is
> missing, and access is denied to something.

Good news, the new setuid stuff is in now in git master.

This probably means wip-postfix could be rebased on top of it again and
could take advantage of it?
C
C
Christine Lemmer-Webber wrote on 29 Jul 2021 18:22
Re: [bug#35619] [PATCH 5/5] system: postfix.tmpl: Add mail-aliases-service.
(name . Jan (janneke) Nieuwenhuizen)(address . janneke@gnu.org)
8735rxks2p.fsf@dustycloud.org
Now that the new setuid tooling is in, we should probably try updating
this and getting it going again. The wip-postfix branch should probably
be rebased as a first step and adjusted to use the new setuid tooling?

Anything else that should be done to make it happen?

- Christine
G
G
Gábor Boskovits wrote on 29 Jul 2021 20:49
(name . Christine Lemmer-Webber)(address . cwebber@dustycloud.org)
CAE4v=piX7ZrXpYWydPUfm=+X9TZ9WouPJ1_F1oEOCSGVUSTeiw@mail.gmail.com
Hello,

yup, that should be the first step. Once that is done I can have a look at
this again, and see what is missing.


Christine Lemmer-Webber <cwebber@dustycloud.org> ezt írta (időpont: 2021.
júl. 29., Cs, 18:22):

Toggle quote (10 lines)
> Now that the new setuid tooling is in, we should probably try updating
> this and getting it going again. The wip-postfix branch should probably
> be rebased as a first step and adjusted to use the new setuid tooling?
>
> Anything else that should be done to make it happen?
>
> - Christine
>


--
OpenPGP Key Fingerprint: 7988:3B9F:7D6A:4DBF:3719:0367:2506:A96C:CF63:0B21
Attachment: file
C
C
Christine Lemmer-Webber wrote on 30 Jul 2021 16:16
(name . Gábor Boskovits)(address . boskovits@gmail.com)
878s1nj3a7.fsf@dustycloud.org
I've rebased wip-postfix and pushed it up.

The new setuid stuff is not yet added, I just rebased the older commits
on top.

Gábor Boskovits writes:

Toggle quote (17 lines)
> Hello,
>
> yup, that should be the first step. Once that is done I can have a look at
> this again, and see what is missing.
>
>
> Christine Lemmer-Webber <cwebber@dustycloud.org> ezt írta (időpont: 2021.
> júl. 29., Cs, 18:22):
>
>> Now that the new setuid tooling is in, we should probably try updating
>> this and getting it going again. The wip-postfix branch should probably
>> be rebased as a first step and adjusted to use the new setuid tooling?
>>
>> Anything else that should be done to make it happen?
>>
>> - Christine
>>
R
R
Ricardo Wurmus wrote on 12 Jun 12:29 +0200
WIP version of postfix.scm
(address . 35619@debbugs.gnu.org)
87edzu18cm.fsf@elephly.net
I just rebased all of this, changed the input style to plain lists,
removed trailing #t from build phases, and upgraded postfix to 3.7.

What is missing to get this merged?

--
Ricardo
?