** Description changed:

  [ Impact ]
  
  Setting a variable with the stdin pipe action fails. Instead of using
  the email as an input, it tries to pipe the contents of a possibly
  undefined variable.
  
- Users updating from 20.04 can no longer rely on their original scripts. 
Having variables not set cause unexpected/unintended behavior (that can go 
potentially unnoticed). This bug is already fixed in Ubuntu Stonking, so an SRU 
offers a consistent experience for the users. This fix aligns with the man 
pages as pointed out in the comments.
-  
- The upload would fix the issue by backporting the patch from the current 
development version (stonking). It is a small patch.
+ Users updating from 20.04 can no longer rely on their original scripts.
+ Having variables not set cause unexpected/unintended behavior (that can
+ go potentially unnoticed). This bug is already fixed in Ubuntu Stonking,
+ so an SRU offers a consistent experience for the users. This fix aligns
+ with the man pages as pointed out in the comments.
+ 
+ The upload would fix the issue by backporting the patch from the current
+ development version (stonking). It is a small patch.
  
  [ Test Plan ]
  
-  0. Create and use a test container.
-  
-    lxc launch ubuntu:24.04 procmail-bug
-    lxc shell procmail-bug
-    
-    The following steps must be performed within the test container.
-    
-  1. Install procmail. 
-  
-    apt update && apt install -y procmail
-    
-    When asked, choose "Local only" and accept the proposed system mail name  
-    ("procmail-bug.lxd").      
-   
-  2. Create a test configuration called "test.procmailrc" using the buggy 
-  feature:
-  
-  ```
+  0. Create and use a test container.
+ 
+    lxc launch ubuntu:24.04 procmail-bug
+    lxc shell procmail-bug
+ 
+    The following steps must be performed within the test container.
+ 
+  1. Install procmail.
+ 
+    apt update && apt install -y procmail
+ 
+    When asked, choose "Local only" and accept the proposed system mail name
+    ("procmail-bug.lxd").
+ 
+  2. Create a test configuration called "test.procmailrc" using the buggy
+  feature:
+ 
+  ```
  LOGFILE=procmail.log
  VERBOSE=yes
  DEFAULT=/dev/null
  
  # Assign output of 'cat' to MY_VAR
  :0
  MY_VAR=| grep content
  
- :0 
+ :0
  /tmp/output_$MY_VAR
  "
-  ```
-  
-  3. Create an example email file called "sample.eml" with the following
-  contents:
-  
-  ```
- From: "Tester" 
+  ```
+ 
+  3. Create an example email file called "sample.eml" with the following
+  contents:
+ 
+  ```
+ From: "Tester"
  To: local@localhost
  Subject: Procmail Bug Test
  
  good_content
-  ```
-  
-  4. Run procmail:
-  
-  procmail -m test.procmailrc < sample.eml
-  
-  5. Observe the outcome
-    Unpatched outcome:
-  
-       root@procmail-bug:~# cat procmail.log 
-       procmail: [3010] Fri Aug 21 11:21:52 2026
-       procmail: Assigning "DEFAULT=/dev/null"
-       procmail: Assigning "MY_VAR="
-       procmail: Executing "grep,content"
-       procmail: Assigning "LASTFOLDER=/tmp/output_"
-       procmail: Opening "/tmp/output_"
-       procmail: Acquiring kernel-lock
-        Subject: Procmail Bug Test
-         Folder: /tmp/output_                                                  
     79
-       root@procmail-bug:~# ls /tmp/output_* 
-       /tmp/output_
-       
-     Expected outcome:
-  
-       root@procmail-bug:~# cat procmail.log 
-       procmail: [1461] Fri Aug 21 11:41:24 2026
-       procmail: Assigning "DEFAULT=/dev/null"
-       procmail: Assigning "MY_VAR="
-       procmail: Executing "grep,content"
-       procmail: Assigning "LASTFOLDER=/tmp/output_good_content"
-       procmail: Opening "/tmp/output_good_content"
-       procmail: Acquiring kernel-lock
-        Subject: Procmail Bug Test
-         Folder: /tmp/output_good_content                                      
     78
-       root@procmail-bug:~# ls /tmp/output_*
-       /tmp/output_good_content
-  
+  ```
+ 
+  4. Run procmail:
+ 
+  procmail -m test.procmailrc < sample.eml
+ 
+  5. Observe the outcome
+    Unpatched outcome:
+ 
+  root@procmail-bug:~# cat procmail.log
+  procmail: [3010] Fri Aug 21 11:21:52 2026
+  procmail: Assigning "DEFAULT=/dev/null"
+  procmail: Assigning "MY_VAR="
+  procmail: Executing "grep,content"
+  procmail: Assigning "LASTFOLDER=/tmp/output_"
+  procmail: Opening "/tmp/output_"
+  procmail: Acquiring kernel-lock
+   Subject: Procmail Bug Test
+    Folder: /tmp/output_                                                       
     79
+  root@procmail-bug:~# ls /tmp/output_*
+  /tmp/output_
+ 
+     Expected outcome:
+ 
+  root@procmail-bug:~# cat procmail.log
+  procmail: [1461] Fri Aug 21 11:41:24 2026
+  procmail: Assigning "DEFAULT=/dev/null"
+  procmail: Assigning "MY_VAR="
+  procmail: Executing "grep,content"
+  procmail: Assigning "LASTFOLDER=/tmp/output_good_content"
+  procmail: Opening "/tmp/output_good_content"
+  procmail: Acquiring kernel-lock
+   Subject: Procmail Bug Test
+    Folder: /tmp/output_good_content                                        78
+  root@procmail-bug:~# ls /tmp/output_*
+  /tmp/output_good_content
+ 
  [ Where problems could occur ]
  
-  1. The origin of the patch is a third party repository, and it wasn't
+  1. The origin of the patch is a third party repository, and it wasn't
  neither accepted nor rejected upstream yet.
  
-  2. Problems could occur if someone used the current behavior as a feature. 
Consider the slight modification of the example from the test plan:
-  
-  The updated config:
-  ```
+  2. Problems could occur if someone used the current behavior as a
+ feature. Consider the slight modification of the example from the test
+ plan:
+ 
+  The updated config:
+  ```
  LOGFILE=procmail.log
  VERBOSE=yes
  DEFAULT=/dev/null
  MY_VAR=bad_content
  
  # Assign the output of 'grep' to MY_VAR
  :0
  MY_VAR=| grep content
  
  # Write to a file depending on MY_VAR
- :0 
+ :0
  /tmp/output_$MY_VAR
- " 
-  ```
-  
-  The outcome:
-       root@procmail-bug:~# procmail -m test.procmailrc < sample.eml
-       root@procmail-bug:~# cat procmail.log 
-       procmail: [3093] Fri Aug 21 11:26:24 2026
-       procmail: Assigning "DEFAULT=/dev/null"
-       procmail: Assigning "MY_VAR=bad_content"
-       procmail: Assigning "MY_VAR="
-       procmail: Executing "grep,content"
-       procmail: Assigning "LASTFOLDER=/tmp/output_bad_content"
-       procmail: Opening "/tmp/output_bad_content"
-       procmail: Acquiring kernel-lock
-        Subject: Procmail Bug Test
-         Folder: /tmp/output_bad_content
+ "
+  ```
+ 
+  The outcome:
+  root@procmail-bug:~# procmail -m test.procmailrc < sample.eml
+  root@procmail-bug:~# cat procmail.log
+  procmail: [3093] Fri Aug 21 11:26:24 2026
+  procmail: Assigning "DEFAULT=/dev/null"
+  procmail: Assigning "MY_VAR=bad_content"
+  procmail: Assigning "MY_VAR="
+  procmail: Executing "grep,content"
+  procmail: Assigning "LASTFOLDER=/tmp/output_bad_content"
+  procmail: Opening "/tmp/output_bad_content"
+  procmail: Acquiring kernel-lock
+   Subject: Procmail Bug Test
+    Folder: /tmp/output_bad_content
  
  Notice that /tmp/output_bad_content was used.
  
  Since the fix is basically about the interpretation of a code, it is
  hard to put a limit on what logic depends on this behavior and what
  could go wrong if someone relied on this specific behavior.
  
  [ Other Info ]
  
-  The patch is already present in the current version of Ubuntu Stonking.
+  The patch is already present in the current version of Ubuntu Stonking.
+  PPA for testing: ppa:gycsaba96/procmail-sru-lp2096676
  
  [ Original Description ]
  
  This procmail recipe was working in ubuntu 20.04 (procmail package
  3.22-26 amd64)
  
  :0
  * ^X-Google-DKIM-Signature:
  SENDER=| formail -cXFrom: | head -1 | formail -rtzxTo:
  :0 af
  | /usr/bin/formail -I "Message-ID:" -I "X-Gm-message-State:" -I 
"X-Google-DKIM-Signature:"
  :0 a
  ! $SENDER
  
  It sends the incoming email back to a gmail sender stripped of certain
  gmail headers.
  
  It broke when we upgraded to ubuntu 24.04 (procmail package
  3.24-1ubuntu2 amd64) sending email to foo@bar rather than the sender
  which of course bounced
  
  When failing, procmail logs messages like this: (set a LOGFILE,
  VERBOSE=yes, LOGABSTRACT=yes )
  
  procmail: Match on "^X-Google-DKIM-Signature:"
  procmail: Assigning "SENDER="
  procmail: Executing " formail -cXFrom: | head -1 | formail -rtzxTo:"
  procmail: Executing 
"/usr/bin/formail,-I,Message-ID:,-I,X-Gm-message-State:,-I,X-Google-DKIM-Signature:"
  procmail: Assigning "LASTFOLDER=/usr/sbin/sendmail -oi foo@bar"
  procmail: Notified comsat: "reflect@:/usr/sbin/sendmail -oi foo@bar"
  From [email protected]  Fri Jan 24 15:13:33 2025
   Subject: test4
    Folder: /usr/sbin/sendmail -oi foo@bar                           2789
  procmail: Executing "/usr/sbin/sendmail,-oi,foo@bar"
  
  (note foo and bar and certainly foo@bar do not occur anywhere in our
  config and the assign SENDER= is not assigning anything to sender.  My
  assumption is that the foo@bar is a result of SENDER being an empty
  variable.
  
  piping a sample email through
  formail -cXFrom: | head -1 | formail -rtzxTo:
  on the command line correctly extracted the sender [email protected] in this 
case.
  
  I have a workaround (rewrote recipe to this:)
  SENDER=`formail -cXFrom: | head -1 | formail -rtzxTo:`
  :0 f
  * ^X-Google-DKIM-Signature:
  | /usr/bin/formail -I "Message-ID:" -I "X-Gm-message-State:" -I 
"X-Google-DKIM-Signature:"
  :0 a
  ! $SENDER
  
  and that works.
  
  lsb_release -rd
  No LSB modules are available.
  Description:    Ubuntu 24.04.1 LTS
  Release:        24.04
  
  apt-cache policy procmail
  procmail:
    Installed: 3.24-1ubuntu2
    Candidate: 3.24-1ubuntu2
    Version table:
   *** 3.24-1ubuntu2 500
          500 http://us.archive.ubuntu.com/ubuntu noble/main amd64 Packages
          100 /var/lib/dpkg/status

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2096676

Title:
  procmail =| action assignment not working

To manage notifications about this bug go to:
https://bugs.launchpad.net/procmail/+bug/2096676/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to