diff --git a/data/Dockerfiles/sogo/bootstrap-sogo.sh b/data/Dockerfiles/sogo/bootstrap-sogo.sh
index 77fad5313..4bd9d5706 100755
--- a/data/Dockerfiles/sogo/bootstrap-sogo.sh
+++ b/data/Dockerfiles/sogo/bootstrap-sogo.sh
@@ -1,7 +1,10 @@
#!/bin/bash
# Wait for MySQL to warm-up
-while mysqladmin ping --host mysql -u${DBUSER} -p${DBPASS}${DBPASS} --silent; do
+while ! mysqladmin ping --host mysql -u${DBUSER} -p${DBPASS} --silent; do
+ echo "Waiting for database to come up..."
+ sleep 2
+done
# Wait until port becomes free and send sig
until ! nc -z sogo-mailcow 20000;
@@ -101,5 +104,3 @@ chown sogo:sogo -R /var/lib/sogo/
chmod 600 /var/lib/sogo/GNUstep/Defaults/sogod.plist
exec gosu sogo /usr/sbin/sogod
-
-done
diff --git a/data/web/inc/ajax/dns_diagnostics.php b/data/web/inc/ajax/dns_diagnostics.php
index 43d3ea5fa..d6c989b3e 100644
--- a/data/web/inc/ajax/dns_diagnostics.php
+++ b/data/web/inc/ajax/dns_diagnostics.php
@@ -73,6 +73,9 @@ if (!isset($autodiscover_config['sieve'])) {
}
// Init records array
+$spf_link = 'SPF Record Syntax';
+$dmarc_link = 'DMARC Assistant';
+
$records = array();
$records[] = array(
$mailcow_hostname,
@@ -164,13 +167,13 @@ $records[] = array(
$records[] = array(
$domain,
'TXT',
- 'SPF Record Syntax',
+ $spf_link,
state_optional
);
$records[] = array(
'_dmarc.' . $domain,
'TXT',
- 'DMARC Assistant',
+ $dmarc_link,
state_optional
);
@@ -337,16 +340,18 @@ foreach ($records as $record) {
foreach ($currents as &$current) {
if ($current['type'] == 'TXT' &&
stripos($current['txt'], 'v=dmarc') === 0 &&
- stripos($current['host'], '_dmarc') === 0) {
+ $record[2] == $dmarc_link) {
$current['txt'] = str_replace(' ', '', $current['txt']);
$state = $current[$data_field[$current['type']]] . state_optional;
}
elseif ($current['type'] == 'TXT' &&
- stripos($current['txt'], 'v=spf') === 0) {
+ stripos($current['txt'], 'v=spf' &&
+ $record[2] == $spf_link) === 0) {
$state = $current[$data_field[$current['type']]] . state_optional;
}
elseif ($current['type'] == 'TXT' &&
- stripos($current['txt'], 'v=dkim') === 0) {
+ stripos($current['txt'], 'v=dkim') === 0 &&
+ stripos($record[2], 'v=dkim') === 0) {
$current['txt'] = str_replace(' ', '', $current['txt']);
if ($current[$data_field[$current['type']]] == $record[2]) {
$state = state_good;