怎样安装配置phplist

2013年6月21日 | 分类: 【技术】

【批次规划】

考虑到以下因素:
AmazonSES默认24小时发送邮件上限为10000封
电邮地址库不定时更新,需要严谨的排重
同一个电邮地址库分多次发送,且不重复发送

因此如下操作:
一个项目只管理一个电邮地址库,新电邮地址只在这个库中更新
设置config.php:每批次10000封,每24小时一个批次。

# 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",10000); 

# define the length of one batch processing period, in seconds (3600 is an hour, 86400 is a day)
define("MAILQUEUE_BATCH_PERIOD",86400);

【安装配置】

打开 phplist-X.X.x/public_html 会看到里面的 lists 文件夹。

修改配置文件 /lists/config/config.php

首先是语言和数据库的基本设置.

# 这个是设置前台普通用户界面的语言,管理界面的语言可以在后台自由选择
$language_module = “english.inc”;
# Mysql database server 数据库地址,一般情况这儿不需更改
$database_host = “localhost”;
# 数据库名
$database_name = “phplistdb”;
# 数据库用户名
$database_user = “phplist”;
# 用户密码
$database_password = ‘phplist';
# if you use multiple installations of PHPlist you can set this to
# something to identify this one. it will be prepended to email report
# subjects 这项没有试过
$installation_name = ‘PHPlist';
# 表前缀
$table_prefix = “phplist_”;
#用户表前缀
# read README.usertables for more information
$usertable_prefix = “phplist_user_”;
# 安装地址和管理界面地址
$pageroot = ‘/lists';
$adminpages = ‘/lists/admin';

bounces 处理设置

“Bounces” 处理是 phplist 的一个强大的功能, Bounce 是制一些邮件因为某些原因不能递送而返回的信息.这些原因可能是:收件人信箱满了,有限公司地址可能不再生效或暂时关闭,或者邮件地址被拼错等 等.Bounce 是不同于自动回复的,For more info, see this Wikipedia article on bounces[http://en.wikipedia.org/wiki/Bounce_message].

消息邮箱

在 config.php 文件里,你可以特别设置一个叫”消息信箱地址”的邮箱地址.这个地址将包含在邮件头信息的”Return-Path”里.

他将可以用来接受 bounces,但是首先你得确认已经建立了这个邮箱地址而且他工作正常.还有不要忘记去掉 “$message_envelope” 前面的确”#”

$message_envelope = “[email protected]”;

Bounce threshold

这是一个附加的设定,规定一个邮箱地址连续几次发送失败后,系统自动将该地址屏蔽(unconfirmed)

$bounce_unsubscribe_threshold = 5;

发送速率设置

如果phplist运行时占用大量CPU资源,肯能导致主机商方面的措施。因此有必要限制发出的邮件的数量

	
# Send a batch of 360 messages per batch period:
# 每批次发出360封信
define(“MAILQUEUE_BATCH_SIZE”,360);
# batch period is set to 3600 seconds (=1 hour):
# 一批次为 3600 秒(1小时)
define(“MAILQUEUE_BATCH_PERIOD”,3600);
# Pause between messages (in seconds) to avoid overloading the server:
# 每封信发送间隔1秒,以避免服务器过载。
define(‘MAILQUEUE_THROTTLE’,1);

【整合phpList和Amazon SES】

phpList从2011年年初的开发版本2.11.6开始支持Amazon SES,目前开发版本是2.11.10。注意,稳定版本是2.10.19,不要使用这个。

下载地址:http://sourceforge.net/projects/phplist/files/phplist-development/

解压缩后,我们需要安装的程序文件位置在 phplist-2.11.10.zip/phplist-2.11.10/public_html/lists/

打开 config/config.php 编辑:

在文件中直接插入(注意,复制的时候可能单字节单引号串换为双字节的单引号,导致phpList出现空白页):

define('PHPMAILER',0);
define('AWS_ACCESSKEYID','Your Access Key ID');
define('AWS_SECRETKEY','Your corresponding secret key');
define('AWS_POSTURL','http://email.us-east-1.amazonaws.com/');

注意:

  1. 直接插入config.php即可,这几项参数phpList的默认config文件中是没有对应的。
  2. 这部分config.php修改仅限于Amazon SES适配,其他设置参考phpList安装步骤。
  3. AWS_ACCESSKEYID和AWS_SECRETKEY,是通过申请“Request Production Access”之后获得的,而不是在“SMTP Settings”中申请“Create My SMTP Credentials”所获得的。
  4. Amazon SES正常工作需要PHP支持curl。
  5. phpList中所使用的webmaster、sender、bounce、no-reply等用上的电邮地址必须通过“Verified Senders”》“Email Addresses”的验证。
  6. Amazon SES不支持附件,所以必须去除邮件底部的phpList图标,define(“EMAILTEXTCREDITS”,1);。

申请AWS的AWSAccessKeyId(AWS Access Key ID)

  1. 打开Amazon Associates
  2. 点击按钮“Sign Up Now”
  3. 在页面中庸Amazon账号登录
  4. 点击“Manage Your Account”
  5. 点击“Access Identifiers”栏中的“Click here”
  6. 在“Access Credentials”的第一个Tab就是“Access Keys”

只去除html邮件中的版权图片

phpList默认设置,如果发送的是html的邮件,版权信息是一个Logo图片,这个可以在配置文件中去掉,也就是config.php 文件,找到:

define("EMAILTEXTCREDITS",0);

改成:

define("EMAILTEXTCREDITS",1);

这样发送HTML邮件的时候就不会加上图片版权信息了,但是会替换成文字的版权信息。也就是发送TEXT/HTML邮件都会有一个文字的版权信息:

powered by phplist v 2.XX.XX

去除所有版权信息

打开文件 lists/admin/sendemaillib.php 做如下修改:

找到:

$text["signature"] = "\n\n--\nPowered by PHPlist, www.phplist.com --\n\n";

清除中间的值,变为:

$text["signature"] = "";

然后再找到:

if (!EMAILTEXTCREDITS) {
…..
} else {
$html["signature"] = $PoweredByText;
}

在这段代码的下面紧接着加入一行:

$html['signature'] = '';

将改好的文件上传到网站中,发送的邮件就不会加入版权信息了。

Amazon-SES-Mailer-PHP(仅供参考,还没明白这个怎么用)

官网地址:http://github.com/geoloqi/Amazon-SES-Mailer-PHP

按照步骤:

执行:

pear channel-discover pear.amazonwebservices.com

返回成功:

Adding Channel "pear.amazonwebservices.com" succeeded
Discovery of channel "pear.amazonwebservices.com" succeeded

执行:

pear install aws/sdk

返回错误:

Unknown remote channel: guzzlephp.org/pear
aws/sdk requires package "channel://guzzlephp.org/pear/Guzzle" (version >= 3.0.3)
No valid packages found
install failed

这个问题可能是PEAR版本过低造成的。

查询PEAR版本:

pear -V

返回结果:

PEAR Version: 1.9.0

那么升级:

pear channel-update pear.php.net
pear upgrade pear

然后继续:

pear channel-discover guzzlephp.org/pear

返回成功:

Adding Channel "guzzlephp.org/pear" succeeded
Discovery of channel "guzzlephp.org/pear" succeeded

开始安装AWS SDK:

pear install aws/sdk

返回错误:

Unknown remote channel: pear.symfony.com
guzzle/Guzzle requires package "channel://pear.symfony.com/EventDispatcher" (version >= 2.1.0)
aws/sdk requires package "guzzle/Guzzle" (version >= 3.0.3)
No valid packages found
install failed

执行:

pear channel-discover pear.symfony.com

返回成功:

Adding Channel "pear.symfony.com" succeeded
Discovery of channel "pear.symfony.com" succeeded

再尝试安装AWS SDK:

pear install aws/sdk

返回成功:

downloading sdk-2.4.0.tgz ...
Starting to download sdk-2.4.0.tgz (1,588,738 bytes)
..........done: 1,588,738 bytes
downloading Guzzle-3.7.0.tgz ...
Starting to download Guzzle-3.7.0.tgz (313,463 bytes)
...done: 313,463 bytes
downloading EventDispatcher-2.3.1.tgz ...
Starting to download EventDispatcher-2.3.1.tgz (11,198 bytes)
...done: 11,198 bytes
install ok: channel://pear.symfony.com/EventDispatcher-2.3.1
install ok: channel://guzzlephp.org/pear/Guzzle-3.7.0
install ok: channel://pear.amazonwebservices.com/sdk-2.4.0