At 3:28 PM +0100 1/29/03, Jurgen Philippaerts wrote:
Instead of commenting this code out, you could fake it out by hardcoding a user to be. Qpopper needs to know information about the user, which is why it checks if the user exists. It needs to know its UID and GID, shell, home directory, etc. so it can give up root privileges and become the user, check for special things by group (if configured to do so), look for a configuration file or bulletin database in the home directory (if configured to do so), etc.now, i have been looking through the source, and managed to comment out the part where this verification is done in popper/pop_pass.c unfortunately, my programming skills are not good enough to do it properly :)<snip> popper/pop_pass.c: // pwp = &p->pw; popper/pop_pass.c: // if ( pwp->pw_name == NULL ) { popper/pop_pass.c: // DEBUG_LOG1 ( p, "User %.128s not known by system", popper/pop_pass.c: // p->user ); popper/pop_pass.c: // sleep ( SLEEP_SECONDS ); popper/pop_pass.c: // return ( pop_msg ( p, POP_FAILURE, HERE, ERRMSG_PW, p->user ) ); popper/pop_pass.c: // } </snip>
If you want to run without users existing in the system, the spools have to be owned by some user, so you'll need to make Qpopper become that user.
--
Randall Gellens
Opinions are personal; facts are suspect; I speak for myself only
-------------- Randomly-selected tag: ---------------
You see, wire telegraph is a kind of very, very long cat. You
pull his tail in New York and his head is meowing in Los Angeles.
Do you understand this? And radio operates in exactly the same
way: you send signals here, they receive them there. The only
difference is that there is no cat. --Albert Einstein