The following, added to your .emacs, will save all mail sent with mail-mode or message-mode. The name of the save file is set with the mail-sent-save-file variable. Messages are saved in Unix mailbox format; this makes the save folder usable by, for example, mailx and VM.

The following code should work with both FSF Emacs and XEmacs.

(defvar mail-sent-save-file (concat (getenv "HOME") "/Mail/sent")
  "File in which to save sent mail.")

(defun save-mail-message ()
  (let ((S (buffer-substring (point-min) (point-max))))
      (insert (concat "From " user-mail-address "  "
		      (current-time-string) "\n" S "\n"))
      (goto-char (point-min))
      (while (re-search-forward "^--text follows this line--$" nil t)
	(replace-match "" nil t))
      ;; All /^from/i *after* the headers should be escaped
      (while (re-search-forward "^\\([Ff][Rr][Oo][Mm]\\)" nil t)
	(replace-match ">\\1" nil))
      (append-to-file (point-min) (point-max) mail-sent-save-file))))

(add-hook 'mail-send-hook    #'save-mail-message)
(add-hook 'message-send-hook #'save-mail-message)