OpenPNEをレンタルサーバで構築する際、
ネックになるのはやはり携帯用メール設定だと思います。
レンサバだとsendmailやqmail等のメールサーバソフトを
細かく触れないのでCatchAllができず、
空メール送信からの新規登録・日記メール投稿等をあきらめた方も多いことだと思います。

Gmailの機能のメールアドレスローカル部に「+」を付与すれば、
なんちゃってCatchAllが実現できるっていう話、
冗談みたいに強力なGmail裏技の話だと思うのですが、
それでもauでは仕様で「+」が「 」になるので送信エラるので、
au端末は諦めざるをえないです。
そもそもせっかく独自ドメインで運用しても
投稿用のメールドメインが@gmail.comはナンだとは思いませんか。

したがってですね。
標題の件は「Google Appsと連携」で一択となります。
レンサバにさくらインターネットを選べば、もうちょっとスマートだったのだろうか。

なんせ実際、動かしてみたので、その時のメモです。

【用意するもの】


・手嶋屋のOpenPNE-2.14.8

・UsagiProject嘉月さんのPOP3MailClass_for_OpenPNE

・hetemlのサーバ(スタンダードプラン)
  Apache 2.2 PHP:5.3.1 MySQL:5.1

・ムームードメインのドメイン(DNS登録済み)
  仮にexample.comとしましょう。

・Google Apps申請用メールアドレス
  gmail.comとexample.com以外のドメインならなんでも良い。
  yahooとかhotmailが良い。と思う。
  仮にtarou@yahoo.co.jpとしましょう。
 
・プログラムから接続ができるPOP(110番ポート)メールアドレスとメールサーバ情報
  gmailはSSL995番なので無理←hetemlプログラムからは繋げない。
  example.com以外のドメインでPOP受信ができればなんでも良い。
  yahooメールとかで全然良いが、ここではexample.com以外に
  もう一つexample.netという独自ドメインが使えたとして、仮に、
   受信メールサーバー:mail**..heteml.jp
   受信メールユーザー:forward@example.net
   受信メールパスワード:forwardpass
  としましょう。



【手順】


①OpenPNE-2.14.8\setup\OpenPNE_Setup.htmlどおりにOpenPNE2を設置

  // config.phpの編集
  define('OPENPNE_URL', 'http://www.example.com/');
  $GLOBALS['_OPENPNE_DSN_LIST']['main'] = array(
        'dsn' => array(
        'phptype' => 'mysql',
        'username' => '_openpne_dbuser',
        'password' => 'openpnedbpass',
        'hostspec' => 'mysql**.heteml.jp',
        'database' => '_openpne_dbname',
        'new_link' => false,
        ),
  );
  define('MAIL_SERVER_DOMAIN', 'example.com');

  MySQL5にはdate型系のデフォルト値が入らないっぽいので、
  OpenPNE-2.14.8\setup\sql\mysql41\install\install-2.14-create_tables.sqlの
   「default '00:00:00'」
   「default '0000-00-00 00:00:00'」
  とかは容赦なく消す。こんなもん入れば何でもいいんだよ。動けばいいんだよ。




②POP3MailClass_for_OpenPNE\readme.txtどおりにPOP3MailClass_for_OpenPNEを設置
  webapp/lib/ktaiIP.phpは古いと思うから上書きしない。

  // config.phpへ追加
  define('USE_POP_MAIL', true);
  define('POP_SERVER_DOMAIN', 'mail**..heteml.jp');
  define('POP_SERVER_USER', 'forward@example.net');
  define('POP_SERVER_PASS', 'forwardpass');




③Google Appsを使ってexample.comでCatchAllメールの実装
  ・ヘテムルのコントロールパネルで独自ドメインexample.comを設定
  ・ムームードメインのコントロールパネルにログイン
  ・左メニュー「ムームーDNSセットアップ」
  ・対象ドメインexample.comの処理項目「利用する」
  ・ヘテムルのコントロールパネルにログイン
  ・右メニュー「ドメイン・メール設定」
  ・対象ドメインexample.com「データを移行する」
  ・Google Apps に「example.com」で申し込む。
  ・「tarou@yahoo.co.jp」というユーザ情報で登録。
  ・「catch@example.com」ユーザ作成
  ・サービスを有効に
  ・「MXサーバーアドレス」 と 「優先順位」を控える。
  ・ムームードメインのコントロールパネルにログイン
  ・左メニュー「ムームーDNSセットアップ」
  ・「カスタム設定」で「ホームページ」は「heteml」、「メール」は「利用しない」
  ・MXレコードを入力。メールサーバの最後の「.」を消せば登録できるかな。
  ・左メニュー「ネームサーバ設定変更」
  ・「 ムームードメインのネームサーバ(ムームーDNS)を使用する 」 にチェック
  ・「ネームサーバ設定変更」
  ・Google Appsのコントロールパネルにログインする
  ・「 Mail Exchange (MX) レコードの変更 」ページで「指定された手順を完了しました」
  ・48時間、待つ。べきだが、実際には2時間くらいでMXレコードが変わる兆しがなければ、
   どっかミスってる。と疑うべき。
  ・http://seo.atompro.net/webtoolfree_mxrchk_.htmlで「example.com」を調べる。
  ・MXレコードがGoogle Appsのものなら成功。
  ・Google Appsのコントロールパネルにログインする
  ・[サービスの設定] > [メール] を選択
  ・[キャッチオール アドレス] セクションの
    [次の宛先にメールを転送:]で「catch@example.com」を入力
  ・「catch@example.com」の「受信トレイ」の「設定」の「メール転送と POP/IMAP」
  ・「転送先アドレス追加」で「forward@example.net」
  ・転送先アドレスとして認証させる
  ・「メール転送と POP/IMAP」で
   「受信メールをforward@example.netに転送して」「変更を保存」
  ・シャレで「宛先:aaa@example.com」とかでメールを送ってみる。
  ・「catch@example.com」の受信トレイにそのメールが受け取れてたら成功。




④http://www.example.com/
 フロントエンドでユーザーとしていろいろ試す。
 空メール送信からの新規登録・日記メール投稿等が動くんじゃないでしょうか。



【参考 & Spcial Thanks】

先人たちの苦労、工夫、親切、愛があってこそですな。あざーっす。

さくらインターネット レンタルサーバでopenPNEを設定する

OpenPNEのセットアップで携帯用メール設定の部分がわかりません

ムームーDNSでGoogle Appsを使う

Google Apps + 独自ドメインで自分だけのメールアドレス

POP3MailClass for OpenPNE - Usagi Project

heteml | ユーザーフォーラム

hetemlサーバーにopenpne設置メモ | 風華's blog

Gmailアカウントの取得とメール転送設定

レンタルサーバー「heteml」 - Gmail とヘテムルを 1 つのドメインで運用する方法
ムームー DNS のカスタム設定を使って Gmail(Google Apps) を利用する


Google Apps Standard Edition 利用規約

Google Apps Standard Edition(無料) 申込


本当は時代の流れ的にはOpenPNE3系を使いたいのですが、
試しにローカルwinにいれてみようとしてインストールで挫折しました。
symfonyとはどうも個人的に相性悪い。昔から。
windowsマシンで開発環境作れねーもんを本格的に触りだすと、
もはや副業だとか遊びの域を脱しだすので手をだすのは延期。
web技術のブログです。
そろそろその名にふさわしい記事をエントリーしようかな、と思います。
今まで何度と無く使う局面に出会いながら、
そのたびに、はて?どうするんやったっけ?
と思う実コードをメモしとくことにしましょうか。
第一回目は、画像の合成。

GDはgifアニ非対応なのでImageMagick版もいつか載せます。
では、今日から何日連続で書けるんでしょうか。がんばります。


<?php
$image_name_list = array('aaa.gif','bbb.gif','ccc.gif');
$image = imagecreatetruecolor(240,170);
// 画像読み込み
$image_list = array();
$image_height_list = array();
$image_width_list = array();
foreach($image_name_list as $key => $name){
if($name != ''){
$image_list[] = imagecreatefromgif('./'.$name);
list($width, $height, $type, $attr) = getimagesize('./images/'.$name);
$image_height_list[] = $height;
$image_width_list[] = $width;
$image_layer[] = $key;
}
}
foreach($image_list as $k => $v){
$x = 90;
$y = 0;
$w = $image_width_list[$k];
$h = $image_height_list[$k];
$white = imagecolorexact($image, 255, 0, 255);
imagecopymerge($image,$v,$x,$y,0,0,$w,$h,100);
imagecolortransparent($image, $white);
//$r = 0;
//$g = 0;
//imagefill($image, $r, $g, $white);
}
// ファイル出力
imagegif($image,'./result.gif');// gifファイル
header('Content-type: image/gif');
imagegif($image);// HTML出力
imagedestroy($image);
exit;
?>