Download
(defvar rmail-sort-headers-headers
'("^Subject:" "^Cc:" "^To:" "^From:" "^Date:")
"A list of regexps to match headers to search for, in the order
that they should appear into the buffer.")
(defun rmail-sort-headers ()
(goto-char (point-min))
(let ((eoh (save-excursion (search-forward "\n\n" (point-max) t) (point)))
(inhibit-read-only t))
(mapc
(lambda (header-re)
(when (re-search-forward header-re eoh t)
(let* ((beg (point-at-bol))
(end (save-excursion
(re-search-forward "^\\S-" eoh 'move)
(1- (point))))
(header (buffer-substring beg end)))
(delete-region beg end)
(goto-char (point-min))
(insert header)))
(goto-char (point-min)))
(reverse rmail-sort-headers-headers))))
(add-hook 'rmail-show-message-hook 'rmail-sort-headers)