Compare commits
1 commit
Author | SHA1 | Date | |
---|---|---|---|
|
54a4d5d4f7 |
1 changed files with 57 additions and 0 deletions
57
scripts/check-mail-domain-dns.sh
Executable file
57
scripts/check-mail-domain-dns.sh
Executable file
|
@ -0,0 +1,57 @@
|
||||||
|
#!/usr/bin/env nix-shell
|
||||||
|
#!nix-shell -i bash --pure
|
||||||
|
#!nix-shell -p host
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
if [ $# -ne 3 ];
|
||||||
|
then
|
||||||
|
echo "This script checks the DNS configuration of your mail domain"
|
||||||
|
echo "Usage: $0 DOMAIN FQDN SERVER_IP"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
export DOMAIN=$1
|
||||||
|
export FQDN=$2
|
||||||
|
export SERVER_IP=$3
|
||||||
|
|
||||||
|
echo "Check '${DOMAIN}' as a DNS MX entry for '${FQDN}'"
|
||||||
|
if ! host -t MX "${DOMAIN}" | grep -q -e "${DOMAIN} mail is handled by .* ${FQDN}";
|
||||||
|
then
|
||||||
|
echo "Error: MX configuration is not correct"
|
||||||
|
host -t MX "${DOMAIN}"
|
||||||
|
exit 2
|
||||||
|
else
|
||||||
|
echo ok
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Check '${FQDN}' resolves to '${SERVER_IP}'"
|
||||||
|
IP=$(host "$FQDN" | grep "has address" | cut -d" " -f4)
|
||||||
|
if [ "${IP}" != "${SERVER_IP}" ];
|
||||||
|
then
|
||||||
|
echo "Error: $FQDN should resolve to '${SERVER_IP}' (and not '$IP')"
|
||||||
|
exit 2
|
||||||
|
else
|
||||||
|
echo "ok"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Check the reverse dns entry for '${SERVER_IP}' point to the address of '${FQDN}'"
|
||||||
|
DN=$(host "$SERVER_IP" | cut -d" " -f5)
|
||||||
|
RDN=$(echo "${DN}" | xargs host | grep "has address" | cut -d" " -f4)
|
||||||
|
if [ "${SERVER_IP}" != "${RDN}" ];
|
||||||
|
then
|
||||||
|
echo "Error: reverse DNS is not correctly configured"
|
||||||
|
exit 2
|
||||||
|
else
|
||||||
|
echo "ok"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Check SPF is configured for ${DOMAIN}"
|
||||||
|
SPF=$(host -t TXT "${DOMAIN}")
|
||||||
|
if echo "${SPF}" | grep -q -e "v=spf1 .*+a:${FQDN}" || echo "${SPF}" | grep -q -e "v=spf1 .*ip4:${SERVER_IP}";
|
||||||
|
then
|
||||||
|
echo "ok"
|
||||||
|
else
|
||||||
|
echo "Error: SPF is not correctly configured"
|
||||||
|
echo " SPF TXT record: ${SPF}"
|
||||||
|
fi
|
Loading…
Reference in a new issue