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$" ]
}