さくらの専用サーバではメールサーバは標準では sendmail になっています。専用サーバなので Postfix とか入れてもいいのですが、今回は sendmail で携帯からのメール投稿を設定をする方法です。

DNS を設定できるのであれば、sns.example.com などのように OpenPNE 用のサブドメインを作って MX レコードを設定しておけば使いやすいです。

sns.example.com をメール用にする場合

DNS で sns.example.com の設定が終わっているのが前提です。

config.php

define('MAIL_SERVER_DOMAIN', 'example.com');

/etc/mail/local-host-names

sns.example.com

/etc/mail/virtusertable

@sns.example.com sns-ktai@example.com

virtusertable を変更後は下記コマンドを実行して設定を反映させてください。

# makemap hash /etc/mail/virtusertable.db < /etc/mail/virtusertable

/etc/aliases

sns-ktai: "| php /path/to/openpne/bin/mail.php"

aliases を変更後は下記コマンドを実行して設定を反映させてください。

# newaliases

これで @sns.example.com 宛のメールは bin/mail.php で処理されるようになるのですが、実際にメール送信してみると実行されません。メールログを見ると下記のようなメッセージが出ています。

Nov 19 15:50:44 hoge sendmail smrsh: uid 8:
attempt to use "| php /path/to/openpne/bin/mail.php" (stat failed)

php の部分を /usr/bin/php とかフルパスにしても同じです。
sendmail が実行する smrsh というのが sh よりも厳しいらしく実行時にエラーになってしまいます。
そこで、 /etc/smrsh 以下に /usr/bin/php のシンボリックリンクを作ることにより回避できます。

$ ln -s /usr/bin/php /etc/smrsh/php

example.com をメール投稿用にする場合

この場合は @example.com 宛のメールが全て OpenPNE で処理されるようになるため、管理者宛のメールなどは別に用意する必要があります。DNS などを設定出来ない場合の処置になります。

設定は基本的に sns.example.com を使った場合と同じですが、sns.example.com の部分を example.com にすれば OK です。

その他

ちなみに「OpenPNEオフィシャルガイドブック」という本があり、これにさくらの専用サーバでの sendmail 設定が載っているのですが、この通りにやっても動きませんでした。私の持っているのが初版本なのでその後改訂されていればいいのですが。

書いてある通りにやっても、smrsh の部分の問題で動作しませんでした。専用サーバのメール設定方法がわずか1ページではあまりにも端折りすぎではないでしょうか。

OpenPNEオフィシャルガイドブック

OpenPNEオフィシャルガイドブック伊藤 幸夫
¥ 3,675
単行本(ソフトカバー)
毎日コミュニケーションズ

関連する投稿