Index: program/js/list.js
===================================================================
--- program/js/list.js	(revision 3520)
+++ program/js/list.js	(working copy)
@@ -357,6 +357,7 @@
     new_row = new_row.nextSibling;
   }
 
+  this.triggerEvent('listupdate');
   return false;
 },
 
@@ -405,6 +406,7 @@
     new_row = new_row.nextSibling;
   }
 
+  this.triggerEvent('listupdate');
   return false;
 },
 
@@ -450,6 +452,7 @@
     new_row = new_row.nextSibling;
   }
 
+  this.triggerEvent('listupdate');
   return false;
 },
 
@@ -488,6 +491,8 @@
     }
     new_row = new_row.nextSibling;
   }
+
+  this.triggerEvent('listupdate');
   return false;
 },
 
Index: skins/default/splitter.js
===================================================================
--- skins/default/splitter.js	(revision 3520)
+++ skins/default/splitter.js	(working copy)
@@ -82,6 +82,9 @@
         this.p2.style.width = (new_width > 0 ? new_width : 0) + 'px';
       }
     }
+    
+    if (this.p1id == 'mailcontframe' && window.rcmail_ui)
+      rcmail_ui.listupdate();
   };
 
   /**
Index: skins/default/functions.js
===================================================================
--- skins/default/functions.js	(revision 3520)
+++ skins/default/functions.js	(working copy)
@@ -312,6 +312,13 @@
         this[k].hide();
     }
   }
+},
+
+listupdate: function(e)
+{
+  var rows = $('#messagelist tr.message:visible').length;
+  var css_height = Math.min(rows * 21, $('#mailcontframe').height() - $('#messagelist thead').height());
+  $('#messagelist tbody').css({ height:css_height+'px' });
 }
 
 };
@@ -327,5 +334,11 @@
     rcmail.addEventListener('menu-open', 'open_listmenu', rcmail_ui);
     rcmail.addEventListener('menu-save', 'save_listmenu', rcmail_ui);
     rcmail.gui_object('message_dragmenu', 'dragmessagemenu');
+    
+    if (!document.all) {
+      rcmail.addEventListener('listupdate', 'listupdate', rcmail_ui);
+      if (rcmail.message_list)
+        rcmail.message_list.addEventListener('listupdate', 'listupdate', rcmail_ui);
+    }
   }
 }
Index: skins/default/iehacks.css
===================================================================
--- skins/default/iehacks.css	(revision 3520)
+++ skins/default/iehacks.css	(working copy)
@@ -161,6 +161,12 @@
   text-decoration: underline;
 }
 
+#messagelist thead tr
+{
+  /* Causes the table header row to stay fixed in IE*/
+  top: expression(offsetParent.scrollTop);
+}
+
 #messageframe
 {
   width: expression((parseInt(this.parentNode.offsetWidth)-180)+'px');
Index: skins/default/mail.css
===================================================================
--- skins/default/mail.css	(revision 3520)
+++ skins/default/mail.css	(working copy)
@@ -315,8 +315,6 @@
   border: 1px solid #999999;
   background-color: #F9F9F9;
   overflow: auto;
-  overflow-y: auto;
-  overflow-x: hidden;
 }
 
 #mailpreviewframe
@@ -668,6 +666,18 @@
   table-layout: fixed;
 }
 
+/* Modern browsers accept this (not IE) and we are targetting firefox */
+html>/**/body #messagelist>tbody
+{
+  overflow: auto;
+  overflow-x: hidden;
+}
+
+#messagelist thead tr
+{
+  position: relative;
+}
+
 #messagelist thead tr td
 {
   height: 20px;
@@ -760,6 +770,23 @@
   width: 18px;
 }
 
+/* prevent Mozilla scrollbar from hiding cell content */
+#messagelist td:last-child
+{
+  padding-right: 20px;
+}
+
+#messagelist thead tr td.icon:last-child
+{
+  width: 42px;
+  text-align: left;
+}
+
+#messagelist tbody tr td.icon:last-child
+{
+  width: 22px;
+}
+
 #messagelist tbody tr td.flag
 {
   padding: 2px 3px 2px 3px;
