Download | Plain Text | Line Numbers


#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <ctype.h>
 
#ifdef LOG_SYSLOG
# include <syslog.h>
#endif
 
int main()
{
  char *user = getenv("SMTPAUTHUSER");
  char *meth, *rip, *smtps, *tls, *session, *p;
  pid_t ppid = getppid();
 
  if (user != NULL && strlen(user) > 0)
  {
    meth    = getenv("SMTPAUTHMETHOD");
    rip     = getenv("TCPREMOTEIP");
    smtps   = getenv("SMTPS");
    tls     = getenv("SMTPSECURED");
    session = getenv("SMTPSESSION");
 
    if (meth != NULL)
    {
      meth = strdup(meth);
      for(p = meth; (*p = toupper(*p)); p++);
    }
 
    fprintf(stderr, "smtp-login: Login: user=<%s>, method=%s, rip=%s, pid=%d%s, session=<%s>\n",
        user, meth, rip, ppid, (tls) ? ((smtps) ? ", SSL" : ", TLS") : "", session);
 
#ifdef LOG_SYSLOG
    openlog("smtp", LOG_NDELAY, LOG_MAIL);
    syslog(LOG_INFO, "smtp-login: Login: user=<%s>, method=%s, rip=%s, pid=%d%s, session=<%s>",
        user, meth, rip, ppid, (tls) ? ((smtps) ? ", SSL" : ", TLS") : "", session);
    closelog();
#endif
 
    if (meth != NULL)
      free(meth);
  }
  return 0;
}