Outils personnels

PHPList : installation mailing-lists : Différence entre versions

De wikiGite

(Installation)
 
(4 révisions intermédiaires par un autre utilisateur non affichées)
Ligne 1 : Ligne 1 :
 +
= Installation =
 
Charger PHPList
 
Charger PHPList
 
  wget http://downloads.sourceforge.net/project/phplist/phplist/2.10.14/phplist-2.10.14.tgz
 
  wget http://downloads.sourceforge.net/project/phplist/phplist/2.10.14/phplist-2.10.14.tgz
Ligne 10 : Ligne 11 :
  
 
Créer un virtualhost dans apache (ex. sur Debian : /etc/apache2/sites-enabled/002-phplist)
 
Créer un virtualhost dans apache (ex. sur Debian : /etc/apache2/sites-enabled/002-phplist)
  <VirtualHost 10.0.0.43:80>
+
  <VirtualHost 192.168.1.20:80>
   ServerName phplist.systea.net
+
   ServerName phplist.domain.ltd
 
   DocumentRoot /var/www/phplist
 
   DocumentRoot /var/www/phplist
 
  </VirtualHost>
 
  </VirtualHost>
Ligne 27 : Ligne 28 :
 
  $database_password = 'password_mysql';
 
  $database_password = 'password_mysql';
 
L'adresse de retour des mails en erreur (ou retours out-of-office)
 
L'adresse de retour des mails en erreur (ou retours out-of-office)
  $message_envelope = 'bounce@systea.fr';
+
  $message_envelope = 'bounce@domain.tld';
 
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
 
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_protocol = 'pop';
  $bounce_mailbox_host = 'mail.domain.com';
+
  $bounce_mailbox_host = 'mail.domain.tld';
 
  $bounce_mailbox_user = 'bounces';
 
  $bounce_mailbox_user = 'bounces';
 
  $bounce_mailbox_password = 'password_bounce';
 
  $bounce_mailbox_password = 'password_bounce';
Ligne 50 : Ligne 51 :
  
 
Dans un navigateur aller sur <URL de PHPList>/lists/admin. Si la base est vide, il propose de l'initialiser.
 
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 <nowiki>http://<URL PHPList>/lists/admin/?page=setup.</nowiki>
 
Puis continuer l'installation, en se connectant en admin/phplist, suivre les "tâches restant à faire" à l'URL <nowiki>http://<URL PHPList>/lists/admin/?page=setup.</nowiki>
  
 
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.
 
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
 +
transport_maps = hash:/etc/postfix/transport # Vérifier que cette ligne n'existe pas déjà !
 +
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 ?

Version actuelle datée du 3 octobre 2011 à 16:50

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 192.168.1.20:80>
 ServerName phplist.domain.ltd
 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@domain.tld';

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.tld';
$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

transport_maps = hash:/etc/postfix/transport # Vérifier que cette ligne n'existe pas déjà !
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 ?