Roundcube + плагин fetchmail

Обновлено и опубликовано Опубликовано:

Плагин fetchmail в веб-клиенте Roundcube позволяет пользователю самостоятельно настроить сбор почты с другого почтового ящика.

Нам необходимо будет как установить и настроить сам плагин, так и скачать и подредактировать скрипт fetchmail.pl. Рассмотрим процесс по шагам. Работать будем на примере системы Ubuntu, но действия, во многом, сработают для других систем на базе Linux.

Загрузка, включение и настройка fetchmail плагина

Плагин fetchmail позволяет в веб-интерфейсе Roundcube создать настройку для выкачки писем из другого ящика. Данные настройки попадут в базу данных и их уже будет читать сам скрипт fetchmail.pl.

Разобьем процесс установки и настройка плагина на логические части.

Установка плагина в Roundcube

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

apt update

apt install wget 

Переходим на страницу загрузки плагина для Roundcube.

Копируем ссылку на загрузку исходника (архив tar.gz):

Копируем ссылку загрузки плагина fetchmail для roundcube

Используя скопированную ссылку, скачиваем на сервер архив:

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

В веб-клиенте в настройках появится раздел Сбор почты:

Раздел Сбор почты появляется в roundcube после подключения плагина fetchmail

Настройка СУБД

Как плагин fetchmail, так и скрипт fetchmail.pl могут работать с базами MySQL и PostgreSQL. В нашем примере будет рассмотрена первая. Процесс для PostgreSQL по смыслу аналогичен.

Условимся что:

  1. Мы используем MySQL, установленный на том же сервере, что и roundcube.
  2. Имя базы данных для roundcube — roundcubemail.
  3. Имя пользователя для работы 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, заходим в Настройки - Сбор почты:

Переходим к настройкам сборщика почты в 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.

2. Установка и использование Roundcube на Ubuntu.

3. Установка и использование Roundcube на CentOS.

# Ubuntu # Почта # Серверы
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет