Serwer poczty na FreeBSD 13 (cz. 4): MySQL, phpMyAdmin i bazy systemu pocztowego
Mamy już Apache, HTTPS i PHP (część 3). Teraz baza danych — serce systemu pocztowego, w którym trzymane są domeny i skrzynki. Instalujemy i zabezpieczamy MySQL 5.7, dokładamy panel phpMyAdmin i tworzymy bazy: maia, postfix i roundcube.
📅 Wersje z epoki (2021). MySQL 5.7, phpMyAdmin dla PHP 7.4. Dziś użyłbyś nowszego MySQL/MariaDB — zasady konfiguracji pozostają te same.
Instalacja MySQL
MySQL 5.7 (serwer + klient) instalujemy poleceniem:
pkg install mysql57-server mysql57-client

Jeszcze do niedawna poprzednie wersje MySQL po instalacji miały puste hasło root — łatwo było popełnić poważny błąd bezpieczeństwa, zostawiając je puste (każdy z Internetu mógł połączyć się jako
root). Wersja 5.7 nadaje hasło automatycznie.
Włączamy usługę w /etc/rc.conf i uruchamiamy serwer:
sysrc mysql_enable="yes"
service mysql-server start
Zabezpieczenie MySQL
Przed użyciem produkcyjnym uruchamiamy skrypt zabezpieczający (na pytania odpowiadamy Y, ustawiamy też nowe hasło administratora):
mysql_secure_installationSecuring the MySQL server deployment.
VALIDATE PASSWORD PLUGIN ... setup? y
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1
Change the password for root ? : y
Remove anonymous users? : y
Disallow root login remotely? : y
Remove test database and access to it? : y
Reload privilege tables now? : y
All done!Po pierwszym zalogowaniu, przed wykonaniem jakiejkolwiek komendy, należy ponownie zmienić hasło.

MySQL 5.7 jest zainstalowany i zabezpieczony: ustawione hasło administratora oraz wyłączone zdalne logowanie na root (tylko localhost).
phpMyAdmin
Wybieramy pakiet phpMyAdmin pasujący do wersji PHP i instalujemy (wraz z zależnościami):
pkg install phpMyAdmin5-php74

W konfiguracji Apache wpisujemy własną nazwę domenową, aby ograniczyć dostęp do panelu tylko z naszego hosta (ochrona przed intruzami):


Po pierwszym uruchomieniu phpMyAdmin zgłosił brak rozszerzenia php74-iconv — doinstalowujemy je:
pkg install php74-iconv

Bazy danych systemu pocztowego
Tworzymy trzy bazy (z użytkownikami), które wykorzystają kolejne usługi.
maia — dla antyspamu/antywirusa (Maia‑Mailguard). Dodajemy użytkownika i bazę, a następnie importujemy /usr/local/share/doc/maia/maia-mysql.sql. Podczas importu wystąpił błąd w jednej z kwerend, więc resztę dodałem ręcznie z poziomu phpMyAdmin:


postfix — tu będą przechowywane wszystkie informacje o skrzynkach i domenach (wykorzysta ją Postfix):

roundcube — dane webmaila:

Co dalej
W części 5 instalujemy i konfigurujemy Dovecot — serwer POP3/IMAP, który będzie udostępniał skrzynki użytkownikom (z uwierzytelnianiem z bazy MySQL).