Własny serwer – cz.6: serwer poczty IMAP
Ostatnia aktualizacja: 21 listopada 2024, 17:57
W poprzedniej, piątej części cyklu Własny Serwer zainstalowaliśmy i skonfigurowaliśmy serwer poczty SMTP, który umożliwia odbieranie i wysyłanie poczty email w trybie tekstowym.
W tej części zainstalujemy i skonfigurujemy serwer poczty IMAP, który pozwoli na zarządzanie skrzynką pocztową za pomocą klienta pocztowego zainstalowanego na komputerze lokalnym.
Co to jest IMAP?
Z Wikipedii:
IMAP (ang. Internet Message Access Protocol) – internetowy protokół pocztowy zaprojektowany jako następca POP3. W przeciwieństwie do POP3, który umożliwia jedynie pobieranie i kasowanie poczty, IMAP pozwala na zarządzanie wieloma folderami pocztowymi oraz pobieranie i operowanie na listach znajdujących się na zdalnym serwerze.
Co to jest serwer IMAP?
Serwer IMAP to aplikacja serwerowa, która umożliwia komunikację pomiędzy programem pocztowym a serwerem poczty za pomocą protokołu IMAP.
Do celów tego wpisu użyjemy aplikacji Dovecot.
Co to jest Dovecot?
Dovecot jest serwerem poczty, którego głównym celem jest zapewnienie bezpieczeństwa i ekstremalnej niezawodności. Stara się skutecznie obsługiwać wszelkie błędy oraz sprawdzać, czy wszystkie dane są poprawne, dzięki czemu prawie niemożliwe jest wystąpienie awarii. Obsługuje mbox/Maildir i własne formaty DBOX/mdbox, a ponadto jest wystarczająco szybki, rozszerzalny i przenośny.
Porty UFW
W pierwszej kolejności otwórz porty, które będą przepuszczały komunikację pomiędzy serwerem IMAP a lokalnym programem pocztowym:
ufw allow 80,443,587,465,143,993/tcp
systemctl restart ufw
Certyfikat TSL/SSL
W 3 części cyklu zainstalowaliśmy aplikację 'cerbot’ służącą do szyfrowania połączenia za pomocą Let’s Encrypt. Użyjemy jej ponownie do zabezpieczenia połączenia z subdomeną pocztową.
Konfiguracja Apache – wyedytuj plik:
/etc/apache2/sites-available/000-default.conf
dodając do niego konfigurację subdomeny pocztowej (tutaj: mail.linuxiarze.pl):
##### mail.linuxiarze.pl #####
<VirtualHost *:80>
ServerAdmin admin@mail.linuxiarze.pl
ServerName mail.linuxiarze.pl
ServerAlias www.mail.linuxiarze.pl mail.linuxiarze.pl
DocumentRoot /var/www/mail.linuxiarze.pl/public_html
DirectoryIndex index.html index.php index.htm
<Directory /var/www/mail.linuxiarze.pl/public_html/>
Options All Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error-mail-linuxiarze-pl.log
CustomLog ${APACHE_LOG_DIR}/access-mail-linuxiarze-pl.log combined
</VirtualHost>
oraz:
/etc/apache2/sites-available/default-ssl.conf
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin admin@mal.linuxiarze.pl
ServerName mail.linuxiarze.pl
ServerAlias www.mail.linuxiarze.pl mail.linuxiarze.pl
DocumentRoot /var/www/mail.linuxiarze.pl/private_html
<Directory /var/www/mail.linuxiarze.pl/private_html/>
Options All Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error-mail-linuxiarze-pl.log
CustomLog ${APACHE_LOG_DIR}/access-mail-linuxiarze-pl.log combined
SSLEngine on
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
</IfModule>
Konfiguracja Nginx – dodaj do pliku:
/etc/nginx/sites-available/default
##### mail.linuxiarze.pl #####
server {
listen 80;
server_name mail.linuxiarze.pl www.mail.linuxiarze.pl;
root /var/www/mail.linuxiarze.pl/public_html;
index index.php index.html index.htm;
location /
{
try_files $uri $uri/ =404;
}
}
server {
listen 443 ssl http2;
server_name mail.linuxiarze.pl www.mail.linuxiarze.pl;
root /var/www/mail.linuxiarze.pl/private_html;
index index.php index.html index.htm;
location /
{
try_files $uri $uri/ =404;
}
}
Następnie utwórz katalog dla subdomeny:
mkdir -p /var/www/mail.linuxiarze.pl/public_html
oraz dowiązanie symboliczne:
ln -s /var/www/mail.linuxiarze.pl/public_html /var/www/mail.linuxiarze.pl/private_html
Zrestartuj Apache:
systemclt restart apache2
lub Nginx:
systemctl restart nginx
Pobierz certyfikat, bez instalacji dla Apache:
certbot certonly -a apache --agree-tos --no-eff-email --staple-ocsp --email login@linuxiarze.pl -d mail.linuxiarze.pl
i przeładuj ponownie Apache.
lub dla Nginx:
certbot certonly -a nginx --agree-tos --no-eff-email --staple-ocsp --email login@linuxiarze.pl -d mail.linuxiarze.pl
i przeładuj ponownie Nginx.
Konfiguracja Postfix
W poprzedniej części zainstalowaliśmy serwer poczty SMPT, a właściwie aplikację do jej obsługi Postfix.
Aby serwer IMAP działał poprawnie, trzeba zmienić ustawienia do przekazywania poczty do serwera IMAP.
Wyedytuj plik konfiguracyjny Postfix dodając do niego obsługę usługi Submission:
nano /etc/postfix/master.cf
Domyślnie sekcja Submission jest zakomentowana, należy ją odkomentować:
submission inet n - y - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_tls_wrappermode=no
-o smtpd_sasl_auth_enable=yes
-o smtpd_relay_restrictions=permit_sasl_authenticated,reject
-o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
-o smtpd_sasl_type=dovecot
-o smtpd_sasl_path=private/auth
Usługa będzie działała na porcie 587, dla Microsoft Outlook działa na porcie 465.
Następnie wyedytuj plik main.cf aktywując szyfrowanie TLS:
nano /etc/postfix/main.cf
#Aktywuj TLS Encryption dla Postfix
smtpd_tls_cert_file=/etc/letsencrypt/live/mail.linuxiarze.pl/fullchain.pem
smtpd_tls_key_file=/etc/letsencrypt/live/mail.linuxiarze.pl/privkey.pem
smtpd_tls_security_level=may
smtpd_tls_loglevel = 1
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_security_level = may
smtp_tls_loglevel = 1
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtpd_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtp_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtp_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
Przeładuj Postfix:
systemctl restart postfix
Możesz sprawdzić, czy Postfix nasłuchuje na portach 587 i 465:
ss -lnpt | grep master
Instalacja Dovecot
apt install dovecot-core dovecot-imapd dovecot-lmtpd
Wyedytuj plik konfiguracyjny dovecot:
nano /etc/dovecot/dovecot.conf
Aktywując działanie protokołu IMAP i LMTP:
protocols = imap lmtp
Domyślnie Postfix i Dovecot używają formatu mbox do przechowywania e-maili.
E-maile każdego użytkownika są przechowywane w jednym pliku:
/var/mail/username
Możesz uruchomić następujące polecenie, aby sprawdzić katalog zapisu poczty:
postconf mail_spool_directory
W dzisiejszych czasach prawie zawsze używa się formatu Maildir do przechowywania wiadomości e-mail.
Wyedytuj plik konfiguracyjny, aby zmienić lokalizację skrzynki pocztowej:
nano /etc/dovecot/conf.d/10-mail.conf
zmieniając z:
mail_location = mbox:~/mail:INBOX=/var/mail/%u
na:
mail_location = maildir:~/Maildir
Następnie dodaj dovecot do grupy użytkowników poczty, aby Dovecot mógł czytać skrzynkę odbiorczą:
adduser dovecot mail
Teraz wyedytuj plik konfiguracyjny 10-master.conf:
nano /etc/dovecot/conf.d/10-master.conf
Zmień definicję usługi lmtp na następującą:
service lmtp {
unix_listener /var/spool/postfix/private/dovecot-lmtp {
mode = 0600
user = postfix
group = postfix
}
}
oraz:
service auth {
unix_listener /var/spool/postfix/private/auth {
mode = 0660
user = postfix
group = postfix
}
}
Ponownie wyedytuj plik konfiguracyjny Postfix:
nano /etc/postfix/main.cf
Dodaj następujące wiersze na końcu pliku. Pierwsza linia mówi Postfixowi, aby dostarczał przychodzące wiadomości e-mail do lokalnego magazynu wiadomości za pośrednictwem serwera Dovecot LMTP. Druga linia wyłącza SMTPUTF8 w Postfixie, ponieważ Dovecot-LMTP nie obsługuje tego rozszerzenia e-mail.
mailbox_transport = lmtp:unix:private/dovecot-lmtp
smtputf8_enable = no
Konfigurowanie mechanizmu uwierzytelniania użytkownika:
nano /etc/dovecot/conf.d/10-auth.conf
Odkomentuj linię:
disable_plaintext_auth = yes
oraz:
auth_username_format = %n
dodając na koniec linii '%n’.
zmień linię:
auth_mechanisms = plain
na:
auth_mechanisms = plain login
Konfiguracja szyfrowania TSL
nano /etc/dovecot/conf.d/10-ssl.conf
Zmień:
ssl = yes
na:
ssl = required
oraz certyfikat:
ssl_cert = </etc/dovecot/private/dovecot.pem
ssl_key = </etc/dovecot/private/dovecot.key
na certyfikat od Let’s Encrypt:
ssl_cert = </etc/letsencrypt/live/mail.linuxiarze.pl/fullchain.pem
ssl_key = </etc/letsencrypt/live/mail.linuxiarze.pl/privkey.pem
Zmień linię:
#ssl_prefer_server_ciphers = no
na:
ssl_prefer_server_ciphers = yes
oraz:
#ssl_min_protocol = TLSv1
na:
ssl_min_protocol = TLSv1.2
Zrestartuj Postfix i Dovecot:
systemctl restart postfix dovecot
Konfiguracja klienta lokalnego
Otwórz teraz swojego lokalnego klienta poczty e-mail, np. Mozilla Thunderbird.
Przejdź do Edycja -> Ustawienia konta -> Akcje konta -> Dodaj konto pocztowe, aby dodać konto pocztowe:
– W sekcji serwera poczty przychodzącej wybierz protokół IMAP, wpisz mail.twoja-domena.com jako nazwę serwera, wybierz port 143 i STARTTLS. Wybierz normalne hasło jako metodę uwierzytelniania.
– W sekcji wychodzącej wybierz protokół SMTP, wpisz mail.twoja-domena.com jako nazwę serwera, wybierz port 587 i STARTTLS. Wybierz normalne hasło jako metodę uwierzytelniania.
Możesz także użyć portu 993 z szyfrowaniem SSL/TLS dla IMAP i portu 465 z szyfrowaniem SSL/TLS dla SMTP. NIE należy używać portu 25 jako portu SMTP w klientach poczty do przesyłania wychodzących wiadomości e-mail.
Jeśli potrzebujesz więcej wiadomości użyj stron man:
man postfix
man dovecot
man smtp
man imapd
Na tym możemy zakończyć konfiguracją serwera pocztowego.
Jeśli chcesz skonfigurować więcej kont pocztowych, np. dla kilku domen, to wymagana jest konfiguracja serwera pocztowego z użyciem systemu bazodanowego i pomocnego, w takim przypadku PostfixAdmin.
W następnym, siódmym już tutorialu, zadbamy o bezpieczeństwo poczty email instalując program antywirusowy i antyspamowy.
„Usługa będzie działała na porcie 587, dla Microsoft Outlook działa na porcie 465.”
Jest to nieco niejasne. Z tego co przypuszczam, to aby uruchomić usługę na porcie 465 trzeba w master.cf oprócz submission skonfigurować smtps. A o tym nic w artykule nie ma.