diff --git a/exec/init-fidonet.js b/exec/init-fidonet.js
index 2b035bd5a7356421c7be7ce827549fb8e0013bd5..e88e8eef2ba269d18f1cade23e8c29510d80968c 100644
--- a/exec/init-fidonet.js
+++ b/exec/init-fidonet.js
@@ -20,8 +20,10 @@
 
 "use strict";
 
-const REVISION = "2.0";
+const REVISION = "2.1";
 require('sbbsdefs.js', 'SUB_NAME');
+require('dns.js', 'DNS');
+const dns = new DNS(/* synchronous: */true);
 const temp_node = 9999;
 var netname;
 var netdns;
@@ -295,6 +297,27 @@ function get_binkp_sysop()
 	return result;
 }
 
+function valid_email_host(host)
+{
+	return resolve_ip(host) || dns.resolveMX(host).length > 0;
+}
+
+function check_email_addr(addr)
+{
+	if(!addr)
+		return false;
+	if(netaddr_type(addr) != NET_INTERNET) {
+		alert(format("'%s' does not appear to be a valid Internet e-mail address!", addr));
+		return false;
+	}
+	var host = addr.slice(addr.indexOf('@') + 1);
+	if(!valid_email_host(host)) {
+		alert(format("'%s' does not appear to be a valid/working Internet e-mail host!", host));
+		return false;
+	}
+	return true;
+}
+
 function update_sbbsecho_ini(hub, link, domain, echolist_fname, areamgr)
 {
 	function makepath(path)
@@ -569,6 +592,8 @@ if(system.stats.total_users) {
 			sysop = u.name;
 		if(netaddr_type(u.netmail) == NET_INTERNET)
 			sysop_email = u.netmail;
+		else
+			sysop_email = u.email;
 	}
 }
 sysop = get_binkp_sysop() || sysop;
@@ -578,7 +603,8 @@ if(!sysop_email) {
 	sysop_email = sysop.replace(' ', '.');
 	sysop_email += '@' + system.inet_addr;
 }
-while((netaddr_type(sysop_email) != NET_INTERNET || !confirm("Your Internet e-mail address is " + sysop_email)) && !aborted())
+alert("It is important that you provide a valid/working Internet email address:");
+while((!check_email_addr(sysop_email) || !confirm("Your Internet e-mail address is " + sysop_email)) && !aborted())
 	sysop_email = prompt("Your Internet e-mail address");
 
 /* Get/Confirm passwords */
@@ -592,7 +618,7 @@ while(((!link.TicFilePwd && (link.TicFilePwd !== "")) || !confirm("Your TIC File
 /***********************************************/
 /* SEND NODE NUMBER REQUEST NETMAIL (Internet) */
 /***********************************************/
-if(your.node === temp_node && network.email && network.email.indexOf('@') > 0
+if(your.node === temp_node && check_email_addr(network.email)
 	&& confirm("Send a node number application to " + network.email)) {
 	var result = send_app_netmail(network.email);
 	if(typeof result !== 'boolean') {