andre 6 hónapja
szülő
commit
19b0547e71
1 módosított fájl, 21 hozzáadás és 14 törlés
  1. 21 14
      core/Helper/DnsHelper.php

+ 21 - 14
core/Helper/DnsHelper.php

@@ -45,6 +45,8 @@ class DnsHelper
         $dkimArray = explode(PHP_EOL,$dkimSet['detail']);
         $dkimValue = explode(":",$dkimArray[1]);
         $this->domainKey = ltrim($dkimValue[1]);
+        $dkimName = explode(":",$dkimArray[0]);
+        $this->dkimName = ltrim($dkimName[1]);
     }    
     
     public function KerioEmailCheckDNS()
@@ -53,8 +55,8 @@ class DnsHelper
         $vars['domainkey'] = $this->domainKey;
         if($this->clientDomains['totalresults'] == 0){
             $vars['selfdomain'] = FALSE;
-            $vars['dmarcconfig'] = $dmarcConfig;
-            $vars['spfconfig'] = $spfConfig;
+            $vars['dmarcconfig'] = $this->dmarcConfig;
+            $vars['spfconfig'] = $this->spfConfig;
             return $vars;
         } else {
             $vars['selfdomain'] = TRUE;
@@ -100,23 +102,22 @@ class DnsHelper
                 $vars['domainId'] = $this->clientDomains['domains']['domain'][$i]['id'];
             }
         }
-        # SPF
+        # SPF, multi verboten
         if (count($domainSPF) > 1) {
             $vars['multiSPF'] = TRUE;
+            $vars['spf'] = 'wrong';
         } else {
             $vars['multiSPF'] = FALSE;
-        }
-        $vars['spf'] = 'wrong';
-        if (empty($domainSPF)) {
-            $vars['spf'] = 'unset';
-        } else {        
-            foreach($domainSPF as $spf) {
-                if($spf === $spfConfig) {
+            if (empty($domainSPF)) {
+                $vars['spf'] = 'unset';
+            } else {        
+                if($domainSPF[0] === $spfConfig) {
                     $vars['spf'] = 'set';
+                } else {
+                    $vars['spf'] = 'wrong';
                 }
             }
         }
-        $vars['domainSPF'] = $domainSPF;
         # DKIM
         if (count($domainDKIM) > 1) {
             $vars['multiDKIM'] = TRUE;
@@ -165,6 +166,8 @@ class DnsHelper
                 $var['mx'] = 'wrong';
             }
         }
+        $vars['dmarcconfig'] = $this->dmarcConfig;
+        $vars['spfconfig'] = $this->spfConfig;
 
         logModuleCall(
             'kerioEmail',
@@ -205,7 +208,7 @@ class DnsHelper
         );
         array_push($zoneRecords, $mxRecord);
         $spfRecord = array(
-            'line' => $params['domain'].'.|TXT|0',
+            'line' => $this->params['domain'].'.|TXT|0',
             'name' => '@',
             'type' => 'TXT',
             'class' => 'IN',
@@ -213,7 +216,7 @@ class DnsHelper
         );
         array_push($zoneRecords, $spfRecord);
         $dmarcRecord = array(
-            'line' => $params['domain'].'.|TXT|0',
+            'line' => $this->params['domain'].'.|TXT|0',
             'name' => '@',
             'type' => 'TXT',
             'class' => 'IN',
@@ -223,8 +226,12 @@ class DnsHelper
         foreach($dnsZone['data']->records as $record) {
             if($record->type == 'MX') continue;
             if(!$record->type === 'TXT') {
+                // skip dmarc
+                if(preg_match('/^v=DMARC1(.*)$/i', trim($record->rdata->txtdata,'"'))) continue; 
+                // skip spf
                 if(preg_match('/^v=spf(.*)$/i', trim($record->rdata->txtdata,'"'))) continue; 
-                if(preg_match('/^v=DKIM1(.*)$/i', trim($record->rdata->txtdata,'"'))) continue; 
+                // skip own dkim
+                if(($this->dkimName == $record->name) && ($this->domainKey == trim($record->rdata->txtdata,'"'))) continue; 
             };
             array_push($zoneRecords, $record);
         }