From ec9a51d0cc6fab730bfe10d354b47c98ddb37460 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Gaspard?= Date: Thu, 29 Mar 2018 21:23:36 +0200 Subject: [PATCH] mdadm: allow sending mail when using opensmtpd OpenSMTPD does not require the setuid bit for its `sendmail`. This works around it by wrapping the called `sendmail` so that the wrapper falls back on either the setuid `sendmail` or the non-setuid `sendmail` depending on what's available. The solution of relying on `$PATH` to be set is unfortunately unreliable, as `mdadm --monitor` will likely be executed from a `systemd` unit, that runs with a clean `$PATH`. --- pkgs/os-specific/linux/mdadm/default.nix | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/pkgs/os-specific/linux/mdadm/default.nix b/pkgs/os-specific/linux/mdadm/default.nix index 85a65b8f824..7a59c2ea757 100644 --- a/pkgs/os-specific/linux/mdadm/default.nix +++ b/pkgs/os-specific/linux/mdadm/default.nix @@ -1,10 +1,21 @@ -{ stdenv +{ stdenv, writeScript , fetchurl, groff , buildPlatform, hostPlatform }: assert stdenv.isLinux; +let + sendmail-script = writeScript "sendmail-script" '' + #!/bin/sh + + if [ -x /run/wrappers/bin/sendmail ]; then + /run/wrappers/bin/sendmail "$@" + else + /run/current-system/sw/bin/sendmail "$@" + fi + ''; +in stdenv.mkDerivation rec { name = "mdadm-4.0"; @@ -15,7 +26,7 @@ stdenv.mkDerivation rec { # This is to avoid self-references, which causes the initrd to explode # in size and in turn prevents mdraid systems from booting. - allowedReferences = [ stdenv.cc.libc.out ]; + allowedReferences = [ stdenv.cc.libc.out sendmail-script ]; patches = [ ./no-self-references.patch ]; @@ -32,7 +43,7 @@ stdenv.mkDerivation rec { preConfigure = '' sed -e 's@/lib/udev@''${out}/lib/udev@' \ -e 's@ -Werror @ @' \ - -e 's@/usr/sbin/sendmail@/run/wrappers/bin/sendmail@' -i Makefile + -e 's@/usr/sbin/sendmail@${sendmail-script}@' -i Makefile ''; meta = {