Почтовый сервер на на базе Ubuntu Server 20.04
Данный опус является частью единого цикла заметок o CLI. Для его написания использовалось множество различных источников (скилы крутых специалистов, статьи с тематических сайтов, техническая документация, комментарии с форумов и социальных сетей и т. д и т. п.). К сожалению, указать все источники точно не представляется возможным! По этому, в конце заметки, будет указана ссылка только на основной источник. Материалы, использованные для написания заметки, изменялись автором под конкретную задачу! Вам, скорее всего, тоже придется поступить аналогичным образом для получения желаемого результата)
В данной инструкции выполнена настройка полноценного почтового сервера на Linux Ubuntu Server (протестирована для версий 20.04 и 22.04). Список всех особенностей и возможностей:
- Поддержка шифрования;
- Хранение почты на сервере;
- Защита от СПАМа и вирусов;
- Почтовая система на базе Postfix;
- Поддержка виртуальных доменов;
- Хранение части настроек в MariaDB;
- Доступ к почте с помощью веб-интерфейса (Roundcube);
- Подключение к почтовым ящикам по POP3 и IMAP (Dovecot);
- Возможность управления почтовыми ящиками с помощью PostfixAdmin.
В данной инструкции мы разберем использование веб-клиента Roundcube. При необходимости, можно установить другой, например, WebMail Lite или несколько одновременно.
На официальном сайте заходим на страницу загрузки Roundcube. Смотрим ссылку на версию продукта с длительной поддержкой (LTS):
* мы можем скачать и стабильную версию программы, но для продуктивной среды лучше выбирать то, что будет долго поддерживаться со стороны разработчика.
Используем ссылку, чтобы загрузить архив программы:
wget https://github.com/roundcube/roundcubemail/releases/download/1.5.3/roundcubemail-1.5.3-complete.tar.gz
Создаем каталог, где будут размещаться файлы портала:
mkdir /var/www/html/webmail
И распаковываем скачанный архив:
tar -C /var/www/html/webmail -xvf roundcubemail-*.tar.gz --strip-components 1
Копируем шаблон конфига:
cp /var/www/html/webmail/config/config.inc.php.sample /var/www/html/webmail/config/config.inc.php
И открываем его на редактирование:
vi /var/www/html/webmail/config/config.inc.php
$config['db_dsnw'] = 'mysql://roundcube:roundcube123@localhost/roundcubemail';
$config['enable_installer'] = true;
* первую строку мы редактируем, а вторую добавляем. В первой строке roundcube:roundcube123 — логин и пароль для доступа к базе данных; localhost — сервер базы данных; roundcubemail — имя базы данных. Вторая строка разрешает установку портала.
Редактируем:
...
$config['smtp_pass'] = '';
* в данном случае мы просто оставляем значение для переменной $config['smtp_pass'] пустым. В противном случае, веб-интерфейс будет выдавать ошибку авторизации при отправке сообщения.
Также дописываем в конфигурационный файл следующее:
$config['drafts_mbox'] = 'Drafts';
$config['junk_mbox'] = 'Junk';
$config['sent_mbox'] = 'Sent';
$config['trash_mbox'] = 'Trash';
$config['create_default_folders'] = true;
* настройка $config['create_default_folders'] = true создает папки по умолчанию, если их нет:
- Drafts — Черновики.
- Junk — СПАМ.
- Sent — Отправленные.
- Trash — Корзина.
* Без данной настройки, если не создавались папки другим клиентом, веб-клиент будет выдавать ошибки при перемещении писем, например, при их удалении.
Задаем владельца apache на папку портала:
chown -R www-data:www-data /var/www/html/webmail
Создаем в MariaDB базу для roundcubemail:
mysql -uroot -p
> CREATE DATABASE roundcubemail DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
> GRANT ALL PRIVILEGES ON roundcubemail.* TO roundcube@localhost IDENTIFIED BY 'roundcube123';
> quit
И загружаем в созданную базу данные:
mysql -uroot -p roundcubemail < /var/www/html/webmail/SQL/mysql.initial.sql
Устанавливаем компоненты, необходимые для работы Roundcube:
apt install php-pear php-intl php-ldap php-net-smtp php-gd php-imagick php-zip php-curl php-dom php-xml php-mcrypt
Если система выдаст ошибку при установке компонента mcrypt, его нет в репозитории — поставим его вручную. Для этого установим пакеты, необходимые для сборки его из исходников:
apt install php-dev libmcrypt-dev
Выполняем команды:
pecl channel-update pecl.php.net
pecl install mcrypt-1.0.5
Создадим файл с настройкой нового модуля:
vi /etc/php/7.4/fpm/conf.d/99-mcrypt.ini
extension=mcrypt.so
* при условии, что у нас установлен php версии 7.4. В противном случае меняем значение на другое.
Компоненты установлены. Настроим php:
vi /etc/php/7.4/fpm/php.ini
date.timezone = "Europe/Moscow"
...
post_max_size = 50M
...
upload_max_filesize = 50M
* в данном примере мы задаем московское время и возможность загружать файл размером в 50 Мб (это будет максимальным объемом вложений, которые можно отправлять через веб-интерфейс). Еще раз напомним, что /7.4/ в пути зависит от версии PHP, которую мы решили использовать.
Перезагружаем php-fpm:
systemctl restart php7.4-fpm
Настроим nginx:
vi /etc/nginx/nginx.conf
Добавим строку в раздел http:
http {
...
client_max_body_size 50M;
...
* данной настройкой мы также разрешим загрузку файлов размером 50 Мб.
Перезапустим nginx для применения настройки:
systemctl restart nginx
Теперь открываем браузер и переходим по адресу http://<IP-адрес сервера>/webmail/installer/. На первой странице будет проведена диагностика системы на наличие необходимых компонентов и настроек:
В самом низу нажимаем по кнопке Next. Если кнопка будет неактивна, проверяем, что нет ошибок (NOT OK).
На следующей странице проверяем, что все пункты находятся в состоянии OK. Установка выполнена.
Открываем конфигурационный файл roundcube:
vi /var/www/html/webmail/config/config.inc.php
Запрещаем установку портала:
$config['enable_installer'] = false;
После удаляем папку с установочными скриптами:
rm -rf /var/www/html/webmail/installer
И заходим в браузере по адресу http://<IP-адрес сервера>/webmail/. Вводим в качестве логина адрес почты созданного пользователя и его пароль.
#Возможны и другие варианты доработки POSTFIX, часть примеров указана по ссылкам в источнике.
Cпасибо автору!
Источник: