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 posiada już rozbudowane parametry dotyczące certyfikatów SSL. Aczkolwiek nadal (stan na 10.2025) nie dorobił się obsługi Server Name Indication (SNI). Jest to jeszcze do sprawdzenia, niemniej cyrus-imapd można przykryć HA Proxy. SNI zapewni haproxy
Obsługa SNI
Wg dokumentacji w ustawieniach SSL/TLS można wskazać dwa pliki z kluczem oraz dwa pliki z certyfikatem. Odpowiednio wersję RSA2048 oraz Eliptic Curve:
tls_server_cert: /usr/local/etc/ssl/cert_rsa2048,/usr/local/etc/ssl/cert_ec
tls_server_key: /usr/local/etc/ssl/key_rsa2048,/usr/local/etc/ssl/key_ec
tls_server_dhparam: /usr/local/etc/ssl/dhparam-key-rsa2048
Ustawienia poprawnych uprawnień do pliku z kluczem prywatnym
Po wgraniu plików z certyfikatami, należy się upewnić, że użytkownik cyrus ma prawo do czytania pliku z kluczem prywatnym - w przeciwnym przypadku imapd zwraca błędy. Można to zrobić na dwa sposoby:
# ustawienie właściwych uprawnień dla klucza prywatnego (szybko)
#
chmod 0644 /usr/local/etc/ssl/mx1.domain.tld.key.pem
# ustawienie właściwych uprawnień dla klucza prywatnego (precyzyjnie)
#
chmod 0640 /usr/local/etc/ssl/mx1.domain.tld.key.pem
chgrp cyrus /usr/local/etc/ssl/mx1.domain.tld.key.pem
TLS ciphers
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
Wspierane wersje TLS
Dodatkowo można wybrać wspierane wersje TLS:
tls_versions: tls1_2 tls1_3 tls1_1 tls1_0
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
Konfiguracja kalendarzy
Można uruchomić obsługę kalendarzy w serwerze imapd. Trzeba wykonać modyfikacje w plikach:
cyrus.conf
SERVICES {
# [...]
# these are only necessary if using HTTP for CalDAV, CardDAV, or RSS
http cmd="httpd" listen="127.0.0.1:48870" prefork=0
}
imapd.conf
# Konfiguracja us/lugi HTTP(S)
#
## httpmodules: caldav, tzdist
httpmodules: caldav
## zoneinfo_dir: /var/imap/tzid
# Konfiguracja kalendarzy
#
calendarprefix: #calendars
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 partycja 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.