diff --git a/exec/load/mailutil.js b/exec/load/mailutil.js
index 70b3988b67d0d40eafe4535e3ac6241b02ebab08..ccc7873dd82b5d0aa67a2786c1b0918d0545fda2 100644
--- a/exec/load/mailutil.js
+++ b/exec/load/mailutil.js
@@ -27,4 +27,32 @@ function mail_get_address(strIn) {
 	if (strIn.match(reEmail1)) return strIn.replace(reEmail1,"$1");
 	if (strIn.match(reEmail2)) return strIn.replace(reEmail2,"$1");
 	return null;
-}
\ No newline at end of file
+}
+
+function fidoaddr_to_emailaddr(name, addr, tld)
+{
+	var ftn;
+
+	// Change "Joe Ray Schmoe" to "Joe.Ray.Schmoe"
+	name = name.replace(/\ /g, '.');
+
+	// If no top-level-domain specified, use "fidonet" by default
+	if(!tld) tld = "fidonet";
+
+	// FTN domain specified?
+	ftn = addr.match(/@([\w]+)$/);
+	if(ftn)
+		tld = ftn[1];
+
+	// Look for 4D addr
+	ftn = addr.match(/^([0-9]+)\:([0-9]+)\/([0-9]+)\.([0-9]+)/);
+	if(ftn)
+		return format("%s@p%u.f%u.n%u.z%u.%s", name, ftn[4], ftn[3], ftn[2], ftn[1], tld);
+
+	// Look for 3D addr
+	ftn = addr.match(/^([0-9]+)\:([0-9]+)\/([0-9]+)/);
+	if(ftn)
+		return format("%s@f%u.n%u.z%u.%s", name, ftn[3], ftn[2], ftn[1], tld);
+
+	return addr;
+}