mailwolt-installer/scripts/99-summary.sh

81 lines
3.5 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
source ./lib.sh
log(){ printf "\033[1;32m[+]\033[0m %s\n" "$*"; }
ok(){ printf " [\033[1;32mOK\033[0m]\n"; }
fail(){printf " [\033[1;31mFAIL\033[0m]\n"; }
APP_USER="${APP_USER:-mailwolt}"
APP_GROUP="${APP_GROUP:-www-data}"
APP_DIR="${APP_DIR:-/var/www/${APP_USER}}"
UI_CERT="/etc/ssl/ui/fullchain.pem"
UI_KEY="/etc/ssl/ui/privkey.pem"
SCHEME="http"
SERVER_PUBLIC_IPV4="$(detect_ip)"
[[ -s "$UI_CERT" && -s "$UI_KEY" ]] && SCHEME="https"
UI_HOST="${UI_HOST:-}"
APP_URL="${APP_URL:-${SCHEME}://${SERVER_PUBLIC_IPV4}}"
if [[ -n "$UI_HOST" ]]; then
APP_URL="${SCHEME}://${UI_HOST}"
fi
MAIL_HOSTNAME="${MAIL_HOSTNAME:-${SERVER_PUBLIC_IPV4}}"
echo
echo "──────────────────────────────────────────────────────────────────────────────"
echo "✔ MailWolt Bootstrap fertig"
echo "──────────────────────────────────────────────────────────────────────────────"
printf " Aufruf UI: %s\n" "${APP_URL}"
printf " App Root: %s\n" "${APP_DIR}"
printf " Nginx Site: %s\n" "/etc/nginx/sites-available/${APP_USER}.conf"
printf " Mail-FQDN: %s\n" "${MAIL_HOSTNAME}"
echo
echo " Anmeldung: Keine vordefinierten Admin-Daten."
echo " Bitte zuerst registrieren (Erst-User wird Admin, danach"
echo " wird die Registrierung automatisch gesperrt)."
echo
# -------- Services ----------
printf "Services:\n"
svc(){
local name="$1"
printf " • %-10s … " "$name"
if systemctl is-active --quiet "$name"; then ok; else fail; fi
}
svc nginx
svc mariadb
svc redis-server
svc postfix
svc dovecot
svc "${APP_USER}-ws" || true
svc "${APP_USER}-schedule" || true
svc "${APP_USER}-queue" || true
echo
# -------- Ports / Smoke Test ----------
echo "──────────────────────────────────────────────────────────────────────────────"
echo " Smoke-Test (SMTP/IMAP/POP3 mit/ohne TLS)"
echo "──────────────────────────────────────────────────────────────────────────────"
check_port(){
local label="$1" cmd="$2"
printf "[%-3s] %-35s … " "$label" "$3"
if timeout 8s bash -lc "$cmd" >/dev/null 2>&1; then ok; else fail; fi
}
# SMTP family
check_port "25" 'printf "QUIT\r\n" | nc -w 3 127.0.0.1 25' "SMTP (EHLO)"
check_port "465" 'printf "QUIT\r\n" | openssl s_client -connect 127.0.0.1:465 -quiet -ign_eof' "SMTPS (TLS + EHLO)"
check_port "587" 'printf "EHLO x\r\nSTARTTLS\r\nQUIT\r\n" | openssl s_client -starttls smtp -connect 127.0.0.1:587 -quiet -ign_eof' "Submission (STARTTLS)"
# POP/IMAP
check_port "110" 'printf "QUIT\r\n" | nc -w 3 127.0.0.1 110' "POP3 (QUIT)"
check_port "995" 'printf "QUIT\r\n" | openssl s_client -connect 127.0.0.1:995 -quiet -ign_eof' "POP3S (TLS + QUIT)"
check_port "143" 'printf ". CAPABILITY\r\n. LOGOUT\r\n" | nc -w 3 127.0.0.1 143' "IMAP (CAPABILITY/LOGOUT)"
check_port "993" 'printf ". CAPABILITY\r\n. LOGOUT\r\n" | openssl s_client -connect 127.0.0.1:993 -quiet -ign_eof' "IMAPS (TLS + CAPABILITY/LOGOUT)"
echo