I'm still not getting checkpassword trace with strace -ff :-(, but
here's what I do get (I've put the initialization at the end, because
it's more boring).  [Could that lack of a trace be a sign of the
problem?  After all, it seems like qmail-pop3d is getting the
environment qmail-popup has, not the one checkpassword should be
making]

I've made a small change to qmail-pop3d.c, in main().  I added 

void main(argc,argv)
int argc;
char **argv;
{
  char *home_dir;
  sig_alarmcatch(die);
  sig_pipeignore();
 
  getuid();                                    /* <------ Added */
  if (!argv[1]) die_nomaildir();
  home_dir = getenv("HOME");                   /* <------ Added */
  if (! home_dir) die_nomaildir();             /* <------ Added */
  if (chdir(home_dir) == -1) die_nomaildir();  /* <------ Added */
  if (chdir(argv[1]) == -1) die_nomaildir();
 
  getlist();

  okay();
  commands(&ssin,pop3commands);
  die();
}


You'll note the lines in the trace that comes from the additions:
[pid  5970] getuid()                    = 0
[pid  5970] chdir("/root")              = 0

I was getting the same basic results before I added these changes,
too.


==================================================
== Traceback
==================================================

accept(3, {sin_family=AF_INET, sin_port=htons(1051), 
sin_addr=inet_addr("64.195.91.217")}, [16]) = 0
SYS_175(0, 0x7ffffbdc, 0, 0x8, 0)       = 0
fork()                                  = 5969
[pid  5894] close(0 <unfinished ...>
[pid  5969] close(3 <unfinished ...>
[pid  5894] <... close resumed> )       = 0
[pid  5969] <... close resumed> )       = 0
[pid  5894] SYS_175(0x1, 0x7ffffbec, 0, 0x8, 0x1 <unfinished ...>
[pid  5969] setsockopt(0, IPPROTO_IP, 1, NULL, 0 <unfinished ...>
[pid  5894] <... SYS_175 resumed> )     = 0
[pid  5969] <... setsockopt resumed> )  = 0
[pid  5894] accept(3,  <unfinished ...>
[pid  5969] getsockname(0, {sin_family=AF_INET, sin_port=htons(110), 
sin_addr=inet_addr("207.228.250.44")}, [16]) = 0
[pid  5969] gettimeofday({999626742, 207867}, NULL) = 0
[pid  5969] open("/etc/resolv.conf", O_RDONLY|O_NONBLOCK) = 1
[pid  5969] read(1, "search colorstudy.com\nnameserve"..., 64) = 64
[pid  5969] read(1, "8.226.5\n", 64)    = 8
[pid  5969] read(1, "", 64)             = 0
[pid  5969] close(1)                    = 0
[pid  5969] socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 1
[pid  5969] fcntl(1, F_GETFL)           = 0x2 (flags O_RDWR)
[pid  5969] fcntl(1, F_SETFL, O_RDWR|O_NONBLOCK) = 0
[pid  5969] bind(1, {sin_family=AF_INET, sin_port=htons(64715), 
sin_addr=inet_addr("0.0.0.0")}, 16) = 0
[pid  5969] connect(1, {sin_family=AF_INET, sin_port=htons(53), 
sin_addr=inet_addr("207.228.225.5")}, 16) = 0
[pid  5969] send(1, "\356\274\1\0\0\1\0\0\0\0\0\0\002"..., 45, 0) = 45
[pid  5969] gettimeofday({999626742, 210714}, NULL) = 0
[pid  5969] SYS_168(0x7ffffbac, 0x1, 0xbcb, 0xbcb, 0x7ffffbac) = 1
[pid  5969] recv(1, "\356\274\205\200\0\1\0\1\0\3\0\3"..., 513, 0) = 188
[pid  5969] close(1)                    = 0
[pid  5969] fcntl(0, F_GETFL)           = 0x2 (flags O_RDWR)
[pid  5969] close(1)                    = -1 EBADF (Bad file descriptor)
[pid  5969] fcntl(0, F_DUPFD, 1)        = 1
[pid  5969] SYS_174(0x11, 0x7ffffb10, 0, 0x8, 0x11) = 0
[pid  5969] SYS_175(0x1, 0x7ffffbe4, 0, 0x8, 0x1) = 0
[pid  5969] SYS_174(0xf, 0x7ffffb04, 0, 0x8, 0xf) = 0
[pid  5969] SYS_174(0xd, 0x7ffffafc, 0, 0x8, 0xd) = 0
[pid  5969] execve("/var/qmail/bin/qmail-popup", ["/var/qmail/bin/qmail-popup", 
"/bin/checkvpw", "/var/qmail/bin/qmail-pop3d", "./Maildir"], [/* 24 vars */]) = 0
[pid  5969] brk(0)                      = 0x804bed4
[pid  5969] open("/etc/ld.so.preload", O_RDONLY) = -1 ENOENT (No such file or 
directory)
[pid  5969] open("/etc/ld.so.cache", O_RDONLY) = 3
[pid  5969] fstat(3, {st_mode=031544, st_size=0, ...}) = 0
[pid  5969] mmap(0, 11015, PROT_READ, MAP_PRIVATE, 3, 0) = 0x2aabf000
[pid  5969] close(3)                    = 0
[pid  5969] open("/lib/libc.so.6", O_RDONLY) = 3
[pid  5969] fstat(3, {st_mode=S_ISGID|S_ISVTX|0561, st_size=0, ...}) = 0
[pid  5969] read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3"..., 4096) = 4096
[pid  5969] mmap(0, 974392, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x2aac2000
[pid  5969] mprotect(0x2aba8000, 32312, PROT_NONE) = 0
[pid  5969] mmap(0x2aba8000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 
0xe5000) = 0x2aba8000
[pid  5969] mmap(0x2abad000, 11832, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x2abad000
[pid  5969] close(3)                    = 0
[pid  5969] munmap(0x2aabf000, 11015)   = 0
[pid  5969] personality(PER_LINUX)      = 0
[pid  5969] getpid()                    = 5969
[pid  5969] SYS_174(0xe, 0x7ffffaa0, 0, 0x8, 0xe) = 0
[pid  5969] SYS_174(0xd, 0x7ffffaa0, 0, 0x8, 0xd) = 0
[pid  5969] getpid()                    = 5969
[pid  5969] time(NULL)                  = 999626742
[pid  5969] select(2, NULL, [1], NULL, {1200, 0}) = 1 (out [1], left {1200, 0})
[pid  5969] write(1, "+OK <5969.999626742@/bin/checkvp"..., 36) = 36
[pid  5969] select(1, [0], NULL, NULL, {1200, 0}) = 1 (in [0], left {1199, 820000})
[pid  5969] read(0, "CAPA\r\n", 128)    = 6
[pid  5969] select(2, NULL, [1], NULL, {1200, 0}) = 1 (out [1], left {1200, 0})
[pid  5969] write(1, "-ERR authorization first\r\n", 26) = 26
[pid  5969] select(1, [0], NULL, NULL, {1200, 0}) = 1 (in [0], left {1199, 870000})
[pid  5969] read(0, "USER ianb:colorstudy.net\r\n", 128) = 26
[pid  5969] select(2, NULL, [1], NULL, {1200, 0}) = 1 (out [1], left {1200, 0})
[pid  5969] write(1, "+OK \r\n", 6)     = 6
[pid  5969] select(1, [0], NULL, NULL, {1200, 0}) = 1 (in [0], left {1199, 920000})
[pid  5969] read(0, "PASS XXX\r\n", 128) = 15
[pid  5969] fcntl(1, F_GETFL)           = 0x2 (flags O_RDWR)
[pid  5969] close(2)                    = 0
[pid  5969] fcntl(1, F_DUPFD, 2)        = 2
[pid  5969] close(3)                    = -1 EBADF (Bad file descriptor)
[pid  5969] pipe([3, 4])                = 0
[pid  5969] fork()                      = 5970
[pid  5969] close(3 <unfinished ...>
[pid  5970] close(4 <unfinished ...>
[pid  5969] <... close resumed> )       = 0
[pid  5970] <... close resumed> )       = 0
[pid  5969] write(4, "ianb:colorstudy.net\0XXX\0<"..., 60 <unfinished ...>
[pid  5970] SYS_174(0xd, 0x7ffffa48, 0, 0x8, 0xd <unfinished ...>
[pid  5969] <... write resumed> )       = 60
[pid  5970] <... SYS_174 resumed> )     = 0
[pid  5969] close(4 <unfinished ...>
[pid  5970] execve("/var/qmail/bin/qmail-pop3d", ["/var/qmail/bin/qmail-pop3d", 
"./Maildir"], [/* 24 vars */] <unfinished ...>
[pid  5969] <... close resumed> )       = 0
[pid  5970] <... execve resumed> )      = 0
[pid  5969] wait4(5970,  <unfinished ...>
[pid  5970] brk(0)                      = 0x804e0b0
[pid  5970] open("/etc/ld.so.preload", O_RDONLY) = -1 ENOENT (No such file or 
directory)
[pid  5970] open("/etc/ld.so.cache", O_RDONLY) = 4
[pid  5970] fstat(4, {st_mode=031544, st_size=0, ...}) = 0
[pid  5970] mmap(0, 11015, PROT_READ, MAP_PRIVATE, 4, 0) = 0x2aabf000
[pid  5970] close(4)                    = 0
[pid  5970] open("/lib/libc.so.6", O_RDONLY) = 4
[pid  5970] fstat(4, {st_mode=S_ISGID|S_ISVTX|0561, st_size=0, ...}) = 0
[pid  5970] read(4, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3"..., 4096) = 4096
[pid  5970] mmap(0, 974392, PROT_READ|PROT_EXEC, MAP_PRIVATE, 4, 0) = 0x2aac2000
[pid  5970] mprotect(0x2aba8000, 32312, PROT_NONE) = 0
[pid  5970] mmap(0x2aba8000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 4, 
0xe5000) = 0x2aba8000
[pid  5970] mmap(0x2abad000, 11832, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x2abad000
[pid  5970] close(4)                    = 0
[pid  5970] munmap(0x2aabf000, 11015)   = 0
[pid  5970] personality(PER_LINUX)      = 0
[pid  5970] getpid()                    = 5970
[pid  5970] SYS_174(0xe, 0x7ffffacc, 0, 0x8, 0xe) = 0
[pid  5970] SYS_174(0xd, 0x7ffffacc, 0, 0x8, 0xd) = 0
[pid  5970] getuid()                    = 0
[pid  5970] chdir("/root")              = 0
[pid  5970] chdir("./Maildir")          = -1 ENOENT (No such file or directory)
[pid  5970] select(2, NULL, [1], NULL, {1200, 0}) = 1 (out [1], left {1200, 0})
[pid  5970] write(1, "-ERR this user has no $HOME/Mail"..., 37) = 37
[pid  5970] _exit(0)                    = ?
[pid  5969] <... wait4 resumed> [WIFEXITED(s) && WEXITSTATUS(s) == 0], 0, NULL) = 5970
[pid  5969] --- SIGCHLD (Child exited) ---
[pid  5969] _exit(1)                    = ?
<... accept resumed> 0x7ffffc50, [16])  = ? ERESTARTSYS (To be restarted)
--- SIGCHLD (Child exited) ---
wait4(-1, [WIFEXITED(s) && WEXITSTATUS(s) == 1], WNOHANG, NULL) = 5969
wait4(-1, 0x7ffffb50, WNOHANG, NULL)    = -1 ECHILD (No child processes)
sigreturn()                             = ? (mask now [])
SYS_175(0, 0x7ffffbdc, 0, 0x8, 0)       = 0
SYS_175(0x1, 0x7ffffbec, 0, 0x8, 0x1)   = 0
accept(3, 




==================================================
== Initialization
==================================================


[root@sps-c1s8p25 init.d]# strace -ff tcpserver -H -R -c100 0 pop-3 
/var/qmail/bin/qmail-popup /bin/checkvpw /var/qmail/bin/qmail-pop3d './Maildir'
execve("/usr/local/bin/tcpserver", ["tcpserver", "-H", "-R", "-c100", "0", "pop-3", 
"/var/qmail/bin/qmail-popup", "/bin/checkvpw", "/var/qmail/bin/qmail-pop3d", 
"./Maildir"], [/* 18 vars */]) = 0
brk(0)                                  = 0x8051970
open("/etc/ld.so.preload", O_RDONLY)    = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat(3, {st_mode=031544, st_size=0, ...}) = 0
mmap(0, 11015, PROT_READ, MAP_PRIVATE, 3, 0) = 0x2aabf000
close(3)                                = 0
open("/lib/libc.so.6", O_RDONLY)        = 3
fstat(3, {st_mode=S_ISGID|S_ISVTX|0561, st_size=0, ...}) = 0
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3"..., 4096) = 4096
mmap(0, 974392, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x2aac2000
mprotect(0x2aba8000, 32312, PROT_NONE)  = 0
mmap(0x2aba8000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0xe5000) = 
0x2aba8000
mmap(0x2abad000, 11832, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 
0) = 0x2abad000
close(3)                                = 0
munmap(0x2aabf000, 11015)               = 0
personality(PER_LINUX)                  = 0
getpid()                                = 5894
brk(0)                                  = 0x8051970
brk(0x8051d88)                          = 0x8051d88
brk(0x8052000)                          = 0x8052000
open("/etc/nsswitch.conf", O_RDONLY)    = 3
fstat(3, {st_mode=031547, st_size=0, ...}) = 0
mmap(0, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2aabf000
read(3, "#\n# /etc/nsswitch.conf\n#\n# An"..., 4096) = 1542
brk(0x8053000)                          = 0x8053000
read(3, "", 4096)                       = 0
close(3)                                = 0
munmap(0x2aabf000, 4096)                = 0
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat(3, {st_mode=031544, st_size=0, ...}) = 0
mmap(0, 11015, PROT_READ, MAP_PRIVATE, 3, 0) = 0x2aabf000
close(3)                                = 0
open("/lib/libnss_nisplus.so.2", O_RDONLY) = 3
fstat(3, {st_mode=S_ISVTX|0661, st_size=0, ...}) = 0
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3"..., 4096) = 4096
mmap(0, 40884, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x2abb0000
mprotect(0x2abb9000, 4020, PROT_NONE)   = 0
mmap(0x2abb9000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x8000) = 
0x2abb9000
close(3)                                = 0
open("/lib/libnsl.so.1", O_RDONLY)      = 3
fstat(3, {st_mode=S_IFDIR|S_ISUID|0251, st_size=0, ...}) = 0
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3"..., 4096) = 4096
mmap(0, 85872, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x2abba000
mprotect(0x2abcc000, 12144, PROT_NONE)  = 0
mmap(0x2abcc000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x11000) = 
0x2abcc000
mmap(0x2abcd000, 8048, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 
0) = 0x2abcd000
close(3)                                = 0
munmap(0x2aabf000, 11015)               = 0
uname({sys="Linux", node="sps-c1s8p25.colorstudy.com", ...}) = 0
open("/var/nis/NIS_COLD_START", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/var/nis/NIS_COLD_START", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat(3, {st_mode=031544, st_size=0, ...}) = 0
mmap(0, 11015, PROT_READ, MAP_PRIVATE, 3, 0) = 0x2aabf000
close(3)                                = 0
open("/lib/libnss_files.so.2", O_RDONLY) = 3
fstat(3, {st_mode=S_IFDIR|S_ISUID|0335, st_size=0, ...}) = 0
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3"..., 4096) = 4096
mmap(0, 35232, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x2abcf000
mprotect(0x2abd7000, 2464, PROT_NONE)   = 0
mmap(0x2abd7000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x7000) = 
0x2abd7000
close(3)                                = 0
brk(0x8054000)                          = 0x8054000
munmap(0x2aabf000, 11015)               = 0
open("/etc/services", O_RDONLY)         = 3
fcntl(3, F_GETFD)                       = 0
fcntl(3, F_SETFD, FD_CLOEXEC)           = 0
fstat(3, {st_mode=S_IFDIR|S_ISUID|0226, st_size=0, ...}) = 0
mmap(0, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2aabf000
read(3, "# /etc/services:\n# $Id: service"..., 4096) = 4096
close(3)                                = 0
munmap(0x2aabf000, 4096)                = 0
SYS_175(0, 0x7ffffbec, 0, 0x8, 0)       = 0
SYS_174(0x11, 0x7ffffb0c, 0, 0x8, 0x11) = 0
SYS_174(0xf, 0x7ffffb04, 0, 0x8, 0xf)   = 0
SYS_174(0xd, 0x7ffffafc, 0, 0x8, 0xd)   = 0
gettimeofday({999626641, 570461}, NULL) = 0
open("/etc/dnsrewrite", O_RDONLY|O_NONBLOCK) = -1 ENOENT (No such file or directory)
open("/etc/resolv.conf", O_RDONLY|O_NONBLOCK) = 3
read(3, "search colorstudy.com\nnameserve"..., 64) = 64
read(3, "8.226.5\n", 64)                = 8
read(3, "", 64)                         = 0
close(3)                                = 0
socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 3
fcntl(3, F_GETFL)                       = 0x2 (flags O_RDWR)
fcntl(3, F_SETFL, O_RDWR|O_NONBLOCK)    = 0
setsockopt(3, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
bind(3, {sin_family=AF_INET, sin_port=htons(110), sin_addr=inet_addr("0.0.0.0")}, 16) 
= 0
getsockname(3, {sin_family=AF_INET, sin_port=htons(110), 
sin_addr=inet_addr("0.0.0.0")}, [16]) = 0
listen(3, 20)                           = 0
fcntl(3, F_GETFL)                       = 0x802 (flags O_RDWR|O_NONBLOCK)
fcntl(3, F_SETFL, O_RDWR)               = 0
close(0)                                = 0
close(1)                                = 0
SYS_175(0x1, 0x7ffffbec, 0, 0x8, 0x1)   = 0
accept(3,      


What are you doing all the way down here? :)

--
Ian Bicking           Colorstudy Web Design
[EMAIL PROTECTED]   http://www.colorstudy.com
homepage:             http://www.colorstudy.com/ianb
4769 N Talman Ave, Chicago, IL 60625 / (773) 275-7241

Reply via email to