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

137 lines
3.3 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
set -euo pipefail
# -----------------------------
# Auswahl: PVE oder PBS
# -----------------------------
echo "Welche Proxmox-Installation möchtest du konfigurieren?"
echo "1) Proxmox VE"
echo "2) Proxmox Backup Server"
read -rp "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"
;;
2)
TYPE="PBS"
NOTIF_CFG="/etc/proxmox-backup/notifications.cfg"
PRIV_NOTIF_CFG="/etc/proxmox-backup/notifications-priv.cfg"
USER_DEFAULT="mailout"
;;
*)
echo "Ungültige Auswahl. Abbruch."
exit 1
;;
esac
# -----------------------------
# 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 "Backup erstellt: $bak"
fi
}
# -----------------------------
# Pflichtfeld-Reader
# $1 = Prompt
# $2 = Variablenname
# $3 = Optionaler Default
# -----------------------------
read_required() {
local prompt="$1"
local varname="$2"
local default="${3:-}"
local input
while true; do
if [[ -n "$default" ]]; then
read -rp "$prompt [$default]: " input
input=${input:-$default}
else
read -rp "$prompt: " input
fi
if [[ -n "$input" ]]; then
printf -v "$varname" '%s' "$input"
break
fi
echo "❌ Eingabe darf nicht leer sein!"
done
}
# -----------------------------
# Backups
# -----------------------------
backup_file "$NOTIF_CFG"
backup_file "$PRIV_NOTIF_CFG"
echo
echo "Bitte die SMTP Notification Konfiguration für $TYPE eingeben:"
echo "(Alle Felder sind Pflicht Enter übernimmt ggf. den Default)"
echo
# -----------------------------
# Eingaben mit Vorlagen
# -----------------------------
read_required "Author (MH-PVE02 | MAIERHOME H33)" AUTHOR
read_required "From-Address (MH-PVE02@vmd55888.de)" FROMADDR
read_required "Empfänger-Mailadresse (pbs-dashboard@vmd55888.de)" MAILTO "pbs-dashboard@vmd55888.de"
read_required "SMTP Server (mail.vmd55888.de)" SERVER "mail.vmd55888.de"
read_required "SMTP Port (587)" PORT "587"
read_required "Modus (starttls/ssl/none)" MODE "starttls"
read_required "SMTP Benutzername ($USER_DEFAULT)" USERNAME "$USER_DEFAULT"
# Passwort (Pflichtfeld, versteckt)
while true; do
read -rsp "SMTP Passwort: " SMTP_PASS
echo
[[ -n "$SMTP_PASS" ]] && break
echo "❌ Passwort darf nicht leer sein!"
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 "$TYPE Notification Konfiguration neu geschrieben. Bitte WebUI prüfen."