diff -u configure.h.orig configure.h
--- configure.h.orig	Fri Jan 09 18:16:11 1998
+++ configure.h	Wed Sep 22 15:54:14 1999
@@ -91,6 +91,15 @@
 
 
 
+/*
+ *  Set ALLOW_MAILADDRESS_RESOURCE to 1 if you want to allow the user
+ *  to set his From address in the X-resources.
+ */
+
+#define ALLOW_MAILADDRESS_RESOURCE	0
+
+
+
 
 
 /***************************************
diff -u src/domain.c.orig src/domain.c
--- src/domain.c.orig	Fri Jan 09 18:16:24 1998
+++ src/domain.c	Wed Sep 22 14:23:31 1999
@@ -79,4 +79,17 @@
 
     if (!global.mail_name || global.mail_name[0] == ' ')
 	global.mail_name = global.user_id;
+
+    if (!global.mail_address || global.mail_address[0] == ' ') {
+	char	 buffer[1024];
+
+	if (global.mail_name && global.domain_name &&
+	    strlen(global.mail_name) + 
+	    strlen(global.domain_name) + 1 < sizeof buffer) {
+	    strcat(strcat(strcpy(buffer, global.mail_name), 
+			  "@"), 
+		   global.domain_name);
+	    global.mail_address = XtNewString(buffer);
+	}
+    }
 }
diff -u src/global.h.orig src/global.h
--- src/global.h.orig	Fri Jan 09 18:16:21 1998
+++ src/global.h	Wed Sep 22 15:46:12 1999
@@ -121,6 +121,7 @@
     Cursor		busy_cursor;
     String		version;
     String		mail_name;
+    String		mail_address;
     String		config_file;
     String		newsrc_templ;
     String		old_newsrc_templ;
diff -u src/main.c.orig src/main.c
--- src/main.c.orig	Fri Jan 09 18:16:22 1998
+++ src/main.c	Wed Sep 22 14:59:02 1999
@@ -150,6 +150,10 @@
 	 offset(copious_output), XtRImmediate, (XtPointer)NULL},
 	{"mailName", "MailName", XtRString, sizeof(String),
 	 offset(mail_name), XtRImmediate, (XtPointer)NULL},
+#if ALLOW_MAILADDRESS_RESOURCE
+	{"mailAddress", "MailAddress", XtRString, sizeof(String),
+	 offset(mail_address), XtRImmediate, (XtPointer)NULL},
+#endif
 	{"configFile", "ConfigFile", XtRString, sizeof(String),
 	 offset(config_file), XtRImmediate, (XtPointer)NULL},
 	{"busyCursor", "BusyCursor", XtRCursor, sizeof(Cursor),
diff -u src/p_check.c.orig src/p_check.c
--- src/p_check.c.orig	Fri Jan 09 18:16:23 1998
+++ src/p_check.c	Wed Sep 22 14:23:31 1999
@@ -126,8 +126,7 @@
 	}
 
 	/* possible security hole */
-	if (!strstr(art->from, global.mail_name) ||
-	    !strstr(art->from, global.domain_name)) {
+	if (!strstr(art->from, global.mail_address)) {
 	    add_line(w, "Error! You cannot cancel somebody else's article.",
 		     True);
 	    return False;
diff -u src/p_menu.c.orig src/p_menu.c
--- src/p_menu.c.orig	Fri Jan 09 18:16:28 1998
+++ src/p_menu.c	Wed Sep 22 14:23:30 1999
@@ -125,11 +125,11 @@
 
     context->line = 1 + insert_extra_headers(fp, NULL);
     fprintf(fp,
-	    "From: %s@%s (%s)\n"
+	    "From: %s (%s)\n"
 	    "Subject: \n"
 	    "Newsgroups: %s\n"
 	    "\n",
-	    global.mail_name, global.domain_name, full_name,
+	    global.mail_address, full_name,
 	    (global.mode == NewsModeGroup ||
 	     global.mode == NewsModeThread) ?
 	    global.curr_group->name : "");
@@ -184,13 +184,13 @@
     context = create_post_context(POST, file_name);
     context->line = insert_extra_headers(fp, global.curr_art);
     fprintf(fp,
-	    "From: %s@%s (%s)\n"
+	    "From: %s (%s)\n"
 	    "Subject: cmsg cancel <%s>\n"
 	    "Control: cancel <%s>\n"
 	    "Newsgroups: %s\n"
 	    "\n"
 	    "Article canceled from within knews.  [put reason here]\n",
-	    global.mail_name, global.domain_name,
+	    global.mail_address,
 	    full_name ? full_name : "",
 	    global.curr_art->msgid,
 	    global.curr_art->msgid,
@@ -364,11 +364,11 @@
 
     fprintf(fp,
 	    "X-Newsreader: knews " KNEWS_VERSION "%s"
-	    "From: %s@%s (%s)%s"
+	    "From: %s (%s)%s"
 	    "Subject: %s%s (fwd)%s"
 	    "To: %s%s",
 	    eol,
-	    global.mail_name, global.domain_name, full_name, eol,
+	    global.mail_address, full_name, eol,
 	    PARENT(art) ? "Re: " : "", art->subject->subject, eol,
 	    to ? to : "", eol);
     context->line += 4;
diff -u src/p_setup.c.orig src/p_setup.c
--- src/p_setup.c.orig	Fri Jan 09 18:16:20 1998
+++ src/p_setup.c	Wed Sep 22 14:23:30 1999
@@ -704,8 +704,8 @@
 	line++;
     }
 
-    fprintf(fp, "From: %s@%s (%s)\n",
-	    global.mail_name, global.domain_name, full_name);
+    fprintf(fp, "From: %s (%s)\n",
+	    global.mail_address, full_name);
     line++;
 
     fprintf(fp, "Subject: Re: %s\n", eat_re(h.subject));
