Dopiski do /etc/services
Sam service sieve doczekał się oficjalnego wpisu w /etc/services jako 4190/tcp. Tak więc tylko te dwa wpisy (o ile będziemy korzystać z FUD lub LMTP).
# --- added by wtp for cyrus-imapd ------------------------------------
#
# dla LMTP należy wybrać jedno z dwóch
#
lmtp 4192/tcp
lmtp 4205/tcp
fud 4201/udp
A następnie wykonać przebudowę bazy serwisów:
/usr/sbin/services_mkdb -q -o /var/db/services.db /etc/services
Konfiguracja cyrus.conf
Należy zapewnić, aby poniższe linie były aktywne oraz zawierały wartości:
idled cmd="idled
lmtp cmd="lmtpd" listen="localhost:lmtp" prefork=0
notify cmd="notifyd" listen="/var/imap/socket/notify" proto="udp" prefork=1
Konfiguracja imapd.conf
Patrz załącznik
Dotyczy konfiguracji związanej z obsługą urządzeń Apple (iPhone). Apple nie respektuje ustawień login+hasło, tylko buduje dane do logowania na podstawie:
login@_serwer_poczty_przychodzacej_ hasło
Można to poprawić poprzez następujące kroki:
Poprawki w konfiguracji saslauthd
Poprawki w konfiguracji imapd.conf
allowplaintext: 1
allowapop: 0
Powyższe ustawienie wyłącza mechanizm APOP (authentication pop), które zawsze korzysta z bazy sasldb2 zamiast z mechanizmu wskazanego w parametrach samego saslauthd. Wyłączenie mechanizmu APOP powoduje, że urządzenie Apple zaczyna korzystać saslauthd (czyli bazy OpenLDAP).
Tworzenie drzewa katalogów
Jeżeli jest to partycja UFS, to po prostu tworzenie drzewa katalogów. Ale jeżeli korzystamy z ZFS, to warto stworzyć oddzielne partycje. Dzięki temu można będzie łatwo robić backupy (snapshoty), czy zrobić inne ustawienia (np. kompresja).
Utworzenie partycji ZFS
zfs create -o compress=gzip -o mountpoint=/var/imap tank/v/imap
zfs create -o mountpoint=/var/spool tank/v/spool
zfs create tank/v/spool/imap
Utworzenie partycji ZFS dla beadm
zfs create -o mountpoint=/var/imap sys/data/v/imap
zfs create sys/data/v/spool/imap
Utworzenie potrzebnych katalogów
(Poniższe również dla partycji UFS).
mkdir -p /var/imap/sieve /var/spool/imap/ /var/imap/user
chown cyrus:cyrus /var/imap/ /var/spool/imap/ /var/imap/user /var/imap/sieve
chmod 0750 /var/imap/ /var/spool/imap/
su - cyrus -c "mkimap"
Dodanie podstawowych kont do bazy cyrus-sasl
saslpasswd2 postmaster@localhost.<domain>
saslpasswd2 postmaster@<hostname>
sasldblistusers2
Utworzenie konta w OpenLDAP
Z analogicznym (jak powyżej) loginem oraz hasłem należyć wykreować konto (SSO) w lokalnej bazie LDAP.
Przenoszenie konta (backup)
W celu odzyskania backupu skrzynki cyrusa, należy wykonać następujące polecenia:
tar -czf _skrzynka.tgz -C /var/spool/imap/w/user/wtp .
/usr/local/cyrus/bin/ctl_mboxlist -d | grep wtp > mbox.dump
Zaś w nowym miejscu:
/usr/local/admin/vuser/useradd_mail.pl wtp
/usr/local/cyrus/bin/ctl_mboxlist -u < mbox.dump
tar -xzf _skrzynka.tgz -C /var/spool/imap/w/user/wtp
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:
db_dump-5 -p /usr/local/etc/sasldb2 > /tmp/sasldb2.backup
cat /tmp/sasldb2.backup | db_load-5 /usr/local/etc/sasldb2
Sprawdzenie rozbieżności pomiędzy bazą danych, a katalogami na 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
Chodzi o przeniesienie maili z jednej skrzynki (dowolny użytkownik) do drugiej skrzynki (lub folderu). Teoretycznie powinno zadziałać:
cat _plik_z_mailem | /usr/local/cyrus/bin/deliver -m folder userid
Ale to domyślnie nie zadziała, a po drugie ponowne próby nie dają pozytywnego rezultatu. A wszystko z powodu ochrony przed duplikatami.
Ustawienie poprawnie uprawnień do danego folderu
Domyślnie program deliver jest uruchamiany z uprawnieniami anonymous. Tak więc poprzez cyradm należy dać użytkownikowi anonymous uprawnienia p (raczej cała ścieżka w dla danego userid).
Migracja wiadomości jako użytkownik cyrus
Albo uruchomić program deliver z odpowiednimi opcjami:
cat _plik_z_mailem | /usr/local/cyrus/bin/deliver -a cyrus -m folder userid
Zmiany w konfiguracji w stosunku do starszych wersji
autocreate_quota: 100000
autocreate_post: 1
autocreate_inbox_folders: Draft|Sent|Trash|Spam|Nonspam
Sprawdzenie poprawności konfiguracji
su -l cyrus -c "/usr/local/cyrus/sbin/cyr_info conf-lint -C /etc/imapd.conf -M /etc/cyrus.conf"
Migracja z 2.4
Proces migracji do wersji 3.x został opisany w dokumentacji. Tutaj słów kilka o "migracji" z kopiowaniem danych pomiędzy serwerami (migracja arcjiwum).
Migracja danych (/var/spool/imap)
Migracja partycji z danymi (mailami) działa bez problemu. Po prostu należy przekopiować dane (np. z wykorzystaniem zfs send). Pliki sterujące samego demona zostaną poprawione za pomocą polecenia reconstruct
Migracja katalogu z konfiguracją (/var/imap)
Zgodnie z dokumentacją ten katalog również można po prostu przegrać. Niemniej nie działa to do końca poprawnie. Wynik polecenia file pokazał, że cyrus-imapd24 nie korzysta z BerkeleyDB, niemniej uruchomienie polecenia reconstruct powodowało błędy, zaś próba wesłania poczty zwracało komunikaty: No such mailbox. Rozwiązaniem problemu to założenie skrzynek od początku:
/usr/local/admin/vusers/mail_useradd --mbox <skrzynka>
Oczywiście polecenie można uruchomić w jakiejś pętli w celu utworzenia wszystkich skrzynek na serwerze.
reconstruct
Na koniec migracji należy uruchomić polecenie, które poprawi wszystkie pliki bazy w poszczególnych skrzynkach użytkowników.
su - cyrus -c "/usr/local/cyrus/sbin/reconstruct -V max"
UWAGA
W przypadku dużych skrzynek, proces może zająć sporo czasu.
strona domowa Cyrus IMAP
Upgrade do 3.0-stable
(c) 2004 - 2026 BSD Serwis Krzysztof Stryjek. W przypadku błędów, poprawek proszę kontaktować się z administratorem wiki.