Roundcube + плагин fetchmail
Плагин fetchmail в веб-клиенте Roundcube позволяет пользователю самостоятельно настроить сбор почты с другого почтового ящика.
Нам необходимо будет как установить и настроить сам плагин, так и скачать и подредактировать скрипт fetchmail.pl. Рассмотрим процесс по шагам. Работать будем на примере системы Ubuntu, но действия, во многом, сработают для других систем на базе Linux.
Загрузка, включение и настройка fetchmail плагина
Плагин fetchmail позволяет в веб-интерфейсе Roundcube создать настройку для выкачки писем из другого ящика. Данные настройки попадут в базу данных и их уже будет читать сам скрипт fetchmail.pl.
Разобьем процесс установки и настройка плагина на логические части.
Установка плагина в Roundcube
Устанавливаем пакет для загрузки файлов:
apt update
apt install wget
Переходим на страницу загрузки плагина для Roundcube.
Копируем ссылку на загрузку исходника (архив tar.gz):
Используя скопированную ссылку, скачиваем на сервер архив:
wget https://github.com/PF4Public/fetchmail/archive/refs/tags/1.0.13.tar.gz -O fetchmail_plugin.tar.gz
Распаковываем его:
tar -zxf fetchmail_plugin.tar.gz
Можно удалить скачанный архив:
rm -f fetchmail_plugin.tar.gz
Содержимое распакованного архива переносим в папку plugins рабочего каталога Roundcube:
mv fetchmail-*/ /var/www/html/webmail/plugins/fetchmail
* обратите внимание, что в моем примере Roundcube установлен в каталог /var/www/html/webmail.
Открываем конфигурационный файл веб-клиента:
vi /var/www/html/webmail/config/config.inc.php
В разделе перечисления плагинов, добавляем fetchmail:
// PLUGINS
$config['plugins'] = [
...
'fetchmail',
];
В веб-клиенте в настройках появится раздел Сбор почты:
Настройка СУБД
Как плагин fetchmail, так и скрипт fetchmail.pl могут работать с базами MySQL и PostgreSQL. В нашем примере будет рассмотрена первая. Процесс для PostgreSQL по смыслу аналогичен.
Условимся что:
- Мы используем MySQL, установленный на том же сервере, что и roundcube.
- Имя базы данных для roundcube — roundcubemail.
- Имя пользователя для работы fetchmail будет также — fetchmail.
В вашем случае это могут быть другие значения, что необходимо учесть, вводя команды ниже.
Заходим в командную оболочку СУБД:
mysql
Если MySQL требует парольного входа, даже, для пользователя root, то вводим:
mysql -uroot -p
Создадим пользователя и пароль для доступа к таблице fetchmail:
> CREATE USER 'fetchmail'@'localhost' IDENTIFIED BY 'fetchmail123';
> GRANT ALL ON roundcubemail.fetchmail TO 'fetchmail'@'localhost';
* первая команда создаст пользователя fetchmail с паролем fetchmail123. Вторая предоставит созданному пользователю доступ к таблице fetchmail базы данных roundcubemail.
Выходим из командой оболочки SQL:
> quit
В комплекте с плагином fetchmail идет скрипт для инициализации базы данных. Применим его:
mysql roundcubemail < /var/www/html/webmail/plugins/fetchmail/SQL/mysql.initial.sql
* напомню, что /var/www/html/webmail — путь установки веб-клиента в, конкретно, моем примере.
Также посмотрим в каталог SQL/mysql:
ls /var/www/html/webmail/plugins/fetchmail/SQL/mysql/
В нем могут быть дополнительные файлы редактирования таблицы fetchmail. Также их применим по очереди (в порядку версии-даты), например:
mysql roundcubemail < /var/www/html/webmail/plugins/fetchmail/SQL/mysql/2019122200.sql
mysql roundcubemail < /var/www/html/webmail/plugins/fetchmail/SQL/mysql/2022102000.sql
Настройка плагина завершена.
Установка и настройка fetchmail скрипта
Теперь настроим сам скрипт, который должен заниматься сбором почты.
Установим следующие пакеты:
apt install fetchmail liblockfile-simple-perl libsys-syslog-perl libunix-syslog-perl
Перейдем во временный каталог:
cd /tmp
Рабочий скрипт fetchmail.pl идет в комплекте с postfixadmin. Скачаем архив последнего, чтобы извлечь из него нужный файл:
wget https://sourceforge.net/projects/postfixadmin/files/latest/download -O postfixadmin.tar.gz
* данной командой мы загрузим последнюю версию postfixadmin и сохраним его в файл postfixadmin.tar.gz.
Распакуем содержимое скачанного архива:
tar -zxf postfixadmin.tar.gz
И скопируем скрипт fetchmail.pl в другой каталог, например, /var/vmail:
cp postfixadmin*/ADDITIONS/fetchmail.pl /var/vmail/
Загруженный postfixadmin больше не нужен — удаляем архив и распакованное содержимое:
rm -rf postfixadmin*
Откроем на редактирование скрипт:
vi /var/vmail/fetchmail.pl
Нам нужно внести следующие настройки:
#our $db_type = 'Pg';
my $db_type = 'mysql';
# host name
our $db_host="127.0.0.1";
# database name
our $db_name="roundcubemail";
# database username
our $db_username="fetchmail";
# database password
our $db_password="fetchmail123";
* где:
- db_type — определяет СУБД. В нашем примере это MySQL/MariaDB. Также поддерживается PostgreSQL.
- db_name — база данных, где находится таблица fetchmail с настройками.
- db_username — логин для подключения к базе.
- db_password — пароль, с которым нужно подключаться к базе.
Скрипт настроен и готов к работе.
Настройка сбора почты в Roundcube
И так, мы подготовили плагин и скрипт. Теперь выполним тестовую настройку и запустим сбор почты.
Переходим в веб-интерфейс roundcube, заходим в Настройки - Сбор почты:
Кликаем по Создать:
Настроим данные для подключения к другому почтовому ящику:
* в моем примере:
- будет собрана почта для почтового ящика dmoskuser на сервере mail.dmosk.ru.
- Частота проверки равна 10. Это значит, что скрипт будет проверять, когда последний раз была выполнена сборка и, если раньше, чем 10 минут, то никаких действий выполняться не будет.
- Опция Загружать все сообщения с сервера будет собирать как прочитанную, так и непрочитанную почту, но это приведет к повторным загрузкам при каждом запуске сборщика. Старайтесь избегать ее включения.
Обратите внимание, что для многих общедоступных хостингах почты требуется ввод пароля приложения, который нужно создать в личном кабинете почтового аккаунта.
Создаем служебный каталог для fetchmail и назначим для него почтового владельца:
mkdir /var/lock/fetchmail
chown vmail:vmail /var/lock/fetchmail
* где vmail — пользователь, от которого работает почтовая система. Чаще всего, это vmail или mail, но в вашем случае это может быть другое значение. У пользователя должны быть права в каталог пользователя, где хранится почта.
Запустим на исполнение скрипт fetchmail.pl:
sudo -u vmail /var/vmail/fetchmail.pl
Если почтовые настройки внесены верно, должен запустится сборщик, который выполнит загрузку почты в соответствии с заданными в Roundcube правилами. В нашем примере, копирование только новой почты.
Если настройка отработает и мы увидим сообщения в Roundcube, можно настроить запуск сборщика по расписанию:
crontab -e -u vmail
* * * * * /var/vmail/fetchmail.pl
* в данном примере мы будем запускать скрипт раз в минуту. Он будет проверять все настройки сборщиков и выполнять загрузку писем в соответствии с заданными правилами.
Читайте также
1. Настройка сборщика почты Fetchmail + Procmail + Dovecot.