Настройка и использование phplist для рассылки писем

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

В данной статье рассказано, как работать с менеджером рассылки электронной почты phplist. Для установки и настройки, можно прочитать статью Установка и настройка phplist.

Начальная настройка

Входим в веб-панель администрирования phplist. Затем переходим в Config - Конфигурация:

Конфигурирование phplist

В general settings проверяем, что название компании указано верно и добавляем логотип:

Настройка php-list в разделе general settings

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

Также в данном разделе, можно отредактировать HTML-код для нижнего колонтитула.

Добавление подписчиков

Переходим в раздел Подписчики - Списки рассылки:

Списки рассылки в phplist

Нажимаем по Добавить список рассылки:

Добавление нового списка рассылки в phplist

Вводим название для списка и нажимаем Сохранить. В следующем окне нажимаем по Добавить еще подписчиков:

Добавление подписчиков

Теперь в текстовое поле «Введите адреса для импорта...» вводим 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:

Включаем установленный модуль

Плагин активирован.

Создание шаблона

Переходим в раздел Компании - Шаблоны:

Создание шаблона в phplist

Кликаем по Добавить новый шаблон:

Добавляем новый шаблон в phplist

Вводим заголовок и создаем HTML-шаблон. В тексте шаблона обязательно включаем текст [CONTENT] — это указатель текста контента, который будет подставлен при отправке письма.

Кликаем по Сохранить изменения.

Создание компании и выполнение рассылки

Переходим в раздел Компании - Отправить компанию:

Отправка компании в phplist

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

В открывшемся окне задаем тему письма, проверяем адрес отправителя, вводим текст для контента и переходим на вкладку Формат:

Отправка компании - вкладка содержимое в phplist

Выбираем шаблон и переходим на вкладку Списки:

Выбор шаблона при отправке компании в phplist

Выбираем галочками все группы рассылки, адресатам которых должно быть направлено письмо и переходим на вкладку Отправка.

На заключительной вкладке просто кликаем по Отправить компанию в очередь:

Отправка компании в очередь

Прикрепление файлов

По умолчанию, при создании новой компании для отправки рассылки нет возможности прикреплять файлы. Чтобы это исправить, заходим на сервер по 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@dmosk.ru';
$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;

Пробуем сделать рассылку.

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

Да            Нет