Categories: Шпаргалки

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

В данной статье рассказано, как работать с менеджером рассылки электронной почты phplist. Для установки и настройки, можно прочитать статью Установка и настройка 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;

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

admin

Recent Posts

Что такое Zulip

Zulip — программное обеспечение для реализации корпоративного чата. Разработан в 2012 году, в 2014 был…

2 месяца ago

Что такое Zookeeper

Zookeeper — cервис-координатор, который позволяет обеспечить контроль синхронизации данных. Разработан на Java компанией Apache Software…

2 месяца ago

Что такое Zimbra

Zimbra — программное обеспечение для реализации почтового сервиса или, если сказать точнее, автоматизации совместной деятельности…

2 месяца ago

Что такое Zabbix

Zabbix — бесплатная система мониторинга. Позволяет отслеживать состояние сетевых узлов, компьютеров и серверов. Возможности: Поддержка…

2 месяца ago

Что такое YouTube

YouTube — компания-владелец одноименного портала для просмотра и хранения видео. Чтобы пользоваться данным порталом достаточно…

2 месяца ago

Что такое yota

Yota — провайдер, предоставляющий доступ к сети Интернет по беспроводной связи. Впервые, сервис начал работать…

2 месяца ago