My email replies default to my Gmail account even though the "from" line and the "default account" in the Settings are my main (preferred) account address. How do I fix this?
It's a known bug introduced in Mountain Lion and was submitted to Apple by several people. Mail ignores the Send new messages from: Account of selected mailbox setting.
See for example:
I submitted the bug and is now marked as duplicate (but Apple's reporting tool does not allow you to see the duplicated entry).
If you're in an account's Inbox, it'll send from that account. Go to the All Inboxes general inbox or the main account-selection screen to hit the "Compose new email" button.
In brief, though this isn't an Apple-specific answer, check your settings to see what SMTP servers (not POP3 or IMAP4) you're using and see if it isn't gmail. I'm pretty sure if you use Gmail to send an email, the return path is set to that gmail account. This helps bring down the usefulness of a zombie Gmail account for spammers.
See a little bit about From, Reply-To, and Return Path here.
The deal is that the server stamps the Return Path; it's not something you can edit with your mail handler. As the above post says, Return Path isn't a client-set header.
So to build off of @CajunLuke, if you're reading an email that went to your Gmail account in Mail, then reply using, by default, Gmail, even if you have From and Reply-To set to My.Real.Email@example.com, you'll receive replies via a return path set for Gmail (depending on the replyer's mail hander).
Note that anything sent with Gmail's SMTP server will return path to your gmail account. If you use Gmail's SMTP server as your default SMTP server, it'll stamp that gmail return path no matter what your client uses as its mail headers. Try another SMTP server as your default and see if that doesn't work.
Iirc. IANAL. ;) I do recall having a similar problem with Gmail as the default SMTP server [for me, on Thunderbird, but it's the same in Mail.app].
I looked at my outgoing settings and the port had changed. Not sure why, but when I changed it back to the correct one, it's working again.