diff -ru knews-1.0b.1/configure.h knews-1.0b-carsten/configure.h
--- knews-1.0b.1/configure.h	Tue Dec 29 11:47:02 1998
+++ knews-1.0b-carsten/configure.h	Sun Nov 12 12:02:19 2000
@@ -14,7 +14,7 @@
  *
  *  If you don't have sendmail, use /bin/false :-).
  */
-/* #define MAIL_COMMAND "/usr/sbin/sendmail -t" */
+#define MAIL_COMMAND "/usr/sbin/sendmail -t"
 /* #define MAIL_COMMAND "/usr/lib/sendmail -t"  */
 
 
@@ -30,7 +30,7 @@
  *  (Note: Filenames not beginning with / are relative to $HOME.)
  */
 
-/* #define DOMAIN_FILE "/your/file/here" */
+#define DOMAIN_FILE "/etc/NNTP_DOMAIN" 
 /* #define DOMAIN_NAME "your domain here" */
 
 
@@ -84,8 +84,8 @@
  *  libcompface.
  */
 
-#define HAVE_JPEG	0
-#define HAVE_PNG	0
+#define HAVE_JPEG	1
+#define HAVE_PNG	1
 #define HAVE_COMPFACE	0
 
 
diff -ru knews-1.0b.1/src/knews.man knews-1.0b-carsten/src/knews.man
--- knews-1.0b.1/src/knews.man	Fri Jan  9 18:16:21 1998
+++ knews-1.0b-carsten/src/knews.man	Sat Jun  2 16:04:29 2001
@@ -896,6 +896,15 @@
 The width of the group name in the group list, default is 42.
 .RE
 
+.B fromLine
+.RS
+If this is defined knews uses the given "From" line instead of guessing one.
+Sometimes knews is really unable to guess what the "From" line in your posted
+articles should look like, especially if you are using a dialup account to get
+your news. The format expected here is something like 
+Email@yourhost.domain (Real Name) 
+.RE
+
 .B askHowMany
 .RS
 Setting this to True will make knews ask at which article
diff -ru knews-1.0b.1/src/p_menu.c knews-1.0b-carsten/src/p_menu.c
--- knews-1.0b.1/src/p_menu.c	Fri Jan  9 18:16:28 1998
+++ knews-1.0b-carsten/src/p_menu.c	Sun Nov 12 12:20:52 2000
@@ -114,6 +114,7 @@
     char        *file_name = NULL;
     FILE        *fp        = NULL;
     char	*full_name = res_full_name();
+    char	*from_line = res_from_line();
 
     if (!generic_post_check(False, &fp, &file_name))
 	return;
@@ -124,7 +125,18 @@
 	full_name = "";
 
     context->line = 1 + insert_extra_headers(fp, NULL);
-    fprintf(fp,
+    if (from_line) {
+	fprintf(fp,
+	    "From: %s\n"
+	    "Subject: \n"
+	    "Newsgroups: %s\n"
+            "\n",
+	    from_line, 
+            (global.mode == NewsModeGroup ||
+             global.mode == NewsModeThread) ?
+            global.curr_group->name : "");
+    } else {
+    	fprintf(fp,
 	    "From: %s@%s (%s)\n"
 	    "Subject: \n"
 	    "Newsgroups: %s\n"
@@ -133,6 +145,7 @@
 	    (global.mode == NewsModeGroup ||
 	     global.mode == NewsModeThread) ?
 	    global.curr_group->name : "");
+    }
     context->line++;
     append_signature(fp);
     fclose(fp);
@@ -177,13 +190,27 @@
     FILE	*fp        = NULL;
     char	*file_name = NULL;
     char	*full_name = res_full_name();
+    char	*from_line = res_from_line();
 
     if (!generic_post_check(True, &fp, &file_name))
 	return;
 
     context = create_post_context(POST, file_name);
     context->line = insert_extra_headers(fp, global.curr_art);
-    fprintf(fp,
+    if (from_line) {
+	fprintf(fp, 
+	    "From: %s\n"
+	    "Subject: cmsg cancel <%s>\n"
+            "Control: cancel <%s>\n"
+            "Newsgroups: %s\n"
+            "\n"
+            "Article canceled from within knews.  [put reason here]\n",
+            from_line, 
+	    global.curr_art->msgid,
+            global.curr_art->msgid,
+            global.curr_group->name);
+    } else {
+    	fprintf(fp,
 	    "From: %s@%s (%s)\n"
 	    "Subject: cmsg cancel <%s>\n"
 	    "Control: cancel <%s>\n"
@@ -195,6 +222,7 @@
 	    global.curr_art->msgid,
 	    global.curr_art->msgid,
 	    global.curr_group->name);
+    } 
     context->line += 6;
     fclose(fp);
     fork_editor(context);
@@ -327,6 +355,7 @@
     FILE		*fp        = NULL;
     char		*file_name = NULL;
     char		*full_name = res_full_name();
+    char		*from_line = res_from_line();
     char		*to  = *no_params <= 0 ? NULL : params[0];
     int			edit;
     char		*eol, *buffer;
@@ -361,8 +390,18 @@
 
     if (!full_name)
 	full_name = "";
-
-    fprintf(fp,
+    if (from_line) {
+	fprintf(fp,
+	    "X-Newsreader: knews " KNEWS_VERSION "%s"
+            "From: %s\n"
+	    "Subject: %s%s (fwd)%s"
+            "To: %s%s",
+            eol,
+	    from_line, eol,
+            PARENT(art) ? "Re: " : "", art->subject->subject, eol,
+            to ? to : "", eol);
+    } else {
+	fprintf(fp,
 	    "X-Newsreader: knews " KNEWS_VERSION "%s"
 	    "From: %s@%s (%s)%s"
 	    "Subject: %s%s (fwd)%s"
@@ -371,6 +410,7 @@
 	    global.mail_name, global.domain_name, full_name, eol,
 	    PARENT(art) ? "Re: " : "", art->subject->subject, eol,
 	    to ? to : "", eol);
+    }
     context->line += 4;
 
     if (global.mime_forward) {
diff -ru knews-1.0b.1/src/p_setup.c knews-1.0b-carsten/src/p_setup.c
--- knews-1.0b.1/src/p_setup.c	Sun Aug 23 15:05:17 1998
+++ knews-1.0b-carsten/src/p_setup.c	Sat Jun  2 15:54:41 2001
@@ -654,6 +654,7 @@
     PostHeaders	h = {0, };
     SERVER	*server = NULL;
     char	*full_name         = res_full_name();
+    char	*from_line	   = res_from_line();
     char	*posted_and_mailed = res_posted_and_mailed();
     char	*buffer = "";
     int		line = 1;
@@ -703,10 +704,17 @@
 	fprintf(fp, "In-Reply-To: %s\n", h.message_id);
 	line++;
     }
-
-    fprintf(fp, "From: %s@%s (%s)\n",
+    /* This is for special offline reading setups that need a completly
+       different "From" line than automagically generated
+       Feature added by Carsten Gross <carsten@siski.de> */
+    if (from_line) {
+	fprintf(fp, "From: %s\n", from_line);
+	line++;
+    } else {
+    	fprintf(fp, "From: %s@%s (%s)\n",
 	    global.mail_name, global.domain_name, full_name);
-    line++;
+    	line++;
+    }
 
     fprintf(fp, "Subject: Re: %s\n", eat_re(h.subject));
     line++;
diff -ru knews-1.0b.1/src/resource.c knews-1.0b-carsten/src/resource.c
--- knews-1.0b.1/src/resource.c	Fri Jan  9 18:16:21 1998
+++ knews-1.0b-carsten/src/resource.c	Sun Nov 12 12:39:33 2000
@@ -64,6 +64,7 @@
 	char	*descriptions_file;
 	char	*save_thread_info;
 	char	*group_name_columns;
+	char	*from_line;
     } str;
     struct {
 	char	**thread_ahead_groups;
@@ -180,6 +181,8 @@
      offset(save_thread_info)},
     {{"groupNameColumns"},	{"GroupNameColumns"},
      offset(group_name_columns)},
+    {{"fromLine"}, {"FromLine"},
+     offset(from_line)},
 #undef offset
 };
 
@@ -420,11 +423,13 @@
 static void get_default_database(char *str, long len)
 {
     int	is_config_server;
+    char *example_from;
 
     is_config_server =
 	global.config_nntp_server && global.nntp_server &&
 	strcmp(global.config_nntp_server, global.nntp_server) == 0;
-
+    example_from = XtMalloc(strlen(global.mail_name)+1+strlen(global.domain_name)
+		   +1);
     strcpy(str,
 	   "! Automatically generated knews config file.  Rows beginning\n"
 	   "! with ! are comments.  Below are some commented-out defaults.\n"
@@ -473,7 +478,9 @@
 		     per_server_default.str.descriptions_file);
     str += print_res(str, "saveThreadInfo", NULL, "False");
     str += print_res(str, "groupNameColumns", NULL, "42");
-
+    sprintf(example_from, "%s@%s", global.mail_name,global.domain_name);    
+    str += print_res(str, "fromLine", NULL, example_from);
+    XtFree(example_from);
     strcpy(str,
 	   "\n"
 	   "\n"
@@ -549,7 +556,7 @@
 	global.last_time = 0;
 	if (errno != ENOENT) {
 	    perror(path);
-	    popup_title_notice("Error with confir file", path, True);
+	    popup_title_notice("Error with config file", path, True);
 	    return NULL;
 	}
 
@@ -885,6 +892,7 @@
 PER_SERVER_STR_FUNC(posting_agent)
 PER_SERVER_STR_FUNC(cache_dir)
 PER_SERVER_STR_FUNC(descriptions_file)
+PER_SERVER_STR_FUNC(from_line)
 
 #define PER_SERVER_FUNC(type, field) \
 type res_##field(void)               \
diff -ru knews-1.0b.1/src/resource.h knews-1.0b-carsten/src/resource.h
--- knews-1.0b.1/src/resource.h	Fri Jan  9 18:16:20 1998
+++ knews-1.0b-carsten/src/resource.h	Sun Nov 12 12:04:24 2000
@@ -28,6 +28,7 @@
 extern int       res_try_list_active(void);
 extern int	 res_save_thread_info(void);
 extern int	 res_group_name_columns(void);
+extern char	*res_from_line(void);
 
 extern char    **res_header_format(void);
 extern regex_t	*res_quote_regexp(void);
