Każda profesjonalna strona internetowa, każdy profesjonalny blog powinien posiadać adres e-mailowy, który służy np.: do kontaktu z czytelnikami, czy do wysyłania newslettera. Adres taki powinien znajdować się w domenie takiej samej jak strona internetowa, której on dotyczy. Zauważ, że niemal każda firma nie korzysta z adresów pokroju @gmail.com czy @hotmail.com. Zamiast tego posiadają adresy w formacie xxx@firma.pl Moja strona do tej pory korzystała z aliasu w domenie @outlook.com (kojarzycie pewnie, że to jest poczta od firmy Microsoft). Postanowiłem to zmienić. Skoro mam domenę kompikownia.pl, to adres emailowy również powinien znajdować się w tej domenie!
Aby dokonać takiego czynu, wymagane do spełnienia są tylko dwa warunki, z czego jeden jest kluczowy:
- posiadanie domeny (kluczowy)
- serwer VPS
Jeśli możesz sobie pozwolić na comiesięczne opłacanie abonamentu, możesz skorzystać np.: z usługi Gmail dla Firm, która pozwala bezproblemowo podłączyć własną domenę do gmailowej skrzynki. Wtedy nie musisz posiadać w ogóle własnego serwera – wszystko załatwi Gmail. Ja nie mam (jeszcze) firmy, ani tym bardziej funduszy na opłacanie abonamentu. Postawię więc serwer poczty na swoim serwerze VPS. Pokażę wam krok po kroku, jak takie cudo skonfigurować na systemie operacyjnym Debian Stretch.
Jakie oprogramowanie będzie nam potrzebne?
Naszym głównym celem w tym artykule będzie skonfigurowanie trzech aplikacji:
- Postfix – serwer poczty elektronicznej,. Zaimplementujemy za jego pomocą protokół SMTP, który będzie służył do wysyłania poczty.
- Dovecot – serwer IMAP. Dzięki niemu my (a także ewentualnie użytkownicy, którym stworzymy skrzynki) będą mogli przeglądać przesłaną do nich korespondencję.
- MySQL – baza danych, w której będziemy przechowywali informacje o założonych kontach emailowych.
Instalacja niezbędnych pakietów
Zanim zaczniemy jakąkolwiek konfigurację, najpierw musimy zainstalować wszystkie niezbędne pakiety. Nie przeraź się – jest ich kilka.
sudo apt-get install postfix postfix-mysql dovecot-core dovecot-imapd dovecot-lmtpd dovecot-mysql mysql-server
Podczas instalacji pojawi się okienko, w którym musimy wybrać rodzaj wstępnej konfiguracji.
Chcemy wyprowadzić nasz serwer poczty na świat. Powinniśmy więc wybrać opcję Internet site.
Następnym krokiem będzie wprowadzenie nazwy domeny, pod którą będzie widoczny nasz serwer.
W naszym wypadku będzie to oczywiście kompikownia.pl.
Na tym kończy się proces instalacji pakietów. Rozpoczyna za to proces konfiguracji.
MySQL – podstawowa konfiguracja dla Postfix i Dovecot
W bazie danych MySQL przechowywani będą tzw. virtual users. Czyli po prostu użytkownicy naszej poczty wraz z przypisanymi do nich emailami i hasłami.
Pierwszym krokiem będzie utworzenie konta użytkownika, za pomocą którego serwer email będzie łączył się z bazą danych. Najpierw logujemy się do bazy danych.
sudo mysql -u root -p
Następnie tworzymy nową bazę, w której będziemy przechowywali informacje.
CREATE DATABASE mailserver
Tworzymy konto użytkownika, za pomocą którego serwer pocztowy będzie łączył się z bazą danych. (Zamiast mailuserpass wstawiasz swoje hasło)
GRANT SELECT ON mailserver.* TO ‘mailuser’@’127.0.0.1’ IDENTIFIED BY ‘mailuserpass’;
Następnie powinniśmy „odświeżyć przywileje”. Dzięki temu MySQL załaduje sobie nowych użytkowników do pamięci nie wymagając restartu całego serwera.
FLUSH PRIVILEGES;
MySQL – tworzenie niezbędnych tabelek dla Postfix i Dovecot
Przełączamy się do stworzonej na samym początku bazy.
USE mailserver;
Kolejnym krokiem który wykonamy jest utworzenie odpowiednich tabelek. Pierwsza z nich będzie przechowywała domeny, w ramach których użytkownicy będą posiadali adresy email.
CREATE TABLE `virtual_domains` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Kolejna tabela będzie przechowywała wszystkie adresy email i hasła zarejestrowane w naszym serwerze poczty.
CREATE TABLE `virtual_users` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`domain_id` INT(11) NOT NULL,
`password` VARCHAR(106) NOT NULL,
`email` VARCHAR(100) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `email` (`email`),
FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Ostatnia tabela, którą stworzymy będzie przechowywała aliasy (wiadomości wysłane na alias zostaną przekierowane do skrzynki przypisanej do tego aliasu).
CREATE TABLE `virtual_aliases` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`domain_id` INT(11) NOT NULL,
`source` VARCHAR(100) NOT NULL,
`destination` VARCHAR(100) NOT NULL,
PRIMARY KEY (`id`),
FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
MySQL – stworzenie przykładowych kont testowych
Będziemy chcieli w przyszłości jakoś przetestować nasz serwer poczty, prawda? Skoro tak, to stwórzmy jakieś konta testowe.
W tabelce virtual_domains, będziemy mieli tylko jedną domenę: kompikownia.pl
INSERT INTO `virtual_domains` (`id`, `name`) VALUES (‘1′,’kompikownia.pl’);
Teraz zajmijmy się kolejną tabelką: virtual_users. Utwórzmy sobie dwa przykładowe konta użytkowników.
INSERT INTO `virtual_users`
(`id`, `domain_id`, `password` , `email`)
VALUES
(‘1’, ‘1’, ENCRYPT(‘password’, CONCAT(‘$6$’, SUBSTRING(SHA(RAND()), -16))), ’email1@kompikownia.pl’),
(‘2’, ‘1’, ENCRYPT(‘password’, CONCAT(‘$6$’, SUBSTRING(SHA(RAND()), -16))), ’email2@kompikownia.pl’);
Co ciekawego widzisz w powyższym przykładzie? Hasła w naszej bazie będą kodowane z użyciem algorytmu SHA512. Zabezpiecza to naszych użytkowników w wypadku, gdyby baza wyciekła. Zastąp oczywiście ciągi password jakimiś własnymi hasłami
Utworzymy sobie też alias w tabelce virtual_aliases, dzięki czemu przetestujemy działanie tego mechanizmu.
INSERT INTO `virtual_aliases` (`id`, `domain_id`, `source`, `destination`)
VALUES (‘1’, ‘1’, ‘alias@kompikownia.pl’, ’email1Wkompikownia.pl’);
Konfiguracja Postfix
Skoro stworzyliśmy już tabelki, z których będzie korzystał nasz serwer pocztowy Postfix, pora zabrać się za konfigurację samego serwera poczty.
Głównym plikiem konfiguracyjnym jest plik main.cf. Dobrze wykonać jego kopię zapasową zanim zaczniemy cokolwiek robić.
sudo cp /etc/postfix/main.cf /etc/postfix/main.cf.orig
Postfix – main.cf
Teraz pokażę ci przykładową konfigurację:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 | # See /usr/share/postfix/main.cf.dist for a commented, more complete version# Debian specific: Specifying a file name will cause the first # line of that file to be used as the name. The Debian default # is /etc/mailname. #myorigin = /etc/mailnamesmtpd_banner = $myhostname ESMTP $mail_name (Debian) biff = no# appending .domain is the MUA’s job. append_dot_mydomain = no# Uncomment the next line to generate “delayed mail” warnings #delay_warning_time = 4hreadme_directory = no# TLS parameters smtpd_tls_cert_file=/etc/letsencrypt/live/kompikownia.pl/fullchain.pem smtpd_tls_key_file=/etc/letsencrypt/live/kompikownia.pl/privkey.pem smtpd_use_tls=yes smtpd_tls_auth_only = yes smtpd_tls_security_level = ecnrypt smtpd_sasl_security_options = noanonymous, noplaintext smtpd_sasl_tls_security_options = noanonymous# Authentication smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth smtpd_sasl_auth_enable = yes# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for # information on enabling SSL in the smtp client.# Restrictions smtpd_helo_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_invalid_helo_hostname, reject_non_fqdn_helo_hostname smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_recipient, reject_unknown_recipient_domain, reject_unlisted_recipient, reject_unauth_destination smtpd_sender_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_sender, reject_unknown_sender_domain smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, defer_unauth_destination# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for # information on enabling SSL in the smtp client.myhostname = Blog-Server alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases mydomain = kompikownia.pl myorigin = $mydomain mydestination = localhost relayhost = mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 mailbox_size_limit = 0 recipient_delimiter = + inet_interfaces = all inet_protocols = all# Handing off local delivery to Dovecot’s LMTP, and telling it where to store mail virtual_transport = lmtp:unix:private/dovecot-lmtp# Virtual domains, users, and aliases virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf, mysql:/etc/postfix/mysql-virtual-email2email.cf# Even more Restrictions and MTA params disable_vrfy_command = yes strict_rfc821_envelopes = yes #smtpd_etrn_restrictions = reject #smtpd_reject_unlisted_sender = yes #smtpd_reject_unlisted_recipient = yes smtpd_delay_reject = yes smtpd_helo_required = yes smtp_always_send_ehlo = yes #smtpd_hard_error_limit = 1 smtpd_timeout = 30s smtp_helo_timeout = 15s smtp_rcpt_timeout = 15s smtpd_recipient_limit = 40 minimal_backoff_time = 180s maximal_backoff_time = 3h# Reply Rejection Codes invalid_hostname_reject_code = 550 non_fqdn_reject_code = 550 unknown_address_reject_code = 550 unknown_client_reject_code = 550 unknown_hostname_reject_code = 550 unverified_recipient_reject_code = 550 unverified_sender_reject_code = 550 |
Nie będę jej omawiał bardzo szczegółowo, gdyż opis wszystkich opcji możesz znaleźć w dokumentacji serwera Postfix. Zauważmy, że opcje oznaczone początkiem smtpd, dotyczą konfiguracji serwera SMTP odbierającego pocztę od innych serwerów (sytuacja: ktoś wysyła email na adres w naszej domenie). Natomiast opcje z prefiksem smtp dotyczą wysyłania emaili (sytuacja: ktoś z adresu @kompikownia.pl wysyła email w świat, np.: na @outlook.com) Zwróćmy uwagę na kilka najważniejszych opcji.
- smtpd_tls_cert_file (20 linijka) – ścieżka do certyfikatu, który będzie używany do szyfrowania komunikacji klienta z serwerem poczty
- smtpd_tls_key_file (21 linijka) – ścieżka do klucza prywatnego, który będzie używany do szyfrowania komunikacji.
- smtpd_tls_security_level (24 linijka) – parametr encrypt wymusza połączenie szyfrowane. Dzięki temu nie będzie ryzyka, że komunikacja pomiędzy serwerem poczty a klientem zostanie podsłuchana.
- myhostname (63 linijka) – nazwa serwera poczty
- mydomain (66 linijka) – nazwa domeny, w której pracuje serwer poczty
- virtual_mailbox_domains (80 linijka) – rodzaj bazy oraz ścieżka do pliku zawierającego konfigurację wirtualnych domen
- virtual_mailbox_maps (81 linijka) – rodzaj bazy oraz ścieżka do pliku zawierającego konfigurację mapowania wirtualnych skrzynek
- virtual_alias_maps (82 linijka) – rodzaj bazy oraz ścieżka do pliku zawierającego mapowanie wirtualnych aliasów.
Postfix – pliki mapowania
Zmodyfikowaliśmy już w odpowiedni sposób plik main.cf. Teraz pora na stworzenie dodatkowych plików konfiguracyjnych mówiących serwerowi Postfix o tym, jak ma się łączyć z bazą danych. Ścieżkę do nich wskazywaliśmy w pliku main.cf.
/etc/postfix/mysql-virtual-mailbox-domains.cf
user = mailuser
password = mailuserpass
hosts = 127.0.0.1
dbname = mailserver
query = SELECT 1 FROM virtual_domains WHERE name=’%s’
/etc/postfix/mysql-virtual-mailbox-maps.cf
user = mailuser
password = mailuserpass
hosts = 127.0.0.1
dbname = mailserver
query = SELECT 1 FROM virtual_users WHERE email=’%s’
/etc/postfix/mysql-virtual-alias-maps.cf
user = mailuser
password = mailuserpass
hosts = 127.0.0.1
dbname = mailserver
query = SELECT destination FROM virtual_aliases WHERE source=’%s’
/etc/postfix/mysql-virtual-email2email.cf
user = mailuser
password = mailuserpass
hosts = 127.0.0.1
dbname = mailserver
query = SELECT email FROM virtual_users WHERE email=’%s’
Testowanie serwera Postfix
Skoro stworzyliśmy już MySQL`ową konfigurację, nadszedł czas aby ją przetestować. W jaki sposób możemy to uczynić? Istnieje takie narzędzie jak postmap, które pozwala w bardzo prosty sposób sprawdzić czy Postfix potrafi skonstruować prawidłowe zapytania do bazy danych.
Testowanie pliku /etc/postfix/mysql-virtual-mailbox-domains.cf
postmap -q kompikownia.pl mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
Powyższym poleceniem sprawdzamy, czy Postfix potrafi sprawdzić czy dana domena jest zapisana w bazie danych. Pamiętasz, że dodawaliśmy do BD domenę kompikownia.pl? Dlatego dla powyższego polecenia wynik powinien być równy 1. Dla każdej innej domeny powyższe polecenie nie powinno nic zwrócić.
Testowanie pliku /etc/postfix/mysql-virtual-mailbox-maps.cf
Teraz sprawdzimy, czy Postfix potrafi wyciągnąć z bazy danych informację na temat konkretnego adresu email.
postmap -q email1@kompikownia.pl mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
Dla powyższego zapytania wynik powinien być równy 1. Jeśli zapytamy o jakiś adres email, który nie istnieje w bazie danych, program nie powinien zwrócić nic.
Testowanie pliku /etc/postfix/mysql-virtual-alias-maps.cf
Teraz sprawdźmy, czy Postfix potrafi odczytać aliasy z bazy.
postmap -q alias@kompikownia.pl mysql:/etc/postfix/mysql-virtual-alias-maps.cf
Powyższe zapytanie powinno zwrócić adres email, dla którego podany w poleceniu adres jest aliasem. W przeciwnym wypadku wyjście powinno być puste.
Konfiguracja master.cf
Postfix podczas swojej pracy tworzy wiele różnych procesów. W tle musi działać także program, który monitoruje ich pracę oraz decyduje o tym, kiedy te procesy utworzyć. Tzw. Postfix Master Program kontroluje, kiedy oraz jakie procesy oraz w jaki sposób uruchomić. Jego konfiguracja znajduje się w pliku master.cf.
Najpierw wykonajmy kopię zapasową tego pliku, na wypadek gdyby coś poszło nie tak.
cp /etc/postfix/master.cf /etc/postfix/master.cf.orig
Plik master.cf jest długi, a my będziemy modyfikowali jedynie jego część. Dlatego też poniżej wkleję tylko początek, który zmodyfikowaliśmy.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | # Postfix master process configuration file. For details on the format # of the file, see the master(5) manual page (command: “man 5 master” or # on-line: http://www.postfix.org/master.5.html). # # Do not forget to execute “postfix reload” after editing this file. # # ========================================================================== # service type private unpriv chroot wakeup maxproc command + args # (yes) (yes) (no) (never) (100) # ========================================================================== smtp inet n – y – – smtpd #smtp inet n – y – 1 postscreen #smtpd pass – – y – – smtpd #dnsblog unix – – y – 0 dnsblog #tlsproxy unix – – y – 0 tlsproxy submission inet n – y – – smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_sasl_type=dovecot -o smtpd_sasl_path=private/auth -o smtpd_reject_unlisted_recipient=no -o smtpd_client_restrictions=permit_sasl_authenticated,reject # -o smtpd_helo_restrictions=$mua_helo_restrictions # -o smtpd_sender_restrictions=$mua_sender_restrictions # -o smtpd_recipient_restrictions= # -o smtpd_relay_restrictions=permit_sasl_authenticated,reject # -o milter_macro_daemon_name=ORIGINATING smtps inet n – y – – smtpd -o syslog_name=postfix/smtps -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes -o smtpd_sasl_auth_type=dovecot -o smtpd_sasl_path=private/auth -o smtpd_client_restrictions=permit_sasl_authenticated,reject # -o smtpd_reject_unlisted_recipient=no # -o smtpd_client_restrictions=$mua_client_restrictions # -o smtpd_helo_restrictions=$mua_helo_restrictions … |
Jakie zmiany poczyniliśmy w stosunku do oryginalnego pliku?
- odhashowaliśmy dużo linijek – od 16 do 23 oraz od 29 do 35. Dzięki temu podane opcje są brane pod uwagę przez program
- powiedzieliśmy, że będziemy używać Dovecot – mówią o tym linijki 33 i 20. Domyślnie używana jest implementacja Cyrus SAS, dlatego jawnie musimy to zmienić.
Pozostała część pliku właściwie się nie zmieniła.
Po tym wszystkim zabezpieczamy dostęp do plików konfiguracyjnych Postfix. Powinien mieć do nich dostęp tylko właściciel oraz grupa właściciela.
chmod -R o-rwx /etc/postfix
Na samym końcu po raz kolejny restartujemy serwer Postfix.
systemctl restart postfix
Konfiguracja Dovecot
Dovecot udostępni nam protokół IMAP, za pomocą którego będziemy mogli zalogować się do skrzynki oraz sprawdzić jakie wiadomości zostały do nas dostarczone.
Najpierw standardowo wykonujemy kopię zapasową wszystkich plików, w których będziemy grzebali.
sudo cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.orig
sudo cp /etc/dovecot/conf.d/10-mail.conf /etc/dovecot/conf.d/10-mail.conf.orig
sudo cp /etc/dovecot/conf.d/10-auth.conf /etc/dovecot/conf.d/10-auth.conf.orig
sudo cp /etc/dovecot/dovecot-sql.conf.ext /etc/dovecot/dovecot-sql.conf.ext.orig
sudo cp /etc/dovecot/conf.d/10-master.conf /etc/dovecot/conf.d/10-master.conf.orig
sudo cp /etc/dovecot/conf.d/10-ssl.conf /etc/dovecot/conf.d/10-ssl.conf.orig
Edycja pliku /etc/dovecot/dovecot.conf
W pliku tym poczynimy tylko jedną modyfikację. Powiemy serwerowi Dovecot, jakie protokoły są włączone.
# options. The paths listed here are for configure –prefix=/usr
# –sysconfdir=/etc –localstatedir=/var
# Enable installed protocols
!include_try /usr/share/dovecot/protocols.d/*.protocol
protocols = imap lmtp
# A comma separated list of IPs or hosts where to listen in for connections.
# “*” listens in all IPv4 interfaces, “::” listens in all IPv6 interfaces.
Włączyliśmy protokoły IMAP i LMTP. Jak zauważyłeś, nasz serwer nie będzie wspierał POP3. Dlaczego? Ponieważ jest przestarzałe i mało kto go utrzymuje.
Edycja pliku /etc/dovecot/10-mail.conf
Ten plik konfiguracyjny opisuje, w jaki sposób Dovecot przeprowadza interakcję z systemem plików. Np.: w jaki sposób oraz gdzie przechowuje skrzynki pocztowe klientów.
Ten plik jest naprawdę bardzo duży i pozwala na szeroką personalizację. My zmodyfikujemy tylko dwie zmienne.
…
mail_location = maildir:/var/mail/vhosts/%d/%n/
…
mail_privileged_group = mail
…
Stwórzmy teraz katalog /var/mail/vhosts, o którym powiedzieliśmy serwerowi Dovecot w pliku konfiguracyjnym. Zamień oczywiście domenę kompikownia.pl na własną, jeśli przeprowadzasz konfigurację u siebie.
sudo mkdir -p /var/mail/vhosts/kompikownia.pl
Teraz stwórzmy użytkownika który będzie tym zarządzał:
sudo groupadd -g 5000 vmail
sudo useradd -g vmail -u 5000 vmail -d /var/mail
Na samym końcu zmieńmy właściciela katalogu /var/mail/.
sudo chown -R vmail:vmail /var/mail
Konfiguracja pliku /etc/dovecot/conf.d/10-auth.conf
Teraz pora zmodyfikować plik, który odpowiada za autoryzację. Musimy w nim wyłączyć autoryzację plaintextem oraz poinformować, że należy wczytać konfigurację bazy danych. Wystarczy odhashować wspomniane niżej linie.
…
disable_plaintext_auth = yes
…
auth_mechanisms = plain login
…
!include auth-system.conf.ext
…
!include auth-sql.conf.ext
…
Konfiguracja pliku /etc/dovecot/conf.d/auth-sql.conf.ext
W tym pliku musimy zamienić „sterownik” który jest używany, z sql na static. Co za tym idzie, komentujemy sekcję userdb gdzie driver = sql, oraz kasujemy hashe przy sekcji userdb, gdzie driver=static.
…
passdb {
driver = sql
args = /etc/dovecot/dovecot-sql.conf.ext
}
…
#userdb {
# driver = sql
# args = /etc/dovecot/dovecot-sql.conf.ext
#}
…
userdb {
driver = static
args = uid=vmail gid=vmail home=/var/mail/vhosts/%d/%n
}
…
Konfiguracja pliku /etc/dovecot/dovecot-sql.conf.ext
Teraz modyfikujemy plik /etc/dovecot/dovecot-sql.conf.ext Wpisz w nim dane dostępowe do wcześniej utworzonej bazy danych, takie jak rodzaj sterownika (mysql), nazwa bazy, użytkownik oraz hasło. Będziesz musiał podać również zapytanie, za pomocą którego Dovecot będzie mógł uzyskać hasła użytkowników. Wszystkie linijki, które należy zmienić znajdują się na listingu poniżej.
…
driver = mysql
…
connect = host=127.0.0.1 dbname=mailserver user=mailuser password=mailuserpass
…
default_pass_scheme = SHA512-CRYPT
…
password_query = SELECT email as user, password FROM virtual_users WHERE email=’%u’;
…
Konfiguracja pliku /etc/dovecot/conf.d/10-master.conf
Musimy przeprowadzić kilka modyfikacji w pliku 10-master.conf. Przede wszystkim – musimy wyłączyć nieszyfrowaną wersję protokołu IMAP. Robimy to w ten sposób, że odhashowujemy linijki dotyczące imap i imaps. Przy czym w przypadku protokołu imap ustawiamy port na 0.
…
service imap-login {
inet_listener imap {
port = 0
}
inet_listener imaps {
port = 993
ssl = yes
}
…
}
…
Następnie musimy skonfigurować usługę lmtp. Prawidłowa konfiguracja pokazana jest na listingu poniżej:
…
service lmtp {
unix_listener /var/spool/postfix/private/dovecot-lmtp {
#mode = 0666i
mode = 0600
user = postfix
group = postfix
}
…
}
Teraz musimy skonfigurować autoryzację. Znajdź sekcję auth i skonfiguruj ją tak jak na listingu poniżej.
…
service auth {
…
unix_listener /var/spool/postfix/private/auth {
mode = 0660
user = postfix
group = postfix
}
unix_listener auth-userdb {
mode = 0600
user = vmail
}
…
user = dovecot
}
…
Następnie powinniśmy poddać lekkiemu liftingowi sekcję auth-worker.
…
service auth-worker {
…
user = vmail
}
Konfiguracja pliku /etc/dovecot/conf.d/10-ssl.conf
Plik 10-ssl.conf wskazuje serwerowi Dovecot, w którym miejscu znajdują się klusze SSL.
ssl = required
…
ssl_cert = </etc/letsencrypt/live/kompikownia.pl/fullchain.pem
ssl_key = </etc/letsencrypt/live/kompikownia.pl/privkey.pem
Restart
Wszystkie niezbędne zmiany zostały już wykonane. Pozostaje nam jedynie restart. Po wydaniu poniższego polecenia okaże się, czy wszystko działa prawidłowo
sudo systemctl restart dovecot
To już koniec konfiguracji Nasz serwer poczty działa prawidłowo
Thunderbird – logowanie na konto pocztowe
Przetestujmy, czy możemy zalogować się na nasze konto
Skonfigurujmy program pocztowy Thunderbird.
Uruchamiamy program
Klikamy opcję Email w kategorii Set up an account. Pojawi nam się okienko:
Wpisujemy w nim login i hasło do konta email, które utworzyliśmy podczas konfiguracji. Klikamy Continue. Thunderbird spróbuje wykryć konfigurację automatycznie, ale nie uda mu się to.
Musimy wskazać opcje konfiguracji ręcznie, tak jak na powyższym screenie. Po tym klikamy przycisk Done.
Voila! Nasza skrzynka jest gotowa i może wysyłać i odbierać emaile!
Podsumowując
To był naprawdę dłuugi wpis. Cieszę się, jeśli dobrnąłeś do końca. Niestety, konfiguracja serwera poczty jest dosyć skomplikowana. To, co zrobiliśmy w tym artykule to jedynie wierzchołek góry lodowej. Tak skonfigurowany serwer wymaga trochę dodatkowej pracy. W tej chwili gdy wyślemy email do kogoś na Gmailu, to nasza wiadomośc najprawdopodobniej wleci do spamu. Co zrobić, żeby tak się nie działo? O tym będzie w przyszłości.