В данной статье рассказано, как работать с менеджером рассылки электронной почты phplist. Для установки и настройки, можно прочитать статью Установка и настройка phplist .
Начало настройки
Добавление подписчиков
Установка плагинов
Создание шаблона
Отправка рассылки
Включение прикрепления файлов
Настройка SMTP-сервера
Управление очередями
Обработка возвратов
Как убрать POWERED BY PHPLIST
Начальная настройка
Входим в веб-панель администрирования phplist. Затем переходим в Config — Конфигурация :
В general settings проверяем, что название компании указано верно и добавляем логотип:
В разделе campaign settings необходимо правильно прописать адреса для исходящей почты, а также адреса для получения уведомлений.
Также в данном разделе, можно отредактировать HTML-код для нижнего колонтитула.
Добавление подписчиков
Переходим в раздел Подписчики — Списки рассылки :
Нажимаем по Добавить список рассылки :
Вводим название для списка и нажимаем Сохранить . В следующем окне нажимаем по Добавить еще подписчиков :
Теперь в текстовое поле «Введите адреса для импорта…» вводим email адреса — каждый адрес с новой строки. После нажимаем Импортировать подписчиков .
Установка плагинов
Список поддерживаемых плагинов можно найти на официальном сайте phplist.
Мы рассмотрим пример установки текстового редактора CKEditor. На соответствующей странице нам предлагают перейти на GitHub , где находится инструкция по установке плагина. На этой странице нам предлагают использовать ссылку на архив:
https://github.com/bramley/phplist-plugin-ckeditor/archive/master.zip . Копируем ее и заходим в phplist. После переходим в раздел Config — Модули :
Вставляем ссылку на архив, которую мы скопировали ранее и кликаем по Установить модуль :
Если phplist выдаст ошибку Для установки модулей с удалённого сервера, требуется поддержка ZIP в PHP , необходимо на сервере установить пакет php-zip . В зависимости от Linux, наши действия будут немного отличаться.
а) На DEB (Ubuntu / Debian / Astra Linux):
apt install php-zip
б) На RPM (Rocky Linux / CentOS / РЕД ОС):
yum install php-zip
На следующей странице кликаем Продолжить :
Последнее — включаем плагин. Для этого находим его в списке установленных плагинов к нажимаем по Enable :
Плагин активирован.
Создание шаблона
Переходим в раздел Компании — Шаблоны :
Кликаем по Добавить новый шаблон :
Вводим заголовок и создаем HTML-шаблон. В тексте шаблона обязательно включаем текст [CONTENT] — это указатель текста контента, который будет подставлен при отправке письма.
Кликаем по Сохранить изменения .
Создание компании и выполнение рассылки
Переходим в раздел Компании — Отправить компанию :
Если откроется окно выбора черновика, выбираем его или кликаем по Создать новую компанию .
В открывшемся окне задаем тему письма, проверяем адрес отправителя, вводим текст для контента и переходим на вкладку Формат :
Выбираем шаблон и переходим на вкладку Списки :
Выбираем галочками все группы рассылки, адресатам которых должно быть направлено письмо и переходим на вкладку Отправка .
На заключительной вкладке просто кликаем по Отправить компанию в очередь :
Прикрепление файлов
По умолчанию, при создании новой компании для отправки рассылки нет возможности прикреплять файлы. Чтобы это исправить, заходим на сервер по SSH и открываем следующий конфигурационный файл:
vi /var/www/phplist/config/config.php
* где /var/www/phplist — путь по расположения портала phplist.
Добавляем:
define(«ALLOW_ATTACHMENTS»,1);
define(«NUMATTACHMENTS»,1);
define(«FILESYSTEM_ATTACHMENTS»,1);
define(«MIMETYPES_FILE»,»/etc/mime.types»);
define(«DEFAULT_MIMETYPE»,»application/octet-stream»);
$attachment_repository = ‘/tmp’;
В списке вкладок при создании компании появится «Вложения»:
SMTP-сервер
По умолчанию, phplist будет пытаться отправить письма через локальный MTA. При необходимости отправлять сообщения через определенный почтовый сервер, открываем на сервере конфигурационный файл:
vi /var/www/phplist/config/config.php
Редактируем:
define(‘PHPMAILERHOST’, ‘192.168.1.15’);
… и добавляем:
define(‘PHPMAILERPORT’,25);
$phpmailer_smtpuser = ‘smtpuser’;
$phpmailer_smtppassword = ‘smtppass’;
* где
- PHPMAILERHOST — адрес сервера MTA. В данном примере 192.168.1.15.
- PHPMAILERPORT — порт, на котором слушает почтовый сервер,
- $phpmailer_smtpuser/$phpmailer_smtppassword — соответственно, логин и пароль (вводим, если сервер SMTP требует авторизации).
Управление очередями
Большое число писем необходимо отправлять порциями. Для этого существует возможность настройки очередей — phplist будет отправлять сообщения по несколько штук в течение заданного времени.
Для настройки открываем конфигурационный файл phplist:
vi /var/www/phplist/config/config.php
И добавим:
define(‘MAILQUEUE_BATCH_SIZE’, 120);
define(‘MAILQUEUE_BATCH_PERIOD’, 180);
define(‘MAILQUEUE_THROTTLE’, 1);
define(‘MAILQUEUE_AUTOTHROTTLE’, 0);
define(‘USE_DOMAIN_THROTTLE’, 0);
define(‘DOMAIN_BATCH_SIZE’, 1);
define(‘DOMAIN_BATCH_PERIOD’, 120);
define(‘DOMAIN_AUTO_THROTTLE’, 0);
define(‘MAX_PROCESSQUEUE_TIME’, 0);
define(‘PROCESSCAMPAIGNS_PARALLEL’, 1);
* где:
- MAILQUEUE_BATCH_SIZE — максимальный количество писем, которые будут обработаны за один период.
- MAILQUEUE_BATCH_PERIOD — количество секунд, которые длится период.
- MAILQUEUE_THROTTLE — количество секунд для ожидания между письмами.
- MAILQUEUE_AUTOTHROTTLE — автоматически регулировать задержку, чтобы количество MAILQUEUE_BATCH_SIZE уложилось в MAILQUEUE_BATCH_PERIOD.
- USE_DOMAIN_THROTTLE — умеренная отправка писем на один и тот же домен.
- DOMAIN_BATCH_SIZE — количество писем, разрешенное для отправки на один и тот же домен.
- DOMAIN_BATCH_PERIOD — время, в течение которого длится период отправки сообщений на домен.
- DOMAIN_AUTO_THROTTLE — автоматическая регулировка задержек для того, чтобы DOMAIN_BATCH_SIZE уложилось в DOMAIN_BATCH_PERIOD.
- MAX_PROCESSQUEUE_TIME — ограничивает время для отправки сообщения.
- PROCESSCAMPAIGNS_PARALLEL — позволяет отправлять несколько компаний одновременно.
Теперь создаем скрипт для запуска php-обработчика:
vi /usr/local/bin/phplist
#!/bin/bash
/usr/bin/php /var/www/phplist/admin/index.php -c /var/www/phplist/config/config.php $*
* где
- /usr/bin/php — путь до бинарника php. Обратите внимание, что он в разных системах может быть разный. Для поиска правитьного пути вводим команду which php .
- /var/www/phplist — путь, ко которому расположен наш портал phplist.
Задаем права на запуск скрипта:
chmod u+x /usr/local/bin/phplist
Проверяем работу скрипта, запустив его:
/usr/local/bin/phplist -pprocessqueue
Мы должны увидеть что-то на подобие:
phpList — phpList version 3.5.3-RC1 (c) 2000-2020 phpList Ltd, https://www.phplist.com
phpList — Giving a UUID to 3 subscribers, this may take a while
phpList — Giving a UUID to 3 subscribers, this may take a while [0.0029020000] (131)
phpList — Recently sent : 0
phpList — Запущена [0.0045480000] (138)
phpList — Отправка группами с количеством писем — 120 [0.0002150000] (139)
phpList — Этап скрипта: 6 [0.0006350000] (143)
phpList — Завершено, нечего выполнять [0.0001400000] (144)
phpList — Завершено, все выполнено [0.0014480000] (149)
И последнее, создаем задачу в планировщике:
crontab -e
* * * * * /usr/local/bin/phplist -pprocessqueue
Готово. Теперь при создании компании не начинаем делать отправку. Phplist сам поставит сообщения в очередь и отправит их в соответствии с настройками.
Обработка возвратов
Чтобы наш сервер рассылки не попал в черные списки почтовых хостеров, необходимо предотвратить повторные рассылки на почтовые ящики, которых не существует или которые возвращают ошибки.
Для этого в phplist предусмотрена специальая процедура обработки. Для ее настройки открываем конфигурационный файл:
vi /var/www/phplist/config/config.php
Находим настрйки и редактируем их:
$bounce_mailbox_host = ‘localhost’;
$bounce_mailbox_user = ‘postmaster@remontka.com’;
$bounce_mailbox_password = ‘password’;
* где bounce_mailbox_host — почтовый сервер, где находится почтовый ящик с возвращенной почтой; bounce_mailbox_user — почтовый ящик, в котором находятся письма возвратов; bounce_mailbox_password — пароль для подключения к почтовому ящику.
Также обратите внимание на следующие параметры — их можно оставить по умолчанию или изменить по необходимости:
$bounce_protocol = ‘pop’;
…
define(‘MANUALLY_PROCESS_BOUNCES’, 1);
…
$bounce_mailbox_port = ‘110/pop3/notls’;
…
$bounce_mailbox_purge = 1;
…
$bounce_mailbox_purge_unprocessed = 1;
…
$bounce_unsubscribe_threshold = 5;
* где:
- bounce_protocol — протокол, по которому phplist будет подключаться к ящику.
- MANUALLY_PROCESS_BOUNCES — разрешить ручную обработку (из веб-интерфейса.
- bounce_mailbox_port — настройка порта для подключения к почтовому ящику.
- bounce_mailbox_purge — удалить сообщения из почтового ящика после их обработки.
- bounce_mailbox_purge_unprocessed — удалить сообщения из почтового ящика, которые не удалось обработать.
- bounce_unsubscribe_threshold — количество отказов, которые должны придти от ящика, чтобы считалось, что ящик можно удалять из phplist.
Теперь обработку отказов можно выполнить из командной строки:
/usr/local/bin/phplist -pprocessbounces
* обратите внимание, что мы используем скрипт /usr/local/bin/phplist , созданный нами при управлении очередями . Если скрипт не создавался, необходимо его создать сейчас.
Мы можем увидеть что-то на подобие:
phpList — phpList version 3.5.3-RC1 (c) 2000-2020 phpList Ltd, https://www.phplist.com
phpList — Загрузить возвращённые письма из почтового ящика
phpList — Не прерывайте обработку
phpList — Закрытие почтового ящика и удаление писем
phpList — reprocessing
phpList — Возвращённые письма для повторной обработки — 5
phpList — 5 из 5 обработано
phpList — Определение серии возвращённых писем
phpList — Нет заданий
phpList — Всего обработано подписчиков — 0
Убираем POWERED BY PHPLIST
Данное изображение появляется в конце каждого письма при рассылке. С одной стороны — phplist бесплатное программное обеспечение и разработчик имеет право рекламировать свою систему, с другой — при рассылках многим подобная надпись в конце письма покажется лишней.
Настройками данную надпись не убрать — нужно лезть в код программы. Для этого открываем следующий файл:
vi /var/www/phplist/admin/sendemaillib.php
* где /var/www/phplist — месторасположение портала phplist.
Находим $PoweredByImage с следующей строке:
global $strThisLink, $strUnsubscribe, $PoweredByImage, $PoweredByText, $cached, $website, $counters;
И удаляем эту переменную — получится:
global $strThisLink, $strUnsubscribe, $PoweredByText, $cached, $website, $counters;
Пробуем сделать рассылку.