Własny Serwer

Własny serwer – cz.6: serwer poczty IMAP

Ostatnia aktualizacja: 16 września 2023, 15:17



 
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.

Click to rate this post!
[Total: 0 Average: 0]

Jeden komentarz do “Własny serwer – cz.6: serwer poczty IMAP

  • „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.

    Odpowiedz

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna jest chroniona przez reCAPTCHA i Google Politykę Prywatności oraz obowiązują Warunki Korzystania z Usługi.