diff -ur qpopper4.0.8/config.h.in qpopper4.0.8-local-names/config.h.in
--- qpopper4.0.8/config.h.in	Sat Apr 30 13:48:33 2005
+++ qpopper4.0.8-local-names/config.h.in	Thu May 26 15:02:17 2005
@@ -629,4 +629,12 @@
  */
 #undef USE_TEMPNAM
 
+/*
+ * Define to allow configuration of hostname and qpopper name
+ */
+#undef LOCALNAMES
+
+/* Define to allow configuration of banners */
+#undef LOCALSTRINGS
+
 #include "conf.h"  /* some macros */
diff -ur qpopper4.0.8/configure.in qpopper4.0.8-local-names/configure.in
--- qpopper4.0.8/configure.in	Thu Apr 28 18:46:17 2005
+++ qpopper4.0.8-local-names/configure.in	Thu May 26 15:03:28 2005
@@ -8,6 +8,9 @@
 dnl Project:    Qpopper Server
 dnl Revisions:
 dnl
+dnl   
+dnl   05/26/04   [jm]
+dnl          - Added '--enable-local-names'.
 dnl   04/28/05   [rg]
 dnl          - Added check for crypt.h
 dnl          - Added check for setresuid(), used on HPUX
@@ -927,8 +930,19 @@
 fi
 
 
+AC_ARG_ENABLE(local-names, [ --enable-local-names     Allow local configuration of hostname],
+              localnames="$enableval",localnames="no")
+if test "$localnames" != "no"; then
+    AC_MSG_RESULT(Enabling local hostname)
+    AC_DEFINE(LOCALNAMES)
+fi
 
-
+AC_ARG_ENABLE(local-names, [ --enable-local-strings     Allow local configuration of banners strings],
+              localstrings="$enableval",localstrings="no")
+if test "$localstrings" != "no"; then
+    AC_MSG_RESULT(Enabling local banner strings)
+    AC_DEFINE(LOCALSTRINGS)
+fi
 dnl
 dnl ---------- Query for OS options ----------
 dnl
diff -ur qpopper4.0.8/popper/pop_config.c qpopper4.0.8-local-names/popper/pop_config.c
--- qpopper4.0.8/popper/pop_config.c	Thu Apr 28 18:46:18 2005
+++ qpopper4.0.8-local-names/popper/pop_config.c	Thu May 26 15:05:56 2005
@@ -265,6 +265,11 @@
     kSASL_NO_ANONYMOUS,     /*    (no flag)     */
     kXTND_XMIT,             /* -x               */
     kPAM_SESSION,           /*    (no flag)     */
+    kPOPPER_HOST,           /*    (no flag)     */
+    kPOPPER_NAME,           /*    (no flag)     */
+    kPOPPER_IMPL,           /*    (no flag)     */
+    kPOPPER_BANNER_VER,     /*    (no flag)     */
+    kPOPPER_BANNER,         /*    (no flag)     */
 
 
     LAST_OPT_VAL
@@ -341,6 +346,12 @@
     { "UW-kludge"                    , CfgBool , CfgResNone, kUW_KLUGE           },
     { "xtnd-xmit"                    , CfgBool , CfgResUser, kXTND_XMIT          },
     { "pam-session"                  , CfgMnem , CfgResUser, kPAM_SESSION        },
+    { "popper-host"                  , CfgStr  , CfgInit   , kPOPPER_HOST        },
+    { "popper-name"                  , CfgStr  , CfgInit   , kPOPPER_NAME        },
+    { "popper-banner"                , CfgStr  , CfgInit   , kPOPPER_BANNER      },
+    { "popper-implementation"        , CfgStr  , CfgInit   , kPOPPER_IMPL        },
+    { "popper-banner-version"        , CfgStr  , CfgInit   , kPOPPER_BANNER_VER  },
+    
 
     { NULL                           , CfgBad  , CfgResNone, LAST_OPT_VAL        }
 };
@@ -970,6 +981,15 @@
 #if 0 /* can't use this until we have a way to call pam_close_session with privs */
         case kPAM_SESSION:         R__MNM ( &p->call_pam_session );
 #endif
+#ifdef LOCALNAMES
+        case kPOPPER_HOST:         R__PTR ( &p->pPopper_Host );
+        case kPOPPER_NAME:         R__PTR ( &p->pPopper_Name );
+#endif /* LOCALNAMES */
+#ifdef LOCALSTRINGS				   
+        case kPOPPER_BANNER:       R__PTR ( &p->pPopper_Banner );
+        case kPOPPER_BANNER_VER:   R__PTR ( &p->pPopper_Banner_V);
+        case kPOPPER_IMPL:         R__PTR ( &p->pPopper_Impl);
+#endif /* LOCALSTRINGS */			
 
         default:                   R__PTR ( NULL );
     } /* switch ( item ) */
diff -ur qpopper4.0.8/popper/pop_extend.c qpopper4.0.8-local-names/popper/pop_extend.c
--- qpopper4.0.8/popper/pop_extend.c	Mon Apr 25 23:14:39 2005
+++ qpopper4.0.8-local-names/popper/pop_extend.c	Thu May 26 15:02:17 2005
@@ -114,12 +114,31 @@
         POP_WRITE_LIT ( p, "STLS\r\n" );
 
     if ( p->bShy == FALSE || p->CurrentState == trans ) {
+#ifdef LOCALSTRINGS
+        if ( p->pPopper_Impl ) {	    
+            pop_write( p, p->pPopper_Impl , strlen( p->pPopper_Impl ) );	    
+            pop_write( p, "\r\n" , 2 );
+            goto localstrings_impl_punt;
+        }	    
+#endif /* LOCALSTRINGS */
         pop_write_fmt ( p, 
                         "IMPLEMENTATION %s%.*s%s-version-%s\r\n",
+#ifdef LOCALNAMES
+			( p->pPopper_Name ? p->pPopper_Name : QPOP_NAME),
+#else			
                         QPOP_NAME,
+#endif /* LOCALNAMES */		
                         (strlen(IMPLEMENTSFX)>0 ? 1 : 0), "-",
-                        IMPLEMENTSFX, VERSION );
+                        IMPLEMENTSFX,
+#ifdef LOCALSTRINGS		  
+                        ( (p->pPopper_Banner_V) ? p->pPopper_Banner_V : VERSION ) );
+#else	
+			VERSION );
+#endif /* LOCALSTRINGS */
     }
+#ifdef LOCALSTRINGS
+localstrings_impl_punt: ;
+#endif /* LOCALSTRINGS */
 
     pop_write_line  ( p, "." );
     
diff -ur qpopper4.0.8/popper/pop_init.c qpopper4.0.8-local-names/popper/pop_init.c
--- qpopper4.0.8/popper/pop_init.c	Mon Apr 25 23:14:39 2005
+++ qpopper4.0.8-local-names/popper/pop_init.c	Thu May 26 15:02:17 2005
@@ -686,6 +686,16 @@
 #endif /* NEWBULLCNT */
     DEBUG_LOG1 ( p, "Set max-bulletins to %d", p->nMaxBulls );
 
+#ifdef LOCALNAMES
+    p->pPopper_Host = NULL;
+    p->pPopper_Name = NULL;
+#endif /* LOCALNAMES */
+#ifdef LOCALSTRINGS
+    p->pPopper_Banner = NULL;
+    p->pPopper_Impl = NULL;
+    p->pPopper_Banner_V = NULL;
+#endif /* LOCALSTRINGS */
+
 #ifndef   POP_FACILITY
 #  if defined(OSF1) || defined(LINUX)
 #    define POP_FACILITY    LOG_MAIL
@@ -1078,6 +1088,13 @@
     p->ipaddr = strdup("* _DEBUG *");
     p->client = p->ipaddr;
 #else
+#ifdef LOCALNAMES
+    
+    
+    if(p->pPopper_Host && strlcpy ( p->myhost, p->pPopper_Host, MAXHOSTNAMELEN)) 
+	    goto localnames_host_punt;
+
+#else /* kPOPPER_HOST */
     (void) gethostname ( p->myhost, MAXHOSTNAMELEN );
     hp = gethostbyname ( p->myhost );
     if ( hp != NULL ) {
@@ -1107,7 +1124,11 @@
             p->myhost [ MAXHOSTNAMELEN ] = '\0';
         }
     }
-
+#endif /* LOCALNAMES */
+#ifdef LOCALNAMES
+localnames_host_punt:
+#endif /* LOCALNAMES */
+	  
     /*  
      * Get the address and socket of the client to whom I am speaking 
      */
diff -ur qpopper4.0.8/popper/popper.c qpopper4.0.8-local-names/popper/popper.c
--- qpopper4.0.8/popper/popper.c	Tue Apr 12 23:12:19 2005
+++ qpopper4.0.8-local-names/popper/popper.c	Thu May 26 15:02:17 2005
@@ -272,15 +272,32 @@
                   p.md5str );
     }
     else {
+#ifdef LOCALSTRINGS
+	if(p.pPopper_Banner) {
+                pop_msg ( &p, POP_SUCCESS, HERE, p.pPopper_Banner);
+                goto localstrings_banner_punt;
+	}      	
+#endif /* LOCALSTRINGS */
         pop_msg ( &p, POP_SUCCESS, HERE, 
                   "%s%.*s%s (version %s) at %s starting.  %s",
+#ifdef LOCALNAMES
+		  ( (p.pPopper_Name) ? p.pPopper_Name : QPOP_NAME),
+#else
                   QPOP_NAME,
+#endif /* LOCALNAMES */		
                   (strlen(BANNERSFX)>0 ? 1 : 0), " ",
                   BANNERSFX,
-                  VERSION, 
+#ifdef LOCALSTRINGS
+                  ( (p.pPopper_Banner_V) ? p.pPopper_Banner_V : VERSION ),
+#else		  
+                  VERSION,
+#endif /* LOCALSTRINGS */	
                   myname,
                   p.md5str );
     }
+#ifdef LOCALSTRINGS
+localstrings_banner_punt:
+#endif /* LOCALSTRINGS */    
 
     } /* local env */
 
diff -ur qpopper4.0.8/popper/popper.h qpopper4.0.8-local-names/popper/popper.h
--- qpopper4.0.8/popper/popper.h	Thu Apr 28 18:46:18 2005
+++ qpopper4.0.8-local-names/popper/popper.h	Thu May 26 15:07:02 2005
@@ -706,6 +706,16 @@
 #if 0 /* can't use this until we have a way to call pam_close_session with privs */
     pam_session_type    call_pam_session;       /* When to call pam_session_* */
 #endif
+#ifdef LOCALNAMES
+    char               *pPopper_Host;           /* popper-host option, whats our hostname? */
+    char               *pPopper_Name;           /* popper-name option, whats our name? */
+#endif /* LOCALNAMES */    
+#ifdef LOCALSTRINGS    
+    char               *pPopper_Impl;           /* popper-implementation option, implementation string */
+    char               *pPopper_Banner;         /* popper-banner option, banner string */
+    char               *pPopper_Banner_V;       /* popper-banner-version, displaying version in banner */
+#endif /* LOCALSTRINGS */   
+
 };
 
 
