Standing on the shoulders of Rubn’s post in 2009, I see that coding to optionally check port 25 has been added to the validator.
However, there is a flaw in this code. It simply checks the domain from the email. What it should do is get a list of MX hosts (eg via the getmxrr() function), sort them by weight and see if it can open any of those hosts, rather than domain. If none are returned, then try domain.
P.S. I’m investigating php frameworks, and have inherited a Zend-based project. I discovered Yii today! Might give it a try.