*** pop_pass.c.orig	Thu Jun 24 11:10:17 1999
--- pop_pass.c	Thu Jun 24 12:07:18 1999
***************
*** 28,33 ****
--- 28,94 ----
  char	*pwerrmsg = "Password supplied for \"%s\" is incorrect.";
  
  
+ #define SMTP_AFTER_POP
+ 
+ #ifdef SMTP_AFTER_POP
+ 
+ #include <unistd.h>
+ #include <fcntl.h>
+ #include <sys/file.h>
+ #include <db.h>
+ 
+ void smtp_after_pop(POP *p)
+ {
+     char stamp[64] = "/etc/mail/popips/";
+     char *dbname = "/etc/mail/access.db";
+     DB *db;
+     DBT key, data;
+     DBT *pk = &key, *pd = &data;
+     int fd, rc;
+ 
+     db = dbopen(dbname, O_RDWR, 0, DB_HASH, NULL);
+     if (db == NULL) {
+ 	pop_log(p, LOG_WARNING, "error opening %s\n", dbname);
+ 	return;
+     }
+     fd = (db->fd)(db);
+     if (flock(fd, LOCK_EX) == -1) {
+ 	pop_log(p, LOG_WARNING, "can't get lock on %s\n", dbname);
+ 	(db->close)(db);
+ 	return;
+     }
+     key.data = p->ipaddr;
+     key.size = strlen(key.data);
+     data.data = "RELAY";
+     data.size = strlen(data.data);
+     rc = (db->put)(db, pk, pd, 0);
+     switch (rc) {
+     case 0:
+ 	strcat(stamp, p->ipaddr);
+ 	rc = open(stamp, O_CREAT, 0600);
+ 	if (rc == -1) {
+ 	    pop_log(p, LOG_WARNING, "error creating %s\n", stamp);
+ 	} else {
+ 	    close(rc);
+ 	}
+ 	pop_log(p, LOG_INFO, "inserted %s into %s for user %s\n",
+ 	    p->ipaddr, dbname, p->user);
+ 	break;
+     case 1:
+ 	pop_log(p, LOG_INFO, "%s alrady in %s for user %s\n",
+ 	    p->ipaddr, dbname, p->user);
+ 	break;
+     default:
+ 	pop_log(p, LOG_WARNING, "error inserting %s into %s for user %s\n",
+ 	    p->ipaddr, dbname, p->user);
+ 	break;
+     }
+     flock(fd, LOCK_UN);
+     (db->close)(db);
+ }
+ #endif
+ 
+ 
  #ifdef NONAUTHFILE
  checknonauthfile(user) 
       char *user;
***************
*** 472,477 ****
--- 533,542 ----
  	sleep(SLEEP_SECONDS);
  	return (pop_msg(p,POP_FAILURE, pwerrmsg, p->user));
      }
+ 
+ #ifdef SMTP_AFTER_POP
+     smtp_after_pop(p);
+ #endif
  
      return(POP_SUCCESS);
  }

