phpListはオープンソースのメール配信プログラムです。第2回となる本日は、前回までの内容に引き続きcronによる送信まで完成させます。本編に入る前に、前回終了時の状況を確認しましょう。

  • データベースの用意ができている
  • phpListで使用するメールアドレスが用意出来ている
  • config.pfpの設定が終わっている

以上のことをご確認ください。出来上がっていない方は、第1回をご覧ください。

第1回 phpList 3.2.4をさくらインターネットに設置する







送信されるメールに挿入されるphpListのロゴの削除

別に挿入されてもいいよって方はしなくていいです。でも、受信する側からすると「なんじゃこれ?」って感じなので、一応付けない方法もご紹介しておきます。例によって、改造する前に初期状態のsendmail.phpをsendmail.php.defaultとかに名前を変えて保存しておいてください。
では、\phplist-3.2.4\public_html\lists\admin\とフォルダを進み、sendemaillib.phpを見つけてください。見つけらたテキストエディタで開き、

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


と書かれている行を探してください。この行を以下のように書き換えます。

$text['signature'] = '';


続いて、

  if (!EMAILTEXTCREDITS) {
      $html['signature'] = $PoweredByImage;#'<div align="center" id="signature"><a href="http://www.phplist.com"><img src="powerphplist.png" width=88 height=31 title="Powered by PHPlist" alt="Powered by PHPlist" border="0" /></a></div>';
    # oops, accidentally became spyware, never intended that, so take it out again 🙂
    $html['signature'] = preg_replace('/src=".*power-phplist.png"/', 'src="powerphplist.png"', $html['signature']);
  } else {
      $html['signature'] = $PoweredByText;
  }

ソースの250行目付近の、このように書いてある場所を見つけます。このセクションの直後に、以下の1行を追記してください。書き換えるのではなく「追記」です。

$html['signature'] = '';


追記できたら、この状態で保存しておいてください。

listsフォルダの配置

サーバー上にアップロードするのは\lists以下の内容だけで良いので、\listsを圧縮します。圧縮する形式はなんでもいいですが、zipがいいかなぁと思います。あくまで趣味ですが。ただ、sshでログインして作業するって言われて意味がわからない方は圧縮せずに\listsフォルダごとFTPでアップロードし、次のステップに進んでください。
lists.zipが出来上がったら、FTPで設置したい場所にアップロードしてください。一応、下記のようにアップロードしたという前提でお話を進めます。

/home/yourname←あなたのID/www/lists.zip

ここから先はsshでログインしてlists.zipを展開するだけです。
sshでログインすると、/home/yourdomein/にいるはずなので、下記の通り順番にコマンドを入力していきます。

cd www
unzip lists.zip


これで、Webの公開ディレクトリ内にlistsというディレクトリが出来上がってるはずです。普段からsshを使っておられるならこの方が断然早いです。約3700個をそのままFTPでアップロードするのは待ってるだけで意識が薄れます。

phpListのセットアップ

サーバー上での展開もしくはアップロードが完了したら、phpListのセットアップを開始します。その前に最終確認です。以下の様な状態になっているか確認してください。

  • MySQLにphpListで使用するデータベースができている
  • phpListで使用するメールアドレスが用意出来ている
  • config.phpに必要な設定内容が書き込まれている
  • sendmaillib.phpの改造が済んでいる。(必要な方のみ)
  • /home/初期ユーザー名/www/listsと配置されている

確認できたらブラウザから管理画面にアクセスします。

http://あなたのドメイン.com/lists/admin/

すべてがうまくいっていると、Initialise Database というリンクが表示されるので、そちらをクリックしてください。すると、画面が変わって下記の内容の入力が促されます。

  • Pleease enter your name
    ご自身のお名前を入力してください。
  • The name of your organisation
    メールを送信する企業名や屋号などにするとよいと思います。
  • Please enter your email address
    メールマガジンを送信する送信元アドレスにしておくと、このあとの設定が楽です。
  • The initial login name will be “admin”
    Please enter the password you want to use for this account.(minimum of 8 characters.)
    初期ログインユーザーは「admin」になります。その「admin」のログインパスワードを入力して設定します。

すべて入力して、Continueをクリックすると再び画面が切り替わって、データベースの初期化が始まります。すべての行に「ok」が付いて、画面の一番下に、「Success」と表示されているか確認してください。

「Success」のすぐ右横にあるボタンを押すと、phpListからの案内メールへ登録する画面に切り替わりますが、必須ではありません。必要のない方は一旦ブラウザを閉じてください。割としつこく自動的にログイン状態を維持してくれますので、タブを閉じるだけでなく、ブラウザを閉じてくださいね。
再びブラウザを開き、http://あなたのドメイン.com/lists/admin/ にアクセスすると、ログイン画面になります。ここで、Nameにはadminを、Passwordには先ほど入力したパスワードを入力してください。正常にログインできたらとりあえず初期設定は完了です。

送信の方法

phpListにはメール送信の方法が大きくわけて3種類用意されています。

  • ブラウザからすぐに送信する
  • リモートキューを利用して送信する
  • Cronをつかってサーバー上でコマンドラインから送信する

上から順に設定は簡単ですが、メリットとデメリットがあります。

ブラウザから送信する

特に追加で何も設定しなくても、config.phpの define (“MANUALLY_PROCESS_QUEUE”,0); の「0」を「1」にするだけで送信することが可能です。ただし、メール送信中はずっとブラウザを開きっぱなしにしておかなければなりません。数十通ならいいかもしれませんが、それ以上になると拘束時間も長くなるのであまりおすすめできません。もちろん予約送信もできませんので、指定の時刻になったら送信開始なんてこともできません。すべてリアルタイムで作業する必要があります。

リモートキューから送信する

phpListにユーザー登録し、アプリケーションキーを取得することで、ブラウザを開きっぱなしにするのと同じ作業を代わりに行ってくれます。cronを使わない場合の現実的な選択肢だと思います。sshでのログインとかシンボリックリンクだとかわけわかんないって方は、この方法なら比較的簡単に設定することができます。設定の方法は別途ご紹介いたします。しかし、将来にわたってずっと無料で利用できるのか、phpListのサーバーがダウンしていたらどうなるのかといった、外部のサービスを利用する不安がつきまといます。

cronをつかって送信する

cronを使ってシェルスクリプトを実行することで配信する方法です。ブラウザを閉じてもあとは自動で送信してくれますし、日時を指定した予約送信も可能です。また、自分が契約しているサーバーですべてを完結させられるので、すべて自分の手の内にあるという安心感があります。管理者としては、問題が発生した時の切り分けも簡単になりますので、できることなら自分の手元で完結させたいというのが本音ではないでしょうか。さくらインターネットにはcronを設定することができますので、せっかくですからcronを使った送信に挑戦してみましょう。

ただし、cronの設定には十分な注意が必要です。共用サーバーですから、あまりにも頻繁にcronを走らせるのはご法度です。サーバーのリソースは他の利用者と分かち合って利用しなければなりません。間違った設定や、故意に短時間で繰り返す設定を行わないようにしてください。ここでご紹介している設定例は、現実的に許されるであろう範囲であることと、ある程度の送信数を確保することに傾注しています。これ以上の送信数を予定しておられる方は、際どいチューニングをしていかなけれればならないので、よく理解した上で設定してください。また、cronで実行するスクリプトを用意するのに、sshでのログインが必要になります。sshでのログインについてはご自身でお調べいただくようお願いたします。

Cronで実行するスクリプト

さくらインターネットではいろいろなシェルが使えます。デフォルトではcshになっているようですが、bashも使えます。それよりも問題なのが、さくらインターネットのphpのCLIはパスを無視してくれるところです。この制限のせいで、phpListのマニュアルのとおりに設定してもうまく動きません。具体的には下記のように書きます。手元のテキストエディタで書いてもいいですし、サーバー上でviを使って書いてもかまいません。慣れてる方はサーバー上の/home/ユーザー名/に/local/binとか/binあたりを作って、その中にviで書いて保存、chmodで実行権限を付けておいてください。

#!/usr/local/bin/bash
cd /home/ユーザー名/www/lists/admin/ ; /usr/local/bin/php index.php -c config.php $*

これを phplist とか適当な名前を付けて保存してください。/home/ユーザー名/www/lists/admin/ に移動して、index.phpをconfig.phpの設定内容で実行する内容です。先程も書きましたが、さくらインターネットのphpのCLIは自分のいる場所のものしか実行できないので、実行したいシェルスクリプトのある場所まで行かないといけません。また、config.phpの場所がindex.phpと違うフォルダなので、あとでindex.phpと同じフォルダにconfig.phpへのシンボリックリンクを作ります。

シェルスクリプトのアップロード

FTPでシェルスクリプトをアップロードします。アップロード先は www より上のフォルダにしてください。
例えば、/home/ユーザー名/ に bin というフォルダを作り、その中にアップロードします。アップロードができたら、FTPソフトでパーミッションを変更し、実行権限を与えます。750とか。
こここまでくるとあと少し。sshに戻って config.php にシンボリックリンクを張ります。

ln -s /home/ユーザー名/www/lists/config/config.php /home/ユーザー名/www/lists/admin/config.php


これで、cronで実行する内容が出来上がりました。あとはさくらインターネットのサーバーコントロールパネルからcronの設定をするだけです。
左側、「アプリケーションの設定」の一番下、「CRONの設定」とすすみ、「>> 新規項目の追加」をクリックします。
実行コマンドの中には、下記のように記述してください。ただ、正常に動作していることが確認できるまでは-pprocessqueueまでを記述し、「> /dev/null 2>&1」を消しておいたほうがいいです。これ、標準ログもエラーログもいらないよって意味なので、どう動いているのかさっぱりわかりません。正常に動いていることが確認できたら追記するほうがよいと思います。

/home/ユーザー名/local/bin/phplist -pprocessqueue > /dev/null 2>&1


続いて、実行日時の月、日、時、分には上から順に「*」、「*」、「*」、「*/15」と入れていきます。毎月、毎日、毎時、15分ごとにって意味です。曜日のチェックボックスはすべて空で大丈夫です。さくらインターネットのメール送信数の制限が15分で250通ですので、config.phpもそれを基準に設定しています。ここでも15分刻みで実行して、設定内容と整合させるようにします。最後に、コメント欄にわかりやすい名前を付けて、「送信」をクリックしてください。
これで、cronを使った送信設定の出来上がりです。

リモートキューを利用する

cronが使用できないサーバーや、cronの設定に不安な方のために、phpList.orgがリモートキューのサービスを行っています。この方法でもcronを使った送信と同じことができますので、一応ご紹介しておきます。ただし、うちで試した時には設定解除のためリンクが表示されず、phpListを最初から再設定することになりましたので、あまりおすすめできません。どうしてもという場合のみご利用ください。

  • API Keyの取得
    http://あなたのドメイン.com/lists/admin/?page=hostedprocessqueuesetup にアクセスします。アドレスバーに直接入力してください。
    画面が切り替わったら、Create account をクリックしてください。
    新しいウィンドウが現れますので、メールアドレスとパスワードを入力し、Create Accountをクリックします。
    画面が切り替わりますので、Continueをクリックします。
    また画面が切り替わりますので、 Generate new keyをクリックします。
    API Keyが作成されますので、それをコピーしてください。
  • API Keyの登録
    http://あなたのドメイン.com/lists/admin/?page=hostedprocessqueuesetup のウィンドウに戻ります。
    先ほどコピーしたAPI KeyをAPI key from phpList.comのボックスに貼り付けます。
    Continue setupをクリックします。

これで設定は完了です。しかしながら、phpListの運営がどうなるのか相手任せですので、使用するかどうかはご自身で充分ご検討いただいた上でご判断されることをおすすめします。

おわりに

phpListは非常に高機能なメール配信プログラムです。設定は面倒で、和訳も半分くらいしか進んでいませんが、利用する価値は充分にあると思います。ご自身で設定することに不安がある場合は、当社でも設定代行をいたしますので、ご利用ご検討ください。







Author Profile

midzuki
自習室マイタスの運営本部、ハシヅメアーキテック代表者。本業は建設業。自習室マイタスの内装デザインおよび施工はすべて本人が行っている。
何事も断らない性格から、とある学習塾の塾長を任されたり、講師を兼任したり、工事のついでにオフィス機器の導入や慣熟指導、研修会講師など、自分でお役に立てることならできうる限り対応してきた。オフィスの新築・改装の際にワンストップで事務所機能をすべて揃えられると喜んでいただいている。ちなみに塾講師としての専門分野は現国で、現国で満点を取らせる男。

【その他の特徴】
◆一級施工管理技士
◆二級建築士
◆ネットワークに繋がるデバイスならだいたいなんとかできる。
◆基本的に自前主義で自分できることなら何でも自分でやる。
◆とにかく機械が好きで、友人のリサイクル工場で一日楽しめる。
◆ご要望が多いので現国の短期集中セミナーやるかも。
◆趣味は料理とギターで、Facebookから自炊録の移行を計画中。
◆最近、頭髪のことを気にしている。
◆こちら側のどこからでも切れないタイプの人種。
◆極度の育メン