## when scanning over large mbox files.
     while(line = f.gets)
       case line
-      when /^(From):\s+(.*)$/i,
-        /^(To):\s+(.*)$/i,
-        /^(Cc):\s+(.*)$/i,
-        /^(Bcc):\s+(.*)$/i,
-        /^(Subject):\s+(.*)$/i,
-        /^(Date):\s+(.*)$/i,
-        /^(Message-Id):\s+<(.*)>$/i,
-        /^(References):\s+(.*)$/i,
-        /^(In-Reply-To):\s+(.*)$/i,
-        /^(Reply-To):\s+(.*)$/i,
-        /^(List-Post):\s+(.*)$/i,
-        /^(Status):\s+(.*)$/i: header[last = $1] = $2
+      when /^(From):\s+(.*)\s*$/i,
+        /^(To):\s+(.*)\s*$/i,
+        /^(Cc):\s+(.*)\s*$/i,
+        /^(Bcc):\s+(.*)\s*$/i,
+        /^(Subject):\s+(.*)\s*$/i,
+        /^(Date):\s+(.*)\s*$/i,
+        /^(Message-Id):\s+<(.*)>\s*$/i,
+        /^(References):\s+(.*)\s*$/i,
+        /^(In-Reply-To):\s+(.*)\s*$/i,
+        /^(Reply-To):\s+(.*)\s*$/i,
+        /^(List-Post):\s+(.*)\s*$/i,
+        /^(Status):\s+(.*)\s*$/i: header[last = $1] = $2
 
       ## these next three can occur multiple times, and we want the
       ## first one
       when /^(Delivered-To):\s+(.*)$/i,
         /^(X-Original-To):\s+(.*)$/i,
-        /^(Envelope-To):\s+(.*)$/i: header[last = $1.downcase] ||= $2
+        /^(Envelope-To):\s+(.*)$/i: header[last = $1] ||= $2
 
       when /^$/: break
       when /:/: last = nil