imapsync
Das übliche imapsync-Script mit allen wichtigen Optionen drin. Liest die Zugangsdaten aus einem Credfile, das nur Bash-Variablen beinhaltet. Annahmen:
- alle Postfächer haben gleiche Quell- und Zielserver
- alle Postfächer haben auf beiden Seiten das gleiche Passwort
Für ein neues Projekt einfach Script kopieren, Serverdaten direkt unten drin anpassen, Credfiles anlegen, badabing badaboom.
Credfile-Beispiel:
U_OLD="wp12345678-marvintest"
U_NEW="m01abcd2342"
PASS="dasistkeingutespasswort"
LOGNAME="marvin"
````
```bash
#!/bin/bash
check_env(){ [ -z "${!1}" ] && echo "$1 not defined" && exit 1; }
if [ -z "$1" ] || [ -n "$2" ]; then
echo "Script takes password as exactly one argument, exiting."
exit 1
fi
if [[ ! -f credfiles/"$1" ]]; then
echo "Credfile credfiles/$1 does not exist! Exiting."
exit 1
fi
source credfiles/"$1"
check_env U_OLD
check_env U_NEW
check_env PASS
check_env LOGNAME
now="$(date +%Y%m%d_%H%M%S%z)"
imapsync \
--dry \
--host1 wp12345678.mail.server-he.de \
--port1 993 \
--ssl1 \
--user1 "$U_OLD"\
--password1 "$PASS" \
--authmech1 LOGIN \
\
--host2 w1234abc.kasserver.com \
--port2 993 \
--ssl2 \
--user2 "$U_NEW" \
--password2 "$PASS" \
--authmech2 LOGIN \
\
--syncinternaldates \
--automap \
--subscribe \
--addheader \
--usecache \
--logfile log/imapsync-${LOGNAME}-${now}.log
Danach kann man noch mit diesem abgewandelten Script über die Postfächer drübergehen und Ergebnisse vergleichen.
#!/bin/bash
check_env(){ [ -z "${!1}" ] && echo "$1 not defined" && exit 1; }
if [ -z "$1" ] || [ -n "$2" ]; then
echo "Script takes credfile name as exactly one argument, exiting."
exit 1
fi
if [[ ! -f credfiles/"$1" ]]; then
echo "Credfile credfiles/$1 does not exist! Exiting."
exit 1
fi
source credfiles/"$1"
check_env U_OLD
check_env U_NEW
check_env PASS
check_env LOGNAME
now="$(date +%Y%m%d_%H%M%S%z)"
imapsync \
--host1 wp12345678.mail.server-he.de \
--port1 993 \
--ssl1 \
--user1 "$U_OLD"\
--password1 "$PASS" \
--authmech1 LOGIN \
\
--host2 w1234abc.kasserver.com \
--port2 993 \
--ssl2 \
--user2 "$U_NEW" \
--password2 "$PASS" \
--authmech2 LOGIN \
\
--justfoldersizes \
--automap
# --debugfolders