Ktai Entry マニュアル

はじめに

プラグイン配布サイト: http://wppluginsj.sourceforge.jp/ktai_entry/

※以前からのユーザーさんは、少なくとも「↓以前のバージョンからの更新方法」と「↓改版履歴」には目を通しておいてください。

概要

Ktai Entry は、携帯電話・PHS 等から WordPress に投稿できるメール投稿用プラグインです。いわゆる「モブログ」ができます。

環境に応じて、以下のいずれかの投稿スタイルが選べます。

  1. 外部メールボックスに随時アクセス:
    投稿専用メールボックスに定期的にアクセスして新着メールがあれば取り込み、投稿処理を行う (wp-shot と同じ仕組み)。
  2. メール着信時に投稿スクリプトを起動:
    メールサーバー上に投稿専用アドレスを作り、そこにメールが到着したら投稿スクリプトを起動させる (wp-mta と同じ仕組み)。

対応環境

設置方法

  1. wp-shot を使っていた場合は、プラグインを停止してください。wp-mta を使っていた場合は、当該ファイルを削除してください。
  2. プラグインをダウンロードして展開し、ktai_entry フォルダーごとサーバーに転送します。ただし、README.ja.html 等の html ファイル、lang フォルダー内の po ファイルは転送しなくて構いません (mo ファイルは必要です)。
  3. 投稿スタイルに応じてメールサーバーの設定をします。
    (外部メールボックスに随時アクセスの場合)
    投稿専用メールアドレスを設定します。
    1. 携帯用メールアドレスを準備・取得してください。できれば、他で使っているアドレスと兼用にするのは避けて、専用のメールアドレスにしてください。無料メールアドレスで構いません。
    2. 各種設定→投稿設定→「メールでの投稿」に、メールサーバー・ログイン名・パスワードを記入してください。
      ※ wp-shot で必要だった、wp-mail.php のリネームは不要です。プラグインを有効にすると wp-mail.php にアクセスしても 403 Forbidden になります。
    (メール着信時に投稿スクリプトを起動させる場合)
    投稿用の秘密のメールアドレスを作ります。
    1. メールアドレスとなる秘密の文字列を考えます。シェルで
      php -r 'echo md5(uniqid(rand(), true)) . "\n";'
      などとするといいいでしょう。
    2. メールサーバーにシェルログインし、.qmail-SECRET (qmail の場合)、もしくは .forward+SECRET (postfix の場合) というファイルを作ります (SECRET はさっき作った秘密の文字列)。これは qmail や postfix でサポートされている拡張メールアドレスの機能で、USER-secret@example.com または USER+secret@example.com というメールアドレスが有効になります。qmail の場合、秘密の文字列は英小文字と数字だけにしてください (大文字やドットは無効)。
    3. ファイルの中身は以下のようにします。(PHP のパスはサーバーに応じて調整してください)
       | /usr/bin/php /(WordPress へのパス)/wp-content/plugins/ktai_entry/inject.php
    ※要は、秘密のメールアドレスにメールが着信したら inject.php が起動されるようにします。自宅サーバーをお使いの方ならば、他の設定方法にもチャレンジしてみてください。
  4. 自分の WordPress サイトに管理者ログインして、新規にユーザーを作り、メールアドレスとして、携帯電話のメールアドレスを入力します。登録ユーザーのメールアドレスのみ投稿できるようチェックしているためです。メール送信してすぐ公開したい場合は、権限を「作成者/作者 (author)」以上としてください。「投稿者/寄稿者 (contributor)」の場合、「レビュー待ち (pending)」または「下書き (draft)」になり、編集者 (editor) 以上の権限を持つユーザーによる公開処理が必要となります。「購読者/協力者 (subscriber)」の場合は投稿できません。
  5. 使用しているテーマファイルのスタイルシート (style.css) を編集して、以下のスタイルを追加します。こうすると、写真の右側に文章が回り込むようになり、写真の周囲に白い余白とグレーの枠がついてかっこよくなります。スタイルの内容は好みに応じて適宜変更して構いません。
    /* ----- Style for Ktai Entry ----- */
    .photo {
    	padding-right:6px;
    	float:left;
    	line-height:110%;
    	font-size:0.85em;
    	text-indent:0;
    }
    .photo img {
    	background:white;
    	margin:0 4px 4px 0;
    	padding:3px;
    	border:1px solid #999;
    }
    .photo-end {
    	clear:left;
    }
    /* ---------- */
    wp-shot を使っていた場合、wp-shot/style.css の内容も、お使いの style.css に追記しておいてください (でないと、過去のメール投稿写真のスタイルが崩れます)。
  6. Ktai Entry プラグインを有効にします。
  7. サイト管理画面の各種設定→メール投稿でオプションを変更します。基本的にはそのままで問題ありません。※wp-shot で必要だった cron ジョブの設定、RFC1939 のチェックはなくなりました。

以上で完了です。

Gmail の場合の設定

無料メールアドレスとして Gmail を使う場合は、次のように設定してください。

  1. まず、Gmail アカウントを作成します。すでに持っている場合も、できれば別に作った方がよいです。
  2. Gmail 設定→メール転送と POP/IMAP 設定→POP ダウンロード、で「今後受信するメールで POP を有効にする」を選択します。
  3. 何かランダムな文字列を作ります。「メールでの投稿」で表示されるランダムな文字列から記号を抜いて大文字を小文字に変える (例: aBM9dDu*^w$R → abm9dduwr) とか、シェルで php -r 'echo md5(uniqid(rand(), true)) . "\n";' などとします。この文字列を Gmail アドレスのローカルパート (@ の前の部分) に + で連結して、投稿受付アドレスを作ります。
    Gmail アドレスが example@gmail.com で、ランダムな文字列が abm9dduwr とすると「example+abm9dduwr@gmail.com」が投稿受付アドレスとなります。Gmail から携帯電話にこのメールアドレスを本文に書いて送信しておくと便利です。
  4. Ktai Entry オプションの「投稿受付アドレス」に、このアドレスを記入します。これで、ランダム文字列を付けたアドレスのみが受付され、通常の Gmail アドレス (exmaple@gmail.com など) 宛のメールは拒否されます。
  5. 投稿設定→メールでの投稿、を以下のように設定します。Gmail は SSL 必須です。
    メールサーバー
    ssl://pop.gmail.com
    ポート
    995
    ログイン名
    (Gmail アドレス) 例: example@gmail.com
    パスワード
    (パスワード)

Yahoo! メールの場合の設定

無料メールアドレスとして Yahoo! メールを使う場合は、次のように設定してください。

  1. まず、Yahoo! メールアドレスを取得します。すでに持っている場合も、できれば別に作った方がよいです。
  2. メールオプション→POP アクセスとメール転送→(パスワード入力)、で「ブラウザアクセスと POP アクセス」を選択します。Yahoo! デリバーに登録していない場合は、Yahoo! デリバーにも登録してください。このとき、メール送信先は Yahoo! メールアドレス *以外* としてください。
  3. Ktai Entry オプションの「投稿受付アドレス」に、Yahoo! メールアドレスを記入します。
  4. 投稿設定→メールでの投稿、を以下のように設定します。パスワード保護のため SSL を推奨します。
    メールサーバー
    ssl://pop.mail.yahoo.co.jp
    ポート
    995
    ログイン名
    (アカウント名) 例: example
    パスワード
    (Yahoo! Japan ID のパスワード)

以前のバージョンからの更新方法

  1. まず、プラグインを無効にしてください。
  2. バージョン 0.7.1 以前を使っていた場合、ktai_entry ディレクトリー直下にある po ファイル、mo ファイルは削除してください。
  3. ktai_entry ディレクトリー直下のファイルを、新しいファイルで上書きしてください。
  4. プラグインを有効にし、「投稿設定」でメールサーバーの設定を再入力してください (プラグインを無効にすると初期値に戻るため)。

プラグインの撤去

プラグインの使用を中止して、撤去するには以下の手順で行なってください。

  1. プラグインを無効にします。これにより、設定値がデータベースから削除されます。
  2. FTP ツール等で、wp-content/plugins から ktai_entry ディレクトリーを丸ごと削除します。
  3. 念のため、「投稿設定」→「メールでの投稿」で、メールサーバーの設定がデフォルト値 (mail.example.com 等) に戻っていることを確認してください。戻っていなければ、すべて空白にしておいてください。

使用方法

携帯電話から、投稿専用メールアドレス (上記で準備したメールアドレス) に投稿するだけです。送信したメールを元に新規投稿を作成します。

タイトル
メールの題名 (Subject)、または本文中の <title>〜</title> で囲まれた内容。(後者が優先です)
投稿スラッグ
時分秒を繋げた6ケタの数字 (同じ数字が存在するときは -2, -3,... と追番がつきます)。SLUG: コマンド (後述) で変更できます。
投稿日時
メール投稿日時 (Date フィールドの日時)
投稿作成者
差出人 (From) アドレスに対応する登録ユーザー
公開ステータス
投稿作成者が「作成者/作者 (author)」以上の権限を持つ場合は「公開」です。「投稿者/寄稿者 (contributor)」の場合は、「レビュー待ち (pending)」(WordPress 2.3 以降) または 「下書き (draft)」(WordPress 2.2.3 以前) となります。「講読者/協力者 (subscriber)」の場合は、投稿できずエラーとなります。DRAFT, PENDING コマンド (後述) で変更できます。
カテゴリー
デフォルトは、管理パネル→各種設定→投稿設定の「メール投稿時のデフォルトカテゴリー」。CAT: コマンド (後述) で変更できます。
本文
本文が投稿本文になります。ただし、カテゴリー指定指示・キーワードタグ指示、画像回転指示などのコマンドおよび、「-- 」で始まる署名部分は削除されます。
写真つきメールの場合は、画像を切り出してファイルアップロード処理を行い、その画像を呼び出す a 要素および img 要素が埋め込まれます。

重複投稿を防ぐため、すでに存在する投稿日時と同じ Date フィールドを持つメールは読み込まれません。

カテゴリー指定

カテゴリー指定の方法

臨時的にカテゴリーを「メール投稿時のデフォルトカテゴリー」以外に変更したい場合は、メール本文のどこかに、以下のように書きます。

CAT:カテゴリーID
  または
CAT:カテゴリー名
  または
CAT:カテゴリースラッグ (WordPress 2.3 以降のみ対応)

例えば以下の書き方が可能です。

CAT: 3
CAT: 旅行の計画, 2006年07月 3-3-SUNフリーきっぷ
CAT: plans, 首都圏日帰り, 46

カテゴリー追加の方法

投稿時のカテゴリーを、「メール投稿時のデフォルトカテゴリー」の他に別途追加したい場合は、メール本文のどこかに、

CAT+カテゴリーID
  または
CAT+カテゴリー名
  または
CAT+カテゴリースラッグ (WordPress 2.3 以降のみ対応)
と書きます。「CAT+」の文字列は行頭に書くことが必要です。コンマで区切って複数のカテゴリーを追加することも可能です。

カテゴリー変更の方法

投稿時に「メール投稿時のデフォルトカテゴリー」を変更してしまうことが可能です。

CAT>カテゴリーID
  または
CAT>カテゴリー名
  または
CAT>カテゴリースラッグ (WordPress 2.3 以降のみ対応)
と書きます。「CAT>」の文字列は行頭に書くことが必要です。コンマで区切って複数のカテゴリーを記述できますが、変更対象となるのは最後の行にある最初のカテゴリーです。投稿には記載したすべてのカテゴリーが反映されます。

CAT+>カテゴリーID
  または
CAT+>カテゴリー名
  または
CAT+>カテゴリースラッグ (WordPress 2.3 以降のみ対応)
と書いた場合は、デフォルトカテゴリーの変更を行いますが、既存の「メール投稿時のデフォルトカテゴリー」も投稿に反映されます。つまり、既存のデフォルトカテゴリーと今回指定したカテゴリーの両方が指定されます。

キーワードタグ付与

WordPress 2.3 以降では、キーワードタグも付与できます。メール本文のどこかに、以下のように書きます。

TAG:タグスラッグ名

画像回転

携帯端末で撮影した写真を90度左右に回転させることが可能です。あらかじめ携帯端末で回転させてから投稿することを推奨しますが、時間がないときや、回転させると画像の左右が欠けてしまう端末では、この機能が便利です。コマンド文字列は投稿本文からは削除され、見えなくなります。このコマンドは複数行指定できません。最初の行のものだけ認識されます。

(画像が1枚だけのとき)
メール本文のどこかに、
ROT:L
  または
ROT:R
と書きます。前者は左回転。後者は右回転です。「ROT:」の文字列は行頭に書くことが必要です。画像が大きいときは、回転させてからサムネールを作成します。
(画像が2枚以上のとき)
ROT:L
  または
ROT:R
とすると、すべての画像を同じ方向に回転します。
ROT:NLR
などとすると、1枚目は回転せず(N)/2枚目を左回転(L)/3枚目を右回転(R)します。画像の枚数だけ、N,L,R の文字列を書きます。文字数が画像の枚数より足りない場合は、足りない分を "N" があるとみなします。
ROT:2L4L
などとすると、2枚目を左回転/4枚目を左回転します。何枚目かを示す数字と回転方向を示す L,R の文字列を繰り返します。空白やコンマで区切ってはいけません。NLR 式の指定と 2L4L 式の指定は混在できません。混在させてしまったときは回転指示が無効になってしまいます。

投稿スラッグ設定

デフォルトで投稿スラッグは、投稿時刻を元にした6ケタの数字 (時分秒を繋いだもの) になりますが、任意の英数字を指定できます。メール本文のどこかに

SLUG: (投稿スラッグ)
と書きます。「SLUG:」は行頭にある必要があります。英数字、ハイフン(-)、アンダースコア(_)が使えます。使えない文字を含めてしまっても、自動的に除去されます。

投稿ステータス設定

作成者 (author) 以上の権限を持つユーザーが投稿する場合、通常はすぐ公開されますが、以下のコマンドを入れると下書き (draft) またはレビュー待ち (pending; WordPress 2.3 以降のみ使用可能) の状態を設定できます。投稿者 (contributor) 以下のユーザーは、これらのコマンドを使っても無効です。コマンド文字列は投稿本文からは削除され、見えなくなります (寄稿者以下のユーザーが使っても削除されます)。

写真だけアップロードする/とりあえず投稿しておいて、あとで Ktai Style でじっくり編集する、などに使えます。

下書きにする
メール本文のどこかに
DRAFT
と書きます。1行の中に「DRAFT」以外の文字列を書いてはいけません。DRAFT は行頭にある必要があります。
レビュー待ちにする
メール本文のどこかに
PENDING
と書きます。1行の中に「PENDING」以外の文字列を書いてはいけません。PENDING は行頭にある必要があります。WordPress 2.2 以前では「レビュー待ち」機能がないため、下書きの指定になります。
未公開にする
メール本文のどこかに
PRIVATE
と書きます。1行の中に「PRIVATE」以外の文字列を書いてはいけません。PRIVATE は行頭にある必要があります。

制限事項

高度な設定・機能

post.php を編集することにより、以下の設定が変更可能です。

独自フィルターフック

Ktai Entry は以下の独自フィルターフックを備えています。差出人アドレス確認の結果、画像リンクの XHTML 記述や、投稿本文の記述を自分好みに変更することができます。

my-hacks.php などにフィルター関数を記述し、同時に add_filter('image_link/ktai_style.php', '(フィルター関数名)', 10, 3); などと書けば、フィルターフックが有効になります。

retrieve_interval/ktai_entry.php
引数: $interval
外部メールボックスを読み出す間隔 (分単位) をフィルターします。0 にすると読み出ししません。
validate_address/ktai_entry.php
引数: $user_id, $address
差出人メールアドレスから、ウェブログ登録ユーザー ID を割り出した結果をフィルターします。登録ユーザー以外に別途許可したいアドレスがある場合や、投稿作成者は管理者に固定したい場合などに使います。
post_status/ktai_entry.php
引数: $status, $can_pending, $user_id, $address
投稿者が利用可能な投稿ステータスをフィルターします。$status は、publish (公開), pending (レビュー待ち), draft (下書き), NULL値 (投稿不可) のいずれかで、投稿者の権限によって決められます。返り値は、この4つに加えて private (非公開) も使えます。$can_pending は WordPress 2.3 以降ならば TRUE で、「レビュー待ち (pending)」が使えることを示します。 $user_id, $address はそれぞれ投稿者のユーザー ID およびメールの差出人アドレスです。このフィルターを使うと、「講読者にはメール投稿は許可する」「この編集者ではメール投稿を不許可」などの設定ができます。
引数: $html, $id, $size
各画像を表示する XHTML をフィルターします。$htmlget_the_attachment_link() (WordPress 2.3 以前) または wp_get_attachment_link() (WordPress 2.5 以降) の結果です。$id は画像の post ID、$size は挿入する画像サイズで、サムネールを意味する FALSE (WordPress 2.3 以前) または medium, thumbnail のいずれか (WordPress 2.5 以降) です。
media_to_html/ktai_entry.php
引数: $html, $content, $img
画像を挿入した投稿本文をフィルターします。$html は投稿本文、$content は画像挿入前のテキスト、$img は画像ごとの XHTML が入った配列です。

ログ機構

投稿がうまく処理されないときの問題点の洗い出し、不正アクセスの検出などのために、メール投稿処理のログを取ることができます。ktai_entry.php の 27 行目にある //define('KE_LOGFILE', 'logs/error.log'); のコメントを外します。すると、ktai_entry ディレクトリー配下の log ディレクトリーに error.log が作られます。念のため、手動で log ディレクトリーおよび error.log ファイルを作成して、chmod 777 および chmod 666 しておいた方が確実です。

外部メールボックスに随時アクセスの場合、メールチェックの度にログされますので、5分間隔の場合、1日で16000行以上記録されるかもしれません。

古いログの圧縮や削除は行ないませんので、logrotate(8) の対象にするか、手動で圧縮や削除を行なってください。そのまま放置すると、巨大なテキストファイルになり、問題が発生することがあります。

ktai_entry.php の 28 行目 //define('KE_DEBUG', TRUE); のコメントを外すとデバッグモードになり、さらに詳細な動作ログを取ることができます。管理パネルのメール投稿から、外部メールボックスの手動確認リンクをクリックした場合は、詳細な動作ログを画面でも確認できます。

ログメッセージは原則的に英語です。文字化けして読めない場合を避けるためです。簡単な英語ですので、がんばって読んでみてください。

他のメール投稿ツールとの相違点

他の WordPress 用メール投稿ツールとの機能・実装の違いは以下の通りです。

動作比較表
Ktai Entry wp-mta wp-shot MobG1.0 MobG 0.6 wp-mb_mail wpmobExpress
メール送信後に投稿処理が不要 ●※1●※1△※2-※3●※1
管理パネルで設定可
絵文字投稿 ●※4
許可アドレスの指定
(U: 登録ユーザー/F: 設定ファイル)
U※5UUU, FU, FUF
不許可アドレスからのメール 残す/返送返送残す削除削除削除残す
APOP 対応 (対象外)△※6
SSL 対応 (対象外)
複数カテゴリーの指定
キーワードタグの付与
公開ステータスの指定
投稿時刻の指定
投稿スラッグの任意指定
画像はメディアライブラリに登録
画像は uploads ディレクトリーに保存
画像の回転
出力テンプレートに対応 △※7△※8△※8△※8
※1: POP3 アクセスは、誰かがサイト閲覧したのをトリガーに行う。
※2: サーバーで cron 設定が必要。
※3: 別配布の STDIN 版では対応。
※4: au, ウィルコム, ドコモのみ対応。
※5: my-hacks.php でフィルター関数を書けば、登録ユーザー以外のアドレス追加が可能。
※6: ソースコードの微修正が必要。
※7: テンプレートは1種類のみで、管理パネルで編集可能。
※8: 設定ファイルまたはスクリプト自体の編集で、出力フォーマットの各パーツを変更できる。

今後の予定

改版履歴

ver 0.8.2 (2008-05-xx)
ver 0.8.1 (2008-05-10)
ver 0.8.0 (2008-05-05)
ver 0.7.1 (2008-04-29)
ver 0.7.0 (2008-04-23)

以上