Browse Source

check spf

andre 2 years ago
parent
commit
c2a9002d78
1 changed files with 57 additions and 0 deletions
  1. 57 0
      kerioEmail_mx.php

+ 57 - 0
kerioEmail_mx.php

@@ -14,6 +14,7 @@ const SPF = 'v=spf1 mx a:mail3.seecure.ch ip4:185.163.51.0/24 ip4:89.35.78.0/23
 function KerioEmail_ClientAreaCustomButtonArray ($params)
 {
     $mxStatus = KerioEmailCheckMX($params);
+    $spfStatus = KerioEmailCheckSPF($params);
     switch($mxStatus['action']) {
         case 'set':
             return array(
@@ -96,6 +97,62 @@ function KerioEmailCheckMX($params)
     }
 }
 
+function KerioEmailCheckSPF($params)
+{
+    unset($zoneID);
+    unset($spfStatus);
+    $clientDomains = localAPI('GetClientsDomains', array('clientid' => $params['userid']));
+    $nameserver = array(
+        NS1,
+        NS2);
+    
+    $resolver = new Net_DNS2_Resolver(array('nameservers' => $nameserver));
+    try {
+            $result = $resolver->query($params['domain'], 'TXT', 'SPF');
+            
+    } catch(Net_DNS2_Exception $e) {
+            
+            echo "::query() failed: ", $e->getMessage(), "\n";
+    }
+    $domainSPF = $result->answer;
+/*    if(count($domainMX) > 1) {
+        for($i=$clientDomains['startnumber'];$i<=$clientDomains['numreturned'];$i++) {
+            if($params['domain'] == $clientDomains['domains']['domain'][$i]['domainname']) {
+                return array('action' => 'manual', 'mxtarget' => $domainMX);
+            }
+        }
+        return array('action' => 'manualext', 'mxtarget' => $domainMX);
+    }
+    if(empty($domainMX)){
+        for($i=$clientDomains['startnumber'];$i<=$clientDomains['numreturned'];$i++) {
+            if($params['domain'] == $clientDomains['domains']['domain'][$i]['domainname']) {
+                return array('action' => 'set');
+            }
+        }
+        return array('action' => 'noMX');
+    } else {
+        $domainMXrecord = array_shift($domainMX);
+//        if($domainMXrecord['target'] == $params['serverhostname']) {
+        if($domainMXrecord->exchange == MX) {
+            return array('action' => 'show', 'mxtarget' => $domainMXrecord->exchange);
+        }
+        for($i=$clientDomains['startnumber'];$i<=$clientDomains['numreturned'];$i++) {
+            if($params['domain'] == $clientDomains['domains']['domain'][$i]['domainname']) {
+                return array('action' => 'change', 'mxtarget' => $domainMXrecord->exchange);
+            }
+        }
+        return array('action' => 'wrongMX', 'mxtarget' => $domainMXrecord->exchange);
+    } */
+    logModuleCall(
+        'kerioEmail',
+        __FUNCTION__,
+        $result,
+        'Debug SPF',
+        $params
+    );
+
+}
+
 function KerioEmail_setMX($params)
 {
     $zoneIDcollection = Capsule::table('dns_manager2_zone')