Hi,

I am attempting to implement spamassassin on a per user configured
basis, but qmail-local seems to be ignoring the exit status of my .qmail
script and writing the a message to the Inbox regardless of my exit
code. I've used the following test to validate

my .qmail file

webserver:/var/qmail/maildirs/dwalliance.com/test3 # cat .qmail 
| ./exit99.sh
./Maildir/

my test script 

webserver:/var/qmail/maildirs/dwalliance.com/test3 # cat exit99.sh 
#!/bin/sh
exit 99


the dot-qmail man page states:

" If a program returns exit code 99, qmail-local ignores all succeeding
lines in .qmail, but it still pays attention to previous forward lines."

So my conclusion is that qmail-local should not write the message to
./Maildir/. Has anyone ran into this in the past, or are familiar with
.qmail scripts and can show me the error of my ways?

I'm running
SuSE 8.1
qmail-ldap-1.03-20020501
qmail-ldap-control_20020524


Here an strace of the issue

webserver:/var/qmail/maildirs/dwalliance.com/test3 #  echo "$?";cat
Maildir/cur/1041118461.25382.webserver,S\=1427\:2,S|strace
/var/qmail/bin/qmail-local -n vmail
/var/qmail/maildirs/dwalliance.com/test3 vmail '' '' '' '' ./Maildir/ ;
echo "$?"
0



execve("/var/qmail/bin/qmail-local", ["/var/qmail/bin/qmail-local",
"-n", "vmail", "/var/qmail/maildirs/dwalliance.com/test3", "vmail", "",
"", "", "", "./Maildir/"], [/* 47 vars */]) = 0
uname({sys="Linux", node="webserver", ...}) = 0
brk(0)                                  = 0x8055564
open("/etc/ld.so.preload", O_RDONLY)    = -1 ENOENT (No such file or
directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=50529, ...}) = 0
old_mmap(NULL, 50529, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40017000
close(3)                                = 0
open("/lib/libc.so.6", O_RDONLY)        = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\330\332"...,
1024) = 1024
fstat64(3, {st_mode=S_IFREG|0755, st_size=1394238, ...}) = 0
old_mmap(NULL, 1210816, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) =
0x40024000
mprotect(0x40141000, 43456, PROT_NONE)  = 0
old_mmap(0x40141000, 28672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED,
3, 0x11c000) = 0x40141000
old_mmap(0x40148000, 14784, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x40148000
close(3)                                = 0
munmap(0x40017000, 50529)               = 0
umask(077)                              = 022
rt_sigaction(SIGPIPE, {SIG_IGN}, NULL, 8) = 0
chdir("/var/qmail/maildirs/dwalliance.com/test3") = 0
stat64(".", {st_mode=S_IFDIR|0755, st_size=416, ...}) = 0
time(NULL)                              = 1041283394
write(1, "unlimited quota", 15unlimited quota)         = 15
write(1, "\n", 1
)                       = 1
open(".qmail", O_RDONLY|O_NONBLOCK)     = 3
fstat64(3, {st_mode=S_IFREG|0444, st_size=25, ...}) = 0
read(3, "| ./exit99.sh\n./Maildir/\n", 256) = 25
read(3, "", 256)                        = 0
close(3)                                = 0
write(1, "program  ./exit99.sh", 20program  ./exit99.sh)    = 20
write(1, "\n", 1
)                       = 1
write(1, "maildir ./Maildir/", 18maildir ./Maildir/)      = 18
write(1, "\n", 1
)                       = 1
write(1, "did 1+0+1\n", 10did 1+0+1
)             = 10
_exit(0)                                = ?
0


Reply via email to