|
|
@@ -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);
|
|
|
}
|