83 lines
3.5 KiB
Bash
83 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
|
|
}
|
|
|
|
sleep 6 || true
|
|
|
|
# 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 |