В этом подробном руководстве я покажу, как развернуть полноценный почтовый сервер на базе Ubuntu с использованием Postfix, Dovecot, PostfixAdmin и Roundcube. Мы настроим SMTP, IMAP, антиспам-фильтрацию, веб-интерфейс и все необходимые компоненты для работы корпоративной почты.
Первым делом обновим пакеты системы:
apt update && apt upgrade -y
Установим FQDN-имя сервера (важно для антиспам-проверок):
hostnamectl set-hostname mail.yourdomain.com
Установим chrony для синхронизации времени:
apt install -y chrony
timedatectl set-timezone Europe/Moscow
Откроем необходимые порты:
iptables -I INPUT -p tcp --match multiport --dports 25,465,587 -j ACCEPT
iptables -I INPUT -p tcp --match multiport --dports 143,993 -j ACCEPT
iptables -I INPUT -p tcp --match multiport --dports 80,443 -j ACCEPT
Сохраним правила:
apt install -y iptables-persistent
netfilter-persistent save
Установим Nginx, PHP и MariaDB:
apt install -y nginx php-fpm php-mysql mariadb-server
Установим необходимые модули PHP:
apt install -y php-mbstring php-imap php-curl php-zip php-xml php-gd
Скачаем и установим последнюю версию PostfixAdmin:
wget https://github.com/postfixadmin/postfixadmin/archive/refs/tags/postfixadmin-3.3.15.tar.gz
tar -xzf postfixadmin-3.3.15.tar.gz -C /var/www/html/
mv /var/www/html/postfixadmin-postfixadmin-3.3.15 /var/www/html/postfixadmin
mkdir /var/www/html/postfixadmin/templates_c
chown -R www-data:www-data /var/www/html/postfixadmin
Создадим базу данных и пользователя:
mysql -u root -p
CREATE DATABASE postfix DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE USER 'postfix'@'localhost' IDENTIFIED BY 'StrongPassword123';
GRANT ALL PRIVILEGES ON postfix.* TO 'postfix'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Создадим конфигурационный файл:
cp /var/www/html/postfixadmin/config.inc.php /var/www/html/postfixadmin/config.local.php
Настроим доступ к базе данных в config.local.php:
$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfix';
$CONF['database_password'] = 'StrongPassword123';
$CONF['database_name'] = 'postfix';
Завершим установку через веб-интерфейс по адресу http://ваш_сервер/postfixadmin/setup.php
apt install -y postfix postfix-mysql
Основные настройки в /etc/postfix/main.cf:
# Основные настройки
myhostname = mail.yourdomain.com
mydomain = yourdomain.com
myorigin = $mydomain
inet_interfaces = all
mydestination = localhost.$mydomain, localhost
# Настройки виртуальных доменов
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
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
apt install -y dovecot-core dovecot-imapd dovecot-mysql
Основные настройки в /etc/dovecot/dovecot.conf:
protocols = imap
mail_location = maildir:/var/mail/vhosts/%d/%n
wget https://github.com/roundcube/roundcubemail/releases/download/1.5.2/roundcubemail-1.5.2-complete.tar.gz
tar -xzf roundcubemail-1.5.2-complete.tar.gz -C /var/www/html/
mv /var/www/html/roundcubemail-1.5.2 /var/www/html/webmail
Создадим конфигурационный файл:
cp /var/www/html/webmail/config/config.inc.php.sample /var/www/html/webmail/config/config.inc.php
Настроим подключение к базе данных:
$config['db_dsnw'] = 'mysql://roundcube:StrongPassword123@localhost/roundcubemail';
apt install -y clamav clamav-daemon amavisd-new spamassassin
Добавим в /etc/postfix/main.cf:
content_filter = smtp-amavis:[127.0.0.1]:10024
openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \
-keyout /etc/ssl/private/mail.yourdomain.com.key \
-out /etc/ssl/certs/mail.yourdomain.com.crt
smtpd_tls_cert_file=/etc/ssl/certs/mail.yourdomain.com.crt
smtpd_tls_key_file=/etc/ssl/private/mail.yourdomain.com.key
smtpd_use_tls=yes
smtpd_tls_auth_only=yes
После выполнения всех шагов у вас будет полностью функционирующий почтовый сервер с:
Проблема | Решение |
---|---|
Почта попадает в спам | Проверьте настройки SPF, DKIM и DMARC. Убедитесь, что у сервера есть PTR-запись. |
Ошибки аутентификации | Проверьте логи /var/log/mail.log. Убедитесь, что пользователь существует в базе PostfixAdmin. |
Не работают SSL-сертификаты | Проверьте права доступа к файлам ключей (должны быть 600). Убедитесь, что CN сертификата соответствует имени сервера. |
systemctl status postfix dovecot amavis clamav-daemon spamassassin
telnet localhost 25
Ожидаемый ответ:
220 mail.yourdomain.com ESMTP Postfix
telnet localhost 143
Ожидаемый ответ:
* OK [CAPABILITY IMAP4rev1...] Dovecot ready
mailq
или
postqueue -p
postqueue -f
postfix flush
dig yourdomain.com MX +short
dig -x YOUR_SERVER_IP +short
dig yourdomain.com TXT +short | grep spf
dig default._domainkey.yourdomain.com TXT +short
echo "Test message" | mail -s "Test subject" recipient@example.com
doveadm mailbox status -u user@yourdomain.com all
doveadm fetch -u user@yourdomain.com all
tail -f /var/log/mail.log | grep postfix
tail -f /var/log/mail.log | grep dovecot
grep -i error /var/log/mail.log
tail -f /var/log/mail.log
netstat -tulnp | grep -E '25|143|465|587|993'
openssl s_client -connect mail.yourdomain.com:993 -showcerts
openssl s_client -starttls imap -connect mail.yourdomain.com:143
Внимание: Cтатьи здесь сгенерированы нейросетью, пока не правил ошибки, только запустил его да и не до этого. Просто чтобы вы знали и не запускали ядерный реактор по моим статьям ))
НО!
Каждый кейс я реально делал минимум один раз. Серьёзно.
Сервера стоят, клиенты довольны, дата-центры не горят.
Это не просто копипаста — это опыт, выстраданный в бою, просто пересказанный через ИИ.
Если у вас есть вопросы, или Нашли неточность? пишите в коментах —
вместе поправим и сделаем статью более качественной. Я лично объясню нюансы из практики.
Комментарии
Пока нет комментариев. Будьте первым!