Introduction
We use poppassd to implement a feature that allows our email customers to change their account password. It is a service that runs on the system that hosts the account, using xinetd.
The Poppassd/CentOS 6 Problem
We recently discovered that the version we were using no longer worked on CentOS 6. It has been working on CentOS 5 without problem. The symptom was that it would go right through and succeed to change the password then hang.
The Solution
We downloaded the source from netwinsite.com to take a look. It is not clear if this site is the official source for poppassd, but the code compiled without problems on CentOS 6.
By studying the code we discovered that, for “RedHat” based systems at least, it expects the output from the OS command “passwd” to all be sent to stderr. “passwd” is an interactive console program to change passwords, that outputs prompts and a final success message. However, the CentOS 6 version outputs the prompts to stderr and the final message to stdout. poppassd expects to see both the prompts and the final message to allow it to progress through its task, but only looks for these responses from stderr, and as the final message is sent to stdout it waits forever. Hence the hang.
To deal with this problem we implemented the ability to have poppassd watch the output from “passwd” on either stdout or stderr, as appropriate for what it is waiting for. The program now works correctly.
You can download the revised poppassd.c file by clicking here. For information on how to compile and install it please see netwinsite.com. You are free to use this revised source under the same copyright restrictions as the original from netwinsite.com.
Update
Version 1.6b(ATI) now supports passwords containing spaces. It also supports spaces in user names, but this is probably not useful in your OS.