SPF-Records mit Icinga überwachen

Veröffentlicht am 05.03.2019.
Alle unsere Webserver sollen in der Lage sein, Mails zu verschicken. Da wir einen SPF-Record veröffentlichen, der als letzten Eintrag ein "Hard Fail" hat, müssen wir aufpassen, dass jeder unserer Server laut SPF-Record vertrauenswürdig ist. Dazu habe ich folgende Icinga 2-Regel geschrieben, sodass alle Hosts mit externer IP-Adresse automatisch einen Service bekommen, der 1x pro Tag den SPF-Record prüft. Wenn wir einen neuen Host anlegen, wird der ebenfalls automatisch geprüft.
apply Service "SPF" {
    display_name = "SPF-Record für " + host.address

    check_interval = 24h
    import "generic-service"
    check_command = "Bash"
    vars.command = "dig @8.8.8.8 -t TXT beispielfirma.de +short | grep spf | grep ip4:" + host.address + "/32"
    assign where (host.address && (host.address.substr(0, 3) != "127") && (host.address.substr(0, 7) != "192.168"))
}
Die Domain beispielfirma.de können Sie durch Ihre Domain ersetzen. Die 8.8.8.8 steht für den DNS-Server von Google - das sorgt dafür, dass Icinga mit wenig Verzögerung nach einer Veränderungen im DNS-Record bemerkt, was es neues gibt - im Gegensatz zu lokalen DNS-Services bei uns im Netzwerk, die die TTL voll auskosten. Durch die vars.command-Zeile kann ich die Befehlszeile auch in der Weboberfläche Icinga Web 2 sehen Damit es funktioniert, ist noch dieser Block nötig - er steht bei uns in der commands.conf:
object CheckCommand "Bash" {
    import "plugin-check-command"
    command = [ "bash", "-c", "$command$" ]
}