// checks for if MX records in the DNS
if(!checkdnsrr($domain, 'MX')) {
//attempts a socket connection to mail server
if(!getmxrr($domain,&$mx_hosts,&$host_wt)) {
Du kannst dir entweder !checkdnsrr() oder !getmxrr() sparen, denn beide holen lediglich die MX-Einträge, du prüfst also zweimal dasselbe.
Vorhin nicht eingefallen ist mir, dass das Verlangen des Vorhandenseins eines MX-Eintrags gegen die Regeln ist. Ein Host ohne MX-Einträge nimmt E-Mail unter seiner eigenen Domain an. Insofern müsste diese Prüfung komplett raus.
Die Angabe von $host_wt bei getmxrr() ist davon abgesehen für deinen Bedarf überflüssig.
Lies dir die Anleitung doch bitte ordentlich durch. Du findest dort auch verschiedene Beispiele, wie man E-Mail-Adressen direkt beim Server verifiziert, was ich allerdings nicht rate, da man hier und da in Verbindung in eine Teerfalle tappt und minutenlang festgehalten wird, das Skript also zu hängen scheint.
Ich würde summa summarum lediglich so weit gehen und erst schauen, ob MX-Einträge für die Domain vorhanden sind, und anschließend entweder mit einem MX-Eintrag oder, falls keine vorhanden, mit der Domain selber, mittels gethostbyname() prüfen, ob die Domain bekannt ist.
Man könnte dann noch einen draufsetzen und per fsockopen() prüfen, ob der Server erreichbar ist, aber da sehe ich wenig bis gar keinen Nutzen drin, schon alleine, weil das Verbindungsproblem nur vorübergehend sein könnte.