Dovecot Systax Problem

main
boksbc 2025-10-24 02:20:01 +02:00
parent 47808cfa44
commit 8241c8635a
5 changed files with 31 additions and 320 deletions

View File

@ -47,6 +47,10 @@ fi
build_site_http_only(){
local host="$1" outfile="$2"
local def=""
[[ "${DEV_MODE}" = "1" ]] && def=" default_server"
[[ -z "${host}" || "${host}" = "_" ]] && host="_"
cat > "$outfile" <<CONF
# --- ${host} : HTTP (kein Redirect, kein TLS; läuft hinter Reverse-Proxy) ---
server {
@ -250,12 +254,27 @@ UI_SITE="/etc/nginx/sites-available/ui-mailwolt.conf"
WEBMAIL_SITE="/etc/nginx/sites-available/webmail-mailwolt.conf"
# UI & Webmail wie gehabt …
if [[ "${PROXY_MODE:-0}" -eq 1 ]]; then
build_site_http_only "$UI_HOST" "$UI_SITE"
build_site_http_only "$WEBMAIL_HOST" "$WEBMAIL_SITE"
#if [[ "${PROXY_MODE:-0}" -eq 1 ]]; then
# build_site_http_only "$UI_HOST" "$UI_SITE"
# build_site_http_only "$WEBMAIL_HOST" "$WEBMAIL_SITE"
#else
# build_site_tls "$UI_HOST" "/etc/ssl/ui" "$UI_SITE"
# build_site_tls "$WEBMAIL_HOST" "/etc/ssl/webmail" "$WEBMAIL_SITE"
#fi
# UI & Webmail …
if [[ "${DEV_MODE}" = "1" ]]; then
# DEV: per IP erreichbar → Catch-All („_“) und HTTP-only
build_site_http_only "_" "$UI_SITE"
build_site_http_only "_" "$WEBMAIL_SITE"
else
build_site_tls "$UI_HOST" "/etc/ssl/ui" "$UI_SITE"
build_site_tls "$WEBMAIL_HOST" "/etc/ssl/webmail" "$WEBMAIL_SITE"
if [[ "${PROXY_MODE:-0}" -eq 1 ]]; then
build_site_http_only "$UI_HOST" "$UI_SITE"
build_site_http_only "$WEBMAIL_HOST" "$WEBMAIL_SITE"
else
build_site_tls "$UI_HOST" "/etc/ssl/ui" "$UI_SITE"
build_site_tls "$WEBMAIL_HOST" "/etc/ssl/webmail" "$WEBMAIL_SITE"
fi
fi
# MX: **immer** ACME-only (kein Laravel dahinter)

View File

@ -248,7 +248,7 @@ cat > "${UNIT_DIR}/mailwolt-backup.timer" <<EOTIM
Description=MailWolt Backup Timer
[Timer]
OnCalendar=${BACKUP_ONCALENDAR:-*-*-* 03:00:00}
OnCalendar=${BACKUP_ONCALENDAR}
Persistent=true
[Install]
@ -258,10 +258,11 @@ EOTIM
systemctl daemon-reload
if [[ "${BACKUP_ENABLED}" = "1" ]]; then
log "Aktiviere Backup-Timer (${BACKUP_INTERVAL}) …"
log "Aktiviere Backup-Timer (${BACKUP_ONCALENDAR}) …"
systemctl enable --now mailwolt-backup.timer
else
log "Timer bleibt deaktiviert (BACKUP_ENABLED=0)"
log "Timer bleibt deaktiviert (BACKUP_ENABLED=0)."
systemctl disable --now mailwolt-backup.timer >/dev/null 2>&1 || true
fi
log "[✓] Backup-Setup abgeschlossen."

View File

@ -173,5 +173,5 @@ fi
monit -t
systemctl reload monit || systemctl restart monit
woltguard status || true
systemctl status monit --no-pager || true
log "[✓] WoltGuard aktiv."

View File

@ -147,313 +147,4 @@ SH
fi
: > /etc/motd 2>/dev/null || true
log "[✓] MOTD installiert."
##!/usr/bin/env bash
#set -euo pipefail
#source ./lib.sh
#
#log "MOTD installieren …"
#install -d /usr/local/bin
#cat >/usr/local/bin/mw-motd <<'SH'
##!/usr/bin/env bash
## bewusst KEIN "set -e"; MOTD soll nie hart abbrechen
#set -u
#
## Farben
#NC="\033[0m"; CY="\033[1;36m"; GR="\033[1;32m"; YE="\033[1;33m"; RD="\033[1;31m"; GY="\033[0;90m"; WH="\033[1;37m"
#
## Installer-Variablen (optional)
#UI_HOST=""; WEBMAIL_HOST=""; MAIL_HOSTNAME=""; LE_EMAIL=""; PROXY_MODE=""; NPM_IP=""
#[ -r /etc/mailwolt/installer.env ] && . /etc/mailwolt/installer.env || true
## Aus .env (falls vorhanden)
#if [ -r /var/www/mailwolt/.env ]; then
# LE_EMAIL="${LE_EMAIL:-$(grep -E '^LE_EMAIL=' /var/www/mailwolt/.env 2>/dev/null | sed 's/^LE_EMAIL=//')}"
# PROXY_MODE="${PROXY_MODE:-$(grep -E '^PROXY_MODE=' /var/www/mailwolt/.env 2>/dev/null | sed 's/^PROXY_MODE=//')}"
# NPM_IP="${NPM_IP:-$(grep -E '^NPM_IP=' /var/www/mailwolt/.env 2>/dev/null | sed 's/^NPM_IP=//')}"
#fi
#
## Header
#printf "${CY}"
#cat <<'ASCII'
#
#==========================================================================================
#
#:::: :::: ::: ::::::::::: ::: ::: ::: :::::::: ::: :::::::::::
#+:+:+: :+:+:+ :+: :+: :+: :+: :+: :+: :+: :+: :+: :+:
#+:+ +:+:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+
#+#+ +:+ +#+ +#++:++#++: +#+ +#+ +#+ +:+ +#+ +#+ +:+ +#+ +#+
#+#+ +#+ +#+ +#+ +#+ +#+ +#+ +#+#+ +#+ +#+ +#+ +#+ +#+
##+# #+# #+# #+# #+# #+# #+#+# #+#+# #+# #+# #+# #+#
#### ### ### ### ########### ########## ### ### ######## ########## ###
#
#==========================================================================================
#
#ASCII
#printf "${NC}\n"
#
## Safe-Helfer (niemals Script killen)
#grab() { eval "$1" 2>/dev/null || true; }
#line() { printf "${GY}%-7s:${NC} %s\n" "$1" "$2"; }
#
## Systemdaten
#now="$(date '+%Y-%m-%d %H:%M:%S %Z' 2>/dev/null || echo -n '-')"
#fqdn="$(hostname -f 2>/dev/null || hostname 2>/dev/null || echo -n '-')"
#ip_int="$(hostname -I 2>/dev/null | awk '{print $1}' 2>/dev/null || true)"
#ip_ext="$(curl -fsS --max-time 1 https://ifconfig.me 2>/dev/null || true)"
#upt="$(uptime -p 2>/dev/null || echo -n '-')"
#cores="$(nproc 2>/dev/null || echo -n '-')"
#load="$(awk '{print $1" / "$2" / "$3}' /proc/loadavg 2>/dev/null || echo -n '-')"
#
## RAM/SWAP (MiB)
#mem_total="$(awk '/MemTotal/ {print int($2/1024)}' /proc/meminfo 2>/dev/null || echo -n '-')"
#mem_avail="$(awk '/MemAvailable/ {print int($2/1024)}' /proc/meminfo 2>/dev/null || echo -n '0')"
#mem_used=$(( ${mem_total:-0}-${mem_avail:-0} ))
#swap_total="$(awk '/SwapTotal/ {print int($2/1024)}' /proc/meminfo 2>/dev/null || echo -n '-')"
#swap_free="$(awk '/SwapFree/ {print int($2/1024)}' /proc/meminfo 2>/dev/null || echo -n '0')"
#swap_used=$(( ${swap_total:-0}-${swap_free:-0} ))
#
## Disks
#disk_line(){ df -hP "$1" 2>/dev/null | awk 'NR==2{printf "%s/%s (%s used)", $3,$2,$5}'; }
#disk_root="$(disk_line /)"
#disk_var="$(disk_line /var)"
#
#svc_state(){
# local unit="$1"
# if systemctl is-active --quiet "$unit"; then
# printf "${GR}OK${NC}"
# else
# printf "${RD}FAIL${NC}"
# fi
#}
#
## Ausgabe
#printf "${CY}Information as of:${NC} ${YE}%s${NC}\n" "$now"
#line "FQDN" "$fqdn"
#if [ -n "$ip_ext" ]; then
# printf "${GY}%-7s:${NC} %s ${GY}(ext:${NC} %s${GY})${NC}\n" "IP" "${ip_int:--}" "$ip_ext"
#else
# line "IP" "${ip_int:--}"
#fi
#line "Uptime" "$upt"
#printf "${GY}%-7s:${NC} %s cores, load %s (1/5/15)\n" "CPU" "$cores" "$load"
#printf "${GY}%-7s:${NC} %s MiB used / %s MiB total\n" "RAM" "$mem_used" "$mem_total"
#printf "${GY}%-7s:${NC} %s MiB used / %s MiB total\n" "SWAP" "$swap_used" "$swap_total"
#line "Disk /" "${disk_root:-'-'}"
#line "Disk/var" "${disk_var:-'-'}"
#
## App/Installer Infos
#[ -n "${LE_EMAIL:-}" ] && line "LE Mail" "$LE_EMAIL"
#[ -n "${UI_HOST:-}" ] && line "UI" "$UI_HOST"
#[ -n "${WEBMAIL_HOST:-}" ] && line "Webmail" "$WEBMAIL_HOST"
#[ -n "${MAIL_HOSTNAME:-}" ]&& line "MX" "$MAIL_HOSTNAME"
#if [ -n "${PROXY_MODE:-}" ]; then
# if [ "$PROXY_MODE" = "1" ]; then
# line "Proxy" "ja (NPM: ${NPM_IP:-unbekannt})"
# elif [ "$PROXY_MODE" = "dev" ]; then
# line "Proxy" "Entwicklungsmodus"
# else
# line "Proxy" "nein"
# fi
#fi
#
## Services
#printf "${WH}\nServices:${NC}\n"
#printf " nginx … %b\n" "$(svc_state nginx)"
#printf " mariadb … %b\n" "$(svc_state mariadb)"
#printf " redis-server … %b\n" "$(svc_state redis-server)"
#printf " postfix … %b\n" "$(svc_state postfix)"
#printf " dovecot … %b\n" "$(svc_state dovecot)"
#printf " mailwolt-ws … %b\n" "$(svc_state mailwolt-ws)"
#printf " mailwolt-queue … %b\n" "$(svc_state mailwolt-queue)"
#printf " mailwolt-schedule … %b\n" "$(svc_state mailwolt-schedule)"
#
## Zertifikatskurzinfo (nur wenn vorhanden)
#show_cert_exp(){
# local name="$1" path="$2"
# if [ -r "$path" ]; then
# local exp
# exp="$(openssl x509 -in "$path" -noout -enddate 2>/dev/null | sed 's/notAfter=//')"
# [ -n "$exp" ] && printf "${GY}%s cert:${NC} expires %s\n" "$name" "$exp"
# fi
#}
#show_cert_exp "UI" "/etc/ssl/ui/fullchain.pem"
#show_cert_exp "Webmail" "/etc/ssl/webmail/fullchain.pem"
#show_cert_exp "MX" "/etc/ssl/mail/fullchain.pem"
#
#exit 0
#SH
#chmod 755 /usr/local/bin/mw-motd
#
#if [[ -d /etc/update-motd.d ]]; then
# cat >/etc/update-motd.d/10-mailwolt <<'SH'
##!/usr/bin/env bash
#/usr/local/bin/mw-motd
#SH
# chmod +x /etc/update-motd.d/10-mailwolt
# [[ -f /etc/update-motd.d/50-motd-news ]] && chmod -x /etc/update-motd.d/50-motd-news || true
#else
# cat >/etc/profile.d/10-mailwolt-motd.sh <<'SH'
#case "$-" in *i*) /usr/local/bin/mw-motd ;; esac
#SH
#fi
#: > /etc/motd 2>/dev/null || true
#
#
#
##cat >/usr/local/bin/mw-motd <<'SH'
###!/usr/bin/env bash
##set -euo pipefail
##NC="\033[0m"; CY="\033[1;36m"; GR="\033[1;32m"; YE="\033[1;33m"; RD="\033[1;31m"; GY="\033[0;90m"
##printf "\033[1;36m"
##cat <<'ASCII'
##:::: :::: ::: ::::::::::: ::: ::: ::: :::::::: ::: :::::::::::
##+:+:+: :+:+:+ :+: :+: :+: :+: :+: :+: :+: :+: :+: :+:
##+:+ +:+:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+
##+#+ +:+ +#+ +#++:++#++: +#+ +#+ +#+ +:+ +#+ +#+ +:+ +#+ +#+
##+#+ +#+ +#+ +#+ +#+ +#+ +#+ +#+#+ +#+ +#+ +#+ +#+ +#+
###+# #+# #+# #+# #+# #+# #+#+# #+#+# #+# #+# #+# #+#
##### ### ### ### ########### ########## ### ### ######## ########## ###
##ASCII
##printf "\033[0m\n"
##now="$(date '+%Y-%m-%d %H:%M:%S %Z')"
##fqdn="$(hostname -f 2>/dev/null || hostname)"
##ip_int="$(hostname -I 2>/dev/null | awk '{print $1}')"
##ip_ext=""; command -v curl >/dev/null 2>&1 && ip_ext="$(curl -s --max-time 1 https://ifconfig.me || true)"
##upt="$(uptime -p 2>/dev/null || true)"
##cores="$(nproc 2>/dev/null || echo -n '?')"
##load="$(awk '{print $1" / "$2" / "$3}' /proc/loadavg 2>/dev/null)"
##svc(){ systemctl is-active --quiet "$1" && echo -e "${GR}OK${NC}" || echo -e "${RD}FAIL${NC}"; }
##printf "${CY}Information as of:${NC} ${YE}%s${NC}\n" "$now"
##printf "${GY}FQDN :${NC} %s\n" "$fqdn"
##if [ -n "$ip_ext" ]; then printf "${GY}IP :${NC} %s ${GY}(ext:${NC} %s${GY})${NC}\n" "${ip_int:-?}" "$ip_ext"; else printf "${GY}IP :${NC} %s\n" "${ip_int:-?}"; fi
##printf "${GY}Uptime :${NC} %s\n" "${upt:-?}"
##printf "${GY}Cores :${NC} %s\n" "$cores"
##printf "${GY}Load :${NC} %s (1/5/15)\n" "${load:-?}"
##printf "${GY}Svc :${NC} postfix: $(svc postfix) dovecot: $(svc dovecot) nginx: $(svc nginx) mariadb: $(svc mariadb) redis: $(svc redis)\n"
##SH
##chmod +x /usr/local/bin/mw-motd
#
##cat >/usr/local/bin/mw-motd <<'SH'
###!/usr/bin/env bash
### bewusst KEIN "set -e"; MOTD soll nie hart abbrechen
##set -u
##
### Farben
##NC="\033[0m"; CY="\033[1;36m"; GR="\033[1;32m"; YE="\033[1;33m"; RD="\033[1;31m"; GY="\033[0;90m"; WH="\033[1;37m"
##
### Installer-Variablen (optional)
##UI_HOST=""; WEBMAIL_HOST=""; MAIL_HOSTNAME=""; LE_EMAIL=""; PROXY_MODE=""; NPM_IP=""
##[ -r /etc/mailwolt/installer.env ] && . /etc/mailwolt/installer.env || true
### Aus .env (falls vorhanden)
##if [ -r /var/www/mailwolt/.env ]; then
## LE_EMAIL="${LE_EMAIL:-$(grep -E '^LE_EMAIL=' /var/www/mailwolt/.env 2>/dev/null | sed 's/^LE_EMAIL=//')}"
## PROXY_MODE="${PROXY_MODE:-$(grep -E '^PROXY_MODE=' /var/www/mailwolt/.env 2>/dev/null | sed 's/^PROXY_MODE=//')}"
## NPM_IP="${NPM_IP:-$(grep -E '^NPM_IP=' /var/www/mailwolt/.env 2>/dev/null | sed 's/^NPM_IP=//')}"
##fi
##
### Header
##printf "${CY}"
##cat <<'ASCII'
##:::: :::: ::: ::::::::::: ::: ::: ::: :::::::: ::: :::::::::::
##+:+:+: :+:+:+ :+: :+: :+: :+: :+: :+: :+: :+: :+: :+:
##+:+ +:+:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+
##+#+ +:+ +#+ +#++:++#++: +#+ +#+ +#+ +:+ +#+ +#+ +:+ +#+ +#+
##+#+ +#+ +#+ +#+ +#+ +#+ +#+ +#+#+ +#+ +#+ +#+ +#+ +#+
###+# #+# #+# #+# #+# #+# #+#+# #+#+# #+# #+# #+# #+#
##### ### ### ### ########### ########## ### ### ######## ########## ###
##ASCII
##printf "${NC}\n"
##
### Safe-Helfer (niemals Script killen)
##grab() { eval "$1" 2>/dev/null || true; }
##line() { printf "${GY}%-7s:${NC} %s\n" "$1" "$2"; }
##
### Systemdaten
##now="$(date '+%Y-%m-%d %H:%M:%S %Z' 2>/dev/null || echo -n '-')"
##fqdn="$(hostname -f 2>/dev/null || hostname 2>/dev/null || echo -n '-')"
##ip_int="$(hostname -I 2>/dev/null | awk '{print $1}' 2>/dev/null || true)"
##ip_ext="$(curl -fsS --max-time 1 https://ifconfig.me 2>/dev/null || true)"
##upt="$(uptime -p 2>/dev/null || echo -n '-')"
##cores="$(nproc 2>/dev/null || echo -n '-')"
##load="$(awk '{print $1" / "$2" / "$3}' /proc/loadavg 2>/dev/null || echo -n '-')"
##
### RAM/SWAP (MiB)
##mem_total="$(awk '/MemTotal/ {print int($2/1024)}' /proc/meminfo 2>/dev/null || echo -n '-')"
##mem_avail="$(awk '/MemAvailable/ {print int($2/1024)}' /proc/meminfo 2>/dev/null || echo -n '0')"
##mem_used=$(( ${mem_total:-0}-${mem_avail:-0} ))
##swap_total="$(awk '/SwapTotal/ {print int($2/1024)}' /proc/meminfo 2>/dev/null || echo -n '-')"
##swap_free="$(awk '/SwapFree/ {print int($2/1024)}' /proc/meminfo 2>/dev/null || echo -n '0')"
##swap_used=$(( ${swap_total:-0}-${swap_free:-0} ))
##
### Disks
##disk_line(){ df -hP "$1" 2>/dev/null | awk 'NR==2{printf "%s/%s (%s used)", $3,$2,$5}'; }
##disk_root="$(disk_line /)"
##disk_var="$(disk_line /var)"
##
##svc_state(){
## local unit="$1"
## if systemctl is-active --quiet "$unit"; then
## printf "${GR}OK${NC}"
## else
## printf "${RD}FAIL${NC}"
## fi
##}
##
### Ausgabe
##printf "${CY}Information as of:${NC} ${YE}%s${NC}\n" "$now"
##line "FQDN" "$fqdn"
##if [ -n "$ip_ext" ]; then
## printf "${GY}%-7s:${NC} %s ${GY}(ext:${NC} %s${GY})${NC}\n" "IP" "${ip_int:--}" "$ip_ext"
##else
## line "IP" "${ip_int:--}"
##fi
##line "Uptime" "$upt"
##printf "${GY}%-7s:${NC} %s cores, load %s (1/5/15)\n" "CPU" "$cores" "$load"
##printf "${GY}%-7s:${NC} %s MiB used / %s MiB total\n" "RAM" "$mem_used" "$mem_total"
##printf "${GY}%-7s:${NC} %s MiB used / %s MiB total\n" "SWAP" "$swap_used" "$swap_total"
##line "Disk /" "${disk_root:-'-'}"
##line "Disk/var" "${disk_var:-'-'}"
##
### App/Installer Infos
##[ -n "${LE_EMAIL:-}" ] && line "LE Mail" "$LE_EMAIL"
##[ -n "${UI_HOST:-}" ] && line "UI" "$UI_HOST"
##[ -n "${WEBMAIL_HOST:-}" ] && line "Webmail" "$WEBMAIL_HOST"
##[ -n "${MAIL_HOSTNAME:-}" ]&& line "MX" "$MAIL_HOSTNAME"
##if [ -n "${PROXY_MODE:-}" ]; then
## if [ "$PROXY_MODE" = "1" ]; then
## line "Proxy" "ja (NPM: ${NPM_IP:-unbekannt})"
## elif [ "$PROXY_MODE" = "dev" ]; then
## line "Proxy" "Entwicklungsmodus"
## else
## line "Proxy" "nein"
## fi
##fi
##
### Services
##printf "${WH}\nServices:${NC}\n"
##printf " nginx … %b\n" "$(svc_state nginx)"
##printf " mariadb … %b\n" "$(svc_state mariadb)"
##printf " redis-server … %b\n" "$(svc_state redis-server)"
##printf " postfix … %b\n" "$(svc_state postfix)"
##printf " dovecot … %b\n" "$(svc_state dovecot)"
##printf " mailwolt-ws … %b\n" "$(svc_state mailwolt-ws)"
##printf " mailwolt-queue … %b\n" "$(svc_state mailwolt-queue)"
##printf " mailwolt-schedule … %b\n" "$(svc_state mailwolt-schedule)"
##
### Zertifikatskurzinfo (nur wenn vorhanden)
##show_cert_exp(){
## local name="$1" path="$2"
## if [ -r "$path" ]; then
## local exp
## exp="$(openssl x509 -in "$path" -noout -enddate 2>/dev/null | sed 's/notAfter=//')"
## [ -n "$exp" ] && printf "${GY}%s cert:${NC} expires %s\n" "$name" "$exp"
## fi
##}
##show_cert_exp "UI" "/etc/ssl/ui/fullchain.pem"
##show_cert_exp "Webmail" "/etc/ssl/webmail/fullchain.pem"
##show_cert_exp "MX" "/etc/ssl/mail/fullchain.pem"
##
##exit 0
##SH
##chmod 755 /usr/local/bin/mw-motd
log "[✓] MOTD installiert."

View File

@ -203,7 +203,7 @@ CLAMAV_ENABLE=${CLAMAV_ENABLE}
OPENDMARC_ENABLE=${OPENDMARC_ENABLE}
FAIL2BAN_ENABLE=${FAIL2BAN_ENABLE}
BACKUP_ONCALENDAR="*-*-* 03:00:00"
BACKUP_ONCALENDAR="${BACKUP_ONCALENDAR:-*-*-* 03:00:00}"
BACKUP_ENABLED=0
BACKUP_INTERVAL=daily
BACKUP_RETENTION_DAYS=7