I use procmail to filter my mail into several categories:

I treat my Inbox as a place to put everything that I want to be notified of immediately. That is everything from the above list but spam and regular mailing list mail.

The simple solution would be to redirect the interesting stuff to my Inbox. But that loses the record of the thread in the actual mailing list folder, and it's too much of a bother to move the message to the appropriate folder after reading it. So the next solution would be to keep a copy in both places. But now you can't distinguish between things that are freely deletable (because there's a copy in the actual folder) and things that are only in the Inbox. Also, you don't know what list originated each message, which is useful when scanning the Inbox by eye.

So, I prepend each copied message with <listname> (including the angle brackets). This gives me everything I want, but introduces another problem: if I want to respond to the message from my Inbox, it'll have that tag in the Subject line, resulting in people getting messages from me like "Re: Re: the system just crashed again". Ugly and confusing.

Sounds like something that Mutt could take care of. And it can, by using some bizarre command for a mailer that rewrites the subject line before opening up an edit window on it. Which would work, but I didn't know about it and it seems like an unnecessarily difficult and convoluted hack to me. After all, Mutt's gone to all the work to separate out the headers and it provides the useful "my_hdr" command already to rewrite headers during hook calls. But rewriting "Subject:" is not allowed, and even if it were, mutt doesn't have a way of passing the original subject line to the hook function.

Apply this patch and it will. This allows you to use "my_hdr Subject: blah" to change the subject line, and also sets some useful environment variables (accessible via any backquoted external command in the hook, or simple $variable substitution):

My .muttrc line for doing this is:

send-hook ~A 'unmy_hdr Subject:'
send-hook "~s <[^[:space:]]+>" 'my_hdr Subject:`perl -le "for (shift) { s/<.*?>\s*(re:\s*)?//i; print }" "$MUTT_SUBJECT"`'

(The for(shift) weirdness is because there's a bug in my patch, so you can't use a dollar sign anywhere.) Concrete example:

1. A coworker sends me email titled "is your server down again?".
2. Procmail files a copy in mail/work
3. Procmail also files a copy in INBOX, with
   subject " is your server down again?"
4. I reply to the message in my INBOX. Before invoking my editor, mutt
   rewrites the subject line to "Re: is your server down again?"

Simple problem, frustratingly difficult to do with an unmodified mutt.

Patch status: haven't bothered submitting it to the mutt people yet. No time. Will have to scan through the mailing lists and things because it's very probable they'll regard my solution as a halfway hack. Not that I would disagree, but I don't understand mutt well enough to know.