Jak skonfigurować Postfix i Dovecot z użytkownikami domeny wirtualnej w systemie Linux — część 2
W poprzednim artykule z tej serii wyjaśniliśmy, jak bezpiecznie skonfigurować bazę danych serwera pocztowego i zarządzać nią za pomocą phpMyAdmin.
Wymóg:
- Zainstaluj serwer pocztowy Postfix i Dovecot z MariaDB – część 1
Teraz czas na skonfigurowanie wewnętrznych programów, które sprawią, że wysyłanie i odbieranie e-maili stanie się rzeczywistością: Postfix i Dovecot (odpowiednio do obsługi poczty wychodzącej i przychodzącej).
Konfiguracja serwera pocztowego Postfix
Zanim zaczniesz konfigurować Postfixa, warto rzucić okiem na jego strony podręcznika, kładąc szczególny nacisk na sekcję zatytułowaną „Informacje dla nowych użytkowników Postfixa” . Jeśli to zrobisz, łatwiej będzie ci postępować zgodnie z tym samouczkiem.
W kilku słowach powinieneś wiedzieć, że istnieją dwa pliki konfiguracyjne dla Postfix:
- /etc/postfix/main.cf (Parametry konfiguracyjne Postfixa, więcej szczegółów znajdziesz w man 5 postconf).
- /etc/postfix/master.cf (Konfiguracja głównego demona Postfixa, więcej szczegółów znajdziesz w man 5 master).
W /etc/postfix/main.cf
zlokalizuj (lub dodaj, jeśli to konieczne) następujące wiersze i upewnij się, że odpowiadają wartościom wskazanym poniżej:
append_dot_mydomain = no
biff = no
config_directory = /etc/postfix
dovecot_destination_recipient_limit = 1
message_size_limit = 4194304
readme_directory = no
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_banner = $myhostname ESMTP $mail_name (CentOS)
smtpd_tls_cert_file = /etc/pki/dovecot/certs/dovecot.pem
smtpd_tls_key_file = /etc/pki/dovecot/private/dovecot.pem
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = yes
virtual_transport = dovecot
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
Kolejne trzy ustawienia mają szczególne znaczenie. W plikach zaznaczonych na żółto skonfigurujemy dostęp Postfixa do tabel Domains_tbl, Users_tbl i Alias_tbl:
virtual_mailbox_domains = mysql:/etc/postfix/mariadb-vdomains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mariadb-vusers.cf
virtual_alias_maps = mysql:/etc/postfix/mariadb-valias.cf
Pamiętaj, że możesz wybrać różne nazwy plików powyżej, pod warunkiem, że je utworzysz i wstawisz do nich następującą zawartość. W każdym przypadku zastąp YourPassword hasłem wybranym dla użytkownika dba w Części 1 lub możesz także użyć MariaDB poświadczenia roota dla użytkownika i hasła poniżej.
Upewnij się także, że używasz dokładnie tych samych nazw bazy danych serwera poczty e-mail i tabel utworzonych w Części 1.
W /etc/postfix/mariadb-vdomains.cf
:
user = dba
password = YourPassword
hosts = 127.0.0.1
dbname = EmailServer_db
query = SELECT 1 FROM Domains_tbl WHERE DomainName='%s'
W /etc/postfix/mariadb-vusers.cf
:
user = dba
password = YourPassword
hosts = 127.0.0.1
dbname = EmailServer_db
query = SELECT 1 FROM Users_tbl WHERE Email='%s'
W /etc/postfix/mariadb-valias.cf
:
user = dba
password = YourPassword
hosts = 127.0.0.1
dbname = EmailServer_db
query = SELECT Destination FROM Alias_tbl WHERE Source='%s'
Na koniec nie zapomnij zmienić uprawnień do tych plików na 640:
chmod 640 /etc/postfix/mariadb-vdomains.cf
chmod 640 /etc/postfix/mariadb-vusers.cf
chmod 640 /etc/postfix/mariadb-valias.cf
Oraz własność użytkownika root i grupy postfix:
chown root:postfix /etc/postfix/mariadb-vdomains.cf
chown root:postfix /etc/postfix/mariadb-vusers.cf
chown root:postfix /etc/postfix/mariadb-valias.cf
Następnie, aby włączyć bezpieczne połączenia, musimy upewnić się, że następujące ustawienia nie są skomentowane (lub dodane, jeśli to konieczne) w /etc/postfix/master.cf
:
submission inet n - n - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_reject_unlisted_recipient=no
-o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
-o milter_macro_daemon_name=ORIGINATING
pickup unix n - n 60 1 pickup
cleanup unix n - n - 0 cleanup
qmgr unix n - n 300 1 qmgr
tlsmgr unix - - n 1000? 1 tlsmgr
rewrite unix - - n - - trivial-rewrite
bounce unix - - n - 0 bounce
defer unix - - n - 0 bounce
trace unix - - n - 0 bounce
verify unix - - n - 1 verify
flush unix n - n 1000? 0 flush
proxymap unix - - n - - proxymap
proxywrite unix - - n - 1 proxymap
smtp unix - - n - - smtp
relay unix - - n - - smtp
showq unix n - n - - showq
error unix - - n - - error
retry unix - - n - - error
discard unix - - n - - discard
local unix - n n - - local
#virtual unix - n n - - virtual
lmtp unix - - n - - lmtp
anvil unix - - n - 1 anvil
scache unix - - n - 1 scache
Uwaga: wcięcie w wierszach rozpoczynających się od opcji -o
ma kluczowe znaczenie; w przeciwnym razie sprawdzenie postfixa zwróci błąd:
Przed zapisaniem zmian dodaj na dole pliku następujące wiersze:
dovecot unix - n n - - pipe
flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -f ${sender} -d ${recipient}
W tym momencie konieczne jest sprawdzenie, czy Postfix ma dostęp do tabel bazy danych oraz domen, kont i aliasów, które utworzyliśmy w Części 1.
W tym celu użyjemy polecenia postmap, narzędzie do testowania komunikacji z tabelami, które Postfix będzie sprawdzał podczas działania, ale przede wszystkim będziemy musieli zrestartować Postfixa:
systemctl postfix restart
postmap -q linuxnewz.com mysql:/etc/postfix/mariadb-vdomains.cf
postmap -q someotherdomain.com mysql:/etc/postfix/mariadb-vdomains.cf
postmap -q [email mysql:/etc/postfix/mariadb-vusers.cf
postmap -q [email mysql:/etc/postfix/mariadb-vusers.cf
postmap -q [email mysql:/etc/postfix/mariadb-vusers.cf
postmap -q [email mysql:/etc/postfix/mariadb-valias.cf
Na poniższym obrazku widać, że dla istniejących rekordów w bazie danych zwracana jest wartość 1. W przeciwnym razie nic nie będzie wyświetlane na ekranie. W przypadku sprawdzania aliasu zwróć uwagę, że zwracane jest rzeczywiste konto e-mail, na które alias jest zamapowany:
Pamiętaj, że NIE uwierzytelniamy na podstawie danych uwierzytelniających ustawionych dla każdego konta e-mail, testujemy jedynie zdolność Postfixa do wykrycia tych rekordów w bazie danych.
Jeśli zatem otrzymasz inny wynik niż powyżej, upewnij się, że używasz prawidłowej pary użytkownik/hasło w plikach mariadb-vdomains.cf, mariadb-vusers.cf i mariadb-valias.cf (lub jakkolwiek nazwiesz te pliki).
Konfiguracja Dovecota
Jako serwer IMAP/POP3, Dovecot umożliwia użytkownikom korzystanie z Agenta użytkownika poczty (MUA lub znany również jako klient), taki jak Thunderbird lub Outlook, aby wymienić tylko kilka przykładów dostępu do poczty.
Na początek utwórzmy użytkownika i grupę do obsługi e-maili (będziemy tego potrzebować, ponieważ nasze konta e-mail nie są powiązane z użytkownikiem systemu). Możesz użyć innego UID i GID (innego niż 5000, jak to robimy poniżej), o ile nie jest on używany i ma dużą liczbę:
groupadd -g 5000 vmail
useradd -g vmail -u 5000 vmail -d /home/vmail -m
Ustawienia Dovecot są podzielone na kilka plików konfiguracyjnych (upewnij się, że poniższe linie nie są skomentowane i/lub edytuj je, aby pasowały do ustawień wskazanych poniżej).
W /etc/dovecot/dovecot.conf
:
!include_try /usr/share/dovecot/protocols.d/*.protocol
protocols = imap pop3 lmtp
!include conf.d/*.conf
!include_try local.conf
W /etc/dovecot/conf.d/10-auth.conf
(włącz uwierzytelnianie tylko poprzez SQL i pozostaw inne metody uwierzytelniania w komentarzu):
disable_plaintext_auth = yes
auth_mechanisms = plain login
!include auth-sql.conf.ext
W /etc/dovecot/conf.d/auth-sql.conf.ext
(pamiętaj, że e-maile będziemy przechowywać w katalogu o nazwie twojadomena.com wewnątrz / home/vmail, który musisz utworzyć, jeśli nie istnieje. W naszym przypadku zrobiliśmy mkdir /home/vmail/linuxnewz.com, aby zarządzać e-mailami dla tej domeny):
passdb {
driver = sql
args = /etc/dovecot/dovecot-sql.conf.ext
}
userdb {
driver = static
args = uid=vmail gid=vmail home=/home/vmail/%d/%n/Maildir
}
Indywidualne skrzynki odbiorcze dla kont użytkowników zostaną utworzone w momencie otrzymania pierwszej wiadomości e-mail dla tych kont.
W /etc/dovecot/conf.d/10-mail.conf
:
mail_location = maildir:/home/vmail/%d/%n/Maildir
namespace inbox {
inbox = yes
}
mail_privileged_group = mail
mbox_write_locks = fcntl
W /etc/dovecot/conf.d/10-master.conf
:
service imap-login {
inet_listener imap {
port = 143
}
inet_listener imaps {
}
}
service pop3-login {
inet_listener pop3 {
port = 110
}
inet_listener pop3s {
}
}
service lmtp {
unix_listener /var/spool/postfix/private/dovecot-lmtp {
mode = 0600
user = postfix
group = postfix
}
}
service auth {
unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}
unix_listener auth-userdb {
mode = 0600
user = vmail
}
user = dovecot
}
service auth-worker {
user = vmail
}
service dict {
unix_listener dict {
}
}
W /etc/dovecot/conf.d/10-ssl.conf
(zamień certyfikat i ścieżki kluczy, jeśli planujesz używać certyfikatu podpisanego przez urząd certyfikacji):
ssl = required
ssl_cert = </etc/pki/dovecot/certs/dovecot.pem
ssl_key = </etc/pki/dovecot/private/dovecot.pem
W /etc/dovecot/dovecot-sql.conf.ext
wprowadź informacje o bazie danych i dane uwierzytelniające użytkownika administracyjnego utworzonego w Części 1.
Ważne: jeśli Twoje hasło zawiera gwiazdkę (#)
, musisz dołączyć ciąg znaków łączący, jak pokazano w poniższym przykładzie:
driver = mysql
connect = "host=127.0.0.1 dbname=EmailServer_db user=dba password=PassWith#Here"
default_pass_scheme = SHA512-CRYPT
password_query = SELECT Email as User, password FROM Users_tbl WHERE Email='%u';
Dodatkowo możesz skonfigurować rejestrowanie dla Dovecot tak, aby było oddzielne od Postfixa w /etc/dovecot/conf.d/10-logging.conf
:
log_path = /var/log/dovecot.log
Na koniec upewnij się, że dziennik Dovecot jest dostępny dla użytkownika dovecot:
chown vmail:dovecot /var/log/dovecot.log
chmod 660 /var/log/dovecot.log
Sprawdź i napraw konfigurację Postifix oraz włącz SMTP, POP3 i IMAP w zaporze sieciowej
Jeśli zdarzy ci się napotkać jakiekolwiek problemy podczas konfigurowania Postfixa i/lub Dovecota, zamiast przesyłać wszystkie pliki konfiguracyjne z prośbą o pomoc, możesz uzyskać podsumowanie konfiguracji (tylko linie bez komentarza) za pomocą:
postconf –n # Summary for /etc/postfix/main.cf
postconf –M # Summary for /etc/postfix/master.cf
doveconf –n # Summary of all configuration files for Dovecot
Ponadto upewnij się, że skrzynki odbiorcze e-mail są czytelne tylko przez vmail:
chown –R vmail:vmail /home/vmail
Pliki konfiguracyjne powinny być także czytelne dla użytkowników vmail i dovecot:
chown -R vmail:dovecot /etc/dovecot
chmod -R o-rwx /etc/dovecot
Na koniec upewnij się, że w zaporze sieciowej włączono SMTP, POP3 i IMAP:
firewall-cmd --add-port=143/tcp
firewall-cmd --add-port=143/tcp --permanent
firewall-cmd --add-port=110/tcp
firewall-cmd --add-port=110/tcp --permanent
firewall-cmd --add-port=587/tcp
firewall-cmd --add-port=587/tcp --permanent
Skonfiguruj Thunderbirda jako klienta poczty e-mail dla Postfix
Po zabezpieczeniu dostępu przez zaporę sieciową do portów używanych w komunikacji e-mailowej czas skonfigurować klienta pocztowego. Używając [email i odpowiadającego mu hasła, wraz z mail.linuxnewz.com jako serwerem IMAP (lub POP3) i SMTP, jesteśmy gotowi rozpocząć wysyłanie i odbieranie e-maili na adres i z takiego konta:
Możesz bezpiecznie zignorować wyświetlony komunikat ostrzegawczy, ponieważ używasz certyfikatu, który nie jest podpisany przez zaufany zewnętrzny urząd certyfikacji:
Stwórzmy krótki testowy e-mail i kliknij Wyślij:
Gdy pojawi się monit o zaakceptowanie certyfikatu z podpisem własnym dla serwera wychodzącego, potwierdź go wcześniej, tak jak poprzednio:
Na koniec przejdź do docelowej wiadomości e-mail, aby sprawdzić, czy otrzymałeś właśnie wysłaną wiadomość e-mail. Jeśli tak, odpowiedz na niego i sprawdź, czy został dostarczony z powrotem do źródłowej skrzynki odbiorczej e-mail (w przeciwnym razie zapoznaj się z dziennikiem Postfix pod adresem /var/log/maillog lub dziennikiem Dovecot pod adresem /var /log/dovecot.log, aby uzyskać informacje dotyczące rozwiązywania problemów):
Masz teraz działający serwer poczty e-mail Postfix i Dovecot i możesz rozpocząć wysyłanie i odbieranie wiadomości e-mail.
Streszczenie
W tym artykule wyjaśniliśmy, jak skonfigurować Postfix i Dovecot do obsługi ruchu e-mail na serwerze Linux. Jeśli coś nie działa zgodnie z opisem w tym artykule, poświęć trochę czasu na sprawdzenie dokumentacji Postfix i Dovecot.
Należy pamiętać, że chociaż konfiguracja serwera pocztowego Postfix nie jest łatwym zadaniem, jest to satysfakcjonujące doświadczenie dla każdego administratora systemu.
Jeśli po przejrzeniu dokumentacji nadal masz problemy z Postfix i/lub Dovecot, nie krępuj się i zostaw nam wiadomość, korzystając z poniższego formularza komentarza, a my z przyjemnością Ci pomożemy pomóc (nie zapomnij przesłać do usługi przechowywania online konfiguracji Postfix i Dovecot pobranej za pomocą postconf i doveconf zgodnie z opisem w tym artykule).