diff --git a/src/smblib/smblib.h b/src/smblib/smblib.h
index cb48302933ffe5fcadaa479f1912c29db9600e43..b5a66bc536d26765765019b45a30822f6535d8cd 100644
--- a/src/smblib/smblib.h
+++ b/src/smblib/smblib.h
@@ -205,6 +205,7 @@ SMBEXPORT ushort	SMBCALL smb_hfieldtypelookup(const char*);
 SMBEXPORT char*		SMBCALL smb_dfieldtype(ushort type);
 SMBEXPORT char*		SMBCALL smb_faddrtoa(fidoaddr_t* addr, char* outstr);
 SMBEXPORT char*		SMBCALL smb_netaddr(net_t* net);
+SMBEXPORT ushort	SMBCALL smb_netaddr_type(const char* str);
 SMBEXPORT char*		SMBCALL smb_zonestr(short zone, char* outstr);
 SMBEXPORT char*		SMBCALL smb_hashsource(smbmsg_t* msg, int source);
 SMBEXPORT char*		SMBCALL smb_hashsourcetype(uchar type);
diff --git a/src/smblib/smbstr.c b/src/smblib/smbstr.c
index eb8679c75c91756a678eb38395a1edbd07ce036a..1abc34d42caa75a03bb093df44ed4c6ddba4068d 100644
--- a/src/smblib/smbstr.c
+++ b/src/smblib/smbstr.c
@@ -261,3 +261,30 @@ char* SMBCALL smb_netaddr(net_t* net)
 		return(smb_faddrtoa((fidoaddr_t*)net->addr,NULL));
 	return(net->addr);
 }
+
+/****************************************************************************/
+/* Returns net_type for passing e-mail address (i.e. "user@addr")			*/
+/****************************************************************************/
+ushort SMBCALL smb_netaddr_type(const char* str)
+{
+	char*	p;
+	char*	tp;
+
+	if((p=strchr(str,'@'))==NULL)
+		return(NET_NONE);
+
+	p++;
+	if(isalpha(*p) && strchr(p,'.')==NULL)
+		return(NET_QWK);
+
+	for(tp=p;*tp;tp++) {
+		if(!isdigit(*tp) && *tp!=':' && *tp!='/' && *tp!='.')
+			break;
+	}
+	if(isdigit(*p) && *tp)
+		return(NET_FIDO);
+	if(isalnum(*p))
+		return(NET_INTERNET);
+
+	return(NET_UNKNOWN);
+}