I'd recommend DKIM support at the MTA level so all your server generated email for a given domain is signed by default. (unless you have a really good reason to not sign all server generated email for a domain).
The best starting point in my googling to get DKIM setup on LAMP with dkim-milter and sendmail (on CentOS 5.2 in my case) was Jeff Atwood's post about sending emails through code.
I would agree with him that the first 2 things you should address are reverse PTR record and DKIM signing.
Also very important:
- IP address of the box to send email not already being blacklisted.
- make sure [email protected] is a valid email box
- if your server generated email needs to appear to come from somewhere else (like a contact form needing to come from name/email provided in a form) follow these guidelines for email headers(2)
Here is the email ip address blacklist checker (3) that I used.
Those 5 things will solve perhaps 95% of your email deliverability issues.
This Guide for Fedora/dkim-milter/postfix (4) is also very good.
The PHP mail library I use for my app is PHPMailer 5.1 which has DKIM support (and is PHP 5 only), but after doing the research, I decided implementing at the sendmail level was a better solution. As you can see, even the author of PHPMailer 5.1 does not suggest DKIM at the PHP mail library level is the best solution (5).
Best of luck to you.
Sorry for the link issues, apparently I can only post 1 link until my reputation is up. please match up the (#) above with links below
link workaround:
(2) old.openspf.org/webgenerated.html
(3) whatismyipaddress.com/blacklist-check
(4) allaboutlamp.com/2009/09/setup-dkim-for-postfix-in-fedora-using-dkim-milter/
(5) dkim.worxware.com/