diff --git a/src/sbbs3/mailsrvr.c b/src/sbbs3/mailsrvr.c
index 0150629742d60c3baae45dc071a6ab1b5f2af671..c150e9b73e2b8146a992b601f72bdfeea20cb807 100644
--- a/src/sbbs3/mailsrvr.c
+++ b/src/sbbs3/mailsrvr.c
@@ -2314,8 +2314,13 @@ void DLLCALL mail_server(void* arg)
 		return;
 	}
 
-	if(startup->relay_port==0)
-		startup->relay_port=IPPORT_SMTP;
+	/* Setup intelligent defaults */
+	if(startup->relay_port==0)				startup->relay_port=IPPORT_SMTP;
+	if(startup->smtp_port==0)				startup->smtp_port=IPPORT_SMTP;
+	if(startup->pop3_port==0)				startup->pop3_port=110;
+	if(startup->rescan_frequency==0)		startup->rescan_frequency=3600;	/* 60 minutes */
+	if(startup->max_delivery_attempts==0)	startup->max_delivery_attempts=50;
+	if(startup->max_inactivity==0) 			startup->max_inactivity=120; /* seconds */
 
 	thread_up();
 
@@ -2374,7 +2379,7 @@ void DLLCALL mail_server(void* arg)
 		return;
 	}
 
-	if(!startup->max_clients) {
+	if(startup->max_clients==0) {
 		startup->max_clients=scfg.sys_nodes;
 		if(startup->max_clients<10)
 			startup->max_clients=10;
@@ -2382,9 +2387,6 @@ void DLLCALL mail_server(void* arg)
 
 	lprintf("Maximum clients: %u",startup->max_clients);
 
-	if(!startup->max_inactivity) 
-		startup->max_inactivity=120; /* seconds */
-
 	lprintf("Maximum inactivity: %u seconds",startup->max_inactivity);
 
 	active_clients=0;