さて、ここからが山場。
3-2. メールサーバの設定
携帯版を使用しない場合は以下の設定は不要です。MAIL_SERVER_DOMAIN に届くメールで、以下のアドレスはシステムで利用されます。
項目 新形式 旧形式
新規登録 / ログインURL取得 get@MAIL_SERVER_DOMAIN get@MAIL_SERVER_DOMAIN
プロフィール画像変更 pXXX-YYY@MAIL_SERVER_DOMAIN pXXX@MAIL_SERVER_DOMAIN
コミュニティTOPICのメール投稿 tXXX-YYY@MAIL_SERVER_DOMAIN tXXX@MAIL_SERVER_DOMAIN
コミュニティTOPICのメール作成 eXXX-YYY@MAIL_SERVER_DOMAIN eXXX@MAIL_SERVER_DOMAIN
コミュニティTOPICのメール修正 etXXX-YYY@MAIL_SERVER_DOMAIN etXXX@MAIL_SERVER_DOMAIN
コミュニティ画像のメール投稿 copicXXX-XXX-YYY@MAIL_SERVER_DOMAIN copicXXX-YYY@MAIL_SERVER_DOMAIN
日記メール投稿 bXXX-YYY@MAIL_SERVER_DOMAIN blog@MAIL_SERVER_DOMAIN
日記コメントメール投稿 cXXX-YYY@MAIL_SERVER_DOMAIN cXXX@MAIL_SERVER_DOMAIN
日記画像の修正メール投稿 dpicXXX-XXX-YYY@MAIL_SERVER_DOMAIN cXXX-XXX@MAIL_SERVER_DOMAINXXX には数字。
YYY には12バイトの英数字([0-9a-f]{12})。
新形式、旧形式のどちらのアドレスで受け付けるかは config.phpの設定(MAIL_ADDRESS_HASHED)によって切り替えることができます。新形式はメール投稿の際のFromアドレス偽装へのセキュリティ対策のために導入されたものです。 From偽装対策を(IP制限等により)メールサーバ側で行っている場合には旧形式での運用も問題ありません。
メールサーバの転送設定を利用して、これらのアドレスへのメールが、以下のコマンドにわたるように設定します。
"|/usr/local/bin/php OPENPNE_DIR/bin/mail.php"
最初、X-serverでセットアップを試験していたので、この機能については後回しにしていた。でも、携帯版は是が非でも使いたかったので、色々調べてみた。
この点については、Usagi project サポート掲示板 と、使えるねっと フォーラムをかなり参考にさせてもらった。
この機能を使うには、サーバーに大まかに2つの機能が必要になるらしい
- キャッチオール機能→つまり、あるドメイン(もしくはサブドメイン)宛に来るメールを全て受信する機能。ハッシュをONにすると、メールアドレスはランダムに振られるので、これらのメルアドを全て作るのは不可能。なので、キャッチオールの機能は必須。ハッシュにしなかったとしても、宛先メールアドレスは記事番号に依存するので、100や200のメルアドでは足りない計算になる。こんなのつくってられない...。
- PHPプログラムへのメール転送機能→携帯から送られたメールを転送機能を利用してPHPコマンドにわたるようにします、という部分。mail.phpというのが、送られてきたメールの宛先と添付ファイルを読み込み、適当な作業を行うというものらしい。
以上の2つの機能がないと、携帯版が使えないことになる。
X-serverには、2の機能はあったのだが、1の機能がなかった。スパムメール対処のためとのこと。確かに、あるドメイン宛のスパムメールを全てPHPコマンドに渡せば、サーバーに負荷がかかることになりかねない。なので、キャッチオール機能を使うなら、サブドメインを作るべきだろう。メインドメインだと、whoisとかから拾ってきたドメイン宛にスパムが送られてくるのは間違いないからだ。
元々、このSNSは将来的にはそれなりの参加人数を見込むつもりだったので、X-serverでは負担しきれないのは分かっており、今回はインストールの試験だったため、当初はこの機能をスキップしていたのだ。
そこで、レンサバを変更。従来、PackageStartという共用プランで利用していたドメインの方を、VPSの契約に切り替える。その際に、レンサバ会社に、PHPプログラムへの転送機能を説明しておいたので、qmailを使った方が良いということになった。クララオンラインの標準VPSサーバーは、Webminとsendmailもしくは、Pleskとqmailの組み合わせらしい。しかし、qmailの設定ファイルである、.qmailを編集するには、Pleskは適切なOSとは言えないということらしく、webminとqmailという組み合わせで依頼する。こちらの状況に応じてカスタマイズしてもらえるというのはまあ、ありがたい。しかし、Webminだと、サブドメインの設定ができないのだ。そうなると、またしても、1の条件は満たしても、2の条件が満たされないことになる。しかし、ぶっちゃけ、メール転送はそれほど重い作業ではないし、別ドメインに作業させてもよい訳で、それは、それで別に考えることにした。
結果、メインのドメインをクララオンラインのVPSに設定。携帯から送られるメールの宛先を別ドメインに設定し、別サーバーから転送することにした。別サーバーの仕様については、キャッチオール機能があるサーバーに絞られた。実は、色々調べていくと、上記1と2の両方を満たすレンサバはあまり多くはないようだ。しかも、あまり評価の見えないサーバーは使いたくない。
OpenPNE関係のフォーラムをみて、比較的利用率の高いサーバーが、さくらとX-reaであった。で、さくらにはキャッチオール機能がないので、消去法的にX-reaをレンタル。
早速別ドメインを設定し、さらにサブドメインを設定して、そのサブドメイン宛に来るメールを全てクララオンラインに設定したドメインのあるメールアドレスに転送することで、1の条件を満たした。
簡単に書くと、こんな感じ。
OpenPNE(Usagi)に携帯からアクセス→メール投稿を選ぶ→アカウント名(この部分は、OpenPNEがランダムで作成)@サブドメイン.ドメイン.orgに画像添付で送る→X-reaのサブドメインに送られたメールは、キャッチオール機能で、ひとまとめに→転送機能を使って、例えば、p1@ドメイン.jpに転送→p1@ドメイン.jpに送られたメールはクララサーバーの方でさらに転送機能を使い、mail.phpコマンドにわたす→結果、画像がアップされるようになった!
この作業になんと1ヶ月を費やした...。X-serverに試験インストールから始まって、メール投稿に必要な機能の把握に、さらにサーバーの選定、申込、設定、さらに試験、インストールの試行錯誤...。ようやく終了。
【注意事項】
- メールをphpコマンドに送るときは、.qmailを編集するのだが、.qmailを送ることができるパスは、通常FTPで送ることができない、上位にある。通常はSSH等のシェルを使ってコマンドを送るのだが、UNIXコマンドを知らないわたしは、Webminのアップロード機能を使ってファイルを送った。だが、ここにちょっと落とし穴。この機能ではアスキーモードでの転送ができないらしく、キャリッジリターンが変更されるらしい。当初、2行のコマンドを送っていたが、これがうまくいかず、1行にしたら、直ったのは多分、そういうこと。