自宅のサーバにPHPListをインストールした時の手順をメモ代わりに記載します。
インストールする環境は下記の通り
OS : CentOS 6.6 ( 64bit )
PHPのバージョン : 5.3.3
MySQL : 5.6.31
1.PHPのIMAPモジュールのインストール
# yum -y install php-imap
2.phpListの最新モジュールのインストール
phpListの最新版をダウンロードし、モジュールを展開。
# wget http://prdownloads.sourceforge.net/phplist/phplist-3.2.5.tgz?download
# tar xfz phplist-3.2.5.tgz
# mv phplist-3.2.5 /var/www/phplist
3.HTTPサーバの設定
/etc/httpd/conf.d/phplist.conf ファイルを新規に作成し、下記の定義を追加
Alias /phplist /var/www/phplist/public_html
定義を追加後、下記のコマンドでhttpサーバを再起動
# /etc/init.d/httpd restart
4.phpListで使用するデータベースをMySQLに作成
phpMyAdminを利用して、phpListで作成するデータベースとユーザを作成する。
5.phpListをセットアップする
下記コマンドでbaunceメール受信用のユーザを追加
# useradd bounces
# passwd bounces
/var/www/phplist-3.0.5/public_html/lists/config/config.php ファイルを編集
...
#下記の設定をファイルの先頭に追加
$language_module = "japanese.inc";
#データベースのプレフィックス
$usertable_prefix = "phplist_";
# phplistのルートディレクトリ
$pageroot = '/phplist/lists';
# phpListの管理ルートディレクトリを設定する
$adminpages = '/phplist/lists/admin';
#下記の部分を変更
$database_name = "mySQLのデータベース名";
$database_user = "mySQLのユーザ";
$database_password = 'mySQLのパスワード';
# データベースで作成するテーブル名のプレフィックスを設定する
#テストモードを0にする
define ("TEST",0);
...
# バウンスメールの宛先アドレスを設定します。
# $message_envelope = 'listbounces@yourdomain';
$message_envelope = 'bounces@hogehoge.com';
...
# バウンスメールの取得先サーバー、ユーザ、パスワードを設定します。
# $bounce_mailbox_host = 'localhost';
# $bounce_mailbox_user = 'popuser';
# $bounce_mailbox_password = 'password';
$bounce_mailbox_host = 'localhost';
$bounce_mailbox_user = 'bounces';
$bounce_mailbox_password = 'bouncespass';
...
# 最後にデフォルト言語に日本語の設定を追加します。
$default_system_language = 'ja';
/var/www/phplist-3.0.5/public_html/lists/admin/class.phplistmailer.php ファイルを編集
function PHPlistMailer($messageid,$email,$inBlast = true,$exceptions = false) {
...
// コンストラクタの最終行に言語を日本語に設定する。
$this->SetLanguage('ja', dirname(__FILE__) . '/phpmailer/language/');
}
...
// MailSendを親クラス PHPMailer の定義に合わせる
//function MailSend($header, $body) {
protected function MailSend($header, $body) {
// MailSendの先頭に文字列を変換するメソッド(関数)を呼ぶように追加する。
$body = $this->body2ja($body);
...
}
...
// ---- ここから、最終行に追加する ----
// 属性に言語コード情報を追加する
public $language_code = '';
// 言語コードが日本語の場合は、文字コードを変換するメソッド body2ja 追加する
public function body2ja($body) {
if($this->language_code=='ja') {
$body = mb_convert_encoding($body, $this->CharSet);
}
return $body;
}
// SetLanguage のオーバーライド
function SetLanguage($langcode = 'en', $lang_path = 'language/') {
// 言語コード情報を属性情報に設定する
$this->language_code = $langcode;
// 言語コード情報が日本語の場合は、文字コード、エンコード情報を上書きする
if($langcode=='ja') {
$this->CharSet = "iso-2022-jp";
$this->Encoding = "7bit";
}
// 親のSetLanguageをコールする
return parent::SetLanguage($langcode,$lang_path);
}
// SendmailSend のオーバーライド
protected function SendmailSend($header, $body) {
// 先頭で文字列を変換するメソッド(関数)を呼ぶように追加する。
$body = $this->body2ja($body);
return parent::SendmailSend($header,$body);
}
// SmtpSend のオーバーライド
protected function SmtpSend($header, $body) {
// 先頭で文字列を変換するメソッド(関数)を呼ぶように追加する。
$body = $this->body2ja($body);
return parent::SmtpSend($header,$body);
}
// EncodeHeader のオーバーライド
public function EncodeHeader($str, $position = 'text') {
// 先頭で文字列を変換する処理を追加する。
if($this->language_code=='ja') {
$str = mb_encode_mimeheader($str, $this->CharSet, "B");
}
return parent::EncodeHeader($str,$position);
}
// ---- ここまで、最終行に追加する ----
6.phpListの管理画面からセットアップ
http://サーバのIPアドレス/phplist/lists/admin/ へアクセスし、画面の内容に従ってセットアップを実施。
以上