OpenPNE3+sendmail でケータイメール投稿に挑戦
訳あって、調べてみました。sendmailは全く触ったことないのですが・・
先人のみなさんのやり方を確認
ググるといろいろ出ますが、Ver2の情報が多いようです。
参考にさせていただいたのはこちら。
[OpenPNE] sendmail で携帯からのメール投稿を設定する方法 | Sun Limited Mt.
sendmailについてはこちら。ドメイン名やサンプルのメアドが素晴らしいです。komo繋がりということで。
http://www.komonet.ne.jp/~linux/sendmail/gaiyou.htm
まずは情報を列記
とりあえず、整理する準備としてつらつら書いてみます。
sendmail側と思われるもの
- /etc/mail/local-host-names
- 受け取るべきドメイン名の一覧を記述しておくファイル。ホスト名と異なる場合など。
sns.example.com
- /etc/mail/virtusertable
- メールアドレスを見て配送先を振り分ける、バーチャルユーザーテーブル
@sns.example.com sns-ktai@example.com
- virtusertable を変更後は下記コマンドを実行して設定を反映させてください。
- これは定義ファイルを.dbファイルに反映させパフォーマンスを上げるため、と解釈しました
# makemap hash /etc/mail/virtusertable.db < /etc/mail/virtusertable
sns-ktai: "| php /path/to/openpne/bin/mail.php"
- aliases を変更後は下記コマンドを実行して設定を反映させてください。
- makemapと似たようなもの?と解釈
# newaliases
php の部分を /usr/bin/php とかフルパスにしても同じです。sendmail が実行する smrsh というのが sh よりも厳しいらしく実行時にエラーになってしまいます。そこで、 /etc/smrsh 以下に /usr/bin/php のシンボリックリンクを作ることにより回避できます。
$ ln -s /usr/bin/php /etc/smrsh/php
OpenPNE側
こちらを参考にさせていただきました。※これはOpenPNE3の記述です
OPVC04 携帯メール投稿のセットアップ|OpenPNEの手嶋屋
openpne_user: "| cd /path/to/openpne/ && php /path/to/openpne/symfony openpne:execute-mail-action"
手嶋社長のブログでは、Postfixがメールサーバとなっており、パイプでつなげてOpenPNEにメールを渡しています。
中を見るとOpenPNEのディレクトリに移動してから、引数として「execute-mail-action」を渡して、symfonyフレームワークに処理を依頼しているようです。
sendmailについてもう少し調べてみた
「&&」について
Postfixでは「&&」でチェンジディレクトリとphpの実行を連続して書いていますが、sendmailだとどう書くのだろうと思い調べてみました。
「これだ!」と明確に書いているサイトは見つからなかったのですが、「&&」でつなぐのはどうやら共通のようです。なので、大丈夫だろう、ということで。クウォートしている中身はAPLには関係なく、Linuxコマンドの世界で動くもの、と解釈しました。
何が渡されるの?
直接関係はなさそうですが気になったので。百式さんのサイトが参考になりました。
PHPとsendmailで任意のメールアドレスに来たメールを処理する方法 | IDEA*IDEA
「4.さてPHP」でのところにありますが、フツーに標準出力からもらっているようです。なので、PHPコード側では「stdin」標準入力から読み出しと考えればよさそうです。
整理してみた
メールサーバの使い方は、OpenPNEのバージョンには左右されないはずなので、Ver2での先人のみなさんのノウハウをそのまま拝借。Ver3ではメールサーバからの流し込み先の処理が違う(Ver2はフツーのphp、Ver3はsymfony経由)ので、alias定義だけVer3用に変更。これでいけるのでは??
ということで、まとめてみると、
Sendmail側の設定
sns.example.com
- /etc/mail/virtusertable
- xxxxxxx@sns.example.com のメールの振り分け先をバーチャルユーザーテーブルに登録
@sns.example.com sns-ktai@example.com
-
- 反映
# makemap hash /etc/mail/virtusertable.db < /etc/mail/virtusertable
sns-ktai: "| cd /path/to/openpne/ && php /path/to/openpne/symfony openpne:execute-mail-action"
-
- 反映
# newaliases
# ln -s /usr/bin/php /etc/smrsh/php
とここまで書きましたが
まだ、なんにもテストとかはしてません。これからです・・・