スポンサーサイト 

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

bindのセキュリティホール 

bindで CVE-2013-4854 が出ました。
「またかよ!」という気分ですが、まぁ、例年通りですね。運用している方々は頑張りましょう。
私個人としてはCentOS6のパッケージを更新したいんだけど、yum info bindしてみると最寄りのミラーではまだ対策版は出ていないっぽい…。某JAISTも確認したけど上がっていないし…。
うぉ、本家を見ると bind-9.8.2-0.17.rc1.el6_4.5 (末尾の"5"が部分だけ1上がっている)が出ていて今日の日付になっている。これが対策版だろう。ダウンロードしてrpm -Fvhしたら大丈夫だった。
ついでにyum updateしたらカーネルバージョンが上がったので再起動。

ということが昨日ありました。

SpamAssassinの調教 

前のエントリでSpamAssassinの初期設定をした。今回はSpamAssassinの調教をしたい。
何となく動作するようになったのだけれど、ここからが本番。調教しないと精度が上がらないのは仕方のないところ。SpamAssassin自体の設定も全くやっていないので色々といじれば役立つかもしれないし、Procmailの設定も同様。色々と調べないとね。

SPAM判定試験

spamassassin -t ~/Maildir/cur/1369893227.13759_1.(略)


SPAM学習のDB
SPAM学習のDBは以下にある。

~/.spamassassin/bayes_seen
~/.spamassassin/bayes_toks


SPAMの学習

非SPAMを学習させる
sa-learn --ham /path/to/mail/file
SPAMを学習させる
sa-learn --spam /path/to/spam/file


user_prefsの取得
http://www.flcl.org/~yoh/user_prefsを持ってきて ~/.spamassassin として保存してやる。これをやらないとどうやらSPAMを殆ど判定できない模様。
持ってきたuser_prefsはSPAM判定のためのルールの固まりで、SPAMの特長を列挙してそれぞれに得点を付けるような記述がされている。これだけでかなりいけるんじゃないでしょうか、調教とかしなくても。

様子を見よう。

SpamAssassinの初期設定をやってみる 

前のエントリでSpamAssassingをインストールしてみた訳だけれど、入っただけで動くように設定されていません。初期設定をやってみる。

SpamAssassinの設定はシステムデフォルト設定ファイルが /etc/mail/spamassas で、ユーザ設定ファイル $HOME/.spamassassin/user_prefs がそれを上書きするみたい。今回は気楽に user_prefs で設定を行う事にした。


とりあえず user_prefs は空。
行頭の'#'(シャープ)でコメントになる模様。

メールが来たらprocmailに食わせる
[~/.forward]

"|IFS=' ' && exec /usr/bin/procmail -f- || exit 75 #~/Maildir/"



spamassassinに処理させてSPAM判定ならspamディレクトリへ放り込む
[~/.procmailrc]

SHELL=/bin/bash
PATH=$HOME/bin:/usr/bin:/usr/local/bin
MAILDIR=$HOME/Maildir/
DEFAULT=$MAILDIR
LOGFILE=$HOME/tmp/procmail.log

:0fw:spamassassin.lock
# *!^X-Spam.*
| /usr/local/bin/spamassassin

//メールヘッダに「 X-Spam-Status: Yes 」の記述があれば .spam ディレクトリへ格納
//autolearn=spam の記述があれば問答無用にspamディレクトリへ。
:0H:
* ^X-Spam-Status: Yes
* ^X-Spam-Status:.*autolearn=spam
.spam/



これで初期設定は完了の模様。

テストすると以下のヘッダがSpamAssassinによって追加されているっぽい

X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on HOSTNAME
X-Spam-Level:
X-Spam-Status: No, score=0.0 required=5.0 tests=URIBL_BLOCKED autolearn=ham version=3.3.2



さて、次はSpamAssassinの調教方法を調べる必要がある。

SpamAssassinを入れてみる 

なんで今更SpamAssassinを入れるのかと言えば、ISPや携帯会社のSPAM対策が今一、今二、今三位に感じられてきたので、自前でやろうという気になったため。
きちんとベイズ学習させれば非常に精度良くなるはずなんだよね。

というわけでとりあえず入れて試してみてからどうやって本番で使っていくかを再度検討する予定。特に携帯からはK-9 Mailとかで普通にメールをやりとりできるので、キャリアメールも全部自前サーバのSpamAssassin経由にして良いんじゃないかな、と思っている。

ただ、自分は使ったことがこれまでにないので分からないことも多い。例えばSPAMが通常のメールとして通過してきた場合、またはその逆に通常のメールがSPAM判定された場合どうやって学習させれば良いのかその手順が分からない。調べながらやっていこう~


SpamAssassinのインストールと初期設定


必要な周辺ソフトの一括インストール

yum install spamassassin
rpm -e spamassassin



spamassassinのtarballを入手、展開

wget http://mirrors.go-part.com/apache//spamassassin/source/Mail-SpamAssassin-3.3.2.tar.gz
tar -zxf Mail-SpamAssassin-*.gz



日本語パッチを入手、適用

mkdir patch
cd patch
wget http://spamassassin.emaillab.jp/pub/ja-patch/sa3.3/spamassassin-3.3.2-ja-1.patch
cd ../Mail-SpamAssassin-3.3.2
patch -p1 ../patch/spamassassin-3.3.2-ja-1.patch



Makeとかしてインストール

perl Makefile.PL
make
make install



日本語パッチに必要な設定とかを行う
[/etc/mail/spamassassin/local.cf]

normalize_charset 1
loadplugin Mail::SpamAssassin::Plugin::Tokenizer::SimpleJA
loadplugin Mail::SpamAssassin::Plugin::Tokenizer::MeCab



なんやら必要なファイルを入れる

cd /etc/mail/spamassassin
wget http://spamassassin.emaillab.jp/pub/ja-patch/sa3.3/tokenizer.pre



ええい、めかぶも入れてしまえ。

めかぶのインストール

mkdir ../MeCab
cd ../MeCab
wget http://mecab.googlecode.com/files/mecab-0.996.tar.gz
tar -zxf mecab-0.996.tar.gz
cd mecab-0.996
./configure --with-charset=utf8
make
make check
make install



めかぶ辞書のインストール

mkdir ../../MeCab-ipadic
cd ../../MeCab-ipadic
wget http://mecab.googlecode.com/files/mecab-ipadic-2.7.0-20070801.tar.gz
tar -zxf mecab-ipadic-2.7.0-20070801.tar.gz
cd mecab-ipadic-2.7.0-20070801
./configure --with-charset=utf8
make
make install



MeCabのPerlバインディングmecab-perlインストール

cd ../..
mkdir MeCab-perl
cd MeCab-perl
wget http://mecab.googlecode.com/files/mecab-perl-0.996.tar.gz
tar -zxf mecab-perl-0.996.tar.gz
cd mecab-perl-0.996
perl Makefile.PL
make
make install



これでインストールは一通り終わりかな。次は初期設定だ。
次のエントリに続けてみる。

サーバ証明書更新 

サーバのSSL証明書が切れそうだとのメールがrootに届いた。

   ################# SSL Certificate Warning ################

   Certificate for hostname '***.***.***', in file (or by nickname):
   /etc/pki/tls/certs/localhost.crt

   The certificate needs to be renewed; this can be done
   using the 'genkey' program.

   Browsers will not be able to correctly connect to this
   web site using SSL until the certificate is renewed.

   ##########################################################
Generated by certwatch(1)


証明書を更新するための手順は以下の通り。

サーバー用秘密鍵作成

# cd /etc/pki/tls/certs
# openssl genrsa -out server.key -des3 2048
Generating RSA private key, 2048 bit long modulus
............................................+++
...................+++
e is 65537 (0x10001)
Enter pass phrase for server.key:
Verifying - Enter pass phrase for server.key:
#


パスフレーズを削除

# openssl rsa -in server.key -out server.key
Enter pass phrase for server.key:
writing RSA key
#


サーバー用公開鍵作成

# openssl req -new -key server.key -days 3650 -out server.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:
State or Province Name (full name) []:
Locality Name (eg, city) [Default City]:
Organization Name (eg, company) [Default Company Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:***.***.***
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
#


サーバー用証明書作成

# mkdir old
# cp -i localhost.crt old/localhost.crt.20130430
# openssl x509 -in server.csr -out localhost.crt -req -signkey server.key -days 3650
Signature ok
subject=/C=XX/L=Default City/O=Default Company Ltd/CN=***.***.***
Getting Private key
# chmod 644 localhost.crt server.csr server.key
# mkdir /etc/pki/tls/private/old
# cp -i /etc/pki/tls/private/localhost.key /etc/pki/tls/private/old/localhost.org
# mv -i server.key /etc/pki/tls/privte/localhost.key
#


HTTPDへ反映


# service httpd restart
Stopping httpd: [ OK ]
Starting httpd: [ OK ]
#


Sambaでプリンタ関係のエラーを抑止する 

Samba 3.5.10でログにCUPSなどのプリンタ関係のエラーがでていたので抑止してみた。
ログは以下のようなメッセージ。

"failed to retrieve printer list"
"Unable to connect to CUPS server localhost"



調べると、パッケージに印刷用のモジュールが含まれていて、かつ印刷設定が行われていない場合に出る不要なものらしい。smb.confで以下のように指定することで抑止できた。

[/etc/samba/smb.conf]

[global]
printing = bsd
(略)



最近のbindの設定ディレクティブがよく分からない。 

最近のbindの設定ディレクティブがよく分からない。

bindkeys-fileというディレクティブがあって、デフォルトで存在するファイルを指しているんだけど何をするものなのかよく分からない。というかきちんとした説明書きを見つけることができない。どうやらキャッシュDNSサーバでDNSSECを有効にしたときに、ルートDNSサーバからの応答を検証できるようにルートDNSサーバの公開鍵(的なもの)を指定するように見える。/etc/named.root.keyを指せば良いみたいだし。

ただ、きちんとしたディレクティブの説明が見つからないんだよねぇ...。ソースを展開してドキュメントをあされば良いのかな、面倒くさい。

bash補完のカスタマイズ 

bashでは[TAB]で補完が行われるが、この補完機能はプログラム可能らしい。「入門bash」の付録Dにて説明がある。

例えばgunzipを実行する時に、gunzipで解凍できるファイルだけを保管させたい場合には以下のようにしておくといいとのこと。(※CentOS6.2では、パッケージbash-completeがインストールされている事が必要で、インストールされていないと半端で不可解な挙動をするので注意。)

complete -A file -X '!*.@(Z|gz|tgz)' gunzip

こうしておくことで、*.Z、*.gz、*.tgzだけが補完候補にされるとのこと。

completeのオプションについては以下の通り。

-o OPTION    オプション
    default       補完仕様がマッチを全く生成しなかった場合に、readline のデフォルトの補完を用います。
    dirnames      補完仕様がマッチを全く生成しなかった場合に、ディレクトリ名を補完しようとします。
    filenames     補完仕様がファイル名を生成することを readline に伝え、readline がファイル名特有の処理(ディレクトリ名にスラッシュを加えたり、末尾の空白を削除したり、など)を行えるようにします。シェル関数と共に用いることを想定しています。
    nospace       ?

-A ACTION   アクションを指定する
    file        ファイルリストを補完する。
-X PATTERN  補完されないファイルのフィルタパターン。"!"は除外する。
            compgenに引数としてPATTERNを渡すとどのように補完されるかを確認できる。



Big Skyを見て、自分も使ってみることにした次第。perldoc-completeはgithub.comから入手。

.screenrc 

今の私の.screenrc。

# stop resize when screen is execed or attache
termcapinfo xterm 'is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l'
#
#
#maxwin 100000
#defencoding eucJP
defencoding utf-8
#
# ^U
#escape ^UU
escape ^U^U
#escape ^@^@
#escape oo
#escape ^@^@
#escape ^w^w
#escape
#escape ^1^1 not work
#
#
#backtick 0 0 0 ${HOME}/.screen/backtick.pl
#backtick 1 0 0 ${HOME}/src/perl/screen/backtick.pl
#backtick 0 0 0 /bin/hostname
#
#
#hardstatus always
#hardstatus on
#hardstatus off
#hardstatus alwayslastline
#hardstatus alwayslastline "%w"
hardstatus alwayslastline "[%02c] %`%-w%{=b bw}%n %t%{-}%+w"
#hardstatus alwayslastline "%H %`%-w%{=b bw}%n %t%{-}%+w"
#hardstatus on
#hardstatus alwayslastline
#hardstatus string "%{.bW}%-w%{.rW}%n %t%{-}%+w %=%{..G} %H %{..Y} %m/%d %C%a "
#
#DUST
#hardstatus alwayslastline I%wI
#hardstatus alwayslastline "[%02c] %`%-w%{=b bw}%n %t%{-}%+w %0"
#
#
#
#
# command memo
#
# :encoding {eucJP|utf-8|sjis}
#logfile /home/hagiwara/tmp/app/screen/logfile%Y%m%d%c.%n
logfile /home/takuro/tmp/app/screen/logfile%Y%m%d%c.%n
deflog on
#
#
defscrollback 20000
#defscrollback 200000 # need many memory!


さくらのVPS/アップグレード 

さくらのVPSで、今CentOS 5.7を使っているのだけど、これをCentOS 6.xにしたい。アップグレード出来るのだろうか? それとも構築し直し?

少し検索で調べてみたのだけれど、データを引き継いでアップグレードする方法はなさそう。まぁ、そうだよね。
ファイルのバックアップをしてからOSの再インストールを行うことにするか。

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。