ファイアバードに phplistをインストールしてみた

公開日| 2011年7月22日   更新日| 2012年9月14日   コメントはありません。

レンタルサーバーも ファイアバードファイアバード へ移って、ようやく落ち着きました。
ドメインも系列の スタードメインスタードメイン へ移しました。

今回は、ファイアバードphplistをインストールしてみます。

phplistとは、
電子メールのメーリングリストを管理するオープンソースソフトウェアである。PHPで書かれ、MySQLデータベースに情報を保持する。phplistはGPLの下に置かれ、自由に配布できる。
(出展:Wikipedia)

ファイアバードには、メーリングリスト機能はありません。
そこで、このphplistを使って代替ツールとして使うのも悪くないと思います。

ただphplistは、メーリングリストというよりメールマガジンの管理ソフトなので、メーリングリストのように1つのエイリアスメールアドレスで議論したりすることはできません。
メールマガジン(phplistではリストと呼ばれる)への登録画面も作成し、一般公開することもできます。
phplistは、一方通行的な同報配信をしてくれるだけですので、少し機能を理解した上で使ったほうが良いです。

では、早速、インストールをやってみましょう。
※phplistは、phpとmysqlによって動作します。

まずは、データベースを作成する

phplistは、Wordpressと同じように、mysql(データベース)phpで動作します。
そのためphplistのためのmysql(データベース)を1つ作成しておきましょう。

データベースの作成方法は、Wordpressと同じなので、ここでは省略します。
詳しくは、ファイアバードに WordPressをインストールしてみた の 「まずは、データベースを作成する」 を参照してください。

phplistで使うデータベースの以下の情報を控えてきます。

  • データベースホスト(サーバー)
    データベースホスト名 あるいは、IPアドレス は、[ MySQL一覧 ]のMySQLサーバー、IPアドレスで確認できます。
  • データベース名
  • ユーザ名
    [ ユーザ設定 ]で設定したファイアバードのユーザ名 + ‘_’ + ユニークな文字列 になります。
  • データベースへアクセスできるユーザのパスワード
    [ ユーザ設定 ]で設定したファイアバードのユーザ名 + ‘_’ + ユニークな文字列 に対するパスワードになります。

次に、phplistの最新版を展開する

データベースの設定を終えたら、次は、phplistをアップロードします。
SSHが使える場合は、シェルからコマンドで最新をダウンロードして、解凍し、インストール・・・という手順を一気に進めることができます。

しかし、残念ながら、ファイアバードは、SSHに対応していません。

そのため、本来なら、一旦、自分のPCに最新のphplistをダウンロードし、それをFTPを使ってアップロードする・・・という手順になります。

しかし、ファイアバードは、PHP Shell(PHP Shellについては、こちらの記事を参考にしました)が使えます。
PHP Shellを使うことで、アップロード作業を短くすることができますので、やってみます。

Shellの使い方や、コマンドがうまく使えない方は、ここの手順をマネせずに、一旦、自分のPCに最新のphplistをダウンロードし、それをFTPのツールを使ってアップロードしましょう。

PHP ShellのFTPでのアップロード先は、独自ドメイン ( 例でいうと http://example.com/phpshell/ のようにアクセスできるところにします ) の直下としましょう。

以降は、PHP Shellでログインした以降について解説します。

  1. 最新のphplistをphplistのサイトから直接取得する。
    $ mkdir /home/user/lib/return
    $ cd /home/user/lib/return
    $ wget "http://prdownloads.sourceforge.net/phplist/phplist-2.10.14.zip?download"return
    --2011-07-04 13:21:11--  http://prdownloads.sourceforge.net/phplist/phplist-2.10.14.zip?download
    Resolving prdownloads.sourceforge.net... 216.34.181.59
    Connecting to prdownloads.sourceforge.net|216.34.181.59|:80... connected.
    HTTP request sent, awaiting response... 301 Moved Permanently
    Location: http://downloads.sourceforge.net/project/phplist/phplist/2.10.14/phplist-2.10.14.zip?download= [following]
    --2011-07-04 13:21:12--  http://downloads.sourceforge.net/project/phplist/phplist/2.10.14/phplist-2.10.14.zip?download=
    Resolving downloads.sourceforge.net... 216.34.181.59
    Reusing existing connection to prdownloads.sourceforge.net:80.
    HTTP request sent, awaiting response... 302 Found
    Location: http://jaist.dl.sourceforge.net/project/phplist/phplist/2.10.14/phplist-2.10.14.zip [following]
    --2011-07-04 13:21:13--  http://jaist.dl.sourceforge.net/project/phplist/phplist/2.10.14/phplist-2.10.14.zip
    Resolving jaist.dl.sourceforge.net... 150.65.7.130, 2001:200:141:feed::feed
    Connecting to jaist.dl.sourceforge.net|150.65.7.130|:80... connected.
    HTTP request sent, awaiting response... 200 OK
    Length: 3634149 (3.5M) [application/zip]
    Saving to: `phplist-2.10.14.zip'
    
         0K .......... .......... .......... .......... ..........  1%  134K 26s
        50K .......... .......... .......... .......... ..........  2% 2.81M 14s
                         :
                         :
    
      3450K .......... .......... .......... .......... .......... 98% 34.8M 0s
      3500K .......... .......... .......... .......... ........  100% 51.0M=1.7s
    
    2011-07-04 13:21:15 (2.06 MB/s) - `phplist-2.10.14.zip' saved [3634149/3634149]
    
    $ return
    

    通常のSSHと違い、wgetの実施状況などは見えません。
    少し時間がかかることがありますので、出力結果が表示されるまで、しばらく待ちましょう。

    最初に、/home/user/lib/(user:各ユーザ名)のディレクトリを作成しています。
    とりあえず、個別のディレクトリの配下に展開します。
    phplistは、ウェブに公開すべきディレクトリが決まっています。そのため、公開すべきディレクトリ以外は、公開しないように、公開ディレクトリでない領域に展開したいので、ここで作成しています。
    ここでは、libという汎用的な名前にしていますが、ここは、好き名前でOKです。


  2. 最新のphplistを内部の適当なディレクトリへ展開する。
    $ unzip phplist-2.10.14.zipreturn
    Archive:  phplist-2.10.14.zip
       creating: phplist-2.10.14/
      inflating: phplist-2.10.14/phplist.sql  
           :
           :
    $ return
    

    ここで解凍したディレクトリは、

    /home/user/lib/phplist-2.10.14/
    となっています。

    ディレクトリ名を別の名前にした方は、mvコマンドで変更しましょう。
    ここでは、このままの名前で説明します。


  3. /home/user/lib/phplist-2.10.14/配下の以下のファイルは、編集が必要なため、ダウンロードしておきます。
    • /public_html/lists/.htaccess
    • /public_html/lists/admin/structure.php
    • /public_html/lists/config/config.php
    • /public_html/lists/texts/japanese.inc
    • /public_html/lists/admin/phpmailer/class.phpmailer.php

  4. /home/user/lib/phplist-2.10.14/public_html/listsを公開します。

    /public_html/lists を公開ディレクトリへシンボリックリンクを作成して公開(ウェブからアクセスできるように)します。

    $ cd /home/user/user.firebird.jp/public_htmlreturn
    $ ln -s /home/user/lib/phplist-2.10.14/public_html/lists listsreturn
    $ return
    

    ここでは、ファイアバードから与えられているデフォルトのファイアバードのサブドメイン(user.firebird.jp)の公開ディレクトリ直下にlistsの名前でシンボリックリンクを作成し、公開しています。
    これで、上記の例では、http://user.firebird.jp/lists/ でアクセスできるようになったはずです。


最後に、phplistをセットアップする

データベース、phplistの最新版を展開しましたので、あとは、phplistをセットアップすればOKです。
phplistをセットアップするには、一部のファイルを編集してから、ウェブ画面からインストールを実行します。

  1. /home/user/lib/phplist-2.10.14/配下のダウンロードしたファイルを編集します。
    • /public_html/lists/.htaccess
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      
      DirectoryIndex index.php
       
      <FilesMatch "\.(php|inc)$">
      Order allow,deny
      deny from all
      </FilesMatch>
      <FilesMatch "(index.php|dl.php|ut.php|lt.php|download.php)$">
      Order allow,deny
      allow from all
      </FilesMatch>
      # php_flag magic_quotes_gpc on

      12行目をコメントアウトします。
      ファイアバードでは、php_flagでmagic_quotes_gpcを設定することができません。

      magic_quotes_gpc = on に設定すると
      ‘(シングルクオート)、” (ダブルクオート)、\(バックスラッシュ) 、NULL には全て自動的に バックスラッシュでエスケープ処理が行われます。
      magic_quotes_sybase も on の場合、シングルクオートは、バックスラッシュではなく シングルクオートでエスケープされます。

      例) 「” → \”」「\ → \\」など変換処理が行われます。またクッキーも同様です。

      ※PHP5.3以降は、非推奨です。

      この.htaccessの設定の代替は、php5.3を使用している場合、(phpのバージョン変更は、 を参照) 以下のように設定したファイル(.user.ini)を lists/. の直下に置けばOKです。

      [PHP]
      magic_quotes_gpc = on

      phpinfoを表示した時の結果

      Master Value : Off
      Local Value : On
      とちゃんと設定できてますね。


    • /public_html/lists/admin/structure.php

      これは、UTF8でデータベースを作成している場合、文字列オーバーのエラーが発生するので、その回避を行っています。

      67
      68
      69
      70
      71
      72
      73
      74
      
          "user_blacklist_data" => array(
           //   "email" => array("varchar(255) not null unique","Email"),
              "email" => array("varchar(233) not null unique","Email"),
              "name" => array("varchar(100) not null","Name of Dataitem"),
              "data" => array("text",""),
              "index_1" => array("emailidx (email)",""),
              "index_2" => array("emailnameidx (email,name)",""),
          ),

      68行目をコメントアウト、69行目でvarchar(233)と文字数を削減しています。


    • /public_html/lists/config/config.php

      これは、データベースの環境設定を行います。

      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      44
      45
      46
      47
      48
      49
      50
      51
      52
      53
      54
      55
      56
      
      # select the language module to use
      # Look for <country>.inc files in the texts directory
      # to find your language
      # this is the language for the frontend pages. In the admin pages you can
      # choose your language by using the dropdown in the pages.
      #$language_module = "english.inc";
      $language_module = "japanese.inc";
       
      # what is your Mysql database server
      #$database_host = "localhost";
      $database_host = "mysqlxxx.firebird.netowl.jp";
       
      # what is the name of the database we are using
      #$database_name = "phplistdb";
      $database_name = "user_phplist";
       
      # who do we log in as?
      #$database_user = "phplist";
      $database_user = "user_phplist";
       
      # and what password do we use
      #$database_password = 'phplist';
      $database_password = 'phplistpassword';
       
      # 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';
       
      # if you want a prefix to all your tables, specify it here,
      $table_prefix = "phplist_";
       
      # if you want to use a different prefix to user tables, specify it here.
      # read README.usertables for more information
      $usertable_prefix = "phplist_user_";
       
      # if you change the path to the PHPlist system, make the change here as well
      # path should be relative to the root directory of your webserver (document root)
      # you cannot actually change the "admin", but you can change the "lists"
      # DO NOT include the file eg "index.php" because that is added when required. If you do
      # it is likely to break the tracking, see http://mantis.phplist.com/view.php?id=15542
      $pageroot = '/lists';
      $adminpages = '/lists/admin';

      19-20行目:日本語ファイルを読み込むように変更しています。
      23-24行目:データベースのホスト名を設定します。ここでは、ファイアバードで提示しているmysqlのホスト名を設定します。
      27-28行目:phplistで使うデータベース名を設定します。
      31-32行目:phplistで使うデータベース名へアクセスするユーザ名を設定します。
      35-36行目:phplistで使うデータベース名へアクセスするユーザのパスワードを設定します。


      テストモードの解除について
      デフォルトの設定では、テストモードになっていて実際にメール送信を行わないようになっています。
      テストモードを解除するには、以下のようにTEST0を設定します。
      196
      197
      198
      
      # if test is true (not 0) it will not actually send ANY messages,
      # but display what it would have sent
      define ("TEST",0);
      ここの設定は、必要最小限の設定となっています。もし、メールの設定など細かい設定を行いたい場合は、別途、設定する必要があります。

    • /public_html/lists/texts/japanese.inc

      これは、phplistの設定画面で文字化けしてしまうので、EUC→UTF8へ文字コードをテキストエディタを使って変換します。
      そして、以下の箇所を変更します。

      1
      2
      3
      4
      5
      6
      7
      
      <?php
       
      # language dependent text used in the interface for users (not admin)
      
      # $strCharSet             = 'EUC-JP';
      $strCharSet             = 'UTF-8';
      $strName                = '名前';

      5行目をコメントアウトし、6行目でUTF-8の定義をしています。


    • /public_html/lists/admin/phpmailer/class.phpmailer.php

      ここでは、日本語のメールが、一般的に
      文字コード : ‘iso-2022-jp’
      エンコード : ‘7bit’
      を使っているので、そのための変更をします。

      文字コードがUTF8でメールを送信してもOKなら、ここの設定は不要です。
      ただ、古いメールクライアントを使っている場合は、UTF8の文字コードを正しく読めない場合もあるので注意が必要です。(最近のメールクライアントやウェブメールなら問題ないはずです)

      32
      33
      34
      35
      36
      37
      
          /**
           * Sets the CharSet of the message.
           * @var string
           */
          #var $CharSet           = "iso-8859-1";
          var $CharSet           = "iso-2022-jp";

      36-37行目:文字コード : ‘iso-2022-jp’ へ変更しています。


      45
      46
      47
      48
      49
      50
      51
      
          /**
           * Sets the Encoding of the message. Options for this are "8bit",
           * "7bit", "binary", "base64", and "quoted-printable".
           * @var string
           */
          #var $Encoding          = "8bit";
          var $Encoding          = "7bit";

      50-51行目:エンコード : ‘7bit’ へ変更しています。


      402
      403
      404
      405
      406
      
          function SendmailSend($header, $body) {
              $body = mb_convert_encoding($body, $this->CharSet);
       
              if ($this->Sender != "")
                  $sendmail = sprintf("%s -oi -f %s -t", $this->Sendmail, $this->Sender);

      403行目:文字コードを変換処理を追加しています。


      433
      434
      435
      436
      437
      438
      
          function MailSend($header, $body) {
              $body = mb_convert_encoding($body, $this->CharSet);
       
              $to = "";
              for($i = 0; $i < count($this->to); $i++)
              {

      434行目:文字コードを変換処理を追加しています。


      473
      474
      475
      476
      477
      
          function SmtpSend($header, $body) {
              $body = mb_convert_encoding($body, $this->CharSet);
       
              include_once($this->PluginDir . "class.smtp.php");
              $error = "";

      474行目:文字コードを変換処理を追加しています。


      1159
      1160
      1161
      1162
      1163
      1164
      
          function EncodeHeader ($str, $position = 'text') {
            $str = mb_encode_mimeheader($str, $this->CharSet, "B");
       
            $x = 0;
       
            switch (strtolower($position)) {

      1160行目:文字コードを変換処理(mime)を追加しています。



    編集を終えたら、全てのファイルをアップロードします。

    • /public_html/lists/.htaccess
    • /public_html/lists/.user.ini
    • /public_html/lists/admin/structure.php
    • /public_html/lists/config/config.php
    • /public_html/lists/texts/japanese.inc
    • /public_html/lists/admin/phpmailer/class.phpmailer.php

  2. ウェブ画面からphplistをインストール(セットアップ)します。

    ウェブブラウザから、lists/admin/ を直接アクセスします。
    ここの例では、http://user.firebird.jp/lists/admin/ へアクセスすることになります。


    画面上部に「インフォメーション:Running in testmode, …. 」 は、現在テストモードになっている由を通知しているものです。
    テストモードを解除するには、上の説明のテストモードの解除についてを参照してください。

    画面下の「続けるためにはデータベースの初期化を行ってください」をクリックします。


    上図のように表示されればOKです。データベースの設定が完了となります。


    上図のように、
    user_blacklist_data Database error 1071 while doing query Specified key was too long; max key length is 1000 bytes
    と表示されたら、上記の/public_html/lists/admin/structure.phpの設定を確認してください。


    メールの文字コードの設定を変更します。

    画面左のメニューから設定をクリックします。


    画面中央ぐらいの以下の項目を編集します。
    CharSet for HTML Messages編集をクリックして、”iso-2022-jp“に書き換えます。
    CharSet for Text Messages編集をクリックして、”iso-2022-jp“に書き換えます。

    文字コードがUTF8でメールを送信してもOKなら、ここの設定は不要です。
    ただ、古いメールクライアントを使っている場合は、UTF8の文字コードを正しく読めない場合もあるので注意が必要です。(最近のメールクライアントやウェブメールなら問題ないはずです)
    この設定を行う際、ログインをうながされることがあります。
    デフォルトでは、
    ユーザ名 : admin
    パスワード : phplist
    です。


ここまででセットアップが完了です。
その他、細かい設定もありますが、とりあえず、これで動作するはずです。
次に簡単にメールを送信してみましょう。

phplistを使ってメールを送信してみる

メールを送信するためには、phplistでいうリスト(メーリングリストのこと)を作成し、ユーザ(メーリングリストのユーザのこと)登録を行う必要があります。
以下にテストメールの送信までの簡単な手順を解説します。

  1. リストを確認します。


    デフォルトでは、testというリストが1つ存在します。今回は、そのtestというリストを使ってテスト送信してみます。

    画面左のメニューからリストをクリックします。
    リスト一覧が表示されますので、ここにtestというリストがあることを確認します。


  2. ユーザを登録します。


    テストメールの送信先ユーザを1つ登録します。

    画面左のメニューからユーザをクリックします。
    ユーザ一覧画面の左下ユーザ追加をクリックします。


    電子メール : 送信先のメールアドレスを設定します。
    このユーザは 確定済 にしますか? (1/0) : 確定済 ( 1 ) を設定します。
    このユーザは 確定済 にしますか? (1/0) : 確定済 ( 1 ) を設定します。

    メーリングリストメンバーシップ:
    test にチェックを入れます。

    最後に、変更を保存するをクリックして完了です。


  3. テストメールを送信してみます。


    テストメールを送信してみましょう。

    画面左のメニューからメッセージ送信をクリックします。
    メールタイトル: メールのタイトルになります。
    From の行: 送信元のメールアドレスになります。
    メッセージ. メールの本文になります。

    編集を終えたら、画面下の

    アドレスを設定: に先に設定したユーザのメールアドレスを設定します。(ユーザ登録されたメール以外へはテストメールを配信できません。)
    入力を終えたら、テストメッセージを送信をクリックします。


    どうですか?メールは届きましたか?

    これで動作確認が終わりです。ここまで動作すれば、送信スケジュールや送信するリストの選択などを行えば、メールマガジンとして送信してくれます。


簡単にファイアバードでのphplistの設定を解説してみました。

どうですか?うまくいきましか?

この設定手順は、ほとんどのレンタルサーバーでもそれほど違わないと思います。
ましてやミニバード、クローバーはまったく同じと言って良いでしょうね。

ネットオウル系のレンタルサーバーでは、メーリングリストが使えないので、phplistで補うのもありかと思います。
興味がありましたら、一度お試しを。

無料お試しのお申込みは、

ファイアバードは、こちらファイアバードへ からどうぞ。

ミニバードは、こちらミニバードへ からどうぞ。

クローバーは、こちらクローバーへ からどうぞ。

また、親和性の高いドメインレジストラであるスタードメインは、こちらスタードメインへ からどうぞ。



コメント

口コミ・評判を投稿 :

ブラウザの JavaScriptが無効となっている場合、コメントの投稿はできません。
コメントを投稿するには、JavaScriptを有効にしてください

お名前 *

メールアドレス *
(口コミ・評判欄には、表示されませんが入力が必要です。)

サイトアドレス



  • はてなブックマークへ追加する
  • Facebookでシェアする
  • twitter でつぶやく
  • Google Plusでシェアする
  • Pocketでシェアする
ページトップへ