From 32e7d475c7c7883ead22fbf2218cbb1836f6a49f Mon Sep 17 00:00:00 2001 From: Pascal Bouquet Date: Tue, 26 May 2026 12:45:38 +0200 Subject: [PATCH] update install.sh --- install.sh | 69 ++++++++++++++++++++++++++++++------------------------ 1 file changed, 38 insertions(+), 31 deletions(-) diff --git a/install.sh b/install.sh index 0a050f2..5a2cf91 100755 --- a/install.sh +++ b/install.sh @@ -1,44 +1,43 @@ #!/usr/bin/env bash set -e -# Sicherstellen, dass das Skript als root ausgeführt wird if [ "$EUID" -ne 0 ]; then echo "Bitte als root ausführen (sudo ./install.sh)" exit 1 fi -echo "=== Installiere pyarc-milter ===" +echo "=== Installiere pyarc-milter (Debian 12/13 konform) ===" -# 1. System-Abhängigkeiten installieren +# 1. System-Abhängigkeiten installieren (inklusive python3-venv) echo "--> Installiere System-Abhängigkeiten..." -if [ -f /etc/debian_version ]; then - apt-get update && apt-get install -y libmilter-dev python3-dev build-essential python3-pip -elif [ -f /etc/redhat-release ]; then - dnf install -y sendmail-devel python3-devel gcc python3-pip -fi +apt-get update && apt-get install -y libmilter-dev python3-dev build-essential python3-venv -# 2. Python-Pakete installieren -echo "--> Installiere Python-Pakete..." -pip3 install pymilter dkimpy authres cryptography --break-system-packages || pip3 install pymilter dkimpy authres cryptography +# 2. Virtuelle Python-Umgebung erstellen (Kein pip-Meckern mehr!) +echo "--> Erstelle isolierte virtuelle Umgebung..." +mkdir -p /usr/share/pyarc-venv +python3 -m venv /usr/share/pyarc-venv -# 3. Ordnerstrukturen anlegen -echo "--> Erstelle Verzeichnisse und setze Rechte..." +# 3. Pakete innerhalb der venv installieren +echo "--> Installiere Python-Bibliotheken in die venv..." +/usr/share/pyarc-venv/bin/pip install --upgrade pip +/usr/share/pyarc-venv/bin/pip install pymilter dkimpy authres cryptography + +# 4. Ordnerstrukturen anlegen +echo "--> Erstelle Verzeichnisse..." mkdir -p /etc/pyarc/certs mkdir -p /var/log/pyarc -# 4. Dateien kopieren -echo "--> Kopiere Skripte und Konfiguration..." -cp usr/local/bin/my_arc_milter.py /usr/local/bin/ +# 5. Skripte kopieren +echo "--> Kopiere Skripte..." +cp usr/local/bin/pyarc-milter /usr/local/bin/ cp usr/local/bin/pyarc-gen /usr/local/bin/ -chmod '+x' /usr/local/bin/my_arc_milter.py -chmod '+x' /usr/local/bin/pyarc-gen +chmod +x /usr/local/bin/pyarc-milter +chmod +x /usr/local/bin/pyarc-gen -# Nur kopieren, wenn noch keine Config existiert (Überschreibschutz) +# Config-Template kopieren falls nicht vorhanden if [ ! -f /etc/pyarc/milter.conf ]; then cp etc/pyarc/milter.conf.template /etc/pyarc/milter.conf echo "✔ Standard-Konfiguration unter /etc/pyarc/milter.conf angelegt." -else - echo "ℹ /etc/pyarc/milter.conf existiert bereits. Übersprungen." fi # Rechte für Postfix anpassen @@ -47,19 +46,27 @@ chown -R postfix:postfix /var/log/pyarc chmod 750 /etc/pyarc chmod 755 /var/log/pyarc -# 5. Systemd Service einrichten +# 6. Systemd Service anpassen und erstellen echo "--> Erstelle Systemd-Service..." -cp pyarc-milter.service /etc/systemd/system/ +cat < /etc/systemd/system/pyarc-milter.service +[Unit] +Description=Custom Postfix ARC Milter +After=network.target + +[Service] +Type=simple +# WICHTIG: Nutzt das Python aus der venv, damit alle Libs gefunden werden! +ExecStart=/usr/share/pyarc-venv/bin/python3 /usr/local/bin/pyarc-milter +Restart=on-failure +User=postfix + +[Install] +WantedBy=multi-user.target +EOF + systemctl daemon-reload systemctl enable pyarc-milter echo "==================================================" -echo "✔ Installation abgeschlossen!" -echo "==================================================" -echo "Nächste Schritte:" -echo "1. Passe /etc/pyarc/milter.conf an (auth_serv_id & Domains)." -echo "2. Generiere Keys mit: sudo pyarc-gen deine-domain.de" -echo "3. Starte den Service: sudo systemctl start pyarc-milter" -echo "4. Binde den Milter in die Postfix main.cf ein:" -echo " smtpd_milters = inet:127.0.0.1:8899" +echo "✔ Installation sauber und meckerfrei abgeschlossen!" echo "=================================================="