Home > Tags > wp-mta

wp-mta

wp-mta導入 メールで投稿可能に (Postfix+procmail使用)

配布元:WordPress Plugins/JSeries » wp-mta
せっかく自宅サーバだし、MTAも自由に触れる環境にあるのでwp-mtaの導入をしてみることに。
このスクリプトはメールサーバにメールが着信したタイミングで実行されるため、WordPressの標準機能にあるメールでの投稿に比べるとメール送信から反映されるタイムラグが無くて良い。

設置方法は、ほぼ配布元にある手順どおり。
違う部分は.forwardを使う部分をprocmailに変えたくらい。あとはスクリプトがウチの環境だと上手く動かなかったところを簡単に手直しさせてもらいました。

procmailを使っている理由は、Postfixでのメール配信にvirtualを使っていて.forwardが使えなかったため。メール受信時にこのスクリプトがキックできれば方法は何でも良いはず。(実際うまくいきました)

1.まず設定書き換え (デフォルトのままで使いました)

2.PEAR::Mail::mimeDecode.php インストール
とりあえず入っているか確認。

# pear list
Installed packages, channel pear.php.net:
=========================================
Package Version State
Archive_Tar 1.3.2 stable
Console_Getopt 1.2.3 stable
PEAR 1.6.1 stable
Structures_Graph 1.0.2 stable

で、入っていないっぽいので、pear install コマンドでサクッと。

# pear install Mail_mimeDecode
downloading Mail_mimeDecode-1.5.0.tgz ...
Starting to download Mail_mimeDecode-1.5.0.tgz (9,281 bytes)
.....done: 9,281 bytes
downloading Mail_Mime-1.5.2.tgz ...
Starting to download Mail_Mime-1.5.2.tgz (22,176 bytes)
...done: 22,176 bytes
install ok: channel://pear.php.net/Mail_mimeDecode-1.5.0
install ok: channel://pear.php.net/Mail_Mime-1.5.2

3. ~/.procmailrc レシピ追加

:0
* ^To: hogehoge@example.com ←受信用のメールアドレスに変更
|/usr/bin/php [wordpress-root]/wp-mta.php

4.wp-mta.php コメントアウト (12-15行目)

PHP:
  1. #if (! defined('WPMTA_DEBUG') && ! isset($_SERVER['RECIPIENT'])) {
  2. #       echo "Oops! Not launched from dot-qmail/dot-forward file!n";
  3. #       exit;
  4. #}

5.wp-mta.php function yn_photo_sub_dir修正 (415行目付近・ちょっとずれてるかも…)
なぜか mkdirでの再帰作成時のパーミッションがYYYYは700で、MMは755で作成され、画像表示が出来ないためMMのみでなく、YYYYも強制的にchmodするようにした。
mkdirをrecursiveで実行した際にそうなるっぽいのだが、原因不明。切り分けはきちんと出来ていないが、まあ、自分が使うだけのスクリプトなのでよしとする。
使用中のPHPバージョンは PHP 5.2.0-8+etch7 (cli) (built: Jul 2 2007 21:46:15)、ウチだけかなぁ。

PHP:
  1. function yn_photo_sub_dir($post_time_local) {
  2. $dir = WPMTA_PHOTO_DIR . gmdate('Y/m', $post_time_local);
  3. <strong> $dir2 = WPMTA_PHOTO_DIR . gmdate('Y', $post_time_local);</strong>     //これ追加
  4. if (! is_dir(ABSPATH . $dir)) {
  5. if (! mkdir(ABSPATH . $dir, 0755, TRUE)) {
  6. echo "Error: Can't create thumbnail folder.n";
  7. return WPMTA_PHOTO_DIR;
  8. }
  9. <strong> chmod(ABSPATH . $dir2, 0755);</strong>     //これ追加
  10. chmod(ABSPATH . $dir, 0755);
  11. }
  12. return $dir . "/";
  13. }

6.wp-mta.php 一部変更 冒頭
dot-qmailからの呼び出しかどうかをチェックしている部分があるが、その代わり。上記でコメントアウトした部分の下に。
コマンドライン引数が空だったら、CLIで実行されていないものとしてサイトのトップページにリダイレクト。
放っておいても実害は無いが、ちょっと気持ち悪いので。
ただし、結果的に多分動いているからOKレベルなので、この実装で本当に正しいかは謎。

PHP:
  1. // ----- Check if launched from CLI -----
  2. if (! defined('WPMTA_DEBUG') &amp;&amp; ! $argc&gt; 0) {
  3. $host  = $_SERVER['HTTP_HOST'];
  4. $uri   = rtrim(dirname($_SERVER['PHP_SELF']), '/\');
  5. header("Location: http://$host$uri/");
  6. }

これで、wp-contensの下にphotosディレクトリを作成して、メール受信ユーザのIDにchownしておけば動作する。
便利なスクリプトを公開して下さったyuriko氏に感謝!

2007-08-02追記
function yn_images2htmlの一部修正。
WordPressを/(ルート)にインストールしてるのですが、その場合、画像へのリンクのURLに/が1つ多く付いてしまうので。

PHP:
  1. $short_url = preg_replace('#^https?://[^/]*/?#', '/', get_bloginfo('wpurl')) . '/';
  2. $short_url = preg_replace('#^https?://[^/]*/?#', '/', get_bloginfo('wpurl'));

相変わらず結果オーライの場当たり的対応です。。。

Popularity: 37% [?]

Home > Tags > wp-mta

アーカイブ
タグ
カテゴリー
Contact
kuniharumaki at gmail dot com
blog Services
あわせて読みたい

kuniharumakiさんの読書メーター



フィードメーター - kuniharumaki blog
Web Services by Yahoo! JAPAN
人気 blog Ranking

ブログランキング・にほんブログ村へ

全文配信同盟

メタ情報
BlogTimes

Blogtimes image

Return to page top