Конфигурация phplist.
конфигурирование phplist, настройка скорости, уведомлений об отказах и безопасности
Система, которая позволяет выполнять свою основную функцию с таким большим количеством нюансов, просто не может не иметь разветвленной системы настроек. Именно поэтому при начальном запуске phplist переводится в тестовый режим. В этой статье пойдет речь о том, каким способом установить некоторые параметры, связанные со скоростью отправки сообщений, обработкой отказов и безопасностью. Итак, сегодняшняя статья будет посвящена нескольким важным аспектам конфигурирования системы phplist.
Для того чтобы привести систему phplist к работоспособному состоянию, следует задать параметры ее жизнедеятельности и функционирования. Собственно настройка происходит двумя параллельными способами. Один — это ручное редактирование конфигурационного файла системы ./config/config.php. Вторая часть установки параметров функционирования состоит в визуальном редактировании параметров системы, которые ориентированы на получателя корреспонденции, с помощью несложной формы-интерфейса. Сегодня пойдет речь о нюансах конфигурирования системы, а именно о назначении наиболее важных параметров config.php.
Cкорость отправки
Сначала следует обязательно настроить скорость передачи сообщений. Такая срочность необходима по одной простой причине. Дело в том, что ваш провайдер вряд ли легко и просто отнесется к массовой отправке сообщений. Конечно, источником такой настороженности является спам. Однако обычно хостинговые компании сначала, как правило, отключают площадку, а уже потом разбираются в том, был ли спам или нет. Теперь представьте, что никакого спама не было и в помине, а было всего лишь невинное превышение лимита скорости отправки неверно настроенным пользовательским приложением. Причем обычно о таком лимите пользователь узнает уже после отключения. Правда, стоит отметить, что некоторые провайдеры действуют несколько более сдержанно. Они просто блокируют приложение путем снятия разрешения на запуск скриптов
Сама настройка скорости отправки состоит из нескольких частей. Вначале следует определиться с периодом отправки сообщений. Пускай, например, ваш провайдер допускает отправку 6 сообщений в минуту. В таком случае вам необходимо изменить в ./config/config.php следующие два параметра:
define("MAILQUEUE_BATCH_SIZE",6);
define("MAILQUEUE_BATCH_PERIOD",60);
Первый параметр указывает на максимально возможное количество сообщений, которое будет отправлено за тот промежуток времени, который будет установлен во втором параметре (в секундах). Обратите внимание на тот факт, что однозначно следует указывать этот промежуток кратным минуте (60, 120, 180 и так далее). Так необходимо делать потому, что вторая часть настройки phplist состоит в указании планировщику ОС на необходимость запуска периодичной отсылки почты (обработки почтовой очереди). А стандартный для *nix планировщик cron способен запускать задания не чаще раза в минуту.
Таким образом, для скорости 6 сообщений в минуту необходимо отредактировать пользовательский список заданий (команда
* * * * * /usr/bin/wget -q -O — 'http://сайт/директория phplist/admin/?page=processqueue&login=логин&password=пароль'
Новое задание можно указать и через cpanel |
Эта команда позволяет имитировать вызов ручной обработки очереди сообщений с помощью утилиты wget, которая позволяет закачивать веб-страницу. То есть такая строка фактически аналогична запуску один раз в минуту пункта меню системы process queue (обработать очередь). Однако здесь есть один нюанс, который легко упустить, редактируя параметры config.php. Дело в том, что ручная отправка сообщений в некоторых случаях может быть заблокирована. Поэтому обязательно проверьте наличие и верность установки следующего конфигурационного макроса, который фактически разрешает выполнять обработку очереди указанной командой, все в том же файле ./config/config.php:
define("MANUALLY_PROCESS_QUEUE",1);
Конечно, phplist позволяет скрыть меню ручной отправки и выполнять обработку очереди другими способами, о чем указано в документации. Но приведенный метод является одним из наиболее простых приемов. Мало того, он интуитивно понятен, ведь вы всегда сможете проконтролировать его работоспособность, просто выполнив ручную обработку очереди, запустив команду process queue в админинстративном интерфейсе phplist.
Уведомления об отказах
При отправке сообщения никто в принципе не гарантирует того, что письмо будет доставлено. Вероятных причин сбоев несколько, одна из них — это недоступность сервера получателя сообщений в течение длительного времени. Конечно, современные системы доставки почты будут пробовать повторно отправлять сообщения, которые зависли в очереди. При этом отправитель будет получать так называемые уведомления о невозможности доставки (bounces). Система позволяет обрабатывать эти уведомления таким образом, что при многократных отказах получатель будет просто отключен от доставки.
Ручная обработка очереди |
Для успешной настройки уведомлений о невозможности доставки желательно иметь на хостинговой площадке POP3-сервер и возможность создания отдельного почтового ящика. Последний будет необходим для получения этих самых уведомлений. Настройка системы обработки отказов заключается в установке нескольких параметров config.php. Для удобства они разбиты по группам. Во-первых, настраиваем адрес и протоколы работы с почтовым ящиком:
$message_envelope = "адрес электронной почты для уведомлений"; ' адрес, на который будут приходить уведомления
$bounce_protocol = "pop"; ' протокол работы почтового сервера, получающего письма об отказе
$bounce_mailbox_port = "110/pop3/notls"; ' порт/протокол/параметры работы с сервером
$bounce_mailbox_host = "сервер"; ' POP3-сервер для входящей корреспонденции
$bounce_mailbox_user = "пользователь";
$bounce_mailbox_password = "пароль";
Последние три параметра выдаются при создании нового почтового ящика либо основной учетной записи.
Во-вторых, указываем на возможность ручной обработки очереди сообщений об отказе и отсутствие необходимости сохранять уже обработанные служебные письма:
define("MANUALLY_PROCESS_BOUNCES",1); ' включена ручная обработка «отказных писем»
$bounce_mailbox_purge = 1;
$bounce_mailbox_purge_unprocessed = 1;
Ну и, наконец, настраиваем самый важный параметр:
$bounce_unsubscribe_threshold = 5;
Он указывает на то количество отказов, которое нужно получить, чтобы пользователь был исключен из рассылки. По умолчанию пользователь будет отключен после получения пяти сообщений о невозможности доставки. Однако можно сделать это значение и меньшим. Уменьшение этого параметра особо актуально при большом количестве получателей. Например при десяти тысячах респондентов желательно устанавливать это значение в 1, то есть отключать рассылку на пользователя при первом же отказе. Обратите ваше внимание на тот факт, что к сообщениям пользователей будет добавлен заголовок, который позволит промежуточным серверам выслать уведомление не на тот адрес, который указан в поле From письма, а именно на тот, который был отдельно настроен в параметре $message_envelope.
Завершающим штрихом настройки обработки уведомлений является включение в список планировщика еще одной задачи. Она будет практически идентична той команде, что указывалась для обработки очереди сообщений, отличается лишь один параметр:
* * * * * /usr/bin/wget -q -O — 'http://сайт/директория phplist/admin/?page=processbounces&login=логин&password=пароль'
Смысл ее также аналогичен — это имитация ручного вызова процедуры меню process bounces.
Безопасность
Как уже было отмечено, одной из основных проблем при работе с почтовыми рассылками может быть безопасность приложения. Не исключено, что для установленной именно на вашем хосте системы будет совершена попытка подбора пароля или похожее действие. Именно поэтому рекомендуется после настройки скорости и уведомлений о невозможности доставки немедленно указать все параметры, необходимые для увеличения безопасности работы phplist:
-
$require_login = 1; — это значение указывает на необходимость аутентификации при работе с программой. Даже если ваш почтовый сервер не имеет выхода «наружу», даже если вы защищены с помощью паролей в .htaccess, смысл включить этот параметр есть почти всегда.
-
define("MAXLIST",1); — таким образом указывается, что администратор системы не может создавать более одного списка рассылки. При желании можно, конечно, увеличить этот параметр, но не стоит его делать больше необходимого.
-
define("ASKFORPASSWORD",1); — это значение фактически означает то, что система будет работать с конечными пользователями напрямую, запрашивая у них пароль, когда это необходимо.
-
define("UNSUBSCRIBE_REQUIRES_PASSWORD",1); — страница отписки от рассылки будет запрашивать пароль. Обычно не стоит устанавливать этот параметр, поскольку такие действия обычно воспринимаются пользователями крайне негативно. Однако, с другой стороны, усиление защиты, которое является приоритетом в таких системах, как phplist, может потребовать включить такой непопулярный режим.
-
define("UNSUBSCRIBE_JUMPOFF",1); — пользователь может быть мгновенно отписан от рассылки, если он перейдет по специально сформированной ссылке. Крайне полезный параметр, однако в целях безопасности его все же лучше не устанавливать.
-
$blacklist_gracetime = 5; — время задержки получения подтверждения об отписке, указывается в минутах. Чем оно меньше, тем лучше.
-
define("CHECK_SESSIONIP",1); — очень важный для безопасности параметр, который означает, что при работе в текущем сеансе пользователь должен иметь один и тот же IP-адрес, то есть не должен пользоваться прокси-сервером с динамическим изменением адреса.
-
define("ENCRYPTPASSWORD",1); — система будет шифровать пароли, то есть пользователям при регистрации необходимо будет сообщить, что они смогут получить новый пароль, но никак не восстановить старый. Этот параметр очень важно установить, если вы заботитесь про безопасность вашей инсталляции phplist.
Несмотря на внешнюю простоту интерфейса, phplist имеет множество скрытых настроек, каждая из которых очень точно определяет характеристики работы всей системы. Установив нужные параметры, можно добиться сбалансированности всей системы в целом и получить отличный результат. Именно поэтому категорически не рекомендуется отключать тестовый режим до окончания полной настройки системы.