Files
pve-pbs-setup/setup-email.sh

144 lines
3.9 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# ==========================================
# Proxmox / PBS SMTP Notification Setup
# ==========================================
# Autor: Manuel Maier Style 😎
# Ausgabe: SMTP Notification Konfiguration
# ==========================================
# ---- Farben / Layout ----
BOLD="\033[1m"
GREEN="\033[32m"
CYAN="\033[36m"
YELLOW="\033[33m"
RED="\033[31m"
RESET="\033[0m"
INDENT=" "
set -euo pipefail
# ---- Root Check ----
if [[ $EUID -ne 0 ]]; then
echo -e "${BOLD}${RED}${INDENT}Bitte als Root ausführen (sudo)${RESET}"
exit 1
fi
# ---- Auswahl PVE / PBS ----
echo -e "${CYAN}${BOLD}${INDENT}Welche Proxmox-Installation möchtest du konfigurieren?${RESET}"
echo -e "${INDENT}1) Proxmox VE"
echo -e "${INDENT}2) Proxmox Backup Server"
while true; do
read -rp "${INDENT}Bitte auswählen (1 oder 2): " choice
case "$choice" in
1)
TYPE="PVE"
NOTIF_CFG="/etc/pve/notifications.cfg"
PRIV_NOTIF_CFG="/etc/pve/priv/notifications.cfg"
USER_DEFAULT="mailout"
break
;;
2)
TYPE="PBS"
NOTIF_CFG="/etc/proxmox-backup/notifications.cfg"
PRIV_NOTIF_CFG="/etc/proxmox-backup/notifications-priv.cfg"
USER_DEFAULT="mailout"
break
;;
*)
echo -e "${RED}${INDENT}Ungültige Auswahl! Bitte 1 oder 2 eingeben.${RESET}"
;;
esac
done
# ---- Backup-Funktion ----
backup_file() {
local file=$1
if [[ -f "$file" ]]; then
local bak="${file}.bak.$(date +%Y%m%d%H%M%S)"
cp "$file" "$bak"
echo -e "${YELLOW}${INDENT}Backup erstellt: ${CYAN}$bak${RESET}"
fi
}
# ---- Pflichtfeld-Reader ----
read_required() {
local prompt="$1"
local varname="$2"
local default="${3:-}"
local input
while true; do
if [[ -n "$default" ]]; then
read -rp "${INDENT}${prompt} [$default]: " input
input=${input:-$default}
else
read -rp "${INDENT}${prompt}: " input
fi
if [[ -n "$input" ]]; then
printf -v "$varname" '%s' "$input"
break
fi
echo -e "${RED}${INDENT}❌ Eingabe darf nicht leer sein!${RESET}"
done
}
# ---- Backups erstellen ----
backup_file "$NOTIF_CFG"
backup_file "$PRIV_NOTIF_CFG"
echo
echo -e "${CYAN}${BOLD}${INDENT}Bitte die SMTP Notification Konfiguration für $TYPE eingeben:${RESET}"
echo -e "${INDENT}(Alle Felder sind Pflicht Enter übernimmt ggf. den Default)"
echo
# ---- Eingaben ----
read_required "Author (MH-PVE02 | MAIERHOME H33)" AUTHOR
read_required "From-Address (MH-PVE02@vmd55888.de)" FROMADDR
read_required "Empfänger-Mailadresse" MAILTO "pbs-dashboard@vmd55888.de"
read_required "SMTP Server" SERVER "mail.vmd55888.de"
read_required "SMTP Port (25/465/587)" PORT "587"
read_required "Modus (starttls/ssl/none)" MODE "starttls"
read_required "SMTP Benutzername" USERNAME "$USER_DEFAULT"
# ---- Passwort (versteckt) ----
while true; do
read -rsp "${INDENT}SMTP Passwort: " SMTP_PASS
echo
[[ -n "$SMTP_PASS" ]] && break
echo -e "${RED}${INDENT}❌ Passwort darf nicht leer sein!${RESET}"
done
# ---- notifications.cfg schreiben ----
cat > "$NOTIF_CFG" << EOF
sendmail: mail-to-root
comment Send mails to root@pam's email address
disable true
mailto-user root@pam
matcher: default-matcher
comment Route all notifications to mail-to-root
mode all
target mailout
smtp: mailout
author $AUTHOR
from-address $FROMADDR
mailto $MAILTO
mailto-user root@pam
mode $MODE
port $PORT
server $SERVER
username $USERNAME
EOF
# ---- priv/notifications-priv.cfg schreiben ----
cat > "$PRIV_NOTIF_CFG" << EOF
smtp: mailout
password $SMTP_PASS
EOF
echo
echo -e "${GREEN}${BOLD}${INDENT}$TYPE Notification Konfiguration neu geschrieben!${RESET}"
echo -e "${INDENT}Bitte WebUI prüfen."