先日、インターンシップに参加したのですが、その際に古いタワーサーバを200円で頂いたので、自宅サーバを立てました。URLは

http://bynatures.myhome.cx/wordpress

です。しばらくこちらのブログ(さくらインターネットのレンタルサーバをお借りしています)も残しておきますが、今後は上のURLのブログで色々なことを書いていきたいと思っています。

少し気を抜くと日にちがすっぽり空いてしまいますね...。

もう東京は梅雨に入りました。基本的にジメジメしてる方が好きだし、雨も好きなので個人的には好きな季節です。

最近は就職活動としてインターンシップのイベントに参加したりしているんですが、その傍ら、4月から少しずつ読んでるのは「日本人の歴史教科書」です。

歴史ものは結構好きなんですが、受験でも使わなかったし、中学も高校も何故か江戸時代から明治時代へちょっと入ったぐらいで終わってしまって、近代史はほとんど勉強していなかったんです。せっかくちょっと時間もあるし、のんびり読んでみようかなと思いました。

中身は、中学の歴史の教科書をちょっと編集して...という感じなので難しくないし、図も多いので楽しいです。友達がマジアカやっている傍らで見ていると、歴史ものは意外と解けたりします(笑)。今は、これから第一次世界大戦に入るところです。

また時間があるときに、アルバイトの話や研究の話もちょっとずつ書きたいと思います!週1を目標に...がんばります。^^;

SpamAssassinとQmail

| コメント(0) | トラックバック(0)

お久しぶりです、クズローです。卒論も終わり、無事大学院に進学できることになりました。最近はアルバイトのサーバ管理に精を出しています。卒論でだいぶ勤務していなかったので、新しいことがかなり多いのですが...思い立ったらすぐ動ける環境なので、とても魅力的です。

僕はそのアルバイトでは比較的メール関係の作業をすることが多いので、今回はSpamAssassinについて触れてみたいと思います。

SpamAssassin とは、サーバでよく使用されているスパムフィルタです。スパムフィルタは最近ではメーラ(MUA)に組み込まれていることも多く、サーバ側でスパム処理をしてしまうと重要なメールが誤判定されて消失してしまう可能性があるので、サーバで処理するのに反対な方もいます。しかしクライアントに大量にスパムメールが届いてしまう場合はやはりサーバ側で負担するのが理想だと思いますし、そのサーバに届くメールをすべて扱える点でも優れています。

SpamAssassin の基本動作はとてもシンプルです:

  • 「この値を超えたらスパムと判定する」という閾値(required_hit)を設定する
  • 届いたメールを解析し、そのメールの「スパムらしさ」としてスコアを算出する※1
  • スコアが閾値を超えた場合はスパムと判定する

ポイントは、スパムと判定してもヘッダやSubjectを弄るだけで、SpamAssassin は決してメールを捨てたりはしないということです。メールを捨てる処理を担うのは ProcmailQmail-Scanner です。例えば、閾値の2倍程度であればメールはサーバ側で破棄し、他のスパム判定されたメールの判断はクライアントに委ねる、という感じです。Assassin(暗殺者)という名前が付いてしまっているので、とても誤解しやすい気がします。。

この「メールの破棄」に関して、Qmail-Scanner をもう少し見てみましょう。Qmail-Scanner の設定(実行)ファイルは qmail-scanner-queue.pl という Perl のスクリプトです。このスクリプトを受信したメールに対して Qmail が実行するのですが、SpamAssassin の閾値の他にいくつかの閾値が用意されています:

  • sa-quarantine : SpamAssassin の required_hit + sa-quarantine の値を超えたメールはユーザに送信せず、特殊な処理をする(例えば特別なディレクトリへ保存したり、特定ユーザへ送信したりする)
  • sa-delete : required_hit + sa-delete の値を超えたメールはサーバから削除される

SpamAssassin の挙動しか知らないと、クライアントから「届くはずのメールがない。どうなっているんだ」とクレームが来る可能性があります。クライアントにメールサービスを提供していると、クライアントのメールを見るのも難しかったりするので、メールサーバの管理は一癖も二癖もあるようです。

※この算出法には非常に種類があります。静的にヘッダの解析を行ったり、送信元がRDBに登録されているかチェックしたり、今までサーバに届いたメールからベイズ判定したりもします。

OpenPNEを入れると、フッターに

  • OpenPNEとは
というリンクが表示され、OpenPNEの公式サイトへリンクが貼られています。少し調べたところ、2系の始めの頃と3系ならば、このフッターをいじれるようなのですが、2.14では管理画面からこのフッターをいじることができません。

どうなっているんだろう、と色々ファイルを探しまわったところ、以下のSQL文を発見。
$ grep 'http://www.openpne.jp/about/' -r . ./setup/sql/mysql40/install/install-2.14-insert_data.sql:
INSERT INTO `c_siteadmin` VALUES (NULL,'inc_page_footer_before','<a href=\"./?m=pc&amp;a=page_o_sns_kiyaku\" target=\"_blank\">利用規約</a> <a href=\"./?m=pc&amp;a=page_o_sns_privacy\" target=\"_blank\">プライバシーポリシー</a> <a href=\"http://www.openpne.jp/about/\" target=\"_blank\">OpenPNEとは</a>;',NOW());
どうやらセットアップ時にフッターはDBに追加されるようです。ということで、c_siteadminテーブルを少し弄って「OpenPNEとは」のリンクが削除出来ました。
このブログと写真サイト"By-Natures"(最近更新していません...すみません。)は、sakuraのレンタルサーバを借りて運営しているのですが、友人のsakuraの設定をした際にCGIが動かずにハマッてしまったのでメモしておきます。

プラン:さくらのマネージドサーバ
概要:共有サーバでは他ユーザもいるため、サーバのリソースをフルに活用することは出来ないが、1ユーザで占有することでそれが可能になるとのこと。ただし共有サーバと同じく、root権限は奪取出来ない。

ということで、基本的には共有サーバで設置するような間隔でCGIを設置すればいいのですが...どうにも動かない。試したのは次の簡単なPHPスクリプトです。
<?php
echo "Hello world!"
?>
ただのハローワールドですね。このスクリプトの権限は755や705と、sakuraのマニュアルに書いてある通りにしたのですが...Internal Server Error(500)が出て、うまく動いてくれません。

結論から言いますと、公開するファイルはwwwディレクトリ配下に設置しているのですが、このwwwディレクトリも755などに設定し、他人が書き込めないようにする必要がありました。占有サーバということで、sakuraの設定が悪いんじゃないか!?と疑って掛かっていて、さらにエラーログがユーザ権限的に見れないのでなかなか気づかなかったです。

これって共有も占有も、ApacheのsuExecを用いて実装してるんだと思うんですけど、/usr/bin/配下の各コマンドのパーミッションまで丁寧に分類されていましたし、ユーザにうまく住み分けさせるのは凄いなぁと感じました。

Contents

最近のコメント