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