Почтовый сервер позволяет отправлять и получать электронную почту. Установка собственного почтового сервера на Ubuntu дает вам больше контроля над электронной почтой и повышает уровень конфиденциальности и безопасности. Однако управление собственным почтовым сервером требует немного больше технических знаний.
В этом подробном руководстве вы пройдете все шаги по созданию полнофункционального почтового сервера на Ubuntu 20.04/22.04 от начала и до конца.
Предварительные условия
Прежде чем приступить к работе, вам понадобится следующее:
- Сервер Ubuntu 20.04/22.04 со статическим публичным IP-адресом. Рекомендуется использовать VPS.
- Зарегистрированное доменное имя. Оно будет использоваться для отправки и получения электронной почты с вашего почтового сервера.
- Административный доступ к вашему серверу Ubuntu.
- Базовые знания командной строки Linux.
Мы будем использовать Postfix для SMTP-сервера, Dovecot для IMAP/POP3 и OpenDMARC для аутентификации электронной почты. Также будет настроена база данных MySQL для хранения информации о виртуальных доменах и пользователях.
Давайте начнем с обновления репозитория пакетов и установки некоторых зависимостей на наш сервер Ubuntu:
$ sudo apt update
$ sudo apt install postfix postfix-mysql dovecot-imapd dovecot-pop3d mariadb-server openssl openssl-blacklist
Далее мы выполним шаги по настройке каждого компонента.
Настройка Postfix
Postfix управляет службой SMTP для отправки и получения электронной почты. Нам нужно обновить некоторые настройки в главном конфигурационном файле Postfix.
Откройте файл с помощью:
$ sudo nano /etc/postfix/main.cf
Найдите myhostname
и установите в качестве параметра зарегистрированное доменное имя:
myhostname = mail.example.com
Далее найдите параметр mydomain
и установите его на свой домен:
mydomain = example.com
Установите параметр myorigin
параметр $mydomain
:
myorigin = $mydomain
Под INTERNET_PROTOCOLS
Убедитесь, что ipv4
включена:
inet_interfaces = all
inet_protocols = all
Это позволяет Postfix прослушивать все доступные сетевые интерфейсы IPv4.
Теперь найдите файл mydestination
и установите следующее значение:
mydestination = $myhostname, localhost.$mydomain, $mydomain
Здесь указываются домены, на которые Postfix будет доставлять почту локально.
После завершения редактирования сохраните и закройте файл.
Далее нам нужно настроить SMTP-аутентификацию. Сгенерируйте файл паролей для Postfix с помощью команды postmap
командой:
$ sudo postmap /etc/postfix/sasl_passwd
Создайте файл пользователя и пароля:
$ sudo nano /etc/postfix/sasl_passwd
Добавьте свой e-mail и пароль в отдельные строки:
mail.example.com [email protected]
mail.example.com password123
Сохраните и закройте файл.
Теперь отредактируйте конфигурацию Postfix SASL:
$ sudo nano /etc/postfix/sasl/smtpd.conf
Убедитесь, что в ней есть следующие параметры:
pwcheck_method: saslauthd
mech_list: plain login
Это устанавливает Postfix на использование saslauthd
службу для аутентификации.
Перезапустите Postfix, чтобы загрузить новую конфигурацию:
$ sudo systemctl restart postfix
Теперь Postfix настроен и готов к отправке и получению электронной почты.
Настройка Dovecot
Dovecot будет использоваться для работы с протоколами IMAP и POP3 для доступа к электронной почте из почтовых клиентов, таких как Outlook или Thunderbird.
Откройте файл конфигурации Dovecot:
$ sudo nano /etc/dovecot/dovecot.conf
Найдите раздел протоколов и включите imap и pop3:
protocols = imap pop3
Включите аутентификацию SMTP:
disable_plaintext_auth = yes
Установите местоположение почты:
mail_location = maildir:/var/mail/%d/%n
Теперь откройте файл конфигурации аутентификации SMTP:
$ sudo nano /etc/dovecot/conf.d/10-auth.conf
Найдите auth_mechanisms
параметр и установите его:
auth_mechanisms = plain login
Это позволит использовать обычный текст и аутентификацию по логину, аналогичную Postfix.
Наконец, откройте файл разрешений:
$ sudo nano /etc/dovecot/conf.d/10-mail.conf
И установите:
mail_access_groups = mail
Это позволяет членам mail
группе доступ к почтовым ящикам.
Сохраните и перезапустите Dovecot:
$ sudo systemctl restart dovecot
Теперь Dovecot готов к работе с почтой IMAP и POP3.
Настройка базы данных MySQL
Далее мы настроим базу данных MySQL для хранения виртуальных доменов и пользователей нашего почтового сервера.
Войдите в оболочку MySQL:
$ sudo mysql
Создайте базу данных с именем mailserver
:
CREATE DATABASE mailserver;
Создайте нового пользователя и предоставьте ему права доступа к базе данных:
GRANT SELECT,INSERT,UPDATE,DELETE ON mailserver.* TO 'mailuser'@'127.0.0.1' IDENTIFIED BY 'password123';
Выйдите из MySQL:
quit
Теперь мы можем импортировать SQL-файл конфигурации Postfix для создания необходимых таблиц:
$ sudo mysql mailserver < /etc/postfix/mysql/postfix_db.sql
Теперь база данных MySQL готова к хранению информации о домене и пользователях для нашего почтового сервера.
Виртуальные домены и пользователи
Настроив базу данных, мы можем создать виртуальные домены и пользователей.
Виртуальный домен позволяет размещать несколько доменов на одном почтовом сервере.
Сначала откройте файл конфигурации виртуального домена Postfix:
$ sudo nano /etc/postfix/mysql-virtual_domains.cf
Отмените параметр config_directory и установите его на наш конфиг MySQL:
config_directory = /etc/postfix/mysql
Теперь давайте создадим запись виртуального домена в базе данных. Войдите в MySQL:
$ sudo mysql mailserver -p
Вставьте строку для домена:
INSERT INTO `virtual_domains` (`id` ,`name`) VALUES ('1', 'example.com');
Выйдите из MySQL.
Далее откройте файл виртуальных пользователей:
$ sudo nano /etc/postfix/mysql-virtual_mailboxes.cf
Установите config_directory
как и раньше:
config_directory = /etc/postfix/mysql
Это позволяет Postfix искать пользователей в MySQL.
Снова введите MySQL:
$ sudo mysql mailserver -p
Создайте пример пользователя:
INSERT INTO `virtual_users` (`id`, `domain_id`, `password` , `email`) VALUES ('1', '1', ENCRYPT('password123', CONCAT('$6
Это создаст пользователя «[email protected]» с зашифрованным паролем.
Теперь нам нужно разрешить пользователю доступ к почтовым ящикам. Вставьте строку в virtual_aliases
:
INSERT INTO `virtual_aliases` (`id`, `domain_id`, `source`, `destination`) VALUES ('1', '1', '[email protected]', '[email protected]');
Выйдите из MySQL и перезапустите Postfix, чтобы изменения вступили в силу:
$ sudo systemctl restart postfix
Таким же образом мы можем создать больше доменов и пользователей.
OpenDMARC
OpenDMARC реализует стандарт аутентификации электронной почты DMARC. Это помогает повысить безопасность и предотвратить спам и фишинг.
Сначала установите OpenDMARC:
$ sudo apt install opendmarc opendmarc-tools
Откройте основной файл конфигурации:
$ sudo nano /etc/opendmarc.conf
Установите свой домен:
AuthservID mail.example.com
Включите ведение журнала и создание отчетов:
Socket inet:8893@localhost
LogLevel debug
Syslog true
RejectFailures false
ReportFailures true
HistoryFile /var/lib/opendmarc/opendmarc.dat
StatsSocket /var/run/opendmarc/opendmarc.sock
MinServers 3
ServerInterval 60
Это позволяет регистрировать активность в syslog и включать ежедневные отчеты по электронной почте.
Добавьте свой домен в качестве адреса From:
/etc/opendmarc/ignore.hosts
mail.example.com
Теперь включите OpenDMARC:
$ sudo systemctl enable opendmarc
$ sudo systemctl start opendmarc
Наконец, создайте DMARC TXT-запись для вашего домена:
$ sudo opendmarc-gen-policy --domain example.com --policy none --report email:[email protected]
Возьмите эту TXT-запись и добавьте ее в конфигурацию DNS вашего домена.
OpenDMARC теперь активен и будет проверять входящие сообщения электронной почты.
Тестирование почтового сервера
Теперь наш почтовый сервер Ubuntu должен быть правильно настроен. Давайте проведем небольшое тестирование, чтобы убедиться, что он работает.
Сначала отправьте тестовое письмо с самого сервера с помощью:
$ echo "This is a test" | mail -s Testing [email protected]
Проверьте, доставлено ли письмо:
$ sudo ls -l /var/mail
Если доставка прошла успешно, вы должны увидеть файл с именем пользователя, которому вы отправили письмо.
Далее настройте почтовый клиент, например Thunderbird, на подключение к почтовому серверу. Добавьте новую учетную запись, используя настроенные учетные данные IMAP и SMTP.
Отправьте тестовое сообщение на адрес электронной почты в вашем домене. Оно должно быть доставлено в папку входящих сообщений пользователя на сервере Ubuntu.
Вы также можете использовать Telnet, чтобы вручную подключиться к Postfix SMTP и отправить сообщение:
$ telnet mail.example.com 25
Введите EHLO
, тогда MAIL FROM:
, RCPT TO:
и, наконец, данные тестового сообщения. Это подтверждает, что отправка и доставка SMTP работают правильно.
Проверьте /var/log/mail.log и /var/log/syslog на наличие ошибок в работе Postfix, Dovecot, MySQL или OpenDMARC во время тестирования. Отладьте и решите все возникающие проблемы.
Если все работает как надо, ваш почтовый сервер Ubuntu готов к использованию!
Защита почтового сервера
Теперь, когда у нас есть работающий почтовый сервер, давайте поговорим о лучших методах его защиты:
- Используйте HTTPS/SSL для служб, когда это возможно, для шифрования трафика. Получите SSL-сертификаты для своего домена.
- Ограничение доступа к почтовым службам по IP-адресам с помощью Postfix
mynetworks
или списка разрешенных хостов TCP Wrappers. - Включите правила брандмауэра, разрешающие трафик только на портах 25 (SMTP), 143 (IMAP), 993 (IMAP+TLS) и 110 (POP3).
- Отключите проверку подлинности пароля в SSH и используйте только вход на основе ключа.
- Убедитесь, что системные пакеты всегда актуальны, включив автоматические обновления безопасности.
- Регулярно просматривайте журналы сервера на предмет признаков атак или попыток несанкционированного доступа.
- Настройте logrotate для архивации и сжатия журналов.
- Отключите все ненужные службы, которые не используются.
- Создайте системных пользователей с более низкими привилегиями для таких служб, как Dovecot и Postfix.
- Используйте надежные пароли и по возможности применяйте двухфакторную аутентификацию.
- Регулярно создавайте резервные копии почтовых данных и баз данных MySQL.
Соблюдение правил безопасности поможет защитить ваш почтовый сервер и конфиденциальную информацию пользователей. Главное — это ограничение доступа, постоянное обновление, мониторинг активности, резервное копирование данных и использование шифрования.
Заключение
На этом мы завершаем это пошаговое руководство по развертыванию почтового сервера на Ubuntu 20.04. Мы установили и настроили Postfix, Dovecot, MySQL и OpenDMARC. Мы также рассмотрели важные меры безопасности для защиты почтового сервера.
Имея собственный почтовый сервер Ubuntu, вы можете полностью контролировать свою электронную почту, повышая уровень конфиденциальности, безопасности и доставки. Пользователи могут получать доступ к почте по протоколам IMAP и SMTP с помощью любого стандартного почтового клиента.
Запуск собственного почтового сервера требует большего ручного обслуживания по сравнению с использованием хостингового почтового провайдера. Но преимущества собственного сервера часто перевешивают дополнительные усилия.
Дайте мне знать, если у вас есть другие вопросы! Я буду рад предоставить более подробную информацию о любой части процесса настройки почтового сервера.