+ // {{{ function get_broken_mx()
+
+ function get_broken_mx()
+ {
+ $res = XDB::query("SELECT host, text
+ FROM mx_watch
+ WHERE state != 'ok'");
+ if (!$res->numRows()) {
+ return array();
+ }
+ $mxs = $res->fetchAllAssoc();
+ $mails = array();
+ foreach ($this->emails as &$mail) {
+ if ($mail->active) {
+ list(,$domain) = explode('@', $mail->email);
+ getmxrr($domain, $lcl_mxs);
+ if (empty($lcl_mxs)) {
+ $lcl_mxs = array($domain);
+ }
+ $broken = false;
+ foreach ($mxs as &$mx) {
+ foreach ($lcl_mxs as $lcl) {
+ if (fnmatch($mx['host'], $lcl)) {
+ $broken = $mx['text'];
+ break;
+ }
+ }
+ if ($broken) {
+ $mails[] = array('mail' => $mail->email, 'text' => $broken);
+ }
+ }
+ }
+ }
+ return $mails;
+ }
+
+ // }}}