Hi!This may well be in some other contrib patch, but since I couldn't find a link to the contrib directory, here it is. It is a patch that adds the username (or mailbox, which should be the same most of the time) to all syslog messages that popa3d writes. It is very useful for detecting users that misspell usernames, or use incorrect case when typing the username.
Example:Sep 15 12:22:14 mail01 popa3d[22645]: Authentication failed for UNKNOWN USER Vjen
Sep 15 12:22:14 mail01 popa3d[22659]: Authentication passed for sea0593aSep 15 12:22:14 mail01 popa3d[22659]: 25 messages (1585238 bytes) loaded for se0593a Sep 15 12:22:14 mail01 popa3d[22659]: 0 (0) deleted, 25 (1585238) left for se0593a
Sep 15 12:25:17 mail01 popa3d[24468]: Authentication passed for se1161dSep 15 12:25:17 mail01 popa3d[24468]: 1 message (12918 bytes) loaded for se1161d
Sep 15 12:25:18 mail01 popa3d[24468]: 1 (12918) deleted, 0 (0) left for se1161d popa3d unpatched would have given the following: Sep 15 12:22:14 mail01 popa3d[22645]: Authentication failed for UNKNOWN USER Sep 15 12:22:14 mail01 popa3d[22659]: Authentication passed for sea0593a Sep 15 12:22:14 mail01 popa3d[22659]: 25 messages (1585238 bytes) loaded Sep 15 12:22:14 mail01 popa3d[22659]: 0 (0) deleted, 25 (1585238) left Sep 15 12:25:17 mail01 popa3d[24468]: Authentication passed Sep 15 12:25:17 mail01 popa3d[24468]: 1 message (12918 bytes) loaded Sep 15 12:25:18 mail01 popa3d[24468]: 1 (12918) deleted, 0 (0) left It is quite obvious that the patch helps our support staff quite a bit!I've not tested it in POP_VIRTUAL environments, but I have included support it. I'm not really a programmer, so please audit the code and get back to me or just fix it if anything needs to be fixed!
/Fredrik diff -urpN popa3d-1.0-orig/pop_auth.c popa3d-1.0/pop_auth.c --- popa3d-1.0-orig/pop_auth.c 2002-09-09 13:07:48.000000000 +0200 +++ popa3d-1.0/pop_auth.c 2005-09-15 12:32:13.000000000 +0200 @@ -65,7 +65,7 @@ int do_pop_auth(int channel) return 0; } -void log_pop_auth(int result, char *user) +void log_pop_auth(int result, char *user, int known) { if (result == AUTH_NONE) { syslog(SYSLOG_PRI_LO, "Didn't attempt authentication"); @@ -75,15 +75,17 @@ void log_pop_auth(int result, char *user #if POP_VIRTUAL if (virtual_domain) { syslog(result == AUTH_OK ? SYSLOG_PRI_LO : SYSLOG_PRI_HI, - "Authentication %s for [EMAIL PROTECTED]", + "Authentication %s for [EMAIL PROTECTED]", result == AUTH_OK ? "passed" : "failed", - user ? user : "UNKNOWN USER", + known == 0 ? "UNKNOWN USER " : "", + user, virtual_domain); return; } #endif syslog(result == AUTH_OK ? SYSLOG_PRI_LO : SYSLOG_PRI_HI, - "Authentication %s for %s", + "Authentication %s for %s%s", result == AUTH_OK ? "passed" : "failed", - user ? user : "UNKNOWN USER"); + known == 0 ? "UNKNOWN USER " : "", + user); } diff -urpN popa3d-1.0-orig/pop_auth.h popa3d-1.0/pop_auth.h --- popa3d-1.0-orig/pop_auth.h 2001-09-06 02:11:28.000000000 +0200 +++ popa3d-1.0/pop_auth.h 2005-09-15 09:53:16.000000000 +0200 @@ -21,6 +21,6 @@ extern int do_pop_auth(int channel); /* * Logs an authentication attempt for user, use NULL for non-existent. */ -extern void log_pop_auth(int result, char *user); +extern void log_pop_auth(int result, char *user, int known); #endif diff -urpN popa3d-1.0-orig/pop_root.c popa3d-1.0/pop_root.c --- popa3d-1.0-orig/pop_root.c 2002-03-21 21:15:19.000000000 +0100 +++ popa3d-1.0/pop_root.c 2005-09-15 09:50:34.000000000 +0200 @@ -247,12 +247,12 @@ int do_pop_session(void) if (result == AUTH_OK) { if (close(channel[0])) return log_error("close"); - log_pop_auth(result, user); + log_pop_auth(result, user, known); return do_pop_trans(spool, mailbox); } if (drop_root()) return 1; - log_pop_auth(result, known ? user : NULL); + log_pop_auth(result, user, known); #ifdef AUTH_FAILED_MESSAGE if (result == AUTH_FAILED) pop_reply("-ERR %s", AUTH_FAILED_MESSAGE); diff -urpN popa3d-1.0-orig/pop_trans.c popa3d-1.0/pop_trans.c --- popa3d-1.0-orig/pop_trans.c 2003-03-02 03:43:10.000000000 +0100 +++ popa3d-1.0/pop_trans.c 2005-09-15 10:04:22.000000000 +0200 @@ -216,9 +216,10 @@ int do_pop_trans(char *spool, char *mail return 0; } - syslog(SYSLOG_PRI_LO, "%u message%s (%lu byte%s) loaded", + syslog(SYSLOG_PRI_LO, "%u message%s (%lu byte%s) loaded for %s", db.total_count, db.total_count == 1 ? "" : "s", - db.total_size, db.total_size == 1 ? "" : "s"); + db.total_size, db.total_size == 1 ? "" : "s", + mailbox); if (pop_reply_ok()) event = POP_CRASH_NETFAIL; @@ -234,24 +235,25 @@ int do_pop_trans(char *spool, char *mail break; } - syslog(SYSLOG_PRI_LO, "%u (%lu) deleted, %u (%lu) left", + syslog(SYSLOG_PRI_LO, "%u (%lu) deleted, %u (%lu) left for %s", db.total_count - db.visible_count, db.total_size - db.visible_size, db.visible_count, - db.visible_size); + db.visible_size, + mailbox); pop_reply_ok(); break; case POP_CRASH_NETFAIL: - syslog(SYSLOG_PRI_LO, "Premature disconnect"); + syslog(SYSLOG_PRI_LO, "Premature disconnect form %s",mailbox); break; case POP_CRASH_NETTIME: - syslog(SYSLOG_PRI_LO, "Connection timed out"); + syslog(SYSLOG_PRI_LO, "Connection timed out with %s",mailbox); } if (db.flags & DB_STALE) - syslog(SYSLOG_PRI_LO, "Another MUA active, giving up");+ syslog(SYSLOG_PRI_LO, "Another MUA active, giving up on %s",mailbox);
else if (event == POP_CRASH_SERVER) syslog(SYSLOG_PRI_ERROR,
popa3d-1.0-show-username-in-logs.diff.gz
Description: Binary data