|
|
@@ -96,6 +96,10 @@ class DnsHelper
|
|
|
|
|
|
public function getResolverRecords($domain)
|
|
|
{
|
|
|
+ $vars['mx'] = array();
|
|
|
+ $vars['spf'] = array();
|
|
|
+ $vars['dmarc'] = array();
|
|
|
+ $vars['dkim'] = array();
|
|
|
try {
|
|
|
$responseMX = $this->resolver->query($domain, 'MX');
|
|
|
$responseTXT = $this->resolver->query($domain, 'TXT');
|
|
|
@@ -106,95 +110,31 @@ class DnsHelper
|
|
|
}
|
|
|
$domainMX = $responseMX->answer;
|
|
|
$domainTXT = $responseTXT->answer;
|
|
|
- if(empty($domainMX)){
|
|
|
- $vars['mx'] = [ 'status' => 'unset', 'target' => 'none'];
|
|
|
- } else {
|
|
|
-
|
|
|
- foreach($domainMX as $mxRecord) {
|
|
|
- if($mxRecord->exchange == $this->params['serverhostname']) {
|
|
|
- array_push($vars['mx'], [ 'status' => 'set','target' => $mxRecord->exchange]);
|
|
|
+ foreach($domainMX as $mxRecord) {
|
|
|
+ array_push($vars['mx'], $mxRecord->exchange);
|
|
|
+ }
|
|
|
+ foreach($domainTXT as $txtRecord) {
|
|
|
+ foreach($txtRecord->text as $txtData) {
|
|
|
+ if(strstr($txtData,'v=spf')) {
|
|
|
+ array_push($vars['spf'],$txtData);
|
|
|
+ }
|
|
|
+ if(strstr($txtData,'v=DMARC')) {
|
|
|
+ array_push($vars['dmarc'],$txtData);
|
|
|
+ }
|
|
|
+ if(strstr($txtData,'v=DKIM')) {
|
|
|
+ array_push($vars['dkim'],$txtData);
|
|
|
}
|
|
|
- }
|
|
|
- if(empty($vars['mx'])){
|
|
|
- $vars['mx'] = [ 'status' => 'wrong', 'target' => $mxRecord->exchange];
|
|
|
}
|
|
|
}
|
|
|
|
|
|
logModuleCall(
|
|
|
'kerioEmail',
|
|
|
__FUNCTION__,
|
|
|
- $vars['mx'],
|
|
|
+ $vars,
|
|
|
'DEbug',
|
|
|
$domain
|
|
|
);
|
|
|
|
|
|
- $domainSPF = array();
|
|
|
- $domainDMARC = array();
|
|
|
- $domainDKIM = array();
|
|
|
- if(empty($domainTXT)){
|
|
|
- $vars['spf'] = 'unset';
|
|
|
- $vars['dmarc'] = 'unset';
|
|
|
- $vars['dkim'] = 'unset';
|
|
|
- } else {
|
|
|
- foreach($domainTXT as $txtRecord) {
|
|
|
- foreach($txtRecord->text as $txtData) {
|
|
|
- if(strstr($txtData,'v=spf')) {
|
|
|
- array_push($domainSPF,$txtData);
|
|
|
- }
|
|
|
- if(strstr($txtData,'v=DKIM')) {
|
|
|
- array_push($domainDKIM,$txtData);
|
|
|
- }
|
|
|
- if(strstr($txtData,'v=DMARC')) {
|
|
|
- array_push($domainDMARC,$txtData);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- # SPF, multi verboten
|
|
|
- if (count($domainSPF) > 1) {
|
|
|
- $vars['multiSPF'] = TRUE;
|
|
|
- $vars['spf'] = 'wrong';
|
|
|
- } else {
|
|
|
- $vars['multiSPF'] = FALSE;
|
|
|
- if (empty($domainSPF)) {
|
|
|
- $vars['spf'] = 'unset';
|
|
|
- } else {
|
|
|
- if($domainSPF[0] === $spfConfig) {
|
|
|
- $vars['spf'] = 'set';
|
|
|
- } else {
|
|
|
- $vars['spf'] = 'wrong';
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- # DKIM
|
|
|
- if (count($domainDKIM) > 1) {
|
|
|
- $vars['multiDKIM'] = TRUE;
|
|
|
- } else {
|
|
|
- $vars['multiDKIM'] = FALSE;
|
|
|
- }
|
|
|
- if (empty($domainDKIM)) {
|
|
|
- $vars['dkim'] = 'unset';
|
|
|
- } else {
|
|
|
- $vars['dkim'] = 'set';
|
|
|
- }
|
|
|
- $vars['domainDKIM'] = $domainDKIM;
|
|
|
- # DMARC
|
|
|
- if (count($domainDMARC) > 1) {
|
|
|
- $vars['multiDMARC'] = TRUE;
|
|
|
- } else {
|
|
|
- $vars['multiDMARC'] = FALSE;
|
|
|
- }
|
|
|
- $vars['dmarc'] = 'wrong';
|
|
|
- if (empty($domainDMARC)) {
|
|
|
- $vars['dmarc'] = 'unset';
|
|
|
- } else {
|
|
|
- foreach($domainDMARC as $dmarc) {
|
|
|
- if($dmarc === $dmarcConfig) {
|
|
|
- $vars['dmarc'] = 'set';
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- $vars['domainDMARC'] = $domainDMARC;
|
|
|
- }
|
|
|
return $vars;
|
|
|
}
|
|
|
|