|
Rozmiar: 11556
Komentarz: * poprawki literówek dla poleceń ustawiających uprawnienia
|
Rozmiar: 11682
Komentarz: + url do acl-ek w imapd
|
| Usunięcia zostały oznaczone w ten sposób. | Dodatki zostały oznaczone w ten sposób. |
| Linia 263: | Linia 263: |
| 1. [[https://www.cyrusimap.org/imap/reference/admin/access-control/rights-reference.html|ACL w cyrus-imapd|target="_blank]] |
Wydrukuj tę dokumentację Pokaż jako slajdy
Spis Treści
- Konfiguracja Cyrus imapd 3.0.x
- Tworzenie kont UFQDN
- Przenoszenie konta (backup)
-
Tips and tricks
- Backup sasldb2
- Sprawdzenie rozbieżności pomiędzy bazą danych, a katalogami na dysku
- Naprawa brakujących katalogów, plików na dysku, które są w bazie
- Kopiowanie kilku skrzynek z całego podrzewa OpenLDAP (tworzenie archiwum)
- Kopiowanie kilku skrzynek z całego podrzewa OpenLDAP (rozpakowanie archiwum)
- Utworzenie skrzynek na podstawie poddrzewa OpenLDAP
- Sprawdzenie duplikatów dla bazy delivery
- Usunięcie duplikatów z bazy delivery (aby móc ponownie wykonać program delivery)
- Wesłanie maili z pliku mbox do właściwej skrzynki
- Migracja poczty w ramach serwera Cyrus-IMAPd
- Źródła w sieci internet
- Odnośniki do dokumentacji
Konfiguracja Cyrus imapd 3.0.x
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"
# at least one LMTP is required for delivery
lmtp cmd="lmtpd" listen="127.0.0.1:lmtp" prefork=0
lmtpunix cmd="lmtpd" listen="/var/imap/socket/lmtp" prefork=0
notify cmd="notifyd" listen="/var/imap/socket/notify" proto="udp" prefork=1
Konfiguracja imapd.conf
Konfiguracja dla urządzeń Apple
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: yes
allowapop: no
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).
Autokreacja wybranych folderów
autocreate_quota: 100000
autocreate_post: 1
autocreate_inbox_folders: Draft|Sent|Trash|Spam|Nonspam
Zabezpieczenie protokołów SSL/TLS
Serwer Cyrus IMAPd nie posiada dedykowanej opcji w celu podania DH parameters (tak jak można to zrobić w serwerze nginx lub apache). Niemniej można to zrobić poprzez "doklejenie" DH parameters (w formacie PEM) do pliku z kluczem:
cat /usr/local/etc/ssl/mx1.domain.tld.2048.dh.pem >> /usr/local/etc/ssl/mx1.domain.tld.key.pem
Drugim parametrem zabezpieczającym jest jawne podanie akceptowanych TLS ciphers:
tls_ciphers: ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
Konfiguracja informacji o serwerze
Domyślnie serwer pokazuje pełen baner o sobie: jakie oprogramowanie, wersja, etc. Można to zmniejszyć analogicznie do ustawień server_tokens w serwerze nginx:
serverinfo: min
Sprawdzenie poprawności konfiguracji
su -l cyrus -c "/usr/local/cyrus/sbin/cyr_info conf-lint -C /usr/local/etc/imapd.conf -M /usr/local//etc/cyrus.conf"
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 dla beadm
Zgodnie z zalecaną dokumentacją należy utworzyć partycje w razie konieczności (powinny być utworzone w trakcie instalacji serwera):
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).
# domyślna partycja
export _imap_spool_=/var/spool/imap
# ale czasami prtycja jest w innym miejscu,
export _imap_spool_=/opt/imap
# więc teraz łatwiej wykonywać polecenia dotyczące uprawnień
mkdir -p /var/imap/sieve /var/imap/user ${_imap_spool_}
chown cyrus:cyrus /var/imap/ /var/imap/user /var/imap/sieve ${_imap_spool_}
chmod 0750 ${_imap_spool_}
# ustawienia od razu uprawnień dla lmtpunix
chmod 0751 /var/imap
su - cyrus -c "/usr/local/cyrus/sbin/mkimap"
Dodanie podstawowych kont do bazy cyrus-sasl
# dodanie kont postmaster
saslpasswd2 postmaster@localhost.<domain>
saslpasswd2 postmaster@<hostname>
# pokazanie zawartości bazy sasldb2
sasldblistusers2
Utworzenie konta w OpenLDAP
Z analogicznym (jak powyżej) loginem oraz hasłem należy wykreować konto (SSO) w lokalnej bazie LDAP.
Tworzenie kont UFQDN
W przypadku tworzenia kont pocztowych w formacie UFQDN należy zmienić ustawienia saslauthd oraz dopisać kilka rzeczy w konfiguracji /usr/local/etc/imapd.conf:
admins: cyrus@localhost.wtp3.org postmaster@localhost.wtp3.org lmtpuser@localhost.wtp3.org cyrus postmaster lmtpuser
sieve_admins: cyrus@localhost.wtp3.org postmaster@localhost.wtp3.org lmtpuser@localhost.wtp3.org cyrus postmaster lmtpuser
loginrealms: gpharma.pl gpfinance.com.pl naszaginekologia.pl gph01.bsdserwis.com mx1.gpharma.pl
virtdomains: userid
Parametr loginrealms zapewnia, że w logach nie będzie komunikatów tego typu:
authentication failure: cross-realm login
Parametr virtdomains zapewnia rozbudowę katalogów w partition-default o nazwę domeny z nazwy użytkownika UFQDN. Więcej informcji można znaleźć w manualu.
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
Tips and tricks
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/sbin/ctl_mboxlist -v
Naprawa brakujących katalogów, plików na dysku, które są w bazie
su - cyrus -c "/usr/local/cyrus/sbin/reconstruct -x user.tcmagda"
su - cyrus -c "/usr/local/cyrus/sbin/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/sbin/ctl_deliver -d | grep __Message_ID__
Usunięcie duplikatów z bazy delivery (aby móc ponownie wykonać program delivery)
/usr/local/cyrus/sbin/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/sbin/deliver -a cyrus -m folder userid
done
Migracja poczty w ramach serwera Cyrus-IMAPd
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/sbin/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/sbin/deliver -a cyrus -m folder userid
Źródła w sieci internet
Odnośniki do dokumentacji
Konfiguracja protokołu LMTP
(c) 2004 - 2026 BSD Serwis Krzysztof Stryjek. W przypadku błędów, poprawek proszę kontaktować się z administratorem wiki.
