summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSam Varshavchik2014-05-06 08:25:17 -0400
committerSam Varshavchik2014-05-06 08:25:17 -0400
commitd71f458fcd1291348b1ecaa7dce1e06b2b26f761 (patch)
tree764be0846cb06067704276382569e8b11bbc8617
parent2fe3d6733aa72133bc7068a02c2d16d08fc6006c (diff)
downloadcourier-libs-d71f458fcd1291348b1ecaa7dce1e06b2b26f761.tar.bz2
courier-imap: log IMAP and POP3 logins when running in proxy mode.
-rw-r--r--imap/ChangeLog6
-rw-r--r--imap/imaplogin.c16
-rw-r--r--imap/pop3login.c15
3 files changed, 35 insertions, 2 deletions
diff --git a/imap/ChangeLog b/imap/ChangeLog
index b568ad4..79b0c1b 100644
--- a/imap/ChangeLog
+++ b/imap/ChangeLog
@@ -1,3 +1,9 @@
+2014-05-06 Sam Varshavchik <mrsam@courier-mta.com>
+
+ * pop3login.c (login_callback): Log logins when running in proxy mode.
+
+ * imaplogin.c (login_callback): Log logins when running in proxy mode.
+
2014-04-27 Sam Varshavchik <mrsam@courier-mta.com>
* courier.spec.in: Update to use systemd macros.
diff --git a/imap/imaplogin.c b/imap/imaplogin.c
index 0a46783..7038b42 100644
--- a/imap/imaplogin.c
+++ b/imap/imaplogin.c
@@ -1,5 +1,5 @@
/*
-** Copyright 1998 - 2011 Double Precision, Inc.
+** Copyright 1998 - 2014 Double Precision, Inc.
** See COPYING for distribution information.
*/
@@ -140,6 +140,14 @@ struct imapproxyinfo {
static int login_imap(int, const char *, void *);
+static const char *safe_getenv(const char *p)
+{
+ p=getenv(p);
+
+ if (!p) p="";
+ return p;
+}
+
int login_callback(struct authinfo *ainfo, void *dummy)
{
int rc;
@@ -196,6 +204,12 @@ int login_callback(struct authinfo *ainfo, void *dummy)
if (fd > 0)
{
alarm(0);
+
+ fprintf(stderr, "INFO: LOGIN, user=%s, ip=[%s], port=[%s], protocol=%s",
+ ainfo->address, safe_getenv("TCPREMOTEIP"),
+ safe_getenv("TCPREMOTEPORT"),
+ safe_getenv("PROTOCOL"));
+
proxyloop(fd);
exit(0);
}
diff --git a/imap/pop3login.c b/imap/pop3login.c
index 4bc291b..1a96a04 100644
--- a/imap/pop3login.c
+++ b/imap/pop3login.c
@@ -1,5 +1,5 @@
/*
-** Copyright 1998 - 2008 Double Precision, Inc.
+** Copyright 1998 - 2014 Double Precision, Inc.
** See COPYING for distribution information.
*/
@@ -38,6 +38,14 @@ extern const char *pop3_externalauth();
static const char *pop3d;
static const char *defaultmaildir;
+static const char *safe_getenv(const char *p)
+{
+ p=getenv(p);
+
+ if (!p) p="";
+ return p;
+}
+
static int starttls()
{
char *argvec[4];
@@ -180,6 +188,11 @@ static int login_callback(struct authinfo *ainfo, void *dummy)
if (fd > 0)
{
alarm(0);
+ fprintf(stderr, "INFO: LOGIN, user=%s, ip=[%s], port=[%s], protocol=%s",
+ ainfo->address, safe_getenv("TCPREMOTEIP"),
+ safe_getenv("TCPREMOTEPORT"),
+ safe_getenv("PROTOCOL"));
+
proxyloop(fd);
exit(0);
}