Ktai Entry マニュアル
[ はじめに | よくある質問と答え ]
はじめに
プラグイン配布サイト: http://wppluginsj.sourceforge.jp/ktai_entry/
概要
Ktai Entry は、携帯電話・PHS 等から WordPress に投稿できるメール投稿用プラグインです。いわゆる「モブログ」ができます。
- 投稿の反映にはウェブブラウザーが不要なので、メール送信ができればキャリアおよび機種を問いません。
- 投稿時にカテゴリー指定が可能です (複数カテゴリーに対応)。
- 投稿時にキーワードタグの付与が可能です。
- 画像を添付したメールに対応しています。画像を回転したり、大きい画像をサムネール化することが可能です。
- 画像は WordPress のファイルアップロード/メディアライブラリに格納されます。
環境に応じて、以下のいずれかの投稿スタイルが選べます。
- 外部メールボックスに随時アクセス:
投稿専用メールボックスに定期的にアクセスして新着メールがあれば取り込み、投稿処理を行う (wp-shot と同じ仕組み)。
- メール着信時に投稿スクリプトを起動:
メールサーバー上に投稿専用アドレスを作り、そこにメールが到着したら投稿スクリプトを起動させる (wp-mta と同じ仕組み)。
対応環境
- WordPress 2.0 以降。動作確認は、WordPress ME 2.0.11-2, ME 2.2.3, 日本語版 2.3.3, 日本語版 2.5 のみ行なっています。それ以外のバージョン (2.0.10 以前、2.1 系統など) は自己責任でご利用ください。
- キーワードタグの付与は WordPress 2.3 以降のみ対応です。
- PHP 5.0 以降。***** PHP4 では動きません!! *****
ただし、動作確認は PHP5.2.x で行なっていますので、それ以前のバージョンによって動かないかもしれません。PHP 5.0.x, 5.1.x をご利用の場合は、自己責任にてご利用をお願いします。
- (メール着信時に投稿スクリプトを起動する方式を使う場合)
- qmail または Postfix を利用したメールサーバー。ただし Postfix では動作確認を行なってないので動かないかもしれません。
- .qmail/.forward/.procmailrc などを自分で好きに作成して編集できる必要があります。
- .qmail/.forward/.procmailrc から WordPress のプラグインディレクトリーにある投稿スクリプト (ktai_entry/inject.php) が呼び出せることが必須です。メールサーバーとウェブサーバーが同一であれば大丈夫でしょう。違う場合は相当困難です。
設置方法
- wp-shot を使っていた場合は、プラグインを停止してください。wp-mta を使っていた場合は、当該ファイルを削除してください。
- プラグインをダウンロードして展開し、ktai_entry フォルダーごとサーバーに転送します。ただし、README-ja.txt (本ファイル)、ktai_entry-ja.po 等の拡張子が po のファイル (言語リソースのソースファイル) は転送しなくて構いません。
- 投稿スタイルに応じてメールサーバーの設定をします。
- (外部メールボックスに随時アクセスの場合)
- 投稿専用メールアドレスを設定します。
- 携帯用メールアドレスを準備・取得してください。できれば、他で使っているアドレスと兼用にするのは避けて、専用のメールアドレスにしてください。無料メールアドレスで構いません。
- 各種設定→投稿設定→「メールでの投稿」に、メールサーバー・ログイン名・パスワードを記入してください。
※ wp-shot で必要だった、wp-mail.php のリネームは不要です。wp-mail.php にアクセスしても 403 Forbidden になります。
- (メール着信時に投稿スクリプトを起動させる場合)
- 投稿用の秘密のメールアドレスを作ります。
- メールアドレスとなる秘密の文字列を考えます。シェルで
php -r 'echo md5(uniqid(rand(), true)) . "\n";'
などとするといいいでしょう。
- メールサーバーにシェルログインし、.qmail-SECRET (qmail の場合)、もしくは .forward+SECRET (postfix の場合) というファイルを作ります (SECRET はさっき作った秘密の文字列)。これは qmail や postfix でサポートされている拡張メールアドレスの機能で、USER-secret@example.com または USER+secret@example.com というメールアドレスが有効になります。qmail の場合、秘密の文字列は英小文字と数字だけにしてください (大文字やドットは無効)。
- ファイルの中身は以下のようにします。(PHP のパスはサーバーに応じて調整してください)
| /usr/bin/php /(WordPress へのパス)/wp-content/plugins/ktai_entry/inject.php
- ※要は、秘密のメールアドレスにメールが着信したら inject.php が起動されるようにします。自宅サーバーをお使いの方ならば、他の設定方法にもチャレンジしてみてください。
- 自分の WordPress サイトに管理者ログインして、新規にユーザーを作り、メールアドレスとして、携帯電話のメールアドレスを入力します。登録ユーザーのメールアドレスのみ投稿できるようチェックしているためです。メール送信してすぐ公開したい場合は、権限を「作成者 (author)」以上としてください。それ以下の権限の場合、「レビュー待ち (pending)」または「下書き (draft)」になり、編集者 (editor) 以上の権限を持つユーザーによる公開処理が必要となります。
- 使用しているテーマファイルのスタイルシート (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 に追記しておいてください (でないと、過去のメール投稿写真のスタイルが崩れます)。
- Ktai Entry プラグインを有効にします。
- サイト管理画面の各種設定→メール投稿でオプションを変更します。基本的にはそのままで問題ありません。
- 投稿用メールアドレス: 3. で設定した投稿用メールアドレスを記載します。宛先 (To, Cc) にこのアドレスが含まれていない場合、投稿は受け付けられません。このフィールドが空の場合はアドレスチェックを行ないません。
- APOP: メールサーバーが APOP 対応のときはチェックボックスに印をします。
- POP3 読み込み間隔: 外部メールボックスを確認する間隔を設定します。サーバー負荷がかかるため、最短でも5分程度としてください。「なし」にすると、自動的に確認しないため、retrieve.php を手動でアクセスしない限り投稿処理は行なわれません。メール着信すると投稿スクリプトを起動させる方式の場合は「なし」にしてください。
- 投稿に挿入する画像サイズ (WordPress 2.5 以降): 投稿に挿入する画像サイズを「サムネイル」または「中サイズ」から選べます。なお、画像のサイズは「その他設定」で変更してください。
- サムネイルの最大サイズ (WordPress 2.3.3 以前): 画像の縦横どちらかがこのサイズより大きい場合は、長辺側がこのサイズになるよう縮小されます。
- ※wp-shot で必要だった cron ジョブの設定、RFC1939 のチェックは不要です。
以上で完了です。
プラグインの撤去
プラグインの使用を中止して、撤去するには以下の手順で行なってください。
- プラグインを無効にします。これにより、設定値がデータベースから削除されます。
- FTP ツール等で、wp-content/plugins から ktai_entry ディレクトリーを丸ごと削除します。
- 念のため、「投稿設定」→「メールでの投稿」で、メールサーバーの設定がデフォルト値 (mail.example.com 等) に戻っていることを確認してください。戻っていなければ、すべて空白にしておいてください。
使用方法
携帯電話から、投稿専用メールアドレス (上記で準備したメールアドレス) に投稿するだけです。送信したメールを元に新規投稿を作成します。
- 投稿タイトル
- メールの題名 (Subject)
- 投稿日時
- Date フィールド
- 投稿作成者
- 差出人 (From) アドレスに対応する登録ユーザー
- 公開ステータス
- 投稿作成者が「作成者 (author)」以上の権限を持つ場合は「公開」です。「投稿者 (contributor)」以下の場合は、「レビュー待ち (pending)」(WordPress 2.3 以降) または 「下書き (draft)」(WordPress 2.2.3 以前) となります。
- 投稿スラッグ
- 時分秒を繋げた6ケタの数字 (同じ数字が存在するときは -2, -3,... と追番がつきます)
- カテゴリー
- デフォルトは、管理パネル→各種設定→投稿設定の「メール投稿時のデフォルトカテゴリー」。CAT: コマンド (後述) で変更可能です。
- 投稿本文
- 本文が投稿本文になります。ただし、カテゴリー指定指示・キーワードタグ指示、画像回転指示などのコマンドおよび、「
--
」で始まる署名部分は削除されます。
写真つきメールの場合は、画像を切り出してファイルアップロード処理を行い、その画像を呼び出す a 要素および img 要素が埋め込まれます。
重複投稿を防ぐため、すでに存在する投稿日時と同じ Date フィールドを持つメールは読み込まれません。
カテゴリー指定
カテゴリー指定の方法
臨時的にカテゴリーを「メール投稿時のデフォルトカテゴリー」以外に変更したい場合は、メール本文のどこかに、
CAT:カテゴリーID
または
CAT:カテゴリー名
と書きます。「CAT:」の文字列は行頭に書くことが必要です。複数のカテゴリーをコンマで区切って指定することも可能です。コロンやコンマの前後にスペースが入ってもかまいません。
カテゴリーの指定は、ID もしくは名前のどちらでも OK ですが、カテゴリースラッグ (URI に使われる文字列) は無効ですので、注意してください。例えば、
CAT:3
または
CAT: 旅行の計画
は OK ですが、
CAT: plans
は無効ということです。
カテゴリー追加の方法
投稿時のカテゴリーを、「メール投稿時のデフォルトカテゴリー」の他に別途追加したい場合は、メール本文のどこかに、
CAT+カテゴリーID
または
CAT+カテゴリー名
と書きます。「CAT+」の文字列は行頭に書くことが必要です。コンマで区切って複数のカテゴリーを追加することも可能です。
カテゴリー変更の方法
投稿時に「メール投稿時のデフォルトカテゴリー」を変更してしまうことが可能です。
CAT>カテゴリーID
または
CAT>カテゴリー名
と書きます。「CAT>」の文字列は行頭に書くことが必要です。コンマで区切って複数のカテゴリーを記述可能ですが、変更対象となるのは最初のカテゴリーとなります (投稿には記載したすべてのカテゴリーが反映されます)。
CAT+>カテゴリーID
または
CAT+>カテゴリー名
と書いた場合は、デフォルトカテゴリーの変更を行いますが、既存の「メール投稿時のデフォルトカテゴリー」も投稿に反映されます。つまり、既存のデフォルトカテゴリーと今回指定したカテゴリーの両方が指定されます。
キーワードタグを付与するには、メール本文のどこかに、
TAG:タグスラッグ名
と書きます。「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 式の指定は混在できません。混在させてしまったときは回転指示が無効になってしまいます。
制限事項
- 投稿受付メールアドレスは他人に知られないようにしてください。知られた場合、悪意ある他人にメール投稿されてしまいます。一応、From アドレスが WordPress に登録されたユーザーのものかどうかチェックを行なっていますが、悪意を持った人であれば簡単に From アドレスを詐称できるため、万全ではありません。
- 投稿を受け付けるメールアドレスは、原則としてウェブログの登録ユーザーのメールアドレスのみです。携帯電話から投稿する場合は、別途ユーザーを作って、携帯電話メールアドレスを登録してください。ただし、validate_address フック (後述) を利用して、許可メールアドレスを別途定義することも可能です。
- 画像回転させたとき、EXIF 情報は消えてしまいます。GPS 情報を埋め込ませて Ktai Location プラグイン等で利用するときはご注意ください。画像回転させつつ位置情報を保持させたい場合、写真の添付時には本文にも位置情報 URL を添付させるようにしてください。
- (外部メールボックスに随時アクセスする方式に関する注意)
- 実際に、外部メールボックスを確認するタイミングは、「誰かがサイトを閲覧したとき」です。このため、誰もサイトにアクセスしない場合は、たとえ確認間隔を「5分」に設定しても、1時間以上メールが読み込まれないことがあり得ます。
- ウェブログに Basic 認証や Digest 認証を付与している場合、外部メールボックスの自動取得は動作しません。管理パネルの「メール投稿」に表示される手動確認リンクを随時クリックするか、cron で定期的にメールボックス読み込みを行わせてください。
- 手動でメールボックス確認させる URL <http://(WordPressのアドレス)/wp-content/plugins/ktai_entry/retrieve.php> をウェブ経由でアクセスするには _wpnonce 引数が必須です。また、この引数は12時間ごとに変わります。しかし、コマンドラインから retrieve.php を起動させる場合、 _wpnonce は不要です。
- (メール着信時に投稿スクリプトを起動する方式に関する注意)
- レンタルサーバーではまず動作しないと考えてください。メールサーバーとウェブサーバーが別マシンだったり、シェルアカウントがなかったり、.qmail/.forward/.procmail の編集ができなかったり、任意のメールアドレスを追加できなかったり、関門が多いためです。自宅サーバーの場合は、うまく設置できることが多いでしょう。がんばってください。
- 設置直後は、メールのエラーによるメールループを発生させやすいので、テスト投稿のあとはメールログをよく確認してください。特に、投稿がうまく反映されないときは、再度試す前にログをチェックしてください。qmail の場合、PHP のエラーが発生したとき fatal エラーではなく deferral になるため、延々と投稿処理が繰り返されることがあるので、特に注意してください。
高度な設定・機能
post.php を編集することにより、メール投稿時を変更可能です。
- 画像群の前後につける HTML 文字列 (KE_IMAGES_HEADER, KE_IMAGES_FOOTER)
- テキストの前後につける HTML 文字列 (KE_TEXT_HEADER, KE_TEXT_FOOTER)
- カテゴリー設定指示文字列 (KE_SET_CATEGORY)
- カテゴリー追加指示文字列 (KE_ADD_CATEGORY)
- カテゴリー変更指示文字列 (KE_CHANGE_CATEGORY)
- カテゴリー追加・変更指示文字列 (KE_ADD_CHANGE_CATEGORY)
- キーワードタグ指示文字列 (KE_SET_TAGS)
- 画像回転指示文字列 (KE_ROTATE_IMAGE)
- これ以後を署名として削除する文字列 (KE_DELIM_STR)
- メール投稿時に使える XHTML タグ ($allowedposttags, $allowedtags)
独自フィルターフック
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 を割り出した結果をフィルターします。登録ユーザー以外に別途許可したいアドレスがある場合や、投稿作成者は管理者に固定したい場合などに使います。
- image_link/ktai_entry.php
- 引数:
$html, $id, $size
各画像を表示する XHTML をフィルターします。$html
は get_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 以降) です。
- images_to_link/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.4 |
wp-mb_mail |
wpmobExpress |
許可アドレスの指定 (U: 登録ユーザー/F: 設定ファイル) |
U | U | U | U, F | U, F | U | F |
不許可アドレスからのメール |
残す/返送 | 返送 | 残す | 削除 | 削除 | 削除 | 残す |
メール送信後に投稿処理が不要 |
● ※1 | ● | ● ※1 | △ ※2 | - | - ※3 | ● ※4 |
APOP 対応 |
● | (対象外) | △ ※5 | ● | - | ● | ● |
SSL 対応 |
- | (対象外) | - | ● | - | - | - |
管理パネルでの設定 (設定ファイル編集が不要) |
● | - | ● | - | - | - | - |
画像はメディアライブラリに登録 |
● | - | - | ● | ● | ● | - |
画像は uploads ディレクトリーに保存 |
● | - | - | ● | - | ● | - |
画像の回転 |
● | ● | - | - | - | - | - |
複数カテゴリーの指定 |
● | ● | - | ● | ● | - | ● |
キーワードタグの付与 |
● | - | - | ● | - | - | - |
出力テンプレートに対応 |
- | - | - | ● | - | - | ● |
※1: POP3 読み込みは画面出力と非同期で行なわれるため、サイト表示が待たされることはない。そのかわり、メール投稿がすぐ反映されないことがある。
※2: サーバーで cron 設定が必要。
※3:
別配布の STDIN 版では対応。
※4: POP3 読み込み完了まで画面出力が行なわれない。
※5: ソースコードの微修正が必要。
今後の予定
- au 端末のメール投稿で、絵文字を認識する。
- SSL-POP に対応する。(Gmail 対応)
- 各社のデコレーションメールに対応する。
- 動画の投稿に対応する。
改版履歴
- ver 0.7.1 (2008-04-29)
- ログ機構を追加しました。
- 次の独自フィルターフックを追加しました:
retrieve_interval, validate_address, image_link, images_to_link
- コマンドライン版 PHP から retrieve.php を起動したときは _wpnonce 引数を不要としました。このため、cron で定期的にメールボックスのアクセスを指示することが可能です。
- プラグインを停止すると、POP3 サーバーの設定を削除するようにしました。Ktai Entry が有効時は wp-mail.php の実行を抑制しますが、Ktai Entry を停止すると実行されてしまうため、安全策として設定を削除します。
- サーバー環境によって、カテゴリー指定コマンド、画像回転コマンドが効かない問題を修正しました。
- ver 0.7.0 (2008-04-23)
- 新規リリース。wp-mta をベースに、wp-shot ライクな投稿方式も使えるようにしました。
- キーワードタグの付与に対応しました。
- メールに添付した画像は、WordPress のファイルアップロード/メディアブラウザに表示されるようになりました。
以上