From 1efde08d47fe58a89f296b8f3008322436bfbdac Mon Sep 17 00:00:00 2001 From: Dan Nixon Date: Sun, 17 Mar 2024 17:14:26 +0000 Subject: [PATCH 1/2] msmtp: update repo URL https://github.com/marlam/msmtp-mirror now redirects to https://github.com/marlam/msmtp --- pkgs/applications/networking/msmtp/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/applications/networking/msmtp/default.nix b/pkgs/applications/networking/msmtp/default.nix index e68e8f8fe96b9..44153a74d95bd 100644 --- a/pkgs/applications/networking/msmtp/default.nix +++ b/pkgs/applications/networking/msmtp/default.nix @@ -29,7 +29,7 @@ let src = fetchFromGitHub { owner = "marlam"; - repo = "msmtp-mirror"; + repo = "msmtp"; rev = "msmtp-${version}"; hash = "sha256-Jt/uvGBrYYr6ua6LVPiP0nuRiIkxBJASdgHBNHivzxQ="; }; From 2f2010f63cc0550d9fb1d313e61f96b20a3f731f Mon Sep 17 00:00:00 2001 From: Dan Nixon Date: Sun, 17 Mar 2024 18:03:24 +0000 Subject: [PATCH 2/2] msmtp: 1.8.22 -> 1.8.25 msmtpq patches had to be recreated: - removal of the executable check and addition of systemd logging were kept and split into two patches. - renaming of queue and log files was removed as the upstream script had renamed these to add the `MSMTPQ_` prefix (noted as a backwards incompatible change). --- .../manual/release-notes/rl-2411.section.md | 2 + .../applications/networking/msmtp/default.nix | 9 ++- .../msmtp/msmtpq-remove-binary-check.patch | 13 ++++ .../msmtp/msmtpq-systemd-logging.patch | 41 ++++++++++++ .../applications/networking/msmtp/paths.patch | 64 ------------------- 5 files changed, 62 insertions(+), 67 deletions(-) create mode 100644 pkgs/applications/networking/msmtp/msmtpq-remove-binary-check.patch create mode 100644 pkgs/applications/networking/msmtp/msmtpq-systemd-logging.patch delete mode 100644 pkgs/applications/networking/msmtp/paths.patch diff --git a/nixos/doc/manual/release-notes/rl-2411.section.md b/nixos/doc/manual/release-notes/rl-2411.section.md index 63287161f084c..76cfc47171fce 100644 --- a/nixos/doc/manual/release-notes/rl-2411.section.md +++ b/nixos/doc/manual/release-notes/rl-2411.section.md @@ -112,6 +112,8 @@ it is set, instead of the previous hardcoded default of `${networking.hostName}.${security.ipa.domain}`. +- The `MSMTP_QUEUE` and `MSMTP_LOG` environment variables accepted by `msmtpq` have now been renamed to `MSMTPQ_Q` and `MSMTPQ_LOG` respectively. + - The fcgiwrap module now allows multiple instances running as distinct users. The option `services.fgciwrap` now takes an attribute set of the configuration of each individual instance. diff --git a/pkgs/applications/networking/msmtp/default.nix b/pkgs/applications/networking/msmtp/default.nix index 44153a74d95bd..6bd0f38ba6f45 100644 --- a/pkgs/applications/networking/msmtp/default.nix +++ b/pkgs/applications/networking/msmtp/default.nix @@ -25,13 +25,13 @@ let inherit (lib) getBin getExe optionals; - version = "1.8.22"; + version = "1.8.25"; src = fetchFromGitHub { owner = "marlam"; repo = "msmtp"; rev = "msmtp-${version}"; - hash = "sha256-Jt/uvGBrYYr6ua6LVPiP0nuRiIkxBJASdgHBNHivzxQ="; + hash = "sha256-UZKUpF/ZwYPM2rPDudL1O8e8LguKJh9sTcJRT3vgsf4="; }; meta = with lib; { @@ -68,7 +68,10 @@ let pname = "msmtp-scripts"; inherit version src meta; - patches = [ ./paths.patch ]; + patches = [ + ./msmtpq-remove-binary-check.patch + ./msmtpq-systemd-logging.patch + ]; postPatch = '' substituteInPlace scripts/msmtpq/msmtpq \ diff --git a/pkgs/applications/networking/msmtp/msmtpq-remove-binary-check.patch b/pkgs/applications/networking/msmtp/msmtpq-remove-binary-check.patch new file mode 100644 index 0000000000000..045f71c22a9f3 --- /dev/null +++ b/pkgs/applications/networking/msmtp/msmtpq-remove-binary-check.patch @@ -0,0 +1,13 @@ +diff --git a/scripts/msmtpq/msmtpq b/scripts/msmtpq/msmtpq +index bcb384e..9622e47 100755 +--- a/scripts/msmtpq/msmtpq ++++ b/scripts/msmtpq/msmtpq +@@ -60,8 +60,6 @@ err() { dsp '' "$@" '' ; exit 1 ; } + ## export the location of the msmtp executable before running this script (no quotes !!) + ## e.g. ( export MSMTP=/path/to/msmtp ) + MSMTP="${MSMTP:-msmtp}" +-"$MSMTP" --version >/dev/null 2>&1 || \ +- log_later -e 1 "msmtpq : can't run the msmtp executable [ $MSMTP ]" # if not found - complain ; quit + ## + ## set the queue var to the location of the msmtp queue directory + ## if the queue dir doesn't yet exist, create it (0700) diff --git a/pkgs/applications/networking/msmtp/msmtpq-systemd-logging.patch b/pkgs/applications/networking/msmtp/msmtpq-systemd-logging.patch new file mode 100644 index 0000000000000..a9db3e6458082 --- /dev/null +++ b/pkgs/applications/networking/msmtp/msmtpq-systemd-logging.patch @@ -0,0 +1,41 @@ +diff --git a/scripts/msmtpq/msmtpq b/scripts/msmtpq/msmtpq +index bcb384e..dbaf1b5 100755 +--- a/scripts/msmtpq/msmtpq ++++ b/scripts/msmtpq/msmtpq +@@ -92,6 +92,8 @@ if [ ! -v MSMTPQ_LOG ] ; then + fi + fi + [ -d "$(dirname "$MSMTPQ_LOG")" ] || mkdir -p "$(dirname "$MSMTPQ_LOG")" ++ ++JOURNAL=@journal@ + ## ====================================================================================== + + ## msmtpq can use the following environment variables : +@@ -144,6 +146,7 @@ on_exit() { # unlock the queue on exit if the lock was + ## display msg to user, as well + ## + log() { ++ local NAME=msmtpq + local ARG RC PFX + PFX="$('date' +'%Y %d %b %H:%M:%S')" + # time stamp prefix - "2008 13 Mar 03:59:45 " +@@ -161,10 +164,19 @@ log() { + done + fi + ++ if [ "$JOURNAL" = "Y" ]; then ++ for ARG; do ++ [ -n "$ARG" ] && ++ echo "$ARG" | systemd-cat -t "$NAME" -p info ++ done ++ fi ++ + if [ -n "$RC" ] ; then # an error ; leave w/error return + [ -n "$LKD" ] && lock_queue -u # unlock here (if locked) + [ -n "$MSMTPQ_LOG" ] && \ + echo " exit code = $RC" >> "$MSMTPQ_LOG" # logging ok ; send exit code to log ++ [ "$JOURNAL" = "Y" ] && \ ++ echo "exit code= $RC" | systemd-cat -t "$NAME" -p emerg + exit "$RC" # exit w/return code + fi + } diff --git a/pkgs/applications/networking/msmtp/paths.patch b/pkgs/applications/networking/msmtp/paths.patch deleted file mode 100644 index 9298519e4da3a..0000000000000 --- a/pkgs/applications/networking/msmtp/paths.patch +++ /dev/null @@ -1,64 +0,0 @@ -diff --git a/scripts/msmtpq/msmtpq b/scripts/msmtpq/msmtpq -index d8b4039..1f2a7b5 100755 ---- a/scripts/msmtpq/msmtpq -+++ b/scripts/msmtpq/msmtpq -@@ -60,8 +60,8 @@ err() { dsp '' "$@" '' ; exit 1 ; } - ## e.g. ( export MSMTP=/path/to/msmtp ) - if [ "$MSMTP" = "" ] ; then # If MSMTP is unset or empty... - MSMTP=msmtp --elif [ ! -x "$MSMTP" ] ; then -- log -e 1 "msmtpq : can't find the msmtp executable [ $MSMTP ]" # if not found - complain ; quit -+# elif [ ! -x "$MSMTP" ] ; then -+# log -e 1 "msmtpq : can't find the msmtp executable [ $MSMTP ]" # if not found - complain ; quit - fi - ## - ## set the queue var to the location of the msmtp queue directory -@@ -71,7 +71,7 @@ fi - ## ( chmod 0700 msmtp.queue ) - ## - ## the queue dir - export this variable to reflect where you'd like it to be (no quotes !!) --Q=${Q:-~/.msmtp.queue} -+Q=${MSMTP_QUEUE:-~/.msmtp.queue} - [ -d "$Q" ] || mkdir -m 0700 -p "$Q" || \ - err '' "msmtpq : can't find or create msmtp queue directory [ $Q ]" '' # if not present - complain ; quit - ## -@@ -85,8 +85,10 @@ Q=${Q:-~/.msmtp.queue} - ## - ## the queue log file - export this variable to change where logs are stored (but no quotes !!) - ## Set it to "" (empty string) to disable logging. --[ -v LOG ] || LOG=~/log/msmtp.queue.log -+LOG=${MSMTP_LOG:-~/log/msmtp.queue.log} - [ -d "$(dirname "$LOG")" ] || mkdir -p "$(dirname "$LOG")" -+ -+JOURNAL=@journal@ - ## ====================================================================================== - - ## msmtpq can use the following environment variables : -@@ -139,6 +141,7 @@ on_exit() { # unlock the queue on exit if the lock was - ## display msg to user, as well - ## - log() { -+ local NAME=msmtpq - local ARG RC PFX - PFX="$('date' +'%Y %d %b %H:%M:%S')" - # time stamp prefix - "2008 13 Mar 03:59:45 " -@@ -156,10 +159,19 @@ log() { - done - fi - -+ if [ "$JOURNAL" = "Y" ]; then -+ for ARG; do -+ [ -n "$ARG" ] && -+ echo "$ARG" | systemd-cat -t "$NAME" -p info -+ done -+ fi -+ - if [ -n "$RC" ] ; then # an error ; leave w/error return - [ -n "$LKD" ] && lock_queue -u # unlock here (if locked) - [ -n "$LOG" ] && \ - echo " exit code = $RC" >> "$LOG" # logging ok ; send exit code to log -+ [ "$JOURNAL" = "Y" ] && \ -+ echo "exit code= $RC" | systemd-cat -t "$NAME" -p emerg - exit "$RC" # exit w/return code - fi - }