Ah, OK, so you just need one extra SMTP server? And possibly only temporarily. That’s a lot easier and a lot less scary to think about! 
But, I actually suspect there’s something else at play here…though Scott was saying in another thread that Hotmail wants to see all names matching up, we have had no trouble sending to Hotmail addresses from our server (and our PTR address doesn’t match our received from, for example, and I never care about Received headers and such). The thing is that 70-80% of email on the Internet comes from servers that don’t have matching received headers and From: header. It’s just the way email is used–so it seems really unlikely that it could be a factor at all in considering something “spammy”. That’s actually what SPF is for, to tell the world that your host is permitted to send mail on behalf of your domain. If people only ever sent from the exactly matching host and reverse DNS always matched, SPF would be mostly useless (because although IPs can be spoofed in some circumstances, several other aspects of the transaction cannot).
I don’t know anyone at Hotmail, but I’ve talked on several occasions with the creator of Gmail (my girlfriend is also on the Gmail team at Google, though she never tells me anything because of her NDA). Anyway, I know how they’re filtering their email, and I suspect Hotmail is similar.
So, the first step would be making sure you have the following bits right (because I suspect you’re chasing a red herring in worrying about having the received headers match):
-
RFC compliance. Have you done anything odd in your Postfix configuration? Are you sure your newsletter isn’t being sent out by some oddball PHP SMTP library that isn’t compliant rather than Postfix? Make sure you’re using your real SMTP server for the actual delivery rather than any amateur-developed library.
-
Politeness. Are you sending 1000 messages per minute to hotmail addresses? This is an extremely spammy looking characteristic. You will be filtered if you’re hitting them hard in bursts. Spread it out–sort your list such that it doesn’t send to all the hotmail users at once, and then sleep between each message. Spammers send thousands of messages per hour and try to spew them as fast as possible. You don’t want to look like that…take your time, even if it means your newsletter jobs take all day to send. Historically, there were efficiency mechanisms for pushing large volumes of mail to users on the same server, but those were abused so badly by spammers that it can no longer be trusted. So, everyone with real spam problems prevents it.
-
Are you sure your users aren’t clicking “Report as spam?” when they get your messages? At Gmail, reputation is about 80% of their spam filtering system–I imagine it also plays a big role at Hotmail–if your recipients are clicking “this is spam” rather than clicking the unsubscribe link in your messages, you will get filtered. It doesn’t take many such reports to kill your ability to send to those addresses completely. Make sure your users know how to unsubscribe on every single mailing, and make sure you’re unsubscribing them immediately when they ask.
-
Check your IP in all of the major DNSBLs. I doubt MS or any other major email provider is using external BLs (because it could be a DoS vector, causing them to reject mail that is legitimate but pisses off the person or organization running the DNSBL). But, if your IP has a past reputation for spam, it’ll be reflected in the DNSBLs, and that’s something you’d want to know about.
So, if none of those are problems, then maybe you do want to continue down the more complex path:
First step is to set Postfix to listen on one of your addresses–whatever one is currently used in all of your virtual hosts. This will remain in service as your receiving MTA, and as the send server for all hosts that aren’t having problems sending to Hotmail.
Setup a second “send only” server for use by your newsletter software (and maybe other messages from this domain). You’ll need to make a new /etc/postfix2 directory–copy the existing /etc/postfix, and go through and change the various addresses and names and such to be what you want–make sure the address it lives on resolves to the name you want to claim to be coming from (mail.strangemonster.com or whatever). You’ll need to change the paths for the pid and such, as well, and make a copy of /etc/init.d/postfix to include the new postfix2 configuration.
Also note that in Webmin you can clone the Postfix module, and do all of your configuration via Webmin–you just need to create a Postfix2 module and modify the Module Configuration to point to the new /etc/postfix2 directory. You may need to make sure all commands in Webmin include the -c configuration option to be sure to use the right config directory. This is probably not the default for postconf and the queue commands, but is all configurable.