[3] Dovecot – Instalacja
4 lutego 2023Instalacja
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.