|
@@ -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)
|
|
function KerioEmail_ClientAreaCustomButtonArray ($params)
|
|
|
{
|
|
{
|
|
|
$mxStatus = KerioEmailCheckMX($params);
|
|
$mxStatus = KerioEmailCheckMX($params);
|
|
|
|
|
+ $spfStatus = KerioEmailCheckSPF($params);
|
|
|
switch($mxStatus['action']) {
|
|
switch($mxStatus['action']) {
|
|
|
case 'set':
|
|
case 'set':
|
|
|
return array(
|
|
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)
|
|
function KerioEmail_setMX($params)
|
|
|
{
|
|
{
|
|
|
$zoneIDcollection = Capsule::table('dns_manager2_zone')
|
|
$zoneIDcollection = Capsule::table('dns_manager2_zone')
|