diff --git a/src/sbbs3/sbbscon.c b/src/sbbs3/sbbscon.c
index c197373e7cc78d490a61f57e4321b2e36e74f98c..10fde3d12f0db2f32b085ecdb74846b7da9b4236 100644
--- a/src/sbbs3/sbbscon.c
+++ b/src/sbbs3/sbbscon.c
@@ -1815,7 +1815,7 @@ int main(int argc, char** argv)
 				lprintf(LOG_INFO, "MQTT connecting to broker %s:%u", scfg.mqtt.broker_addr, scfg.mqtt.broker_port);
 				result = mqtt_connect(&bbs_startup.mqtt, /* bind_address: */NULL);
 				if(result == MQTT_SUCCESS) {
-					lprintf(LOG_INFO, "MQTT broker-connect (%s:d) successful", scfg.mqtt.broker_addr, scfg.mqtt.broker_port);
+					lprintf(LOG_INFO, "MQTT broker-connect (%s:%d) successful", scfg.mqtt.broker_addr, scfg.mqtt.broker_port);
 				} else {
 					lprintf(LOG_ERR, "MQTT broker-connect (%s:%d) failure: %d", scfg.mqtt.broker_addr, scfg.mqtt.broker_port, result);
 					mqtt_close(&bbs_startup.mqtt);
@@ -1842,12 +1842,15 @@ int main(int argc, char** argv)
 	mqtt_pub_uintval(&ftp_startup.mqtt, TOPIC_SERVER, p, ftp_startup.max_clients);
 	mqtt_pub_uintval(&web_startup.mqtt, TOPIC_SERVER, p, web_startup.max_clients);
 	mqtt_pub_strval(&bbs_startup.mqtt, TOPIC_HOST, "version", sbbscon_ver());
+	mqtt_pub_strval(&bbs_startup.mqtt, TOPIC_HOST, "status", "online");
 
 #ifdef USE_MOSQUITTO
 	if(bbs_startup.mqtt.handle != NULL) {
 #ifdef MOSQUITTO_LOG
 		mosquitto_log_callback_set(bbs_startup.mqtt.handle, mqtt_log_msg);
 #endif
+		p = "disconnected";
+		mosquitto_will_set(bbs_startup.mqtt.handle, "status", strlen(p), p, /* QOS: */2, /* retain: */true);
 		mosquitto_disconnect_callback_set(bbs_startup.mqtt.handle, mqtt_disconnected);
 		mosquitto_message_callback_set(bbs_startup.mqtt.handle, mqtt_message_received);
 		for(int i = bbs_startup.first_node; i <= bbs_startup.last_node; i++) {
@@ -2319,7 +2322,10 @@ int main(int argc, char** argv)
 	/* erase the prompt */
 	printf("\r%*s\r",prompt_len,"");
 
+	mqtt_pub_strval(&bbs_startup.mqtt, TOPIC_HOST, "status", "offline");
+	mqtt_disconnect(&bbs_startup.mqtt);
 	mqtt_thread_stop(&bbs_startup.mqtt);
+	mqtt_close(&bbs_startup.mqtt);
 
 	return(0);
 }