diff -upr evolution-2.22.1.1-pre/mail/message-list.c evolution-2.22.1.1-post/mail/message-list.c
--- evolution-2.22.1.1-pre/mail/message-list.c	2008-05-01 14:55:56.000000000 -0500
+++ evolution-2.22.1.1-post/mail/message-list.c	2008-09-27 14:38:10.000000000 -0500
@@ -1288,6 +1288,61 @@ get_all_labels (CamelMessageInfo *msg_in
 	return count;
 }
 
+static const char *
+get_trimmed_subject (CamelMessageInfo *info)
+{
+	const char *subject;
+	const char *mlist;
+	int mlist_len = 0;
+	gboolean found_mlist;
+
+	subject = camel_message_info_subject (info);
+	if (!subject || !*subject)
+		return subject;
+
+	mlist = camel_message_info_mlist (info);
+
+	if (mlist && *mlist) {
+		const char *mlist_end;
+
+		mlist_end = strchr (mlist, '@');
+		if (mlist_end)
+			mlist_len = mlist_end - mlist;
+		else
+			mlist_len = strlen (mlist);
+	}
+
+	do {
+		found_mlist = FALSE;
+
+		while (!g_ascii_strncasecmp ((char *) subject, "Re:", 3)) {
+			subject += 3;
+
+			/* jump over any spaces */
+			while (*subject && isspace ((int) *subject))
+				subject++;
+		}
+
+		if (mlist_len &&
+		    *subject == '[' &&
+		    !g_ascii_strncasecmp ((char *) subject + 1, mlist, mlist_len) &&
+		    subject [1 + mlist_len] == ']') {
+			subject += 1 + mlist_len + 1;  /* jump over "[mailing-list]" */
+			found_mlist = TRUE;
+
+			/* jump over any spaces */
+			while (*subject && isspace ((int) *subject))
+				subject++;
+		}
+	} while (found_mlist);
+
+	/* jump over any spaces */
+	while (*subject && isspace ((int) *subject))
+		subject++;
+
+	return subject;
+}
+
 static void *
 ml_tree_value_at (ETreeModel *etm, ETreePath path, int col, void *model_data)
 {
@@ -1368,6 +1423,9 @@ ml_tree_value_at (ETreeModel *etm, ETree
 	case COL_SUBJECT:
 		str = camel_message_info_subject (msg_info);
 		return (void *)(str ? str : "");
+	case COL_SUBJECT_TRIMMED:
+		str = get_trimmed_subject (msg_info);
+		return (void *)(str ? str : "");
 	case COL_SUBJECT_NORM:
 		return (void *) get_normalised_string (message_list, msg_info, col);
 	case COL_SENT: {
diff -upr evolution-2.22.1.1-pre/mail/message-list.etspec evolution-2.22.1.1-post/mail/message-list.etspec
--- evolution-2.22.1.1-pre/mail/message-list.etspec	2008-05-01 14:55:56.000000000 -0500
+++ evolution-2.22.1.1-post/mail/message-list.etspec	2008-09-27 02:09:06.000000000 -0500
@@ -7,15 +7,15 @@
 
   <ETableColumn model_col="3" _title="Attachment" pixbuf="attachment" expansion="0.0" minimum_width="18" resizable="false" cell="render_attachment" compare="integer" />
 
-  <ETableColumn model_col="4" compare_col="19" _title="From" expansion="1.0" minimum_width="32" resizable="true" cell="render_text" compare="address_compare" search="string" priority="10"/>
+  <ETableColumn model_col="4" compare_col="20" _title="From" expansion="1.0" minimum_width="32" resizable="true" cell="render_text" compare="address_compare" search="string" priority="10"/>
 
-  <ETableColumn model_col="5" compare_col="20" _title="Subject" expansion="1.6" minimum_width="32" resizable="true" cell="render_tree" compare="string" search="string"/>
+  <ETableColumn model_col="5" compare_col="21" _title="Subject" expansion="1.6" minimum_width="32" resizable="true" cell="render_tree" compare="string" search="string"/>
 
   <ETableColumn model_col="6" _title="Date" expansion="0.4" minimum_width="32" resizable="true" cell="render_date" compare="integer"/>
 
   <ETableColumn model_col="7" _title="Received" expansion="0.4" minimum_width="32" resizable="true" cell="render_date" compare="integer"/>
 
-  <ETableColumn model_col="8" compare_col="21" _title="To" expansion="1.0" minimum_width="32" resizable="true" cell="render_text" compare="address_compare" search="string" priority="5"/>
+  <ETableColumn model_col="8" compare_col="22" _title="To" expansion="1.0" minimum_width="32" resizable="true" cell="render_text" compare="address_compare" search="string" priority="5"/>
 
   <ETableColumn model_col="9" _title="Size" expansion="0.2" minimum_width="32" resizable="true" cell="render_size" compare="integer"/>
 
@@ -33,6 +33,8 @@
   <ETableColumn model_col="17"  _title="Sent Messages" expansion="1.0" minimum_width="32" resizable="true" cell="render_composite_to" compare="address_compare" search="string" priority="10"   sortable="false"/>
   <ETableColumn model_col="18"  _title="Labels" expansion="1.0" minimum_width="32" resizable="true" cell="render_text" compare="string" search="string" priority="10"/>
 
+  <ETableColumn model_col="19" compare_col="21" _title="Subject (trimmed)" expansion="1.6" minimum_width="32" resizable="true" cell="render_tree" compare="string" search="string"/>
+
   <ETableState>
     <column source="0"/> <column source="3"/> <column source="1"/>
     <column source="4"/> <column source="5" expansion="1.60"/> <column source="6" expansion="0.40"/>
diff -upr evolution-2.22.1.1-pre/mail/message-list.h evolution-2.22.1.1-post/mail/message-list.h
--- evolution-2.22.1.1-pre/mail/message-list.h	2008-05-01 14:55:56.000000000 -0500
+++ evolution-2.22.1.1-post/mail/message-list.h	2008-09-27 14:38:10.000000000 -0500
@@ -62,6 +62,9 @@ enum {
 	COL_MIXED_RECIPIENTS,
 	COL_LABELS,
 
+	/* subject with junk removed */
+	COL_SUBJECT_TRIMMED,
+
 	/* normalised strings */
 	COL_FROM_NORM,
 	COL_SUBJECT_NORM,
