diff --git a/exec/automsg.js b/exec/automsg.js
index b7d6688ed6ba37fa6fbcf54b1d48efcecccb0325..9f6f9743cc8e6673f9143a886a16e5e3662d4600 100644
--- a/exec/automsg.js
+++ b/exec/automsg.js
@@ -1,5 +1,13 @@
-// $Id: automsg.js,v 1.3 2020/04/19 03:15:35 rswindell Exp $
-// vi: tabstop=4
+// Auto-message (ala WWIV)
+
+// modopts.ini [automsg] options:
+//   prompt
+//   sysop_prompt
+//   intro
+//   header_fmt
+//   user_fmt
+//   line_fmt
+//   max_line_len
 
 "use strict";
 
@@ -7,13 +15,23 @@ require("text.js", 'AutoMsg');
 require("userdefs.js", 'UFLAG_W');
 require("sbbsdefs.js", 'P_NOABORT');
 
+var options = load('modopts.js', "automsg");
+if(!options)
+	options = {};
+if(!options.max_line_len)
+	options.max_line_len = 76;
+
 function automsg()
 {
-	const quote_fmt=" > %.*s\r\n";
+	const fmt = options.line_fmt || " > %.79s\r\n";
 	var automsg = system.data_dir + "msgs/auto.msg";
 	while(bbs.online && !js.termiated && !console.aborted) {
 		bbs.nodesync();
-		console.mnemonics(bbs.text(AutoMsg));
+		if(user.is_sysop)
+			console.mnemonics(options.sysop_prompt
+				|| "\r\nAuto Message - ~Read, ~Write, ~Delete or ~Quit: ");
+		else
+			console.mnemonics(options.prompt || bbs.text(AutoMsg));
 		switch(console.getkeys("RWQD",0)) {
 			case 'R':
 				console.printfile(automsg,P_NOABORT|P_NOATCODES|P_WORDWRAP|P_NOERROR);
@@ -25,17 +43,17 @@ function automsg()
 				}
 				bbs.action=NODE_AMSG;
 				bbs.nodesync();
-				console.print("\r\nMaximum of 3 lines:\r\n");
-				var str = console.getstr(str, 76, K_WRAP|K_MSG);
+				console.print(options.intro || "\r\nMaximum of 3 lines:\r\n");
+				var str = console.getstr(str, options.max_line_len, K_WRAP|K_MSG);
 				if(!str)
 					break;
-				var buf = format(quote_fmt, 79, str);
-				str = console.getstr(str, 76, K_WRAP|K_MSG);
+				var buf = format(fmt, str);
+				str = console.getstr(str, options.max_line_len, K_WRAP|K_MSG);
 				if(str) {
-					buf += format(quote_fmt, 79, str);
-					str = console.getstr(str, 76, K_MSG);
+					buf += format(fmt, str);
+					str = console.getstr(str, options.max_line_len, K_MSG);
 					if(str) {
-						buf += format(quote_fmt, 79, str);
+						buf += format(fmt, str);
 					}
 				}
 				if(console.yesno(bbs.text(OK))) {
@@ -49,17 +67,17 @@ function automsg()
 						alert("Error " + file.error + " opening " + file.name);
 						return;
 					}
-					var tmp = format("%s #%d", user.alias, user.number);
+					var tmp = format(options.user_fmt || "%s #%d", user.alias, user.number);
 					if(anon)
 						tmp = bbs.text(Anonymous);
-					str = format(bbs.text(AutoMsgBy), tmp, system.timestr());
+					str = format(options.header_fmt || bbs.text(AutoMsgBy), tmp, system.timestr());
 					file.write(str);
 					file.write(buf);
 					file.close();
 				}
 				break;
 			case 'D':
-				if(user.is_sysop)
+				if(user.is_sysop && !console.noyes(format(bbs.text(DeleteTextFileQ), automsg)))
 					file_remove(automsg);
 				break;
 			case 'Q':