[3] Dovecot – Instalacja

4 lutego 2023 Wyłączono przez Adam [zicherka] Nogły

Instalacja

Zainstalować serwer Dovecot można na dwa sposoby: albo kompilując go, albo zainstalować z pakietu. Aby skompilować Postfix’a wykonaj (zalecam pozostawienie domyślnych ustawień, czyli naciskamy [Enter]):

root@vfbsd01:~ # cd /usr/ports/mail/dovecot
root@vfbsd01:/usr/ports/mail/dovecot # make config ; make install clean
root@vfbsd01:/usr/ports/mail/dovecot # rehash

Instalacja z pakietu wygląda następująco:

root@vfbsd01:~ # pkg install dovecot

Jeśli nie zrobiłeś tego przy instalacji Postfix’a to dodaj teraz wpis do [/etc/rc.conf] uruchamiający Postfix’a w czasie startu systemu:

root@vfbsd01:~ # mcedit /etc/rc.conf
# dodaj na końcu
dovecot_enable="YES"

Którą z opcji wybierzemy zależy to tylko od Nas. Instalacja z pakietu jest szybsza i bezproblemowa, zaś instalacja ze źródeł to kilka – do kilkudziesięciu minut pracy wraz z odpowiedziami na pytania odnośnie opcji kompilacji i/lub instalacji.

Konfiguracja

Aby pobrać e-maile, skonfigurujemy dovecot. Dovecot to klient POP i IMAP typu open source.
Od wersji 2.0 istnieje wiele plików konfiguracyjnych dla dovecot. Główny plik to [/usr/local/etc/dovecot/dovecot.conf], ale zobaczysz tam wiele dyrektyw dołączania, które wskazują na katalog [/usr/local/etc/dovecot/conf.d], w którym mamy wiele plików konfiguracyjnych. FreeBSD zawiera te pliki w innym katalogu, więc będziemy musieli skopiować je do właściwej lokalizacji.

root@vfbsd01:~ # cd /usr/local/etc/dovecot
root@vfbsd01:/usr/local/etc/dovecot # cp -R /usr/local/etc/dovecot/example-config/ .

Zrób kopię pliku [dovecot.conf] i wyedytuj go.

root@vfbsd01:~ # cp /usr/local/etc/dovecot/dovecot.conf /usr/local/etc/dovecot/dovecot.conf.old
root@vfbsd01:~ # mcedit /usr/local/etc/dovecot/dovecot.conf
# linia 24: odkomentuj i zmień
protocols = imap pop3 lmtp

Wykonaj kopie plików, które będziemy teraz edytować: [10-auth.conf], [10-logging.conf], [10-mail.conf], [10-master.conf], [10-ssl.conf].

root@vfbsd01:~ # cp /usr/local/etc/dovecot/conf.d/10-auth.conf /usr/local/etc/dovecot/conf.d/10-auth.conf.old
root@vfbsd01:~ # cp /usr/local/etc/dovecot/conf.d/10-logging.conf /usr/local/etc/dovecot/conf.d/10-logging.conf.old
root@vfbsd01:~ # cp /usr/local/etc/dovecot/conf.d/10-mail.conf /usr/local/etc/dovecot/conf.d/10-mail.conf.old
root@vfbsd01:~ # cp /usr/local/etc/dovecot/conf.d/10-master.conf /usr/local/etc/dovecot/conf.d/10-master.conf.old
root@vfbsd01:~ # cp /usr/local/etc/dovecot/conf.d/10-ssl.conf /usr/local/etc/dovecot/conf.d/10-ssl.conf.old

root@vfbsd01:~ # mcedit /usr/local/etc/dovecot/conf.d/10-auth.conf
# linia 10: odkomentuj i zmień
disable_plaintext_auth = no
# linia 122: zakomentuj
#!include auth-system.conf.ext
# linia 125: odkomentuj
!include auth-passwdfile.conf.ext

root@vfbsd01:~ # mcedit /usr/local/etc/dovecot/conf.d/10-logging.conf
# linia 7: odkomentuj i zmień
log_path = /var/log/dovecot.log
# linia 40: odkomentuj
auth_verbose = no
# linia 50: odkomentuj
auth_debug = no
# linia 61: odkomentuj
verbose_ssl = no

root@vfbsd01:~ # mcedit /usr/local/etc/dovecot/conf.d/10-mail.conf
# linia 29: dodaj
mail_home = /var/mail/vhosts/%d/%n
# linia 30: odkomentuj i zmień
mail_location = maildir:~
# linie 108-109: odkomentuj i zmień
mail_uid = 1002
mail_gid = 1002
# linia 114: odkomentuj i zmień
mail_privileged_group = vpostfix
# dodaj na końcu pliku
mail_home = /var/mail/vhosts/%d/%n

root@vfbsd01:~ # mcedit /usr/local/etc/dovecot/conf.d/10-master.conf
# linie 100-109: odkomentuj i zmień
unix_listener auth-userdb {
mode = 0666
user = postfix
group = postfix
}
# Postfix smtp-auth
unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}

root@vfbsd01:~ # mcedit /usr/local/etc/dovecot/conf.d/10-ssl.conf
# linia 6: odkomentuj i zmień
ssl = no
# linie 12-13: zakomentuj
#ssl_cert = </etc/ssl/certs/dovecot.pem
#ssl_key = </etc/ssl/private/dovecot.pem

Spójrz na plik [auth-passwdfile.conf.ext], a zobaczysz:

root@vfbsd01:~ # cat /usr/local/etc/dovecot/conf.d/auth-passwdfile.conf.ext
passdb {
driver = passwd-file
args = scheme=CRYPT username_format=%u /usr/local/etc/dovecot/users
}

userdb {
driver = passwd-file
args = username_format=%u /usr/local/etc/dovecot/users
}

To mówi nam, że nasza baza danych nazwy_użytkownika/hasła będzie w pliku [/usr/local/etc/dovecot/users]. Aby wygenerować hasło ze schematem haseł SHA512-CRYPT wykonaj:

root@vfbsd01:~ # doveadm pw -s SHA512-CRYPT
Enter new password: # wpisz hasło
Retype new password: # ponownie wpisz hasło
{SHA512-CRYPT}$6$J8ohGElFMxgb0ZKc$a2VYGH87fIbxLyg/vlxoPn2rz4rQYXmoXbIzg3OTlTnsqZuGvbM8nRRXX6Luf.lyuyLtWH3SZrz8tY8VQPLsm/

Jeśli chcesz użyć innego schematu hasła, spójrz na ten link:

https://wiki2.dovecot.org/Authentication/PasswordSchemes.

Teraz utwórz lub otwórz [/usr/local/etc/dovecot/users] i skopiuj i wklej hasło po nazwie użytkownika. W moim przypadku mam [adam@zicher.lab] z hasłem, które właśnie wygenerowałem. Więc linia będzie wyglądać tak jak poniżej.

root@vfbsd01:~ # mcedit /usr/local/etc/dovecot/users
adam@zicher.lab:{SHA512-CRYPT}$6$J8ohGElFMxgb0ZKc$a2VYGH87fIbxLyg/vlxoPn2rz4rQYXmoXbIzg3OTlTnsqZuGvbM8nRRXX6Luf.lyuyLtWH3SZrz8tY8VQPLsm/::::

Nie zapomnij dodać 4 dwukropków po haśle [::::]. Nawet jeśli użyjesz tego samego hasła dla użytkowników, zostaną one zaszyfrowane inaczej.
Problem z tym scenariuszem polega na tym, że użytkownicy końcowi nie będą mieli możliwości zmiany swoich haseł. Musisz więc podać im hasło i nie będą mogli ich zresetować. Ale istnieje wiele skryptów Perla, które mogą się tym zająć lub możesz napisać własny.
Uruchom Dovecot i sprawdź, czy nie ma błędów. W tym momencie powinniśmy mieć uruchomiony Dovecot i nasłuchiwać połączeń pop i imap.

root@vfbsd01:~ # service dovecot start
Starting dovecot.
root@vfbsd01:~ # tail /var/log/dovecot.log
Nov 20 18:27:50 master: Info: Dovecot v2.3.19.1 (9b53102964) starting up for imap, pop3, lmtp
root@vfbsd01:~ # sockstat -4 | grep :110
root dovecot 3625 22 tcp4 *:110 *:*
root@vfbsd01:~ # sockstat -4 | grep :143
root dovecot 3625 38 tcp4 *:143 *:*

Teraz sprawdźmy czy nasz Dovecot działa i nasłuchuje dla POP3. Możesz to zrobić z serwera za pomocą polecenia telnet.

root@vfbsd01:~ # telnet localhost 110
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
+OK Dovecot ready.
user adam@zicher.lab
+OK
pass TajneHaslo
+OK Logged in.
stat
+OK 0 0
list
+OK 0 messages:
.
quit
+OK Logging out.
Connection closed by foreign host.

Dla połączeń IMAP wygląda to następująco:

root@vfbsd01:~ # telnet localhost 143
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ AUTH=PLAIN] Dovecot ready.
? login adam@zicher.lab TajneHaslo
? OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS THREAD=ORDEREDSUBJECT MULTIAPPEND URL-PARTIAL CATENATE UNSELECT CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESE-ARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS BINARY MOVE SNIPPET=FUZZY PREVIEW=FUZZY PREVIEW STATUS=SIZE SAVEDATE LITERAL+ NOTIFY SPECIAL-USE] Logged in
? list "" "*"
* LIST (\HasNoChildren) "." INBOX
? OK List completed (0.001 + 0.000 secs).
? logout
* BYE Logging out
? OK Logout completed (0.001 + 0.000 secs).
Connection closed by foreign host.

Jeśli chcesz, możesz przetestować pobieranie tych e-maili z klienta poczty, takiego jak Outlook, Opera Mail lub dowolny preferowany MUA. W tym momencie serwer może odbierać wiadomości e-mail od innych osób, a Ty możesz odbierać te wiadomości z zewnątrz za pomocą protokołów POP i IMAP. To, co musimy teraz zrobić, to móc odpowiadać na te e-maile z zewnątrz (używając wybranego MUA). Obecnie port 25 jest zablokowany u niektórych głównych dostawców, więc użyjemy SASL w Postfix i użyjemy Dovecot do uwierzytelnienia użytkowników przy użyciu tej samej kombi-nacji nazwy użytkownika i hasła. Ponadto będziemy używać certyfikatów, więc zamiast POP3 i IMAP użyjemy ich bezpiecznych odpowiedników, POP3 i IMAP działających odpowiednio na portach 995 i 993. Dovecot powinien już nasłuchiwać na tych portach, więc możesz zezwolić na te porty na zaporze i zamknąć 110 i 143.