Администрирование roundcube

Администрирование roundcube Хостинг

Содержание
  1. Брендирование (свой логотип и название)
  2. Возможные проблемы
  3. Libfreshclam init failed
  4. Подключение к удаленным почтовым серверам
  5. Настройка DKIM
  6. Скачать Roundcube
  7. Полезные настройки
  8. Создание писем в формате HTML
  9. Время сессии
  10. Отображение писем
  11. Установка и настройка PostfixAdmin
  12. Сервер баз данных
  13. Автоматическая настройка почтовых клиентов
  14. Зависимости PHP
  15. Настроить Roundcube
  16. Защищаемся от вирусов и СПАМа
  17. Установка и настройка Clamav + Amavisd
  18. Настройка обновлений антиспама
  19. Проверка
  20. Пересылка СПАМа и вирусов на другой ящик
  21. Обучение антиспама
  22. Подготовка
  23. Включить плагины Roundcube
  24. Настроить Nginx
  25. Создаем первый почтовый ящик и проверяем работу сервера
  26. Устанавливаем и настраиваем Roundcube Webmail
  27. Возможные ошибки
  28. Неудачное соединение с IMAP сервером
  29. Return type of zipdownload_mbox_filter
  30. Изменение размера вложения
  31. Папки на русском в Outlook
  32. Проверьте установку Roundcube
  33. Настройка квот
  34. Антиспам средствами Postfix
  35. Заголовки
  36. Проверка SPF
  37. Защита от СПАМа «от себя к себе»
  38. Настройка веб-сервера
  39. PHP + PHP-FPM + NGINX
  40. MariaDB
  41. Отправка почты наружу
  42. Настройки DNS для сервера
  43. Настройки DNS для домена
  44. Создать базу данных MySQL
  45. Смена пароля в roundcube
  46. Разное
  47. Настройка ограничений
  48. Смена email адреса
  49. Настройка Dovecot
  50. Подготовка системы
  51. Общие настройки
  52. Настройка безопасности

Брендирование (свой логотип и название)

Roundcube можно настроить для отображения вашего логотипа и названия. Для этого открываем конфигурационный файл:

Добавляем строки (или редактируем):

* skin_logo указывает путь относительно каталога roundcube (но если указать первым символом /, то путь будет относительно каталога с темой — это может быть полезным, если для каждой темы должен быть свой логотип); product_name — задает название в нижней части формы авторизации.

Создаем каталог для хранения изображений:

Открываем веб-интерфейс и проверяем, что логотип и название поменялись.

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

При попытке подключиться к серверу мы можем увидеть ошибку «Невозможно установить безопасное соединение с сервером «IMAP».

Причина: в старых системах используется по умолчанию TLS 1.0, поддержка которого уже отсутствует.

Решение: необходимо выполнить 3 действия.

1. Устанавливаем обновление KB3140245.

2. Создаем две ветки реестра:

Это можно выполнить вручную в утилите regedit или ввести команды:

reg add «HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSecurityProvidersSchannelProtocolsTLS 1.1Client»

reg add «HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSecurityProvidersSchannelProtocolsTLS 1.2Client»

В созданных ветках создаем параметр DisabledByDefault с типом DWORD (32 бита) и значением 0. Это можно выполнить командами:

reg add «HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSecurityProvidersSchannelProtocolsTLS 1.1Client» /v DisabledByDefault /t REG_DWORD /d 0

reg add «HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSecurityProvidersSchannelProtocolsTLS 1.2Client» /v DisabledByDefault /t REG_DWORD /d 0

3. Перезагружаем компьютер.

Не запускается служба clamav-daemon, а в логе мы можем увидеть ошибку:

LibClamAV Error: cli_loaddbdir(): No supported database files found in /var/lib/clamav
ERROR: Can’t open file or directory

Причина: нет антивирусных баз.

Решение: для получения баз достаточно запустить команду:

Если команда вернет ошибку, переходим к решению ниже.

Libfreshclam init failed

При запуске команды freshclam мы можем получить ошибку:

ERROR: /var/log/clamav/freshclam.log is locked by another process
ERROR: Problem with internal logger (UpdateLogFile = /var/log/clamav/freshclam.log).
ERROR: initialize: libfreshclam init failed.
ERROR: Initialization error!

А в логе /var/log/clamav/freshclam.log можно увидеть строку:

Решение: меняем источник баз. Открываем файл:

Комментируем строки, которые начинаются на ##DatabaseMirror

systemctl stop clamav-freshclam

Удаляем старую информацию об обновлениях:

rm -f /var/lib/clamav/freshclam.dat

Ждем обновления, после запускаем службу clamav-freshclam и перезапускаем clamav-daemon:

systemctl restart clamav-daemon

Подключение к удаленным почтовым серверам

По умолчанию, roundcube подключается к локальному хосту. Если наш почтовый сервер расположен удаленно, открываем файл:

Редактируем опции default_host и smtp_server, например:

* в данном примере мы указали, что подключение к серверу по IMAP и SMTP выполняются с использованием TLS.

Важно отметить, что существуют различные вариации подключения к почтовой системе. Например, по открытым портам:

Или с помощью TLS:

Или с помощью SSL:

Обратите внимание, что адреса подключения по SSL указаны не IP, а именами. Это сделано сознательно, так как SSL проходит более строгую проверку сертификата, что потребует обращение по имени. При этом на стороне почтовой системы сертификат должен быть настроен также корректно. Но если мы хотим игнорировать проверку сертификата, то можем добавить в конфигурацию следующее:

Настройка DKIM

Подпись писем не является обязательной, но помогает не попадать в СПАМ. D KIM настраивается для каждого домена, а также должна создаваться специальная запись в DNS. Рассмотрим создание и настройку DKIM в amavisd.

Создаем каталог для хранения ключей:

mkdir -p /var/lib/dkim

Для нашего удобства создаем переменную с доменом, для которого будем создавать DKIM:

* где hostname -d — команда, которая вернет нам домен из имени нашего сервера. При необходимости создать dkim для другого домена, пропишем его вручную, а не с использованием команды.

Посмотреть значение полученной переменной можно командой:

Генерируем последовательность для нашего домена:

Задаем права на созданный файл:

chown amavis:amavis /var/lib/dkim/*.pem

chmod 0400 /var/lib/dkim/*.pem

Открываем конфигурационный файл amavisd:

* в данном примере мы закомментировали первую строку и раскомментировали вторую. Это укажет amavis, что он должен запускаться и работать на двух портах.

А также добавим:

$enable_dkim_verification = 1;
$enable_dkim_signing = 1;

dkim_key(‘dmosk.ru’, «dkim», «/var/lib/dkim/dmosk.ru.pem»);

* где dmosk.ru — домен, для которого мы настраиваем dkim; /var/lib/dkim/dmosk.ru.pem — путь до сгенерированного файла с последовательностью.

systemctl restart amavis

Посмотреть DKIM последовательность для нового домена можно командой:

Мы должны увидеть что-то на подобие:

; key#1 1024 bits, i=dkim, d=dmosk.ru, /var/lib/dkim/dmosk.ru.pem
dkim._domainkey.dmosk.ru.        3600 TXT (
  «v=DKIM1; p=»
  «MIGfMA0SDFqGSIb3DQEBAQUAA4GNADCBiQKBgQC44iOK+99mYBxsnIl1Co8n/Oeg»
  «4+x90sxqWzoGW42d/GCP4wiYqVqncc37a2S5Berv0OdoCGcmkDkKWh4CHhFD4blk»
  «x6eMYXsp1unAdo2mk/OVK7M2ApraIkh1jVbGBZrREVZYTE+uPOwtAbXEeRLG/Vz5»
  «zyQuIpwY2Nx3IgEMgwIDAQAB»)

Проверить корректность настройки DKIM можно командой:

Переходим к настройке Postfix. Мы должны добавить отправку всех исходящих писем на проверку в amavis на порт 10026 и принимать обратно письма на порт 10027.

Отредактируем submission и smtps, добавив content_filter:

127.0.0.1:10027   inet  n  —  n  —  16  smtpd
  -o content_filter=
  -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
  -o smtpd_helo_restrictions=
  -o smtpd_client_restrictions=
  -o smtpd_sender_restrictions=
  -o smtpd_recipient_restrictions=permit_mynetworks,reject
  -o mynetworks_style=host
  -o smtpd_authorized_xforward_hosts=127.0.0.0/8

systemctl restart postfix

* в данном примере мы указали, что соединение для отправки почты должно быть защищенным. Это важно для нашей настройки DKIM.

Пробуем отправить письмо — в заголовках мы должны увидеть:

Скачать Roundcube

Начните с загрузки архива Roundcube, используя следующую команду wget :

После завершения загрузки распакуйте архив и переместите код Roundcube в каталог /var/www/roundcubemail :

tar xzf roundcubemail-1.3.8.tar.gz.tar.gzsudo mv roundcubemail-1.3.8/ /var/www/roundcubemail

sudo chown -R www-data: /var/www/roundcubemail

Полезные настройки

В данном разделе рассмотрим настройки, которые могут пригодиться в ходе эксплуатации roundcube. Изменения вводим в конфигурационном файле:

Создание писем в формате HTML

По умолчанию, все письма создаются в текстовом формате. Данное поведение можно изменить в настройках пользователя. Однако, если мы хотим, чтобы у всех пользователей по умолчанию письма создавались в HTML, добавляем строку:

* возможны варианты:

Время сессии

* время указывается в минутах. В данном примере, 24 часа.

Отображение писем

Можно указать, чтобы письма по умолчанию отображались общим списком в порядке поступления или в режиме чата. За это отвечает опция:

* возможные варианты:

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

Устанавливаем дополнительные компоненты для PHP:

Для применения установленных пакетов, перезапускаем обработчик скриптов:

Создаем каталог templates_c внутри папки портала (без него не запустится установка):

* в противном случае, при попытке зайти в панель управления после ее установки мы получим ошибку ERROR: the templates_c directory doesn’t exist or isn’t writeable for the webserver.

Задаем права на каталог:

* несмотря на то, что мы используем веб-сервер nginx, php-fpm по умолчанию, запускается от пользователя www-data.

Подключаемся к СУБД MySQL:

mysql -u root -p

Создаем базу данных postfix:

* где postfix — имя базы.

Создаем учетную запись в mariadb и даем ей доступ к созданной базе:

* где postfix — имя учетной записи; postfix123 — пароль; localhost разрешает подключение только с локального сервера.

Если мы получим ошибку:

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

Выходим из командной оболочки MariaDB:

* в предыдущих версиях использовался файл config.inc.php. В новых версиях его не рекомендуется править, а использовать config.local.php, который переопределяет настройки.

* где configured говорит приложению, что администратор закончил его конфигурирование; default_language — используемый язык по умолчанию; database_password — пароль для базы данных, который мы задали на предыдущем шаге; emailcheck_resolve_domain — задает необходимость проверки домена при создании ящиков и псевдонимов.

Задаем дважды пароль установки и генерируем хэш, кликнув по Generate setup_password hash:


Администрирование roundcube

После копируем хэш, который появится под кнопкой:


Администрирование roundcube

И добавляем строчку:

Читайте также:  Лицензии связи / Хабр


Администрирование roundcube

Если в процессе установки система выведет ошибки, необходимо самостоятельно с ними разобраться. Как правило, они могут сводиться к отсутствию необходимых пакетов, которых может не оказаться в системе по умолчанию.

После установки в нижней части страницы должна быть форма добавления суперпользователя — вводим данные:


Администрирование roundcube

Однако, конкретно, в моем случае, пользователь не создавался при установке системы и необходимо было создать администратора вручную. Если это потребуется, в консоли сервера подключаемся к СУБД:

mysql -uroot -p

Переходим к использованию базы postfix:

Добавляем администратора запросом:

Выходим из sql-оболочки:

Создаем своего пользователя. После чего, можно удалить того, что создали через командную строку.

Установка Postfix в Ubuntu выполняется командой:

* помимо самого postfix, мы также установим postfix-mysql для возможности работы с СУБД.

В процессе установки должно появиться окно «Postfix Configuration» — оставляем Internet Site:


Администрирование roundcube

В следующем окне оставляем имя сервера и нажимаем Enter.

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

groupadd -g 1024 vmail

* сначала мы создаем группу vmail и guid 1024, после — пользователя vmail с uid 1024 и домашней директорией /home/mail — в ней у нас будет храниться почта. Обратите внимание, что в некоторых системах идентификатор группы и пользователя 1024 может быть занят. В таком случае необходимо создать другой, а в данной инструкции ниже заменить все 1024 на альтернативный.

Если директория для почты ранее уже была создана, то необходимо задать в качестве владельца нашего созданного пользователя:

chown vmail:vmail /home/mail

Теперь открываем на редактирование конфигурационный файл почтового сервера:

И редактируем следующие строки:

Если имя сервера отличается от имени, по которому сервер будет зарегистрирован в DNS, задаем опцию:

myhostname = mx01.dmosk.ru

Теперь в конец конфигурационного файла допишем следующее:

virtual_mailbox_base = /home/mail
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_minimum_uid = 1024
virtual_uid_maps = static:1024
virtual_gid_maps = static:1024
virtual_transport = dovecot
dovecot_destination_recipient_limit = 1

smtpd_sasl_auth_enable = yes
smtpd_sasl_exceptions_networks = $mynetworks
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth

smtp_use_tls = yes
smtpd_use_tls = yes
smtpd_tls_auth_only = yes
smtpd_helo_required = yes

Создаем файл с настройками обращения к базе с алиасами:

Создаем файл с инструкцией получения данных по виртуальным доменам:

И файл с почтовыми ящиками:

Открываем файл master.cf и дописываем в самый конец:

submission   inet  n  —  n  —  —  smtpd
  -o smtpd_tls_security_level=may
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_sasl_type=dovecot
  -o smtpd_sasl_path=/var/spool/postfix/private/auth
  -o smtpd_sasl_security_options=noanonymous
  -o smtpd_sasl_local_domain=$myhostname

smtps   inet  n  —  n  —  —  smtpd
  -o syslog_name=postfix/smtps
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject

* необходимо убедиться, что в содержимом файла нет других раскомментированных опций для submission, smtps и dovecot (по умолчанию, их нет). В данном случае, мы настроили работу postfix на портах 25, 465 и 587. В файле master.cf мы настраиваем работу вспомогательных сервисов для Postfix. Описание каждого сервиса начинается с новой строки без отступа. Затем идут настройки для сервиса и параметры запуска. Для примера, рассмотрим первую добавленную строку — 
submission   inet  n  —  n  —  —  smtpd:

* после команды идут аргументы ее запуска. Они могут переопределять параметры, заданные в main.cf. Каждый аргумент записывается с новой строки и начинается с двух пробелов. В данном примере мы используем следующие аргументы:

Генерируем сертификаты безопасности. Для этого создаем каталог, в котором их разместим:

mkdir -p /etc/ssl/mail

И сгенерируем их следующей командой:

openssl req -new -x509 -days 1461 -nodes -out /etc/ssl/mail/public.pem -keyout /etc/ssl/mail/private.key -subj «/C=RU/ST=SPb/L=SPb/O=Global Security/OU=IT Department/CN=relay.dmosk.ru»

* сертификат сгенерирован на 1461 день, ключи subj могут быть произвольными, CN необходимо указать в соответствии с именем сервера, по которому мы будем подключаться к почте.
* если мы хотим использовать сертификат, который будет проходить все проверки безопасности, его нужно купить или запросить у Let’s Encrypt.

Сервер баз данных

Также для Roundcube нужна СУБД — мы установим MariaDB:

apt install mariadb-server

Устанавливаем компоненты для работы php с mysql:


Администрирование roundcube

Автоматическая настройка почтовых клиентов

Для автоматического конфигурирования почтовых клиентов необходимо настроить сервис autodiscover. Для этого настраиваем веб-сервер, который будет возвращать почтовые настройки для домена.

Подробнее процесс настройки описан в статье Настройка Autodiscover для своего почтового сервера.

Зависимости PHP

Мы начнем с обновления списка пакетов и установки всех необходимых PHP- зависимостей:

sudo apt updatesudo apt install php-auth php-intl php-mail-mime php-mail-mimedecode php-mcrypt php-net-smtp php-net-socket php-pear php-xml php7.0-intl php7.0-mcrypt php7.0-xml php7.0-gd php7.0-gd php-imagick

После завершения установки выполните следующую команду sed чтобы установить значение date.timezone на UTC :

sudo sed -i «s/;date.timezone.*/date.timezone = UTC/» /etc/php/7.0/fpm/php.ini

Перезапустите службу PHP FPM, чтобы изменения вступили в силу:

sudo systemctl php7.0-fpm restart

Настроить Roundcube

Откройте браузер и перейдите по https://mail.linuxize.com/roundcubemail/installer .

Вам будет представлен следующий экран:


Администрирование roundcube

В разделе Checking available databases требуется только расширение MySQL.


Администрирование roundcube

Самая важная часть здесь — ввести правильные настройки базы данных MySQL.

Когда вы закончите с шагом настройки, перейдите к следующему шагу и импортируйте структуру базы данных MySQL Roundcube, нажав на кнопку Initialize database .


Администрирование roundcube

После создания структуры базы данных удалите каталог installer чтобы предотвратить изменение конфигурации и / или несанкционированный доступ.

sudo rm -rf /var/www/roundcubemail/installer

Включение автоматической очистки кеша Roundcube необязательно, но рекомендуется:

Защищаемся от вирусов и СПАМа

Антивирус требует много ресурсов. Будьте готовы, что после его запуска сервер начнет работать медленнее и понадобится добавить ресурсы.

Установка и настройка Clamav + Amavisd

Устанавливаем необходимые для работы антивируса и антиспама компоненты:

Добавляем пользователя clamav в группу amavis:

Открываем конфигурационный файл amavis:

Затем открываем на редактирование:

* данные опции позволят программе Outlook без ошибок отправлять тестовое сообщение.
** мы должны добавить их выше строки 1;  # ensure a defined return.

Разрешаем запуск антивируса и amavis:

systemctl enable clamav-daemon clamav-freshclam amavis

* где content_filter указывает на приложение, которое будет сканировать сообщения;

Теперь редактируем master.cf:

scan   unix  —  —  n  —  16  smtp
  -o smtp_send_xforward_command=yes
  -o smtp_enforce_tls=no

127.0.0.1:10025   inet  n  —  n  —  16  smtpd
  -o content_filter=
  -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
  -o smtpd_helo_restrictions=
  -o smtpd_client_restrictions=
  -o smtpd_sender_restrictions=
  -o smtpd_recipient_restrictions=permit_mynetworks,reject
  -o mynetworks_style=host
  -o smtpd_authorized_xforward_hosts=127.0.0.0/8

* итак, данной настройкой мы создадим два вспомогательных сервиса scan и 127.0.0.1:10025 (сервис без имени, он просто будет слушать на порту 10025 — это порт по умолчанию, на который отправляет сообщение amavis после выполнения проверки). Также, мы используем следующие опции:

Настройка обновлений антиспама

Для обновления базы антиспама выполняем команду:

sa-update —nogpg —verbose

Для настройки автоматического обновления, используем cron. Установим его:

apt install cron

Открываем редактирование планировщика:

30 3 * * * /usr/bin/sa-update

* в данном примере, каждый день в 03:30 будет запускаться процесс обновления антиспама.

Проверка

Для проверки антивируса отправляем сообщение со следующим содержимым:

Большинство почтовых систем экранинуют вирусную последовательность и письмо нормально пройдет мимо нашего антивируса. Чтобы сделать корректный тест, необходимо отправить письмо SMTP-командами.

Письмо не должно дойти, а в логе (/var/log/maillog) мы увидим строку:

Для проверки работы контентного антиспама, отправляем письмо со следующим содержимым:

В итоге, письмо не должно прийти, а в логах мы увидим:

Пересылка СПАМа и вирусов на другой ящик

Все письма со спамом и вирусами будут перемещаться в карантин. Если мы хотим перенаправлять все подобные сообщения на специальный ящик, то необходимо настроить amavis.

Добавляем такие опции:

Пробуем отправить сообщения с тестовыми сигнатурами на СПАМ и вирус — письма должны быть перенаправлены на указанные адреса.

Обучение антиспама

Хорошей практикой будет договориться с пользователями о ручном помещении нежелательной почты из входящих в папку СПАМ. Тогда мы сможем пройтись скриптом по всем ящикам на сервере и обучать антиспам. Например, такой командой:

Статистику обучения можно посмотреть командой:

sa-learn —dump magic

Подготовка

Прежде чем продолжить это руководство, убедитесь, что вы вошли в систему как пользователь с привилегиями sudo .

Включить плагины Roundcube

Roundcube поставляется с рядом плагинов, которые по умолчанию отключены. В этом руководстве мы активируем password и managesieve плагинами. Эти плагины позволят пользователям создавать сетчатые фильтры и изменять свои пароли из интерфейса Roundcube.

// Enable plugins

// Configure managesieve plugin

// Configure password plugin

Настроить Nginx

Перезагрузите службу Nginx, чтобы изменения вступили в силу:

Читайте также:  Защитите свой сайт: упрощенные эффективные стратегии удаления вирусов

sudo systemctl reload nginx

Создаем первый почтовый ящик и проверяем работу сервера

Переходим в Список доменов — Новый домен:

Заполняем формы и нажимаем по Добавить домен:


Администрирование roundcube

Теперь переходим в Обзор — Создать ящик:

Вводим данные нового пользователя и нажимаем по Создать ящик:


Администрирование roundcube

Теперь можно подключиться к серверу с помощью любой почтовой программы, например, Mozilla Thunderbird.

Параметры для подключения:

* для корректной работы сервера на портах 993, 995, 465 (SSL/TLS) необходим правильный сертификат (для нашего домена и выпущенный доверенным центром сертификации).

Устанавливаем и настраиваем Roundcube Webmail

В данной инструкции мы разберем использование веб-клиента Roundcube. При необходимости, можно установить другой, например, WebMail Lite или несколько одновременно.

На официальном сайте заходим на страницу загрузки Roundcube. Смотрим ссылку на версию продукта с длительной поддержкой (LTS):


Администрирование roundcube

Используем ссылку, чтобы загрузить архив программы:

Создаем каталог, где будут размещаться файлы портала:

И распаковываем скачанный архив:

tar -C /var/www/html/webmail -xf roundcubemail-*.tar.gz —strip-components 1

Копируем шаблон конфига:

cp /var/www/html/webmail/config/config.inc.php.sample /var/www/html/webmail/config/config.inc.php

И открываем его на редактирование:

Также дописываем в конфигурационный файл следующее:

* Без данной настройки, если не создавались папки другим клиентом, веб-клиент будет выдавать ошибки при перемещении писем, например, при их удалении.

Задаем владельца apache на папку портала:

chown -R www-data:www-data /var/www/html/webmail

Создаем в MariaDB базу для roundcubemail:

И загружаем в созданную базу данные:

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 make php-dev libmcrypt-dev

pecl channel-update pecl.php.net

pecl install mcrypt

Создадим файл с настройкой нового модуля:

Компоненты установлены. Настроим php:

* в данном примере мы задаем московское время и возможность загружать файл размером в 50 Мб (это будет максимальным объемом вложений, которые можно отправлять через веб-интерфейс).

Добавим строку в раздел http:

* данной настройкой мы также разрешим загрузку файлов размером 50 Мб.

Перезапустим nginx для применения настройки:

systemctl restart nginx


Администрирование roundcube

В самом низу нажимаем по кнопке Next. Если кнопка будет неактивна, проверяем, что нет ошибок (NOT OK).

На следующей странице проверяем, что все пункты находятся в состоянии OK. Установка выполнена.

Открываем конфигурационный файл roundcube:

Запрещаем установку портала:

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

Открываем страницу загрузки Roundcube. Копируем ссылку на архив портала. В нашем случае будет выбрана LTS-версия продукта (с длительной поддержкой):


Администрирование roundcube

* на момент написания инструкции LTS версия была 1.5.3.

Создаем каталог для размещения файлов Roundcube:

И распаковываем архив в созданную папку:

tar -C /var/www/html/webmail -xvf roundcubemail-*.tar.gz —strip-components 1

Копируем шаблон конфигурационного файла и создаем рабочий конфиг:

Редактируем строку для подключения к СУБД:

* первая строка разрешает установку портала. Остальные — указывают на необходимость создания папок по умолчанию, если их нет. Без данной настройки, если не создавались папки другим клиентом, веб-клиент может выдавать ошибки при перемещении писем, например, при их удалении.

* несмотря на то, что наш сервер обрабатываем скрипты с помощью php-fpm, работает последний по умолчанию от apache.

Подключаемся к MySQL:

Создаем в MariaDB базу и пользователя для roundcubemail:

* данными командами мы создаем базу данных roundcubemail и пользователя roundcube с паролем roundcube123. Обратите внимание, что если в вашем случае будут использоваться другие пользователь, пароль и база данных, то следует внести соответствующие изменения в настройку самого roundcube, которую мы выполняли ранее.

mysql roundcubemail < /var/www/html/webmail/SQL/mysql.initial.sql

apt install php-pear php-intl php-ldap php-net-smtp php-mail-mime php-curl php-gd php-imagick php-zip

date.timezone = «Europe/Moscow»

* в данном примере мы задаем московское время.

В самом низу нажимаем по кнопке Next. Если кнопка будет неактивна, проверяем, что нет ошибок (NOT OK):

Возможные ошибки

Рассмотрим некоторые ошибки, с которыми столкнулся я.

Неудачное соединение с IMAP сервером

Появляется при попытке авторизоваться в Roundcube.

Причина: как правило, недоступен IMAP-сервер или Roundcube неправильно настроен на подключение к серверу.

Решение: проверяем, что сервер доступен по сети. Проверяем настройки SSL и TLS по методу, описанному выше.

Если это не помогло, на стороне почтового сервера можно включить лог. Например, при использовании сервера IMAP dovecot открываем файл:

Добавляем в самый низ:

mail_debug = yes
auth_verbose = yes
auth_debug = yes
auth_debug_passwords = yes

systemctl restart dovecot

Теперь можно отлавливать ошибки командой:

tail -f /var/log/dovecot/imap.log

После решения проблемы, рекомендую отключить лог в dovecot.

Ошибка появляется при попытке отправить письмо.

Причина: SMTP-сервер не разрешает удаленному хосту отправку сообщений. Для этого требуется пройти аутентификацию.

Решение: есть два способа устранить ошибку:

1. Настроить аутентификацию в Roundcube по методу, описанному выше.

2. Также можно решить проблему, добавив наш хост Roundcube в качестве relay на почтовом сервере. Данный способ не является правильным с точки зрения безопасности и его рекомендуется применить для временного использования.

В качестве SMTP-сервера могут использоваться разные MTA. Приведем пример для разрешения отправки писем в Postfix. Открываем его конфигурационный файл:

* где mynetworks — список доверенных узлов, которым можно будет отправлять сообщения без дополнительных проверок. В данном примере мы добавили хост 192.168.0.14.

systemctl reload postfix

Return type of zipdownload_mbox_filter

В логах maillog мы можем наблюдать большое количество ошибок Roundcube, примерно, такого вида:

Причина: у нас установлена слишком свежая версия PHP, в которой некоторые методы кода объявлены как устаревшие. Система нас об этом просто предупреждает.

Решение: данное сообщение не является критической ошибкой и не повлияет на работу системы. Однако, данные сообщения сильно мешают при изучении почтового лога.

Для решения проблемы мы должны понизить версию PHP (на ту, что указана в документации Roundcube). Однако, это неоправданно рискованно, поэтому мы просто отключим предупреждения DEPRECATED.

Для этого откроем файл:

* то есть, мы исключаем лог типа E_DEPRECATED.

Изменение размера вложения

По умолчанию, приложение может разрешать небольшой размер вложения. Предположим, нам нужно отправлять файлы объемом 30 Мб. Чтобы это сделать, выполняем следующие действия.

1. Настройка лимитов при отправке файлов в PHP.

Roundcube написан на PHP и нам необходимо убедиться, что интерпретатор не ограничивает нас в объеме загружаемых файлов. Для этого открываем файл:

* в разных системах это могут быть разные пути, но мы рассматриваем установку под CentOS.

Редактируем следующие директивы:

Перезапускаем интерпретатор PHP (в нашем случае это php-fpm):

* данный путь может отличаться для вашей системы.

Редактируем или добавляем опцию (если ее нет, то ничего не редактируем):

* обратите внимание, что необходимо установить значение max_message_size на 30-40% больше, чем желаемый максимальный размер сообщения. Это связано с тем, что в процессе отправки сообщения могут добавляться дополнительные данные (например, кодирование в base64), которые увеличивают размер сообщения.

3. Ограничения в nginx.

Если в качестве веб-сервера у нас используется nginx, то также нужно убедиться, что задана опция client_max_body_size со значением 30M или более в разделе http.

После внесения изменений, перезагружаем веб-сервер:

nginx -t && nginx -s reload

4. Увеличение лимита отправки для MTA.

Стоит не забывать, что сам почтовый сервер также устанавливаем ограничения на размер отправляемого сообщения. В зависимости от того, какой MTA мы используем, будут различные варианты настройки.

Например, для Postfix задать лимит можно изменив значение для директивы message_size_limit. Подробнее в инструкции Лимиты в Postfix.

Папки на русском в Outlook

По умолчанию, все почтовые клиенты, кроме Outlook распознают служебные папки IMAP:

Данные каталоги переводятся на русский язык и корректно отображаются в клиенте. В Outlook эти папки отображаются как есть — на английском языке.

Для решения проблемы мы должны открыть файл:

Найти блок настроек namespace inbox. Приводим его к виду:

* и так, мы задали несколько вариантов служебных каталогов:

Для применения настроек перезапускаем dovecot:

Проверьте установку Roundcube

Откройте свой веб-браузер, перейдите по https://mail.linuxize.com/roundcubemail : https://mail.linuxize.com/roundcubemail и войдите в систему, используя имя пользователя и пароль своей учетной записи электронной почты.


Администрирование roundcube

Настройка квот

После применения квот мы сможем наблюдать в почтовом клиенте Roundcube информацию об оставшемся дисковом пространстве:

Антиспам средствами Postfix

Рассмотрим в отдельном разделе защиту от СПАМа средствами самого MTA Postfix.

Заголовки

В MTA Postfix встроен свой механизм проверки заголовков входящих сообщений. Правила размещаются в 7 секций, обработка которых выполняется в следующем порядке:

Чтобы лучше понять принцип, мы должны знать SMTP-команды при выполнении отправки почты. И так, порядок, следующий:

Читайте также:  - хостинг презентаций

И так, для настройки антиспама открываем конфигурационный файл main.cf:

#smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination

smtpd_client_restrictions =
        permit_mynetworks
        permit_sasl_authenticated
        reject_unauth_pipelining
        permit

smtpd_helo_restrictions =
        permit

smtpd_sender_restrictions =
        permit_mynetworks
        permit_sasl_authenticated
        reject_non_fqdn_sender
        reject_unknown_sender_domain
        permit

smtpd_relay_restrictions =
        permit_mynetworks
        permit_sasl_authenticated
        defer_unauth_destination

smtpd_recipient_restrictions =
        permit_mynetworks
        permit_sasl_authenticated
        reject_non_fqdn_recipient
        reject_unauth_destination
        reject_unknown_recipient_domain
        reject_unverified_recipient
        permit

smtpd_data_restrictions =
        permit

smtpd_end_of_data_restrictions =
        permit

* где параметры:

* это более или менее мягкие правила. Их можно использовать первое время, пока тестируем сервер.

Для усиления защиты добавляем:

* более подробное описание опций для защиты можно найти на странице postfix.org/postconf.5.html.

После внесения всех правок, необходима перезагрузка Postfix:

Проверка SPF

Проверка SPF позволит отбрасывать все попытки отправить сообщения от доменов, которые не прошли валидацию по SPF.

apt install postfix-policyd-spf-python

Открываем конфигурационный файл postfix:

По умолчанию, политика блокирует письма, только если владелец домена указал жесткую блокировку (использовал -all, вместо ~all). Если мы хотим указать более жесткую политику, открываем файл:

Задаем значения для опций HELO_reject и Mail_From_reject:

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

Подробнее информацию об опциях конфигурационного файла policyd-spf.conf можно узнать командой:

Защита от СПАМа «от себя к себе»

Часто можно наблюдать ситуацию, когда приходит спам от своих же ящиков (или ящиков своего домена, хотя таких почтовых адресов у нас не существует).

Это происходит из-за возможности в поле FROM подставить любой адрес. А адрес от своей организации может внушить доверие, что побудит пользователя откликнуться на нежелательное сообщение.

Для решения проблемы в Postfix нужно добавить простое правило:

Создадим сам файл:

dmosk.ru REJECT Relay from dmosk.ru are denied

* в данном примере мы будет отклонять все попытки отправить почту с чужих серверов от нашего домена dmosk.ru.

Настройка веб-сервера

Устанавливаем nginx командой:

Разрешаем автозапуск сервиса:

systemctl enable nginx


Администрирование roundcube

PHP + PHP-FPM + NGINX

Устанавливаем php и php-fpm:

* в данном примере будет установлена нативная версия php, например, для Ubuntu 20.04 это php 7.4, для Ubuntu 22.04 — 8.1. Если необходимо установить конкретную версию, смотрим инструкцию Установка разных версий PHP на Linux Ubuntu.

Для дальнейшего удобства, создадим переменную:

* где 7.4 — версия установленного в системе PHP.

В разделах http — server указываем, чтобы первым индексным файлом был index.php, а также добавляем настройку для обработки запросов php (location):

* где /var/www/html — каталог для размещения данных nginx по умолчанию; /run/php/php7.4-fpm.sock — путь до сокет-файла php-fpm (обратите внимание, что точное значение зависит от используемой вервии php).

Разрешаем автозапуск php-fpm:

Для проверки, создаем индексный файл в директории сайта со следующим содержимым:


Администрирование roundcube

MariaDB

Устанавливаем сервер баз данных следующей командой:

Включаем автозапуск сервиса баз данных:

systemctl enable mariadb

Задаем пароль для пользователя sql root:

Отправка почты наружу

Для отправки почты на другие почтовые серверы необходимо правильно сконфигурировать сервер, чтобы письма не попадали в СПАМ. Чтобы это сделать, выполняем инструкции ниже.

Настройки DNS для сервера

Многие почтовые серверы делают запросы в систему доменных имен для проверки легитимности почтового сервера, отправляющего почту. При настройке MTA очень важно правильно добавить необходимые записи в DNS.

1. r DNS. Обратная зона используется для проверки соответствия имени сервера в приветствии с именем, которое возвращает NS сервер при запросе по PTR-записи.

Если мы получим пустой ответ, то вводим:

postconf -n myhostname

Если и в этот вариант не вернет ответ, вводим:

Настройки DNS для домена

Для каждого домена, для которого будем отправлять почту создаем записи:

Для проверки корректности настройки сервера, воспользуемся ресурсами:

Создать базу данных MySQL

Roundcube поддерживает серверные части баз данных MySQL , PostgreSQL и SQLite.

В этом руководстве мы будем использовать MySQL в качестве сервера базы данных. Войдите в оболочку MySQL :

Создайте новую базу данных MySQL , пользователя и предоставьте ему привилегии над вновь созданной базой данных:

Смена пароля в roundcube

Веб интерфейс roundcube позволяет пользователям менять свои пароли с помощью плагина password. Данный плагин идет в стандартной поставке, но может быть не включен в конфигурации. Проверим это — открываем файл:

* в вашем случае путь до конфигурационного файла может быть другим.

Проверяем, что в перечне плагинов есть password. В противном случае, добавляем:

Переходим в каталог с плагином. Он находится в папке roundcube + plugins/password. В моем случае это:

Используем шаблон конфигурационного файла:

mv config.inc.php.dist config.inc.php

Открываем его и вносим правки:

Значения для опций очень сильно зависят от вашей почтовой инфраструктуры. Я лишь, приведу пример моей конфигурации, но вам придется изучить вопрос, чтобы правильно настроить плагин.

* в моем примере настройка выполнена для конфигурации Dovecot + MySQL.

Заходим в Roundcube. Переходим в раздел Настройки — Пароль. Пробуем его сменить.

Разное

Рассмотрим дополнительные настройки для нашего сервера.

Настройка ограничений

Также важно настроить некоторые ограничения, например:

Подробнее, информацию можно найти в статье Лимиты в Postfix.

Смена email адреса

Нам нужно внести изменения в базу данных — для этого заходим в оболочку sql:

Вводим пароль, который создавали после установки СУБД.

Используем базу postfix:

Редактируем алиасы командой:

Редактируем почтовый ящик:

С базой данных закончили — выходим из sql:

Переходим в каталог с почтовыми ящиками пользователей для нашего домена:

Перемещаем папку с почтой старого ящика в новый:

Проверяем работу через веб-интерфейс. Если используем почтовый клиент, меняем настройки для использования нового email-адреса.

Настройка Dovecot

Устанавливаем Dovecot с компонентом для работы с СУБД:

apt install dovecot-imapd dovecot-pop3d dovecot-mysql

Настраиваем способ хранения сообщений:

mail_location = maildir:/home/mail/%d/%u/

Настраиваем слушателя для аутентификации:

А также в этом файле добавим строки:

* в противном случае, мы увидим в логе ошибку error net_connect_unix(/var/run/dovecot/stats-writer) failed permission denied, так как у пользователя vmail не будет прав.

Настраиваем аутентификацию в Dovecot:

#!include auth-system.conf.ext
!include auth-sql.conf.ext

Настраиваем использование шифрования:

* ssl = required укажет dovecot требовать от клиентов использования шифрования; ssl_cert — путь до открытого сертификата (также нами указывался в postfix); ssl_key — путь к закрытому ключу.

Настроим автоматическое создание каталогов при первом подключении пользователя к ящику:

lda_mailbox_autocreate = yes

Настраиваем подключение к нашей базе данных:

* в данном примере мы указали на файл, в котором будут находиться настройки для получения пользователей и паролей из базы данных. Данная настройка является настройкой по умолчанию и, в большинстве случаев, ее не нужно менять без необходимости указать свой путь.

Откроем на редактирование файл с настройками работы с mysql:

В самый низ добавим:

И, напоследок, настраиваем интерфейс, на котором будет слушать dovecot:

listen = *

* по умолчанию, dovecot слушает также на ipv6 (listen = *, ::). Если на сервере не используется 6-я версия протокола TCP/IP, в логах dovecot появятся ошибки:
master: Error: service(imap-login): listen(::, 143) failed: Address family not supported by protocol
master: Error: service(imap-login): listen(::, 993) failed: Address family not supported by protocol

Подготовка системы

И так, данная инструкция написана под систему Linux Ubuntu Server. Предварительно, выполним следующие действия.

Общие настройки

apt update && apt upgrade

Задаем правильное имя серверу — это важный шаг, так как большинство антиспам систем выполняют проверки, обращаясь к серверу по имени в ожидании ответа:

* необходимо указать FQDN-имя, которое будет доступно из глобальной сети. В данном примере указано relay.dmosk.ru.

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

Задаем временную зону (в данном примере московское время):

timedatectl set-timezone Europe/Moscow

* чтобы получить список всех возможных зон, вводим timedatectl list-timezones.

Разрешаем сервис для обновления времени:

systemctl enable chrony

Настройка безопасности

Заранее открываем порты на брандмауэре с помощью iptables:

iptables -I INPUT 1 -p tcp —match multiport —dports 25,110,143,465,587,993,995 -j ACCEPT

iptables -I INPUT 1 -p tcp —match multiport —dports 80,443 -j ACCEPT

Оцените статью
Хостинги