メールアカウントの管理をPostgreSQLで


MTAを新しくするにあたり実現したいことは決まった。
ただ、中でも厄介そうなのが「メールアカウントをOSのアカウントから分離」というお題。
しかし、OSのセキュリティー向上を考えるとなんとしても実現させたい。

とりあえず思いついたのはLDAPを使う方法。
そもそもLDAPはユーザーアカウントを管理するためのモノなので適任と言えば適任。
PostfixもLDAPに対応しているし、最近のPOP3/IMAP4サーバやSMTP AUTHの認証機構もLDAPに対応しているので、メールシステム全体でユーザー管理の一元化が可能になる。
これまでLDAPを使ったことがないので、まずはLDAPサーバを動かして見ることにした。

まずは自宅のメインPCにVirtual PC 2007を入れ、FreeBSD 7.0の環境を用意。
OpenLDAPのインストールを行い認証機能のテストを始めて見た。
動かしてみて感じたことだが、案外と管理が煩雑だった。
慣れの問題もあるだろうけど、そもそも組織だった管理をしたい訳ではないのでディレクトリ構造でのアカウント管理はオーバースペックとも言える。
それに、遠隔地にあるサーバで動かすのでコマンドラインで操作するのは面倒臭い。
Webベースのツールを用意して簡単な管理がしたい所だが、目的にあったLDAP用のツールが見つからない。かといって、LDAP用のツールを自分で作るとなると、これもまた面倒臭いというのが本音。

ちょっと行き詰まってしまった。

で、他に方法がないかと調べていたら、Postfixのバーチャルホストのアカウント管理にMySQLやPostgreSQLが使用できることが判明した。
更に調べていくと、POP3/IMAP4サーバでもDBを使った認証が可能だし、SMTP AUTHでもDBを使った認証が可能なようだ。
となればDBを使ったユーザー管理の方が断然簡単に思えた。
なんせ仕事柄DBを使うWebアプリを作るのは慣れたモノ。ユーザー管理用のツールだって自分で作れてしまうし、利用者向けのパスワード変更Webページなんてのも自分で作れてしまう。
自分で作るのだから使い勝手だって自分の好みに合わせられるので、こんな良いことはない。

と言うことで、ユーザーアカウントの管理はDBを使用することに決定。
で、使用するRDBMSはプライベートでは使い慣れているPostgreSQLを使うことにした。
なんせ今稼働しているサーバーにはPostgreSQLが動いているので新たにインストールする必要はなく、今の環境に新しいテーブル等を用意するだけで住むので簡単だ。

しかし、ここでも問題が...
本を読んだりWebで調べたりするがPostgreSQLを使ったPostfixの設定に関する情報が少ない。
というか皆無に等しい。
Postfixに付属のドキュメントが一部和訳されて出ていたりするが、実例といえるような内容の記述がないので具体的に何をしたらいいのか分からない。
困った...

メールサーバーの入れ替え計画始動


自前で運用しているサーバーでは知人の会社のドメイン等、多数のドメインが運用されている。
中でもメインの機能として使用されているのが電子メール。
今やインターネットでもっとも利用されているサービスと言ってもいいだろう。

で、ウチのサーバで扱っているメールアカウントが100件近くとかなり増えてきている。(個人が運用しているサーバーとしては多い方でしょ)
しかも添付ファイルが付いていて重いメールがあったり、迷惑メールが届いたりと負荷が上がってきている。
中には不正中継に利用しようとしてアクセスしてきていたり、存在しないメールアドレス宛にメールを送ってきたり、更にはウチのドメインを語って迷惑メールがばらまかれたせいでエラーメールが大量に届いたりと甚だ迷惑なアクセスも多数ある。(適当にプログラムで生成して手当たり次第送ってる感じ)

いろいろと対策は行ってきているが手詰まり感があるし、セキュリティーパッチの対応など結構保守作業もあって馬鹿にならない。
そもそも設定ファイルの記述が難解で、新しい対策を施そうとしても中々進まない。

という訳で、10年にわたって使用してきたsendmailを諦め新しいMTAの導入を決意した。(のは、もう半年以上前...)

MTAの切り替えを行うにあたって今回の目標を設定。

  1. 設定が容易
  2. セキュリティー向上
  3. Submission Port対応
  4. Maildir形式への対応
  5. メールアカウントをOSのアカウントから分離

1と2はなんと言っても運用を楽にするため。
3は、これまで利用者に送信用サーバーは接続しているISPのメールサーバーを利用してもらっていたが、迷惑メール対策の新しい手法として送信ドメイン認証などが利用され始めてきたことを鑑みると、正規の送信用サーバーとしての機能を提供する必要が出てきていると考えたため。
4は、大きな添付ファイル付きメールや大量のメールを溜め込んだ場合でも受信が高速に行えるようにしたいのと、POP3だけではなくIMAP4の正式サービスを提供したいため。
5は、メール用としてしか利用されないユーザーアカウントをOSに用意するのはOSのセキュリティー上好ましくないと感じたため。(パスワード変更しないで使い続ける人が多いからねぇ)

と言うことで新MTAの選考を開始!
とは言ってもsendmail以外のMTAってqmailかPostfix位しか選択肢がない。
ので今回はPostfixを導入することとした。
Postfixになったのには深い訳はないが、とりあえずやりたいことは全て対応できそうという理由...

しかし、ただ単にMTAを入れ替えればOKという訳にはいかない。
バーチャルホストで複数ドメインの運用を行っているし、メーリングリストも動いていたりするので十分な検証を行って万全の状態で切り替えを行わなければいけないので、目標は2009年中の切り替え。
まぁ出来れば秋頃までには実施したいなぁ何て考えながらテスト環境で導入実験を行っていこう。

という顛末でPostfix導入に向けた実験をはじめる。
Postfixに関する情報はそれなりに存在するが、案外と自分のやりたいことの情報が不十分だったりすることがあるので、作業の備忘録としての記録と私の経験が他の方の役に立てばという思いで作業の進捗をblogに残していこうと思う。
何かお気づきの点などあればコメントを残していただきたい。

買い換えちゃいました


普段からよく使う訳じゃないけど無いと困るのがノートPC。

これまではIBM ThinkPad s30を愛用してきていました。

しかし、使用するアプリケーションがバージョンアップする度にCPUへの負荷やメモリ使用量が増大し、動作が重くなってきてました。
なんせOSを起動してまともに使えるようになるまで10分かかる有様で、ブラウザからメーラーにウインドウを切り替えると数分画面が固まることもしばしば。
何度かOSの再インストールをしてリフレッシュをかけたけど、すぐに元の状態に戻ってしまうだけなので諦めちゃいました。

で、しばらく前から買い換えを画策してましたが、なんせ元手が必要な話なので...

でも、今年は冬のボーナスもしっかり出たし、その直前2ヶ月ほどは残業もタップリで元手捻出に成功!\(^_^)/
と言うわけでこの冬はノートPCを買い換えることにしました。

最近ではASUSのEee PC等に代表されるUMPCなるモノが流行ってるみたいで、しかも6万円くらいと安いらしい。
チョット興味が有り、周りにも何人か持ってるヤツもいたりしたので使わせてもらったけど、やはり小さすぎる感が否めない。
ノートPCの使用用途としては旅行や帰省の時に持って歩くのがメインで、普段使いじゃ無いので小さいのがベストだけど、デジカメで撮った写真をチェックしたり、ラリーの主催の時は現場で書類作成に使ったりするのである程度の操作性が欲しい。
用途がメールとWebの閲覧だけならUMPCで十分足りると思うが、普段持ち歩いて使う訳じゃ無いだけにもう少し上のスペックが欲しくなる。

そうなるとこれまで使っていたs30と同じB5サイズのノートがターゲット。
レノボ、パナソニック、Dell、東芝、富士通、NEC、HPと調べれば各社からそれなりに出ている。
ただ、ノートPCとなるとレノボ、パナソニック、東芝あたりが好きなので、このあたりにターゲット絞って検討。
この3社を選んだのに深い訳があるという事ではないが、比較的小型ノートPCに昔から力を入れていて、小型・軽量・高性能となると歴史の分だけ安心感があると言うだけ。

価格差はそんなにないので後はスペック。
ただ、スペックも大差がないのが現状。どれもintelのCentrino2で作ってきているので同じになってしまう。
唯一差を見せていたのがパナソニックのLet’s note W8。
B5サイズで2スピンドル、1.25kg、長時間バッテリー駆動というのが気に入った。

と言う訳でターゲットをパナソニックのLet’s note W8に決定。
価格比較サイトで見ると最安値は169,000円くらい。
いつも行くヨドバシカメラだど214,800円で18%ポイント還元(38,664ポイント)で実質176,136円と、その差7,000円くらい。
まぁ、送料だの振込手数料だの掛かるし、万が一のアフターサービスのことを考えたらヨドバシカメラでいいっかって事でヨドバシカメラへ出発。
まずは店員さんを捕まえて気になる点を聞く。
パナソニックのLet’s noteは全く同じスペックで1スピンドルのT8というのがある。CD・DVDドライブは常に使う訳じゃ無いので外付けでも困らない。でもドライブが無いと困る時もあるので外付けドライブは用意したい。
で、T8に外付けドライブをセットで買うのとW8ではどっちが安いのか。結果は差は殆ど無し。数百円違うかどうか・・・
じゃぁ内蔵してる方が必要な時に持ってないなんて寂しいことにならないのでW8にしようと決定。
続いてW8の214,800円、もっと安くできないの??と聞いてみる。
ネットの最安値と同じにしてとは言わないからチョットくらい安くしてくれないのと言ってみると、相談してくると言って奥へ消えて行く...戻ってきて「800円だけ取りますのでそれで勘弁してください」だって。まぁそんなに値引きしてくれるとは思ってなかったけど、せめて800円じゃなくっって4,800円くらい取って欲しかったなぁなんて言いながら購入を決定しました。
214,000円でポイント還元が38,520ポイントで実質175,480円。
もらったポイントで増設メモリ2GBとノートPCに合わせて無線LANの高速化を図るため、無線ルータを新調して20,000ポイントほど使用。

で、遂にノートPCが新しくなりました~\(^_^)/

う~ん、やっぱ新しいのは良いなぁ。
動作が速いし画面も結構綺麗だし。
しばらくは良いおもちゃになりそうです。

三角関数


今の仕事は携帯サイトの開発。
そのため、いろいろと携帯の仕様を調べたりすることがある。

その中で面白そうだなと思ったのが位置情報通知サービス。
銀行の携帯サイトなんかでは、位置情報を送ると最寄りのATMが調べられたりして結構便利な機能だったりする。
この位置情報を使ってなんかできないかなぁ~って事で思いついたのが、自分の位置情報から最寄り駅の時刻表を携帯に表示させてみようという試み。(いつ完成するかは未定だけど・・・)

で、早速位置情報を取得して画面に表示してみると、案外と簡単に緯度経度情報が取得できた。
駅の位置情報は地図を調べれば解るので2点間の距離を算出すれば最寄り駅がどこかもわかるはず。

しかし、困った...
2点の緯度経度からどうやったら距離が算出できるのだろうか。
ググッてみてもいくつかの計算式が出てるが、その通り計算しても変な結果が帰ってくることが多い。
理論的には2点の緯度と経度それぞれの差から縦の距離と横の距離を算出して、三平方の定理で直線距離が出てくるはずだ。
でも、地球は丸いので平面の理論だけでは距離が正しくない...ややこしいぞ。

通勤中や昼休みに考えること3日、なんとなく計算方法ができあがり、あってそうな距離が帰ってきた。
で、実際に位置情報を取得して特定の場所との距離を計算すると、地図上で測った距離と近似した値になったのでOKそう。(三角関数なんて学生の時以来じゃないか??)

しかし、通勤中など移動しながら何度か計測していると突然位置が大きく移動したりすることがある。
よくよく調べてみると、簡易位置情報はその時繋がっている基地局の緯度経度が得られるようで、ハンドオーバーした瞬間大きく移動したことになっている。
逆に、その時の緯度経度で地図を調べると基地局がどこにあるかわかる。
我が家で繋がっているのはベランダから見える高台のマンションにある基地局のようだ (^^)

で、計算式は完成したのでデータベースに登録した駅の位置情報と現在地の距離を計算し近い順にリストを取得できればOK。
でも、データベースからリストを取得して、距離を計算し並べ替えるのは結構面倒。
データベースからリストを取得する段階で近い順に並んでリストが得られればプログラムも簡単になるはず。
って事は、データベースに距離を計算する関数を用意しておけば楽チン!

で完成した関数(PostgreSQL版)がこれ。
create function
distant(double precision, double precision, double precision, double precision)
returns
double precision
as
'select asin(sqrt(power((sin(radians(abs($1 - $3) * 0.5)) * 2), 2) + power((sin(radians(abs($2 - $4) * 0.5)) * 2), 2)) * 0.5) * 12756274;'
language sql

(始点の緯度、始点の経度、終点の緯度、終点の経度)を渡すと距離がm(メートル)で返ってきます。
多分計算式はあってるはず...多分ね
使ってみたい方はご自由にお使い下さい。
但し、自己責任でお願いします (^^;

もし間違いやもっと計算が簡単にできるよって情報をお持ちの方はコメントをお願いします。

またまた来ました!


以前UFJ銀行のフィッシング詐欺メールの話題を書きましたが、今度はヤフオクの次点詐欺メールが来ました! \(^O^)/

いや~怪しさ満点のメールですねぇ

まず、ヤフオクで使ってるメールは自分で持ってるドメインのメールアドレスを使ってるのでYahoo!メールにメールが来る事自体怪しすぎます。

そして「次点のあなたに買って欲しい」なんて書いてあるのに、私のメールアドレスはBccに入ってます。
私宛に送ってるのにBccって変でしょ~
きっと、その商品に入札していた人全員に一斉送信してるんでしょうね。

更に、落札者の一方的で身勝手なキャンセルに困ってるって書いておきながら、明後日から急な出張で2ヶ月家を空けるので早急に取引したいって、おまえもかなり身勝手やないかい!

ってな感じでした。
送信元のメールアドレス(ニフティーのWebメールでしたねぇ)でググってみると、次点詐欺注意リストが出てきました。
一瞬騙されそうになったけど、よくよく見れば怪しさ満点のメールなんで、皆さん気をつけましょう。

← 前のページ次のページ →