#!/bin/bash # batch_imapsync.sh - Führt IMAP-Sync für alle User im Hintergrund aus # Format der CSV: email@domain.com,SecretPassword123 HOST1=$1 HOST2=$2 CSV_FILE=$3 if [ -z "$HOST1" ] || [ -z "$HOST2" ] || [ -z "$CSV_FILE" ]; then echo "Usage: $0 " echo "Beispiel: $0 secure.emailsrvr.com 147.93.132.244 stxmaterials.csv" exit 1 fi # ====================================================================== # Die eigentliche Sync-Funktion (wird in den Hintergrund geschickt) # ====================================================================== run_sync_jobs() { TIMESTAMP=$(date +%Y%m%d_%H%M%S) LOG_DIR="sync_logs_$TIMESTAMP" mkdir -p "$LOG_DIR" echo "Beginne Sync-Lauf am $(date)" > "batch_master_${TIMESTAMP}.log" while IFS=, read -r email password; do email=$(echo "$email" | tr -d '\r' | xargs) password=$(echo "$password" | tr -d '\r' | xargs) [ -z "$email" ] && continue LOGFILE="$LOG_DIR/imapsync_${email}.log" echo "[$(date)] Syncing $email -> $LOGFILE" >> "batch_master_${TIMESTAMP}.log" # Führe Docker imapsync für den aktuellen User aus docker run --rm gilleslamiral/imapsync imapsync \ --host1 "$HOST1" --user1 "$email" --password1 "$password" --ssl1 \ --host2 "$HOST2" --user2 "$email" --password2 "$password" --ssl2 \ --automap > "$LOGFILE" 2>&1 < /dev/null done < "$CSV_FILE" echo "Alle Sync-Jobs beendet am $(date)" >> "batch_master_${TIMESTAMP}.log" } # ====================================================================== # Skript-Start: Entkopplung vom Terminal # ====================================================================== echo "🚀 Starte Batch-IMAP-Sync im Hintergrund..." # Rufe die Funktion auf, leite alle restlichen Ausgaben ins Nichts und schicke sie in den Hintergrund (&) run_sync_jobs /dev/null 2>&1 & echo "✅ Der Job läuft jetzt autark im Hintergrund (sequenziell)." echo "Du kannst das SSH-Terminal jetzt bedenkenlos schließen!" echo "Überwache den Gesamtfortschritt mit:" echo " tail -f batch_master_*.log" echo "Oder die Details eines einzelnen Postfachs mit:" echo " tail -f sync_logs_*/imapsync_.log"