Konfiguracja

Konfiguracja jest rozrzucona w dwa miejsca:

  1. plik konfiguracyjny config_extended.php traktowany jako ustawienia domyślne

  2. plik konfiguracyjny config.php: ustawienia własne oraz nadpisanie ustawień domyślnych

  3. (zdecydowana większość) przechowywana w bazie danych mySQL w tabeli config (z ewentualnych prefixem)

Utworzenie bazy danych

Przed przystąpieniem do pierwszego uruchomienia potrzebna jest baza danych:

CREATE TABLE phplistdb;
CREATE USER 'phplistuser'@'localhost' IDENTIFIED BY '*********';
GRANT ALL ON phplistdb.* TO 'phplistuser'@'localhost';

FLUSH PRIVILEGES;

Przetwarzanie zwrotów (bounces)

phplist powinno posiadać konto typu POP3/IMAP, na które będą "spływać" zwrotki o błędnych adresach (niedostarczonych wiadomości). Dzięki temu jest możliwość automatycznego oznaczania błędnych adresów email odbiorców, aby przy ponownej wysyłce pomijać takie adresy. Konfiguracja takiego konta powinna znaleźć się w pliku konfiguracyjnym (patrz dalej). Więcej można znaleźć w dokumentacji [ 2 ].

Plik konfiguracyjny

Przed przystąpieniem do pierwszego uruchomienia (w przeglądarce) należy ustawić pewne parametry w pliku konfiguracyjnym, tak aby utworzona baza danych oraz wpisane do niej wartości były już poprawne.

// what is your Mysql database server hostname
$database_host = 'localhost';

// what is the name of the database we are using
$database_name = 'phplistdb';

// what user has access to this database
$database_user = 'phplistuser';

// and what is the password to login to control the database
$database_password = '***********';

// Ustawienia dla phpmailer
define('PHPMAILERHOST', 'mx1.bsdserwis.com');
define('PHPMAILERPORT',587);
define("PHPMAILER_SECURE",'tls');
define('PHPMAILER_SMTP_DEBUG', 0);
$phpmailer_smtpuser = 'smtpuser';
$phpmailer_smtppassword = 'smtpauthpassword';

// Zwrotki
$message_envelope = 'biuletyn.zwrotki@uniquework.pl';

// set this to 0, if you set up a cron to download bounces regularly by using the
// commandline option. If this is 0, users cannot run the page from the web
// frontend. Read README.commandline to find out how to set it up on the
// commandline
define('MANUALLY_PROCESS_BOUNCES', 1);

// when the protocol is pop, specify these three
$bounce_mailbox_host = 'pop3.bsdserwis.com';
$bounce_mailbox_user = 'zwrotki@domena.tld';
$bounce_mailbox_password = '***************';
$bounce_mailbox_port = '995/pop3/ssl';

// set this to 0 if you want to keep your messages in the mailbox. this is potentially
// a problem, because bounces will be counted multiple times, so only do this if you are
// testing things.
$bounce_mailbox_purge = 1;

$default_system_language = "pl";
$pageroot = '';
$table_prefix = '';
$usertable_prefix = '';

Ustawienie uprawnień do wybranych katalogów

chown -R www /usr/local/www/phplist/lists/admin/plugins
chown www /usr/local/www/phplist/lists/config
chown www /usr/local/www/phplist/lists/images

# katalog, który trzeba podać w konfiguracji phpList (menu Config)
for d in image files flash; do mkdir -p /var/www/htdocs/virtuals/nowosci-media/public/$d; done
chown -R www /var/www/htdocs/virtuals/nowosci-media/public

Konfiguracja zadań crontab

Zgodnie z dokumentacją [ 3 ] możliwe jest ustawienie zadań CRON przetwarzających kolejki oraz zwroty. Konieczna jest modyfikacja pliku konfiguracyjnego, aby działało to poprawnie:

define('PROCESSCAMPAIGNS_PARALLEL',true);

// define the amount of emails you want to send per period. If 0, batch processing
// is disabled and messages are sent out as fast as possible
define('MAILQUEUE_BATCH_SIZE', 0);

// define the length of one batch processing period, in seconds (3600 is an hour)
define('MAILQUEUE_BATCH_PERIOD', 240);

Kolejnym krokiem jest wykonanie katalogu na logi oraz nadanie uprawnień:

mkdir -p /var/log/phplist
chown www:www /var/log/phplist

Teraz można już wykonać zadanie crontab:

crontab -u www -e

NULL=/dev/null
LOC_PREFIX=/usr/local
SHELL=/bin/sh
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin
HOME=/var/log
_phplist_cfg=${LOC_PREFIX}/www/phplist/lists/config/config.php

# --- obs/luga phplist -----------------------------------------------------
#
*/5     *       *       *       *       ${LOC_PREFIX}/bin/phplist -c ${_phplist_cfg} -pprocessqueue > /var/log/phplist/process-`/bin/date "+\%H:\%M"`.log
22      01      *       *       *       ${LOC_PREFIX}/bin/phplist -c ${_phplist_cfg} -pprocessbounces > /var/log/phplist/bounces-`/bin/date "+\%w-\%a"`.log 2>&1

Katalog na media do wiadmości newslettera

ftp://__user__:__haslo__@nowosci.domain.tld

Pliki, które mają być widoczne z poziomu przeglądarki należy umieścić w katalogu public/.

(!) Można również wykorzystać mechanizm "katalogu zewnętrznego" w ownCloud lub nextCloud

Konfiguracja nginx

Konfiguracja nginx najlepiej wykonać jako root dla danej domeny. Przykładowa konfiguracja:

server {
# [...]
    root /usr/local/www/phplist/lists;
    index index.php;

    location /.well-known/ {}

    location /media/ {
        alias /var/www/htdocs/virtuals/nowosci-media/public/;
        index index.html;
    }
# [...]
}