Postfix + Postfix Admin + MySQLでメールを管理する

メールアカウントの管理はかなり大変です。これを動的に管理するようにするには、やはりデータベースを使う必要があると思っていろいろ調べたところ、Postfix + Postfix Admin + MySQLと言う解決策があるようです。

メールアカウントをMySQLで管理し、それをGUIで操作するのがPostfix Adminとなります。SMTPはPostfix(参考:SendmailからPostfixへの変更、Postfixでメール受信時にプログラム起動)。Webメールなどをユーザに提供するには、この組み合わせはおすすめです。

参考にしたのは「Postfix+MySQL+Postfix AdminによるバーチャルSMTPサーバの構築(CentOS4.x編)」で、ほぼここに書かれているとおりで導入できました。

(さらに…)

Facebookのアカウントを利用してユーザ登録、ログインページを作成する(OAuth認証)(第2回)

第1回で書いた方法の場合(参考:Facebookのアカウントを利用してユーザ登録、ログインページを作成する(OAuth認証)(第1回))、ユーザの名前は英語名しか取得できません。scopeを変更することで日本語名を取得できるものだと思っていましたが、色々試してみても取得できませんでした。そこで見つけたのがFQL(Facebook Query Language)です。データベースを扱うSQL(Structured Query Language)のFacebook版です。

認証プログラムのことを書いていますので、SQLはご存知だと思いますのでFQLはすぐに理解できると思います。ワイルドカードが使えなかったり、幾つか制限はあるようですが、テーブル構成なども一覧でありますので難しくありません。

FQLのページにユーザ名を取得する例が書かれています。

SELECT name FROM user WHERE uid = me()

(さらに…)

Facebookのアカウントを利用してユーザ登録、ログインページを作成する(OAuth認証)(第1回)

日本でFacebookも普及し始めたような気がしますので、そろそろポイ探買いログFacebookでユーザ登録、ログインできるようにしようかと考えました。OAuthで認証できると思いますので、「Facebook OAuth」で検索します。すぐに画像つきのページがヒットしますので、それほど大変じゃないのかなと感じました。実際に作成するまでの流れを書いてみたいと思います。

1.Facebookでアプリを作成
1-1.Create an AppでFacebookのアプリを作成
Create an Appをクリックすると、下記の画面が表示されます。

Facebook Create an App

注意点としてはサイトURLには公開するドメインを入力して下さい。サブドメインで運用する場合はサブドメインを入力します。認証ページのURLにredirect_uriという引数が出てきますが、そちらのドメインと登録したドメインが違うとエラーメッセージが表示されてしまいます。ここで間違った情報を登録しても修正可能ですので、検証環境で検証してからということでしたら、検証時のドメインを入力して下さい。

(さらに…)

Fatal error: Can’t open and lock privilege tables: Table ‘mysql.host’ doesn’t exist

10年近く前にWebシステムを構築する時にデータベースMySQLにするかPostgreSQLにするか迷ったことがあります。当初の情報ではMySQLは高速、PostgreSQLは信頼性ということで、信頼性のあるシステムを構築する予定だったのでPostgreSQLを選択しました。

最近ではMySQLもPostgreSQLもそれほど変わらないのではないかと思い、弊社のデータベースはほぼMySQLにしています。PostgreSQLの問題は、更新が多いシステムではVACUUM処理が必要で、この処理に時間がかかるため運用に影響が出てきます。また、MySQLもバージョンアップでトランザクション処理があったり、マスター・スレーブ等負荷分散の設定もできるようになったため、MySQLでも信頼性のあるシステムは構築できるようになっています。

 

MySQLのインストールであまり困った事は無いのですが、今回MySQLをインストールし、/etc/init.d/mysql startと起動したところ下記のエラーがでました。

Starting MySQL.. ERROR! Manager of pid-file quit without updating file.

MySQLのエラーログをチェックしたところ、下記のメッセージが表示されています。

[ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist

(さらに…)

pear install Mail_MimeでmimeDecode.phpがインストールされない

空メールを送ってデータベースにそのメールを保存し、ユーザに登録URLを送るというシステムを作ろうと考えています(参考:SendmailからPostfixへの変更、Postfixでメール受信時にプログラム起動)。いろいろネットの情報を見ると、mimeDecode.phpを使うということが書かれていて、mimeDecode.phpを使う場合は、まずはインストールしましょうと書かれています。
下記のコマンドでインストール出来ると書かれていますので、さっそく実行しました。

# pear install Mail_Mime

特に無反応でした。インストールされている感じもありません。which pearで調べると、ちゃんとパスは通っているのですが一点問題がありそうでした。
PHPはtar.gzからインストールしているので、/usr/local/bin/phpになっています。which pearで調べたところ、/usr/bin/pearになっていたので、旧バージョンのpearを使っていることになっていました。そこで/usr/bin/pearを削除し、シンボリックリンクを張ります。

# rm /usr/bin/pear
# ln -s /usr/local/bin/pear /usr/bin/pear

(さらに…)