This guide covers essential configuration for self-hosted phpList installations.
phpList uses MySQL/MariaDB. Configure in config/config.php:
// Database settings
$database_host = 'localhost';
$database_name = 'phplist';
$database_user = 'phplist';
$database_password = 'your-secure-password';
$database_port = '3306';
// Table prefix (useful for multiple installations)
$table_prefix = 'phplist_';
Configure in config/config.php:
// Site URL
$website = 'https://phplist.example.com';
// Admin URL
$admin_address = 'https://phplist.example.com/admin';
// System admin email
$admin_email = 'admin@example.com';
# Message queue settings
$queue_batch_size = 100; // Messages per batch
$max_processqueue_message = 1000; // Max messages per run
Configure SMTP in config/config.php:
// SMTP Configuration
define('PHPMAILERHOST', 'smtp.yourprovider.com');
define('PHPMAILERPORT', 587);
define('PHPMAILER_SECURE', 'tls'); // 'tls' or 'ssl'
define('PHPMAILER_AUTHUSER', 'your-smtp-user');
define('PHPMAILER_AUTHPASS', 'your-smtp-password');
define('PHPMAILER_SMTP_DEBUG', 0); // Set to 1 for debugging
// From address
$default_from_address = 'noreply@example.com';
$default_from_name = 'Your Organization';
Recommended SMTP Providers:
Configure queue processing in crontab:
# Edit crontab
crontab -e
# Process message queue every 5 minutes
*/5 * * * * php /var/www/html/admin/index.php -pprocessqueue
# Process bounces every hour
0 * * * * php /var/www/html/admin/index.php -pprocessbounces
# Send RSS campaigns every 30 minutes
*/30 * * * * php /var/www/html/admin/index.php -pprocessrss
Configure bounce processing in config/config.php:
// Bounce mailbox settings
$bounce_protocol = 'pop'; // 'pop' or 'imap'
$bounce_mailbox_host = 'pop.yourprovider.com';
$bounce_mailbox_user = 'bounces@example.com';
$bounce_mailbox_password = 'your-bounce-password';
$bounce_mailbox_port = '110'; // 110 for POP3, 995 for POP3S
// Bounce processing rules
$bounce_unsubscribe_threshold = 5; // Unsubscribe after N bounces
Configure in Config > Settings > Privacy:
Enable double opt-in:
phpList supports HTML templates:
[SUBSCRIBEURL] - Subscription page link[UNSUBSCRIBEURL] - Unsubscribe link[FORWARDURL] - Forward to friend link[MESSAGE] - Email contentManage plugins in Config > Manage Plugins:
Recommended plugins:
config.phpcrontab -lgrep phplist /var/log/syslog