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