NobGit
public nobgit read

NobMail

Based on mailcow: dockerized

Languages

Repository composition by tracked source files.

PHP
PHP 49% JavaScript 35% HTML 9% CSS 4% Shell 2% Python 1% Lua 0% Perl 0% Ruby 0% SCSS 0%
Create file Wiki Documentation
Clone
https://nobgit.com/orgs/nobgit/nobmail.git
ssh://[email protected]:2222/orgs/nobgit/nobmail.git

Commit

DNS Diagnostics - Ehnaced SPF record check

Signed-off-by: Kristián Feldsam <[email protected]>

2a8bdc8d
Kristián Feldsam <[email protected]> 9 years ago
data/web/inc/ajax/dns_diagnostics.php | 13 +++++++++----
 data/web/lang/lang.en.php             |  1 +
 2 files changed, 10 insertions(+), 4 deletions(-)

Diff

diff --git a/data/web/inc/ajax/dns_diagnostics.php b/data/web/inc/ajax/dns_diagnostics.php
index fa3354d5..3735b17c 100644
--- a/data/web/inc/ajax/dns_diagnostics.php
+++ b/data/web/inc/ajax/dns_diagnostics.php
@@ -73,7 +73,7 @@ if (!isset($autodiscover_config['sieve'])) {
 }
 
 // Init records array
-$spf_link = '<a href="http://www.openspf.org/SPF_Record_Syntax" target="_blank">SPF Record Syntax</a>';
+$spf_link = '<a href="http://www.openspf.org/SPF_Record_Syntax" target="_blank">SPF Record Syntax</a><br /><small>'.$lang['diagnostics']['allow'].' '.$ip.'<br />'.$lang['diagnostics']['allow'].' '.$ip6.'</small>';
 $dmarc_link = '<a href="http://www.kitterman.com/dmarc/assistant.html" target="_blank">DMARC Assistant</a>';
 
 $records = array();
@@ -348,9 +348,14 @@ foreach ($records as $record) {
         $state = $current[$data_field[$current['type']]] . state_optional;
     }
     elseif ($current['type'] == 'TXT' &&
-      stripos($current['txt'], 'v=spf' &&
-      $record[2] == $spf_link) === 0) {
-        $state = $current[$data_field[$current['type']]] . state_optional;
+      stripos($current['txt'], 'v=spf') === 0 &&
+      $record[2] == $spf_link) {
+        $state = state_nomatch;
+        $rslt = get_spf_allowed_hosts($record[0]);
+        if(in_array($ip, $rslt) && in_array($ip6, $rslt)){
+            $state = state_good;
+        }
+        $state .= '<br />' . $current[$data_field[$current['type']]].state_optional;
     }
     elseif ($current['type'] == 'TXT' &&
       stripos($current['txt'], 'v=dkim') === 0 &&
diff --git a/data/web/lang/lang.en.php b/data/web/lang/lang.en.php
index 7fce2a3b..b23ec4d6 100644
--- a/data/web/lang/lang.en.php
+++ b/data/web/lang/lang.en.php
@@ -556,6 +556,7 @@ $lang['diagnostics']['dns_records_data'] = 'Correct Data';
 $lang['diagnostics']['dns_records_status'] = 'Current State';
 $lang['diagnostics']['optional'] = 'This record is optional.';
 $lang['diagnostics']['cname_from_a'] = 'Value derived from A/AAAA record. This is supported as long as the record points to the correct resource.';
+$lang['diagnostics']['allow'] = 'Allow';
 
 $lang['admin']['relay_from'] = '"From:" address';
 $lang['admin']['api_allow_from'] = "Allow API access from these IPs";