this is not a chkuser limit, but a vpopmail limit. vpopmail's vauth_getpw() does not check for the availability of the resource (that may be MySQL as LDAP), but simply returns something like 1/0 (pointer exists, pointer does not exist, despite of the reason why it does not exist).
You have the same problem in vdelivermail, if MySQL is down. You see chkuser because it is the first filter in the chain.
So I'm aware of this limit (I'm addressing this in version 2.0), and I'm going to add some code to check MySQL availability before calling vpopmail, but I can do it only for MySQl, not for LDAP, Oracle, Postgres, ecc.
I feel it would be nice if it could be developed another set of "robust" vpopmail calls.
All critical vpopmail (vauth_getpw() and a few else) could should have a general return status, stating if routine could work without resources/other limits.
For example if we could have
status = rvauth_getpw(...);
/*
status only reports if routine worked right, if resources are, ok, if routine could
make his job without external problems.
*/
if (status == VPOPMAIL_SUCCESS) {
.....
/* here examine if user really exists */
} else {
/* say at SMTP to retry later */
}
it would be all more simple.
If vpopmail library keeps connections on between consecutives calls, it could be enought to add just one call to check resources availability, but this routine should be developed for all resources.
An example of this kind
status = vopenresources(...); if (status == VPOPMAIL_SUCCESS) { user = vauth_getpw(...); ..... } else { /* say at SMTP to retry later */ }
I know this may be a long work, but I feel vpopmail has to improve a lot his robustness and reliability.
Tonino
At 11/05/2004 11/05/2004 -0400, you wrote:
Howdy,
I've seen a few people complaining that their mail is getting bounced. Not good, needless to say. On examing the bounces, I see that it's the chkusr error message that the user does not exist.
At this point my best guess, by looking at overall server activity is that this is happening when the machine really gets swamped (all incoming smtp connections chewed up with spam runs - this server and a backup server). I have mysql set to 500 max connections, and just bumped that up to 800.
I was surprised a bit by how chkusr behaves if the mysql server goes away - rather than erring on the side of caution and trying to deliver the mail, it bounces it. I verified this on a test box.
FWIW, this is the Shupp chkusr patch, there's no version info in the patch, but it looks like it was made 3/16/2003.
Is this how chkusr is "supposed" to operate? If so, I need an alternative, as most other parts of vpopmail survive a brief database outage without dumping good mail.
Are there any other tested "chkusr" type patches out there? Please share!
Thanks,
Charles
------------------------------------------------------------ [EMAIL PROTECTED] Interazioni di Antonio Nati http://www.interazioni.it [EMAIL PROTECTED] ------------------------------------------------------------