After much hemming and hawing, we decided to roll back Fred's change.
It breaks Mailman, it was actually documented in the docstring, so it
was an intentional deviation from the usual del semantics.  Let's
document the original behavior in Doc/lib/librfc822.tex.
diff --git a/Lib/rfc822.py b/Lib/rfc822.py
index dcf059c..8721994 100644
--- a/Lib/rfc822.py
+++ b/Lib/rfc822.py
@@ -397,11 +397,11 @@
     
     def __delitem__(self, name):
         """Delete all occurrences of a specific header, if it is present."""
-        lowname = string.lower(name)
-        if not self.dict.has_key(lowname):
-            raise KeyError, name
-        del self.dict[lowname]
-        name = lowname + ':'
+        name = string.lower(name)
+        if not self.dict.has_key(name):
+            return
+        del self.dict[name]
+        name = name + ':'
         n = len(name)
         list = []
         hit = 0