PHPList : installation mailing-lists
De wikiGite
Sommaire
Installation
Charger PHPList
wget http://downloads.sourceforge.net/project/phplist/phplist/2.10.14/phplist-2.10.14.tgz
Décompresser
tar -xvzf phplist-2.10.14.tgz
Copier le sous-répertoire "lists" (sous public_html) dans le futur répertoire DocumentRoot du virtualhost créé pour PHPList
mkdir /var/www/phplist mv /<chemin vers>/phplist-2.10.14/public_html/lists /var/www/phplist
Créer un virtualhost dans apache (ex. sur Debian : /etc/apache2/sites-enabled/002-phplist)
<VirtualHost 10.0.0.43:80> ServerName phplist.systea.net DocumentRoot /var/www/phplist </VirtualHost>
Note : il est important de conserver le sous-répertoire "lists" sous DocumentRoot, certaines pages de PHPList y font référence en dur !!!
Editer /var/www/phplist/lists/config/config.php. Modifier les informations MySQL :
# what is your Mysql database server $database_host = "localhost"; # what is the name of the database we are using $database_name = "phplistdb"; # who do we log in as? $database_user = "phplist"; # and what password do we use $database_password = 'password_mysql';
L'adresse de retour des mails en erreur (ou retours out-of-office)
$message_envelope = 'bounce@systea.fr';
Si ce mail est sur un autre serveur (pas en local en mbox), il faut que PHPList y accède en POP pour récupérer les mails en retour et les traiter
$bounce_protocol = 'pop'; $bounce_mailbox_host = 'mail.domain.com'; $bounce_mailbox_user = 'bounces'; $bounce_mailbox_password = 'password_bounce';
Vitesse d'envoi : combien de mails par période ? Si MAILQUEUE_BATCH_SIZE=0, les mails sont evoyés aussi vite que possible. Ici, on envoit 1000 mails par heure, avec 1 seconde entre chaque mails :
define("MAILQUEUE_BATCH_SIZE",1000); define("MAILQUEUE_BATCH_PERIOD",3600); define('MAILQUEUE_THROTTLE',1);
Ajouter un filtre par domaine (nombre max de mail envoyés à un même domaine par période) pour éviter d'être spammé. Dans l'exemple, envoie 10 mails d'un même domaines toutes les 2 heures.
define('USE_DOMAIN_THROTTLE',1); define('DOMAIN_BATCH_SIZE',10); define('DOMAIN_BATCH_PERIOD',120);
Paramétrer le language (voir dans le sous-répertoire "texts"):
$language_module = "french_utf8.inc";
Un peu de sécurité (les autres paramètres sécurité peuvent être laissés par défaut)
$check_for_host = 1;
En laissant "define ("TEST",1);" PHPList n'envoie rien mais affiche ce qu'il aurait du faire. De même en phase de test mettre "define ("VERBOSE",1);" pour qu'il affiche le contenu du mail.
Dans un navigateur aller sur <URL de PHPList>/lists/admin. Si la base est vide, il propose de l'initialiser.
Puis continuer l'installation, en se connectant en admin/phplist, suivre les "tâches restant à faire" à l'URL http://<URL PHPList>/lists/admin/?page=setup.
Il reste à tester tout ça, notamment, vérifier que les "bounce" (les retours en erreurs) sont bien enregistrés, que le mail est désactivé (passé en "non-confirmé" en fait, ce qui fait que PHPList ne lui envoie plus rien) au bout de 5 retours en erreur.
Tips and tricks
Wanadoo/Orange "refuse to talk to me"
Trop sensible, Orange ! Même les réglages par domaine de PHPList ne suffisent pas. En plus ils changent leurs règles tous les 15 jours ! Le mieux est de paramétrer Postfix directement.
Dans /etc/postfix/transport
wanadoo.com slow: wanadoo.fr slow: orange.com slow: orange.fr slow:
puis
postmap /etc/postfix/transport
dans /etc/postfix/master.cf
#========================================================================== # service type private unpriv chroot wakeup maxproc command + args # (yes) (yes) (yes) (never) (100) #========================================================================== slow unix - - n - 5 smtp -o syslog_name=postfix-slow -o smtp_destination_concurrency_limit=3 -o slow_destination_rate_delay=1
dans /etc/postfix/main.cf
slow_destination_recipient_limit = 20 slow_destination_concurrency_limit = 2
puis relancer Postfix
Passer les barre des 1Mo pour les imports
Les fichiers d'import sont limités à 1Mo par défaut. Il y a 2 choses à modifier :
- PHP : dans php.ini, au minimum :
max_execution_time = 300 max_input_time = 300 memory_limit = 1024M post_max_size = 8M upload_max_filesize = 16M
- Dans PHPList, admin/import1.php, ~ ligne 49
if (filesize($_FILES["import_file"]['tmp_name']) > 1000000) {
passer 1000000 (=1Mo) à 5000000 (=5Mo)
Enlever le texte "Powered by..."
L'image PHPList est supprimée par config/config.php, ~ligne 260
define ("REGISTER",0);
Pour supprimer aussi la référence texte, éditer admin/connect.php, ~ligne 149. Commenter (par "//") la ligne $PoweredByText = ...
Modifier le comportement de la recherche d'utilisateurs
Sur la page "Utilisateurs", la recherche se fait par défaut sur "tout ce qui contient" la chaîne de caractère passée en paramètre.
Sur de grosses bases, on peut avoir besoin de chercher sur une partie exacte pour limiter le nombre d'adresses, par exemple "exactement égale à", ou "ceux qui commencent par" ou "ceux qui finissent par".
Editer admin/commonlib/users.php, remplacer toutes les occurences de "%%%s%%" par "%s" (au moins en 3 endroits). Maintenant, au lieu chercher sur "%votre chaîne de recherche%", PHPList recherchera exactement "votre chaîne de recherche". Il suffira ensuite d'ajouter à cette chaîne un "%" bien placé pour chercher "ce qui commence par" (% à la fin) ou "ce qui finit par" (% au début).
EDIT : quelle différence entre admin/commonlib/users.php et admin/users.php ?? Les modifications dans ce dernier fichier ne changent rien au comportement de PHPList... A quoi sert-il ?