|
|
@@ -140,11 +140,43 @@ function KerioEmail_setMX($params)
|
|
|
'class' => 'IN',
|
|
|
'data' => array(
|
|
|
'preference' => '10',
|
|
|
-// 'exchange' => $params['serverhostname'],
|
|
|
'exchange' => MX,
|
|
|
),
|
|
|
);
|
|
|
array_push($zoneRecords, $mxRecord);
|
|
|
+ foreach($dnsZone['data']->records as $record) {
|
|
|
+ if($record->type != 'MX') {
|
|
|
+ array_push($zoneRecords, $record);
|
|
|
+ };
|
|
|
+ }
|
|
|
+ $result = localAPI('dnsmanager' ,
|
|
|
+ array(
|
|
|
+ 'dnsaction' => 'updateZone',
|
|
|
+ 'zone_id' => $zoneID,
|
|
|
+ 'records' => $zoneRecords,
|
|
|
+ )
|
|
|
+ );
|
|
|
+ if($result['result'] != 'success') {
|
|
|
+ return 'Error: cloud not update zone for ID ' . $zoneID;
|
|
|
+ }
|
|
|
+ return 'success';
|
|
|
+}
|
|
|
+function KerioEmail_setSPF($params)
|
|
|
+{
|
|
|
+ $zoneIDcollection = Capsule::table('dns_manager2_zone')
|
|
|
+ ->select('id')
|
|
|
+ ->where('name', '=', $params['domain'])
|
|
|
+ ->get();
|
|
|
+ $zoneIDobj = $zoneIDcollection[0];
|
|
|
+ $zoneID = $zoneIDobj->{'id'};
|
|
|
+ if(!isset($zoneID)) {
|
|
|
+ return 'Error: zone ID not found for domain ' . $params['domain'];
|
|
|
+ }
|
|
|
+ $dnsZone = localAPI('dnsmanager', array( 'dnsaction' => 'getZone', 'zone_id' => $zoneID));
|
|
|
+ if($dnsZone['result'] != 'success') {
|
|
|
+ return 'Error: cloud not fetch zone for ID ' . $zoneID;
|
|
|
+ }
|
|
|
+ $zoneRecords = array();
|
|
|
$spfRecord = array(
|
|
|
'line' => $params['domain'].'.|TXT|0',
|
|
|
'name' => '@',
|
|
|
@@ -154,7 +186,7 @@ function KerioEmail_setMX($params)
|
|
|
);
|
|
|
array_push($zoneRecords, $spfRecord);
|
|
|
foreach($dnsZone['data']->records as $record) {
|
|
|
- if(($record->type != 'MX') && ($record->data != SPF)) {
|
|
|
+ if(!str_starts_with($record->data, 'v=spf')) {
|
|
|
array_push($zoneRecords, $record);
|
|
|
};
|
|
|
}
|