Категории

Полноценный почтовый сервер на базе Ubuntu с использованием Postfix, Dovecot, PostfixAdmin и Roundcube

2025-08-03 17:23:02 | Linux
Настройка  почтового сервера на Ubuntu Postfix, Dovecot, PostfixAdmin и Roundcube

В этом подробном руководстве я покажу, как развернуть полноценный почтовый сервер на базе Ubuntu с использованием Postfix, Dovecot, PostfixAdmin и Roundcube. Мы настроим SMTP, IMAP, антиспам-фильтрацию, веб-интерфейс и все необходимые компоненты для работы корпоративной почты.

Примечание: Это руководство подходит для Ubuntu 20.04/22.04 LTS. Для других версий могут потребоваться небольшие изменения.

1. Подготовка сервера

1.1. Обновление системы

Первым делом обновим пакеты системы:

apt update && apt upgrade -y

1.2. Настройка имени сервера

Установим FQDN-имя сервера (важно для антиспам-проверок):

hostnamectl set-hostname mail.yourdomain.com

1.3. Настройка времени

Установим chrony для синхронизации времени:

apt install -y chrony
timedatectl set-timezone Europe/Moscow

1.4. Настройка фаервола

Откроем необходимые порты:

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

2. Установка и настройка PostfixAdmin

2.1. Установка веб-сервера

Установим Nginx, PHP и MariaDB:

apt install -y nginx php-fpm php-mysql mariadb-server

2.2. Настройка PHP

Установим необходимые модули PHP:

apt install -y php-mbstring php-imap php-curl php-zip php-xml php-gd

2.3. Установка PostfixAdmin

Скачаем и установим последнюю версию 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

2.4. Настройка базы данных

Создадим базу данных и пользователя:

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;

2.5. Завершение установки PostfixAdmin

Создадим конфигурационный файл:

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

3. Установка и настройка Postfix и Dovecot

3.1. Установка Postfix

apt install -y postfix postfix-mysql

3.2. Настройка Postfix

Основные настройки в /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

3.3. Установка Dovecot

apt install -y dovecot-core dovecot-imapd dovecot-mysql

3.4. Настройка Dovecot

Основные настройки в /etc/dovecot/dovecot.conf:

protocols = imap
mail_location = maildir:/var/mail/vhosts/%d/%n

4. Настройка Roundcube Webmail

4.1. Установка Roundcube

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

4.2. Настройка Roundcube

Создадим конфигурационный файл:

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';

5. Настройка антивируса и антиспама

5.1. Установка ClamAV и Amavisd-new

apt install -y clamav clamav-daemon amavisd-new spamassassin

5.2. Настройка интеграции с Postfix

Добавим в /etc/postfix/main.cf:

content_filter = smtp-amavis:[127.0.0.1]:10024

6. Настройка SSL/TLS

6.1. Генерация сертификатов

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

6.2. Настройка SSL в Postfix

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

7. Заключение

После выполнения всех шагов у вас будет полностью функционирующий почтовый сервер с:

Совет: Не забудьте настроить DNS-записи (MX, SPF, DKIM, DMARC) для вашего домена, чтобы почта не попадала в спам.

Возможные проблемы и решения

Проблема Решение
Почта попадает в спам Проверьте настройки SPF, DKIM и DMARC. Убедитесь, что у сервера есть PTR-запись.
Ошибки аутентификации Проверьте логи /var/log/mail.log. Убедитесь, что пользователь существует в базе PostfixAdmin.
Не работают SSL-сертификаты Проверьте права доступа к файлам ключей (должны быть 600). Убедитесь, что CN сертификата соответствует имени сервера.

8. Проверка работоспособности и диагностика

8.1. Проверка служб

Проверить статус всех почтовых служб:
systemctl status postfix dovecot amavis clamav-daemon spamassassin
Проверить работу SMTP (25 порт):
telnet localhost 25

Ожидаемый ответ:

220 mail.yourdomain.com ESMTP Postfix

Проверить работу IMAP (143 порт):
telnet localhost 143

Ожидаемый ответ:

* OK [CAPABILITY IMAP4rev1...] Dovecot ready

8.2. Проверка почтовых очередей

Показать очередь писем:
mailq

или

postqueue -p
Принудительно обработать очередь:
postqueue -f
Попытаться доставить все письма из очереди:
postfix flush

8.3. Проверка DNS-записей

Проверить MX-записи домена:
dig yourdomain.com MX +short
Проверить PTR-запись (обратный DNS):
dig -x YOUR_SERVER_IP +short
Проверить SPF-запись:
dig yourdomain.com TXT +short | grep spf
Проверить DKIM-запись:
dig default._domainkey.yourdomain.com TXT +short

8.4. Тестирование отправки/получения

Отправить тестовое письмо через командную строку:
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

8.5. Анализ логов

Посмотреть логи Postfix:
tail -f /var/log/mail.log | grep postfix
Посмотреть логи Dovecot:
tail -f /var/log/mail.log | grep dovecot
Поиск ошибок в логах:
grep -i error /var/log/mail.log
Мониторинг в реальном времени:
tail -f /var/log/mail.log

8.6. Проверка безопасности

Проверить открытые порты:
netstat -tulnp | grep -E '25|143|465|587|993'
Проверить SSL-сертификат:
openssl s_client -connect mail.yourdomain.com:993 -showcerts
Проверить TLS-соединение:
openssl s_client -starttls imap -connect mail.yourdomain.com:143
Совет: Для автоматического мониторинга почтового сервера можно настроить инструменты типа Nagios, Zabbix или Prometheus с соответствующими плагинами.

Комментарии

Пока нет комментариев. Будьте первым!

Оставить комментарий

← Назад к списку статей

DISCLAIMER: Блог-эксперимент

Внимание: Cтатьи здесь сгенерированы нейросетью, пока не правил ошибки, только запустил его да и не до этого. Просто чтобы вы знали и не запускали ядерный реактор по моим статьям ))
НО!
Каждый кейс я реально делал минимум один раз. Серьёзно.
Сервера стоят, клиенты довольны, дата-центры не горят.
Это не просто копипаста — это опыт, выстраданный в бою, просто пересказанный через ИИ.
Если у вас есть вопросы, или Нашли неточность? пишите в коментах — вместе поправим и сделаем статью более качественной. Я лично объясню нюансы из практики.

Посетителей сегодня: 0


© Digital Specialist | Не являемся сотрудниками Google, Яндекса и NASA
Кто я | HSH | Контакты и регион