diff --git a/README.md b/README.md index e4ed035..80ef9d9 100644 --- a/README.md +++ b/README.md @@ -54,7 +54,12 @@ Optimierte Bash-Konfigurationen für verschiedene Support-Umgebungen: Dieses Skript stellt eine SSH-Verbindung zu einem angegebenen Webserver her und generiert so einen einmaligen Login-Link für das Plesk Admin Panel des gewünschten Servers. - [`wh20`](./wh20) Dieses Skript verbindet zum angegbenen Webserver via SSH - +- [`adspam`](./adspam) + Dieses Skript ermöglicht die Prüfung auf geläufige MS365- und Spamhaus-Fehlermeldungen auf Adino-Servern direkt von der Connect aus. +- [`donaspam`](./donaspam) + Dieses Skript ermöglicht die Prüfung auf geläufige MS365- und Spamhaus-Fehlermeldungen auf inname-Servern direkt von der Connect aus. +- [`spamcheck`](./spamcheck) + Dieses Skript ermöglicht die Prüfung auf geläufige MS365- und Spamhaus-Fehlermeldungen auf einem Plesk-Server. --- ## Quick Start diff --git a/legacy/checkms/checkms.sh b/legacy/checkms/checkms.sh index e61357c..c55a579 100755 --- a/legacy/checkms/checkms.sh +++ b/legacy/checkms/checkms.sh @@ -213,6 +213,7 @@ $REMOTE bash -s < +```bash +sudo grep -F 'S3150' /var/log/maillog +``` + +--- + +*Maintainer: peignerpausz* \ No newline at end of file diff --git a/wh20/adspam/adspam.sh b/wh20/adspam/adspam.sh new file mode 100644 index 0000000..deca10f --- /dev/null +++ b/wh20/adspam/adspam.sh @@ -0,0 +1,9 @@ +#! /usr/bin/env bash +# Automatisierter Spamcheck für MS365 error-codes und Spamhaus rejections auf Adino-Server +# Maintainer: peignerpausz + +printf '⚠️ Initiating Spamcheck for adino-servers! ⚠️ \n \n' +for a in 244 251 252 268 272 + do ssh srv$a.adino.at -- bash -lc '~/bin/spamcheck' +done +echo \ No newline at end of file diff --git a/wh20/damagereport/README.md b/wh20/damagereport/README.md new file mode 100644 index 0000000..fb9aee9 --- /dev/null +++ b/wh20/damagereport/README.md @@ -0,0 +1,144 @@ +# damagereport - 📬 your daily dose of mail-damage + +Kurzbeschreibung des Skripts: +![Damage Report Picard](https://i.imgflip.com/1hdas2.jpg) +Am besten in die .bashrc packen, damit es bei jedem Systemstart einem Schlecht wird. 🥴 +--- + +## Features + +- Kombinierte Abfrage von checkms, adspam und donaspam + +--- + +## Installation + +1. Repository klonen oder Skript kopieren: + ```bash + git clone /esn-support-bash-snippets.git + cd esn-support-bash-snippets/wh20/damagereport.sh + chmod +x damagereport.sh + ``` + +2. Abhängigkeiten installieren: + - [`checkms`](../../legacy/checkms/checkms.sh) + - [`adspam`](../adspam/adspam.sh) + - [`donaspam`](../donaspam/donaspam.sh) + - [`spamcheck`](../spamcheck/spamcheck.sh) --> muss auf jedem zu prüfenden Server unter `~/bin/spamcheck` hinterlegt sein. Siehe [Serverliste](./serverliste.md) + +--- + +## Nutzung + +### Standardaufruf +```bash +./damagereport.sh +``` + +### Beispiele +```bash +./damagereport.sh +./damagereport.sh 2025-09-08 # Variable Logabfrage muss erst in adspam, donaspam und spamcheck implementiert werden +``` + +--- + +## Optionen + +```bash +Usage: ./damagereport.sh [OPTIONS] + +--help Zeigt diese Hilfe +--option Beispieloption +YYYY-MM-DD Beispiel für Datumsargument +``` + +--- + +## Beispielausgabe + +```bash +eign01@connect-lej ~ $ damagereport +Bridge, give me Fri Apr 17 12:49:51 CEST 2026 damagereport! +🚨 Initiating damagereport for mailservices! + +Starte checkms fuer 2026-04-17 +Analysiere 2026-04-17.log + +COUNT IP CODE +----- ---------------- ------ + +⚠️ Initiating Spamcheck for adino-servrs ⚠️ + 🚀 srv212.adino.at Spamcheck 🛠️ +✅ All systems green. +🚀 srv237.adino.at Spamcheck 🛠️ +✅ All systems green. +🚀 srv244.adino.at Spamcheck 🛠️ +✅ All systems green. +🚀 srv251.adino.at Spamcheck 🛠️ +❌ Anzahl S7772: 6 +🚀 srv252.adino.at Spamcheck 🛠️ +✅ All systems green. +🚀 srv268.adino.at Spamcheck 🛠️ +❌ Anzahl S7772: 6 +🚀 srv272.adino.at Spamcheck 🛠️ +✅ All systems green. +🚀 srv279.adino.at Spamcheck 🛠️ +✅ All systems green. +🚀 srv280.adino.at Spamcheck 🛠️ +✅ All systems green. +🚀 srv285.adino.at Spamcheck 🛠️ +✅ All systems green. +🚀 srv307.adino.at Spamcheck 🛠️ +✅ All systems green. +🚀 srv327.adino.at Spamcheck 🛠️ +✅ All systems green. +🚀 srv353.adino.at Spamcheck 🛠️ +✅ All systems green. +🚀 srv358.adino.at Spamcheck 🛠️ +✅ All systems green. +🚀 srv395.adino.at Spamcheck 🛠️ +✅ All systems green. +⚠️ Initiating spamcheck on inname-servers + +=== ws20.inname.net Spamcheck === +✅ All systems green. +=== ws21.inname.net Spamcheck === +✅ All systems green. +=== ws22.inname.net Spamcheck === +✅ All systems green. +=== ws23.inname.net Spamcheck === +✅ All systems green. +=== ws24.inname.net Spamcheck === +✅ All systems green. +=== ws25.inname.net Spamcheck === +✅ All systems green. +=== ws26.inname.net Spamcheck === +✅ All systems green. +=== ws27.inname.net Spamcheck === +❌ Anzahl S3150: 5 +=== ws28.inname.net Spamcheck === +✅ All systems green. +=== ws29.inname.net Spamcheck === +✅ All systems green. +=== ws30.inname.net Spamcheck === +✅ All systems green. + +``` + +--- + +## Setup-Hinweise + +Falls notwendig, Alias in `~/.bashrc` setzen: +```bash +alias damagereport='~/pfad/zum/repo/wh20/damagereport/damagereport.sh' +``` + +--- + +## Notes + +- Derzeit kombiniert dieses Skript wirklich nur die Standardausgaben von checkms, adspam und donaspam in einen zusammenhängenden Bericht. +- ToDos + - `spamcheck` - und damit `adspam` und `donaspam` - auch auf andere Logs als `/var/log/maillog` zugreifen lassen diff --git a/wh20/damagereport/damagereport.sh b/wh20/damagereport/damagereport.sh new file mode 100644 index 0000000..38dc754 --- /dev/null +++ b/wh20/damagereport/damagereport.sh @@ -0,0 +1,26 @@ +#! /usr/bin/env bash +# Damagereport - kombinierte Ausgabe von checkms, adspam und donaspam +# Maintainer: peignerpausz + +# --- Funktionen --- +usage() { + cat <&2; usage; exit 1 ;; + esac +done + +printf "Bridge, give me %s damagereport! \n \n" "$(date)" +printf "⚠️ Initiating damagereport for our mailservers! \n" +bash ~/bin/checkms && ~/bin/adspam && ~/bin/donaspam \ No newline at end of file diff --git a/wh20/damagereport/serverliste.md b/wh20/damagereport/serverliste.md new file mode 100644 index 0000000..c8555d2 --- /dev/null +++ b/wh20/damagereport/serverliste.md @@ -0,0 +1,47 @@ +# Serverliste + +# Legacy-Server +![The good stuff](https://media.npr.org/assets/img/2023/05/26/honest-work-meme-c7034f8bd7b11467e1bfbe14b87a5f6a14a5274b.jpg) + +- web01.in.easyname.com..web26.in.easyname.com +- web107 +- web114 +- web119 +- web501.in.easyname.com..web532.in.easyname.com + +# WH20-Server +![The not so good stuff](https://i.imgflip.com/9r6lbk.jpg) + +- web1.wh20.easyname.systems .. web25.wh20.easyname.systems + +## inname +![DONA - where servers go to die](https://thenib.com/wp-content/uploads/2019/08/this-is-not-fine-004-4f0492-1.png) +- ws20.inname.net +- ws21.inname.net +- ws22.inname.net +- ws23.inname.net +- ws24.inname.net +- ws25.inname.net +- ws26.inname.net +- ws27.inname.net +- ws28.inname.net +- ws29.inname.net +- ws30.inname.net + +## adino +![adino beim Benamsen der Server so](https://www.gifcen.com/wp-content/uploads/2022/05/kylo-ren-more-gif.gif) +- srv212.adino.at +- srv237.adino.at +- srv244.adino.at +- srv251.adino.at +- srv252.adino.at +- srv268.adino.at +- srv272.adino.at +- srv279.adino.at +- srv280.adino.at +- srv285.adino.at +- srv307.adino.at +- srv327.adino.at +- srv353.adino.at +- srv358.adino.at +- srv395.adino.at diff --git a/wh20/domainchecker/README.md b/wh20/domainchecker/README.md new file mode 100644 index 0000000..0f0311e --- /dev/null +++ b/wh20/domainchecker/README.md @@ -0,0 +1,83 @@ +# + +Kurzbeschreibung des Skripts: + + +--- + +## Features + +- Punkt 1 +- Punkt 2 +- Punkt 3 + +--- + +## Installation + +1. Repository klonen oder Skript kopieren: + ```bash + git clone /esn-support-bash-snippets.git + cd esn-support-bash-snippets// + chmod +x + ``` + +2. Abhängigkeiten (falls vorhanden) installieren: + - `jq` (optional) + - weitere Tools + +--- + +## Nutzung + +### Standardaufruf +```bash +./ +``` + +### Beispiele +```bash +./ --option foo +./ 2025-09-08 +``` + +--- + +## Optionen + +``` +Usage: ./ [OPTIONS] + +--help Zeigt diese Hilfe +--option Beispieloption +YYYY-MM-DD Beispiel für Datumsargument +``` + +--- + +## Beispielausgabe + +``` +Hier ein Beispieloutput des Skripts. +``` + +--- + +## Setup-Hinweise + +Falls notwendig, Alias in `~/.bashrc` setzen: +```bash +alias ='~/pfad/zum/repo///' +``` + +Logger-spezifisch ggf. in `~/.profile` ergänzen: +```bash +cd /var/log/easyname/$(date +%Y)/$(date +%m)/ +``` + +--- + +## Notes + +- Weitere Hinweise, Einschränkungen, Besonderheiten +- Ggf. bekannte Bugs oder ToDos diff --git a/wh20/domainchecker/domainchecker.sh b/wh20/domainchecker/domainchecker.sh new file mode 100644 index 0000000..b564403 --- /dev/null +++ b/wh20/domainchecker/domainchecker.sh @@ -0,0 +1,8 @@ +#! /usr/bin/env bash +# Domainchecker für schnelle Prüfung der MX-Records +# Maintainer: peignerpausz + +for a in domains + do domain=$(dig +short MX $a) + printf "%s MX-Records: \n⤷%s\n====\n" "$a" "$domain" +done \ No newline at end of file diff --git a/wh20/donaspam/README.md b/wh20/donaspam/README.md new file mode 100644 index 0000000..ce4caad --- /dev/null +++ b/wh20/donaspam/README.md @@ -0,0 +1,76 @@ +# adspam - schneller Spamcheck für MS365 und Spamhaus auf inname-Server + +## Funktion + +Dieses Skript führt am jeweiligen inname-Host ein grep für geläufige MS365-Fehlercodes sowie Spamhaus auf /var/log/maillog durch und gibt die Anzahl der Treffer für dieses an. +Sofern keine Ergebnisse für den jeweiligen Tag gefunden werden, werden nur die Beginn- und Endzeile des Checks ausgegeben. + +## Voraussetzungen + +- SSH-Zugriff auf den Zielserver +- Das [`spamcheck`](../spamcheck/spamcheck.sh)-Skript muss auf den Zielservern installiert und ausführbar sein. +- Das [`donaspam`](./donaspam.sh)-Skript ist korrekt auf der connect installiert und ausführbar. + +## Installation + +```bash +cd +mkdir bin && cd bin ## nur wenn der Folder nicht bereits vorhanden ist +vi donaspam +chmod +x donaspam +``` + +## Verwendung + +```bash +USER1@connect-lej ~ $ donaspam +``` + +## Syntax + +```bash +donaspam +``` + +## Beispiele + +```bash +# Von der Connect aus abgesetzt. +USER@connect-lej ~ $ donaspam +=== Todays Spamcheck on Wed Apr 15 13:23:04 CEST 2026 === + +=== ws20.inname.net Spamcheck === +✅ All systems green. +=== ws21.inname.net Spamcheck === +✅ All systems green. +=== ws22.inname.net Spamcheck === +✅ All systems green. +=== ws23.inname.net Spamcheck === +✅ All systems green. +=== ws24.inname.net Spamcheck === +✅ All systems green. +=== ws25.inname.net Spamcheck === +✅ All systems green. +=== ws26.inname.net Spamcheck === +❌ Anzahl S3150: 24 +=== ws27.inname.net Spamcheck === +✅ All systems green. +=== ws28.inname.net Spamcheck === +❌ Anzahl S775: 5 +=== ws29.inname.net Spamcheck === +✅ All systems green. +=== ws30.inname.net Spamcheck === +✅ All systems green. +``` + +## Troubleshooting + +# zu hohe Anzahl an S3150 +Am jeweiligen inname-Webserver prüfen durch gezieltes grep nach `S3150`, ob es sich hierbei um einen anderen String handelt, da Plesk leider auch den String verwendet. --> +```bash +sudo grep -F 'S3150' /var/log/maillog +``` + +--- + +*Maintainer: peignerpausz* \ No newline at end of file diff --git a/wh20/donaspam/donaspam.sh b/wh20/donaspam/donaspam.sh new file mode 100644 index 0000000..13e9b66 --- /dev/null +++ b/wh20/donaspam/donaspam.sh @@ -0,0 +1,8 @@ +#! /usr/bin/env bash +# Automatisierter Spamcheck für MS365 error-codes und Spamhaus rejections auf inname-Server +# Maintainer: peignerpausz + +printf '⚠️ Initiating Spamcheck for inname-servers! ⚠️ \n \n' +for a in {20..30} + do ssh ws$a.inname.net -- bash -lc '~/bin/spamcheck' +done \ No newline at end of file diff --git a/wh20/spamcheck/README.md b/wh20/spamcheck/README.md new file mode 100644 index 0000000..9c38edf --- /dev/null +++ b/wh20/spamcheck/README.md @@ -0,0 +1,52 @@ +# spamcheck - schneller Spamcheck für MS365 und Spamhaus + +## Funktion + +Dieses Skript führt am jeweiligen Plesk-Host ein grep für geläufige MS365-Fehlercodes sowie Spamhaus auf /var/log/maillog durch und gibt die Anzahl der Treffer für dieses an. + +## Voraussetzungen + +- SSH-Zugriff auf den Zielserver +- Das Skript muss am Zielserver unter `$HOME/bin` oder `$HOME/spamcheck.sh` abgelegt werden. +- Das Skript muss ausführbar sein (`chmod +x spamcheck` oder `chmod +x spamcheck.sh`) + +## Installation + +tba. + +## Verwendung + +```bash +spamcheck +``` + +## Syntax + +```bash +spamcheck +``` + +## Beispiele + +```bash +# random Plesk-Server +eign01_easyname.at@ws25 ~ $ spamcheck +=== ws25.inname.net Spamcheck === +✅ All systems green. + +eign01_easyname.at@ws26 ~ $ spamcheck +=== ws26.inname.net Spamcheck === +❌ Anzahl S3150: 24 +``` + +## Troubleshooting + +# zu hohe Anzahl an S3150 +Prüfen durch gezieltes grep nach `S3150`, ob es sich hierbei um einen anderen String handelt. --> +```bash +sudo grep -F 'S3150' /var/log/maillog +``` + +--- + +*Maintainer: peignerpausz* \ No newline at end of file diff --git a/wh20/spamcheck/spamcheck.sh b/wh20/spamcheck/spamcheck.sh new file mode 100644 index 0000000..3803d85 --- /dev/null +++ b/wh20/spamcheck/spamcheck.sh @@ -0,0 +1,20 @@ +#! /usr/bin/env bash +# Spamcheck für MS365 error-codes und Spamhaus rejections +# Maintainer: peignerpausz + +printf '🚀 %s Spamcheck 🛠️ \n' "$(hostname)" +found_errors=0 +for a in S3150 S775 S7771 S7772 S7773 S7774 S7775 S7776 S7777 S7778 S7779 Spamhaus +do + count=$(sudo grep -c "\($a\)" /var/log/maillog 2>/dev/null) + count=${count//$'\r'/} + count=${count//[^0-9]/} + count=${count:-0} + if [ "$count" -gt 0 ]; then + printf "❌ Anzahl %s: %s\n" "$a" "$count" + found_errors=1 + fi +done +if [ "$found_errors" -eq 0 ]; then + printf "✅ All systems green.\n" +fi \ No newline at end of file