On 7/29/2014 11:20 AM, Ben Johnson wrote: > On 7/29/2014 3:13 AM, Steffen Kaiser wrote: >> On Mon, 28 Jul 2014, Ben Johnson wrote: >> >>> I have some debugging output in my pipe script; the output looks >> >> How does your script looks like? >> > > http://pastebin.com/nh8SwQtw > >>> Copying message contents to temporary file for debugging >>> purposes; file is: /tmp/sendmail-msg-7662.txt Checking if the >>> command-line input argument string (--spam) contains the string >>> "ham" or "spam" Mode is "SPAM" Calling (as user vmail) >>> '/usr/lib/dovecot/deliver -d "sa-train...@example.com" -m >>> "Training.SPAM" -p "/tmp/sendmail-msg-7662.txt"' Exit status was >>> 134 >> >> Check out your local /usr/include/sysexits.h, if the exit code is >> defined there. It's not in mine. >> > > Exit code 134 is not defined in /usr/include/sysexits.h on my system. > >>> Yet, I'm able to copy the above command and execute it manually, >>> via the command-line, and it works (and by "works", I mean to >>> say that the behavior is correct and exactly as expected; I >>> receive the "Spam" email at the designated mailbox). Here's how >>> I'm calling it when it works perfectly well (as "root"): >> >>> # su -c '/usr/lib/dovecot/deliver -d "sa-train...@example.com" -m >>> "Training.HAM" -p "/tmp/sendmail-msg-7460.txt"' vmail >> >>> Any idea what status 134 might be or how to work around it? It >>> looks to be some kind of "temporary failure exception", but that >>> is less than informative in this context. >> >>> # 2.2.9: /etc/dovecot/dovecot.conf # OS: Linux 3.13.0-32-generic >>> x86_64 Ubuntu 14.04.1 LTS plugin { antispam_backend = pipe >>> antispam_debug_target = syslog antispam_pipe_program = /bin/bash >>> antispam_pipe_program_args = /usr/local/bin/sa-learn-pipe.sh >>> antispam_pipe_program_notspam_arg = --ham >>> antispam_pipe_program_spam_arg = --spam antispam_pipe_tmpdir = >>> /tmp antispam_spam_pattern_ignorecase = SPAM;JUNK >>> antispam_trash_pattern_ignorecase = trash;Deleted * >>> antispam_verbose_debug = 1 } >> >> >> -- Steffen Kaiser > > Is it possible that this is some kind of apparmor restriction? I ask > because apparmor is indeed installed on this machine. > > If you examine the script source (cited above), you will see that I've > had to use "the hammer that is strace" to debug issues with Dovecot + > Antispam before... maybe it's worth trying in this case. > > Happy to hear any further suggestions. > > Thanks again, > > -Ben >
Still struggling with this. strace doesn't reveal anything useful, either. In short, dovecot deliver is returning with exit code 134 when I try to execute the following command in the context of my dovecot-antispam pipe script: /usr/lib/dovecot/deliver -d "sa-train...@example.com" -m "Training.HAM" -p "/tmp/sendmail-msg-7460.txt"' vmail Yet, if I execute the same exact command after su-ing to the vmail user, it works: # su vmail $ whoami vmail $ /usr/lib/dovecot/deliver -d "sa-train...@example.com" -m "Training.HAM" -p "/tmp/sendmail-msg-7460.txt" I have ensured that the pipe script is, in fact, being executed as the vmail user, by inserting the following into my debug output: CURRENT_USER=$(whoami) echo "$CURRENT_USER" This outputs "vmail". I have this working with exactly the same setup (near as I can tell) on a machine with Dovevot 2.0.19 (via Ubuntu 12.04 LTS). This problem machine is running 2.2.9 (via Ubuntu 14.04 LTS). My "doveconf -n" output is at the bottom of my original post. I would love to figure this out; it will be the capstone on an otherwise perfect build. :) Thanks for any ideas! -Ben