diff --git a/data/web/diagnostics.php b/data/web/diagnostics.php index d35c4d47..b988747d 100644 --- a/data/web/diagnostics.php +++ b/data/web/diagnostics.php @@ -194,25 +194,31 @@ foreach ($records as $record) } } - foreach ($currents as $current) { - $current['type'] == strtoupper($current['type']); + foreach ($currents as &$current) { if ($current['type'] != $record[1]) { continue; } - elseif ($current['type'] == 'TXT' && strpos($record[0], '_dmarc.') === 0) { + elseif ($current['type'] == 'TXT' && strpos($current['txt'], 'v=DMARC1') === 0) { + $current['txt'] = str_replace(' ', '', $current['txt']); $state = state_optional . '
' . $current[$data_field[$current['type']]]; } else if ($current['type'] == 'TXT' && strpos($current['txt'], 'v=spf1') === 0) { $state = state_optional . '
' . $current[$data_field[$current['type']]]; } + else if ($current['type'] == 'TXT' && strpos($current['txt'], 'v=DKIM1') === 0) { + $current['txt'] = str_replace(' ', '', $current['txt']); + if ($current[$data_field[$current['type']]] == $record[2]) + $state = state_good; + } else if ($current['type'] != 'TXT' && isset($data_field[$current['type']]) && $state != state_good) { $state = state_nomatch; if ($current[$data_field[$current['type']]] == $record[2]) $state = state_good; } } + unset($current); if (isset($record[3]) && $record[3] == state_optional && ($state == state_missing || $state == state_nomatch)) { $state = state_optional;