2008年02月21日

GmailとSAKURAでOpenPNEの携帯メール投稿設定

以前に SAKURA では携帯からのメール投稿設定ができないと書きました。hatenaの質問でもそうあります。しかし、Gmailを使うことでできるようになることが分かりうまくいったので載せておきます。まず、SAKURA での携帯メール投稿について以下の先人たちの記録が参考になりました。この場を借りてお礼を申しあげます。

雪ぶろ さくらでOpenpneに写メール投稿
http://yukiita.net/blog/entry/2006/000497.php

酔生夢死 KAGOYAでOPENPNEその後(前回の記事に載せたものと同じ)
http://blogs.dion.ne.jp/php/archives/6159089.html

さくらインターネットにOpenPNEインストール!携帯メール対応にハマる (アジャイルな社長が教える!自分をもっとレベルアップさせる裏技)
http://www.cre8system.jp/blog/2006/11/openpne.html


また、Usagi Project の方ですでに載っていました。殆どこの通りです。じゃあ書く意味があるのかと言われると……(笑)。

Mynets1.1.1 - Usagi Project WIKI  PDF Gmailを使ったメール転送について
http://usagi.mynets.jp/WIKI/index.php/Mynets1.1.1

一応、自分の浅はかな理解と共に、やった記録などを。

まず、OpenPNE における携帯からのメール投稿ですが、私の理解によると


携帯で指定のアドレスへ投稿 → (……) → シェルスクリプト(*1)が受け取って OpenPNE のシステムが受け取る
(*1…正確には SAKURAの場合 maildrop というメール配信ソフトが受け取って配信する)

という過程がうまく行けば成功するみたいです。いくつかのポイントがあります。


1.携帯で送るアドレスは、

@の前まで
config.php で指定した「宛先メールアドレスのprefix」(370行目あたり define('MAIL_ADDRESS_PREFIX', 'sns_');のところ)に日記の場合「blog」が付いたものになる(デフォルトでは「sns_blog」。「ハッシュにするか」で[true」にしていると「b4-491b……」のようなゴチャゴチャしたものになる)
@の後(ドメイン部分)
同じくconfig.php で指定した「メールサーバードメイン」(26行目あたり define('MAIL_SERVER_DOMAIN', 'mail.example.com');のところ)になる

2.これらのメールアドレスは日記、ログインURL取得、プロフィール写真変更、コミュニティ掲示板メール投稿……等によって違うアドレスになる。OpenPNE 側はこの「@の前」をみて判断する。

3.送信アドレスによって投稿者を判断する。


といったことらしい。この辺はOpenPNEのアーカイブを解凍したときの中のsetupフォルダにある「OpenPNE セットアップガイド」の4-2.メールサーバの設定に書いてあることと先人たちのblog、自分で試した結果による私の理解です。



ということで、携帯メール投稿ができるようになるためのサーバの条件として、

(1)「〜@mail.example.com」など「@」の前の「〜」の部分がさまざまになるすべてのメールを、エラーにせずに受信して集約できる
(2)受信したメールを転送用シェルスクリプトに渡すことができる

という二つを満たしていなければならないことになります。

(1)の部分でメールサーバが Postfix だとキャッチオールという機能があるが、sendmail には無いので sendmail を使っている SAKURA ではダメだということになっていました。ここで Gmail の出番です。
Gmail にはあるアカウントに対し、「アカウント+○○○@gmail.com」というアドレスをすべて受信できるという裏技があります。○○○の部分はどんな文字列でも構いません。必ず「+」を挟みます。


前置きが長くなりましたが、設定方法です。あんまりにも長くなったので珍しく「続きを読む」にします。

(1)SAKURAで転送専用のアドレスを作ります。

ここでは「nor」などとしておきます。まずは普通にメールアドレスの追加です。コントロールパネルから、
左側「メールに関する設定」の「メールアドレスの管理」。下の方「メールアドレスの追加」で「メールアドレス」欄に「nor」と入れて「送信する」ボタンで作成。
メールボックスをweb上から開くと左下の「メールの設定」に「電子メールの転送」とあるのでクリック。
「転送専用のメールアドレスにしますか?」とあるので「転送専用にする」を選び、転送先をとりあえず自分のメールアドレスにして保存しておきます(一応ここで試しに「nor@mail.example.com」に送ると自分のアドレスに転送されることを確認しておくと良いでしょう。

(2)Gmailの準備

普段使っているアカウントにどかどかメールが来たら鬱陶しいでしょうから、新しいアカウントを作った方が良いでしょう。ここではこれも仮に「norsns」とかにしておきます。
Gmailの「設定」「メール転送とPOP設定」を選び、転送の設定をします。この時の転送先を先ほどの「nor@mail.example.com」にします。これで、「norsns@gmail.com」にメールを送信すると、一度「nor@mail.example.com」を経由して自分のアドレスに届く状態だと思います。試しに「norsns+blog@gmail.com」に送信しても自分のアドレスに届くかやってみるといいでしょう。

(3)SAKURAのメールサーバ設定(その2)

ftpで接続。普段webページが置かれる「www」ディレクトリより一つ上の階層に移動すると「MailBox」というディレクトリがあり、その中に先ほど作成した「nor」というディレクトリがあるはずです。さらにその中を見ると「.mailfilter」という「.」から始まるファイルがあります。一度自分のPCにダウンロードして、エディタで開きます。メモ帳だとファイル名で問題になるかも知れません。OpenPNE が設置できた人なら大丈夫ですよね。この中身(自分のメールアドレスへの転送設定)を削除したのち次のように入力します。

to "| /usr/local/bin/php /home/自分のアカウント名/bin/mail.php"
exit


半角スペースを敢えて□で表すと
to□"|□/usr/local/bin/php□/home/自分のアカウント名/bin/mail.php"

という三カ所が半角スペースです。最初の「"」のあとはバックスペース左隣の「¥」マークの上の文字です(「パイプ」といいます。もちろん半角。Usagi Project のものには無いんだよねぇ。いいのかな)。サーバ上のphpのコマンドに OpenPNE 本体の「mail.php」を実行してくれ。対象は今来たメールだよ。と指定しています。

((注)OpenPNE を設置したのがSAKURAで自分のアカウント直下だという前提です。例えば、wwwの中に「bin」「lib」「var」「webapp」……を入れたのなら、「/home/自分のアカウント名/www/bin/mail.php」のようになります。またSAKURAでない場合、phpへのパスが「/usr/local/bin/php」ではない場合がありますね。そして、この書式は(*1)でも書いた maildrop の書式に従っています)

これをftpで元に戻します。この後、(1)の転送設定をしてしまうとこのファイルが書き換えられてしまうのでやらないように気をつけましょう。

(4)config.phpの変更
現在設定されているconfig.phpで
26行目あたり define('MAIL_SERVER_DOMAIN', 'gmail.com');
370行目あたり define('MAIL_ADDRESS_PREFIX', 'norsns+'); ←gmail で作ったアカウントに「+」。さいしょの//は取り除きます。
372行目あたり、「宛先メールアドレスをハッシュにするか」を false に。これをしないとGmailへのアドレスがメチャクチャになります。
define('MAIL_ADDRESS_HASHED', false);

としてまたアップロードします。

これで設定完了です。試しに携帯でsnsにログインして「日記を書く」→「メール投稿」とすると「norsns+blog@gmail.com」のようになっているでしょうか。携帯の機種によってはこの「+」が消えてスペースになっている場合があるようですので、自分で「+」に直しましょう。適当な文章を書いてメール送信して、ちゃんと投稿されているか確認してます。どうですか!ちゃんとできていますよね!添付ファイルで写真を付けてもできるはずです。

これでかなり使えるsnsになりますね。


(※……ここまで書いて気がついたことですが、自分でメールアドレスがいくらでも作れて、シェルスクリプトも変更できる場合、考えられるすべてのアドレスを作って、一つ一つ mail.php に転送する設定をすれば、Gmailを使わなくても力業で何とかなるかもしれませんね……)
posted by n_shimizu at 18:00| Comment(16) | TrackBack(4) | 日記2
この記事へのコメント
さくらスタンダードで、OpenPNEメール投稿できなくて、いろいろ探していましたら、この日記を見つけることができ、設定しましたら、メール投稿ができるようになりました。ありがとうございました。
Posted by 竹内 雅彦 at 2009年12月28日 23:03
>竹内さん

この記事がお役に立てて何よりです!
Posted by n_shimizu at 2009年12月29日 18:07
私も助かりました。
ありがとうございました…!
Posted by ゆえ at 2010年03月17日 11:22
> ゆえさん

良かったです!
Posted by n_shimizu at 2010年03月17日 13:16
うまくできました!ありがとうございます!!
Posted by しをり at 2010年05月08日 17:28
以前までhttp://転送サービス.jpn.ch/を使ってましたが、サービスが終了してしまって困っていました。
このページをみて上手くいくことができました。
ありがとう御座います。
Posted by マツムラ at 2010年09月10日 01:02
わかりやすい説明をありがとうございました。
うまくいったようです。
+がブランクに化けるのは日記投稿のときだけでしょうか?
コメントやメッセージの通知メールには+がしっかり入っていますのでauだから化けるのではないと思います。
ほかに原因があるのではないでしょうか?
携帯に送るところではないかと思うのですがどこか探せませんでした。(汗)
Posted by うっちゃん at 2010年10月18日 22:17
うっちゃんさん詳しくありがとうございます。私は au ユーザーではなく、この「+」が消えるという現象は私の記事を参考にして立てた別の OpenPNE 管理者の方がそうらしいと教えてくれたことなので、詳しくはわかっていないのです。

キャリアの問題なのか、メーカーの問題なのか、それともある時期のロットの問題なのか不明なのです。その時期の一部の au ユーザーにはそのような現象が確かにあったことしか知らないんです。
Posted by n_shimizu at 2010年10月18日 23:59
私は、2〜3日前に立ち上げたばかりですし、2系の新安定板を使いましたので現在もその現象は残っています。
まだauしか実験していませんが、確かに他のキャリアではそのような現象の記事を見ていないので、OpenPNEの問題でもないかもしれませんね。
コメントフォローありがとうございました。
Posted by うっちゃん at 2010年10月20日 06:52
Open PNEでコミュニティを作ってみたはいいものの・・・、肝心の携帯対応がされていないという現実を知り急遽クローズする事態に・・・。
そんな時、このページで非常に重要な情報を知るに至り、とても助かりました。
心より感謝申し上げます。
Posted by TAKERU at 2011年03月30日 17:18
3年も前の記事ですがお役に立てて嬉しいです。SAKURA が Postfix になるか sendmail がキャッチオール機能を持つか、OpenPNE の仕様変更にならない限り役に立つのかなー。
Posted by n_shimizu at 2011年03月30日 21:20
ブログオーナー n_shimizu様、
今もOpenPNEに苦労している人はたくさんいると思います。
特にテンプレートファイルをある程度いじれないと、携帯での「メール投稿」の問題はなかなかクリアできませんので・・・。
自分もかなり苦労しましたが、貴ブログのおかげです(^^)
Posted by TAKERU at 2011年03月31日 00:24
openpne2系を利用していまして、携帯対応機能が使えず、VPS を検討していましたが、こちらの貴重な記事のおかげでsecurityの面で心配していましたVPSにインストールせず、通常のサーバーにインストールできました!
OpenPNEオフィシャルガイドブックにconfig.phpの設定方法やMail.php等の一番重要な情報の記載が少なく、3000円以上出して購入した本より役にたちました!
ありがとうございます!
Posted by PsychedelicGardening at 2011年09月02日 14:09
PsychedelicGardeningさん
役に立ってよかったです!
Posted by n_shimizu at 2011年09月29日 18:01
携帯からのメール投稿の実現方法を検索していたところ辿りつきましたm(_)m
記事内容の通り進めていったところ、無事メール投稿が出来るようになりました。
ありがとうございます。

ちなみに、一部の機種では投稿先のメールアドレスの「+」がスペースに置き換わってしまう事象が発生しました。(Docomoのアンドロイド携帯です)
Posted by karl at 2012年05月28日 19:56
karlさんどうも。
ふむふむ。「+」はメールアドレスにはありえない、とする端末があると言うことですね。余計なお世話ですねぇ。
Posted by n_shimizu at 2012年05月29日 02:28
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/11226948
※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック

KAGOYA の OpenPNE 不調→引っ越し
Excerpt: うちの相棒が KAGOYA で OpenPNE 管理運用しているSNS。8月11日に止まってから復活しません。KAGOYAのサーバがPHPをバージョン4から5に上げたと同時にアクセスできなくなりました..
Weblog: 情報科雑感
Tracked: 2008-12-30 16:48

ステップサーバーではメール投稿できない
Excerpt: こちらのブログの続きです。 □ステップサーバーでOpenPNE さて、こちらの記事で 携帯電話によるメール投稿も可能にするためにはメールサーバー等の設定も必要です と書きましたが、メール投稿をさ..
Weblog: 地方の中規模印刷会社で苦悩するWebデザイナー改めWebディレクターの日記
Tracked: 2009-02-13 22:58

さくらインターネットでOpenPNE
Excerpt: ステップサーバーではメールによる投稿ができないのでさくらインターネットにOpenPNEを設置しました。 以下、その作業の流れと注意すべき点等。 ■独自ドメイン及びサブドメインの設定 「さくらイン..
Weblog: 地方の中規模印刷会社で苦悩するWebデザイナー改めWebディレクターの日記
Tracked: 2009-03-07 13:24

OpenPNEの携帯メール投稿機能
Excerpt: さくらサーバーでOpenPNEの携帯メール投稿機能を実現した際のメモ. いろいろぐぐったら先駆者たちが対策方法を生み出していました.ありがたや. http://www.cre8system.jp/b..
Weblog: lambda blog
Tracked: 2009-04-26 04:04