PHPList : envoi en ligne de commande - cron

De wikiGite

Configuration

dans lists/config/config.php, ajouter l'utilisateur www-data pour qu'il soit autorisé à lancer index.php de la ligne de commande

$commandline_users = array("admin","www-data");

Autoriser l'envoi en ligne de commande

define ("MANUALLY_PROCESS_QUEUE",1);

et modifier les paramètres de MESSAGE_QUEUE (10000 mails/heure, sans pause entre chaque mail)

define("MAILQUEUE_BATCH_SIZE",10000);
define("MAILQUEUE_BATCH_PERIOD",3580);
define('MAILQUEUE_THROTTLE',0);

Ou si le serveur n'est pas limité en ressources et en nombre d'envoi :

define("MAILQUEUE_BATCH_SIZE",0);
define("MAILQUEUE_BATCH_PERIOD",3580);
define('MAILQUEUE_THROTTLE',0.5);

On a ajouté ici une pause d'une 1/2 seconde, donc 2 mails sont envoyés par seconde (donc un peu plus de 7000 en une heure).
Noter le "3580", soit 1 heure moins 20 secondes, pour éviter que les jobs planifiées toutes les heures ne se chevauchent. Normalement Phplist sait gérer cette situation et detecter un même process déjà lancé, mais autant limiter les risques.

Enfin, pour avoir le maximum d'informations dans le log, passer VERBOSE à 1

define('VERBOSE',1);
define('MAILQUEUE_THROTTLE',0.5);

ajoute une pause d'une 1/2 seconde, donc 2 mails sont envoyés par seconde, donc un maximum de 7200 à l'heure, donc en prenant un peu de marge :

define("MAILQUEUE_BATCH_SIZE",7000);

Script cron_phplist

#!/bin/bash

# in commandline mode, access is restricted to users who are listed in the config file
# check README.commandline for more info

# identify the config file for your installation
CONFIG=/var/www/phplist/lists/config/config.php
USER=www-data
export CONFIG USER

# alternatively you can use -c <path to config file> on the commandline
# run the PHPlist index file with all parameters passed to this script
date
/usr/bin/php /var/www/phplist/lists/admin/index.php $*

Planifier ce script dans la crontab de www-data

0 * * * * /var/www/phplist/lists/cron_phplist -pprocessbounces >> /var/www/phplist/lists/cron_phplist.log 2>&1
15 * * * * /var/www/phplist/lists/cron_phplist -pprocessqueue >> /var/www/phplist/lists/cron_phplist.log 2>&1

On vérifie les bounces (retours en erreur) quelques minutes avant de relancer la vague suivante (s'il n'y a pas d'envoi en cours, ou avant la première vague d'envoi, la connexion ne ramène simplement aucun mail à traiter).

Note : créer /var/www/phplist/lists/cron_phplist.log et donner les droits d'écriture à www-data, pour être sûr d'avoir les logs des envois.

Utilisation

  1. créer le message
  2. sélectionner d'éventuels critères
  3. selectionner une liste
  4. dans divers donner un email pour notification de début/fin d'envoi

ensuite aller dans message => brouillon et "remettre dans la file d'attente" le message.

La tâche cron enverra ce qui est dans la file d'attente.