diff --git a/src/sbbs3/sbbscon.c b/src/sbbs3/sbbscon.c
index f1db385c6b80c9876f6d18e33c74fae814803cf0..37a302be9ee0a5f26536687d080a867c06510fae 100644
--- a/src/sbbs3/sbbscon.c
+++ b/src/sbbs3/sbbscon.c
@@ -128,6 +128,8 @@ static const char* usage  = "usage: %s [[option] [...]]\n"
 							"\n"
 							"Global options:\n"
 							"\n"
+							"\thn[host]   set hostname for this instance\n"
+							"             if host not specified, uses gethostname\n"
 #ifdef __unix__
 							"\tun<user>   set username for BBS to run as\n"
 							"\tug<group>  set group for BBS to run as\n"
@@ -701,8 +703,7 @@ int main(int argc, char** argv)
 					continue;
 				p+=10;	/* skip "nameserver" */
 				while(*p && *p<=' ') p++;	/* skip more white-space */
-				sprintf(mail_startup.dns_server,"%.*s"
-					,sizeof(mail_startup.dns_server)-1,p);
+				SAFECOPY(mail_startup.dns_server,p);
 				break;
 			}
 			fclose(fp);
@@ -852,6 +853,29 @@ int main(int argc, char** argv)
 						return(0);
 				}
 				break;
+			case 'H':	/* Host */
+				switch(toupper(*(arg++))) {
+					case 'N':	/* Name */
+						if(*arg) {
+							SAFECOPY(bbs_startup.host_name,arg);
+							SAFECOPY(ftp_startup.host_name,arg);
+							SAFECOPY(mail_startup.host_name,arg);
+							SAFECOPY(services_startup.host_name,arg);
+						} else {
+							gethostname(bbs_startup.host_name
+								,sizeof(bbs_startup.host_name)-1);
+							gethostname(ftp_startup.host_name
+								,sizeof(ftp_startup.host_name)-1);
+							gethostname(mail_startup.host_name
+								,sizeof(mail_startup.host_name)-1);
+							gethostname(services_startup.host_name
+								,sizeof(services_startup.host_name)-1);
+						}
+					default:
+						printf(usage,argv[0]);
+						return(0);
+				}
+				break;
 			case 'S':	/* SMTP/SendMail */
 				switch(toupper(*(arg++))) {
 					case '-':