Różne sztuczki i kruczki, które wyszły przy przenoszeniu poczty pomiędzy serwerami
Backup sasldb2
Przy migracji serwera jest możliwe przeniesienie zawartości bazy /usr/local/etc/sasldb2:
# na bieżącym serwerze:
#
db_dump-5 -p /usr/local/etc/sasldb2 > /tmp/sasldb2.backup
# na nowym serwerze:
#
cat /tmp/sasldb2.backup | db_load-5 /usr/local/etc/sasldb2
Sprawdzenie rozbieżności pomiędzy bazą danych, a katalogami na dysku
# zgodnie z dokumentacją może być "ciężkie" dla dysku
#
/usr/local/cyrus/bin/ctl_mboxlist -v
Naprawa brakujących katalogów, plików na dysku, które są w bazie
su - cyrus -c "/usr/local/cyrus/bin/reconstruct -x user.tcmagda"
su - cyrus -c "/usr/local/cyrus/bin/reconstruct -r user.tcmagda"
Kopiowanie kilku skrzynek z całego podrzewa OpenLDAP (tworzenie archiwum)
for m in `ldapsearch -xLLL -b 'ou=__domena__,ou=smtpd,dc=bsdserwis,dc=com' objectClass=person uid | awk '/^uid/ {print $2}'`
do
p=`echo $m | cut -c1`
echo -n "Archiving $m ..."
tar -cf /opt/backups/mx/_${m}.tar -C /var/spool/imap/$p/user/$m .
echo "Done."
done
Kopiowanie kilku skrzynek z całego podrzewa OpenLDAP (rozpakowanie archiwum)
for m in `ldapsearch -xLLL -b 'ou=__domena__,ou=smtpd,dc=bsdserwis,dc=com' objectClass=person uid | awk '/^uid/ {print $2}'`
do
p=`echo $m | cut -c1`
echo -n "Extracting $m ..."
tar -xf /opt/backups/mx/_${m}.tar -C /var/spool/imap/$p/user/$m
echo "Done."
done
Utworzenie skrzynek na podstawie poddrzewa OpenLDAP
Głównie dotyczy serwera typu archiwum skrzynek. Tylko oczywiście wcześniej musi działać serwer IMAP
ldapsearch -xLL -b 'ou=__domena__,ou=smtpd,dc=bsdserwis,dc=com' objectClass=person uid | awk '/^uid/ {print $2}' | xargs -n1 -t /usr/local/admin/vusers/mail_useradd --mbox
Sprawdzenie duplikatów dla bazy delivery
/usr/local/cyrus/bin/ctl_deliver -d | grep __Message_ID__
Usunięcie duplikatów z bazy delivery (aby móc ponownie wykonać program delivery)
/usr/local/cyrus/bin/cyr_expire -v -E __okres_czasu__ -p user.userid
gdzie okres_czasu jest domyślnie liczony w dniach. Szczegóły można znaleźć w manualu:
man -m /usr/local/cyrus/man cyr_expire
Wesłanie maili z pliku mbox do właściwej skrzynki
formail -ds sh -c 'cat > msg.$FILENO' < plik_mbox
for f in `ls msg.*`
do
cat $f | egrep -v '^From ' | /usr/local/cyrus/bin/deliver -a cyrus -m folder userid
done