dovecotのディレクトリ形式
先日、Debian/wheezy でのパッケージ更新で、dovecot が 2.1.7-6 に なったら、imap のディレクトリが見えなくなった。
一旦は、バージョンを古くもどして対応させていたけど、 改めて設定を確認。当初、サブフォルダだけが見えなくなったので、 サブフォルダの区切り文字が変更になったかと思い、 "separator = ."とかを試したけど、相変わらずダメだった。
よくよく試したら、肝心のホームディレクトリ形式の mail_location が mbox形式が指定されていた。
(( /etc/dovecot/conf.d/10-mail.conf )) # mail_location = mbox:~/mail:INBOX=/var/mail/%u mail_location = maildir:~/Maildir
今までは imapd は一般的に Maildir 形式で設定ファイルが 書いてあったんだろうけど、 他の MUA のデフォルトに合わせて、設定ファイルが mbox 形式標準に変更されていただけみたい。
逆に言うなら、今まで気にしたことがなかったてことが、浅はかってことか…
あけおめでNTP設定を見直す
あけおめPOSTをしようとしたら、1分ほど出遅れた。 Windowsマシンが1分時計がずれていた。 ちゃんと設定していたつもりだったけど、Windows7は、w32tm コマンドで設定するのか…
Debianサーバ側をNTP問い合わせに返答できるようにする (( /etc/ntp.conf )) restrict 192.168.X.0 mask 255.255.255.0 nomodify notrap
Windows側で、NTPを参照するために、管理者状態になったうえで、 NTPサーバの登録を行う。
(( Windows/7 )) 管理者状態でcmdを起動 [Start]-[cmd.exe]-[Ctrl+Shift+Enter]
NTPサーバを設定する。 > w32tm /config /update \ /manualpeerlist:"192.168.X.Y ntp.ttn.ne.jp" NTP同期を強制的にかける > w32tm /resync
dovecotのフォルダが見えなくなる
Debianのunstableで使っているけど、今朝 aptitude safe-upgrade したら、 dovecot-core,dovecot-imapd,dovecot-pop3d が更新され、 2.1.7-2 → 2.1.7-6 となった。
ただ、これにより IMAP の受信トレイは読めるものの、 他のフォルダが見えなくなった。別途原因究明したいけど、 ひとまず見れないと困るメールなどもあるし、特にこだわりも ないから、dovecot-1.2.15-7 / stable に落とす。
といっても、パッケージ構成も dovecot-common を使うようなので、 aptitude install dovecot-imapd/stable しても、うまくダウングレード できない。しかたがないので、
# aptitude purge dovecot-core dovecot-imapd dovecot-pop3d # aptitude install dovecot-common/stable dovecot-imapd/stable dovecot-pop3d/stable
を実行する。2.1.7-6 では、認証キーの保存場所なども変わったようだし、 機能の削除などもあったようだが、それらが原因かな。
mod_pagespeedを入れてみた…
Webサーバの高速化のためにGoogleが開発している mod_pagespeed を試してみた。 詳しくは、紹介記事 を見てもらうとして、 基本的に、CSSやJavaScriptの実行順序に伴う速度低下や、画像表示の低下を防ぐために、 様々なデータに変換しながら送り出してくれる機能。 "aptitude search mod-pagespeed"しても出てこないし、もう少し待とうかと思ったけど、 *.deb なパッケージが提供されているので、自宅サイトに入れてみた。
# wget https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-beta_current_amd64.deb # dpkg -i mod-pagespeed-*.deb # /etc/init.d/apache2
といっても、ページに埋め込んだCSS,JavaScriptなんて movable-type が生成した わずかな部分だし、速度向上はするのだろうか? 実際試して、自宅サイト表示させてみたけど、"いつもどおり"としか言いようがない。 ページ表示の際の、画像読み込みタイミングでレイアウトがピョコピョコ移動するのが無く 表示されて速いじゃん…と高速化した気分がする。 だけど、改めて"a2dismod pagespeed;/etc/init.d/apache2 restart"してから試したけど、 やっぱり違いはわかんない…
ただし、mod-pagespeed は、サーバ側で送出するデータに変更を加える訳だから、 サーバの処理負荷としては重くなる。ひとまず、このまま放置で変化を見てみよう。
早々にエラー出たじゃん
そのまま経過観察…と思ってたけど、munin のグラフを見ようとしたら、 早々に以下のようなエラーメッセージ。どうもJavaScriptの文法エラー。 試しに、"a2dismod pagespeed"したら普通に表示できたので、 原因は mod-pagespeed に間違い無い。

サーバのX関係の設定が改善
自宅サーバの出力はVGAとHDMIが付いていたけど、VGAは解像度が上がらず、HDMIはサブディスプレイ設定しかできず、あまり活用できていなかった。サーバだしそれでも良かったけどね。
でも改めて設定を見直しにチャレンジ。今までは、Xは/etc/X11/xorg.conf無しの自動設定で立ち上げていた。しかしサブディスプレイの設定を見直すにあたり、Xorg -config で xorg.conf を生成させた。すると今までサブディスプレイのミラー設定などで解像度が上げられない問題も解決。HDMIが1920×1080で使え、地デジテレビでサーバ画面が見れるようにできた。
さらにこの効果なのか、リモートデスクトップのxrdpが上手く立ち上がらないトラブルも、特に設定を変えていないのに解消。
これで、windowsパソコンが子どもに取られても、サーバ触れる。
ipsetを使って国別のFireWall設定
Web記事を探していたら、国別のFireWallでのブロックで ipset というものが使える との情報から、試してみた。 ipsetを使った理由は、iptables に、別物管理したい国別ルールを入れたくなかったため。
ちなみに、ipdeny から取得した CIDR なIPv4なアドレスブロック数は、以下のようになった。 ロシアが多いのは納得だけど、インターネットの普及のイメージとして中国≒インド≒韓国 ぐらいの感じを抱いていたけど、中国のアドレスブロックの数はインド・韓国の3倍。 人口の影響かな?後発出遅れで細切れアドレスになったのかな….
$ wc -l *.zone 2635 cn.zone 602 id.zone 706 in.zone 659 kr.zone 6520 ru.zone 388 tw.zone 11510 合計
また、mergecidr.pl によって、隣接CIDRをマージさせてみたけど、 元々の11510件が、併合で9255件に減らすことができた(20%減)。
mergecidr.pl
#!/usr/bin/perl my %net = () ; while( <> ) { if ( /^(\d+)\.(\d+)\.(\d+)\.(\d+)\/(\d+)$/ ) { my $ip,$bt; ($ip,$bt) = ( ($1 << 24) + ($2 << 16) + ($3 << 8) + $4 , $5 ) ; $net{$ip} = $bt ; # printf( "# %08x/%02d\n" , $ip , $bt ) ; } } my $count = 1 ; while( $count > 0 ) { my $lip = 0 ; my $lbt = 0 ; $count = 0 ; foreach my $ip ( sort { $a <=> $b } keys %net ) { my $bt = $net{$ip} ; if ( $bt > 0 ) { if ( $lbt == $bt && $bt > 1 ) { # printf( "%08x/%02d\n" , $ip , $bt ) ; my $dbt = $bt - 1 ; my $mask = (((1 << $dbt) - 1) << (32 - $dbt)) ; if ( ($ip & $mask) == ($lip & $mask) ) { $count++ ; undef $net{$lip} ; undef $net{$ip} ; $net{$ip & $mask} = $dbt ; #printf( "%08x/%08x/%02d\n" , # ($ip & $mask) , $mask , $dbt ) ; } } $lip = $ip ; $lbt = $bt ; } } } foreach my $ip ( sort {$a <=> $b } keys %net ) { my $bt = $net{$ip} ; if ( $bt > 0 ) { printf( "%d.%d.%d.%d/%d\n" , (($ip >> 24) & 0xff) , (($ip >> 16) & 0xff) , (($ip >> 8) & 0xff) , ( $ip & 0xff) , $bt ) ; } }
geoipdeny.sh
参考サイトのスクリプトをほぼ、そのまま借用。
DIR="/usr/local/etc/geoipdeny" ZONEURL="http://www.ipdeny.com/ipblocks/data/countries" # download zonefile for GEO in cn.zone kr.zone ru.zone tw.zone id.zone in.zone do /usr/bin/wget -q -O - "$ZONEURL/$GEO" \ | /bin/grep -v "^#|^$" > $DIR/$GEO done /usr/sbin/ipset destroy GEOIPDENY > /dev/null 2>&1 /usr/sbin/ipset create GEOIPDENY hash:net for IP in ` $DIR/mergecidr.pl $DIR/*.zone ` do /usr/sbin/ipset add GEOIPDENY $IP done /usr/sbin/ipset save GEOIPDENY > $DIR/geoipdeny.store /usr/sbin/ipset destroy GEOIPDENY
fermの設定に登録
自宅のFirewallの設定には、iptablesな設定を、ブロック的にまとめて記載できる、 ferm というのを使っているので、その設定の中に、上記でできた ipset を参照させる。
(( 設定ファイルの先頭に )) @hook post "/usr/sbin/ipset destroy GEOIPDENY" ; @hook pre "/bin/cat /usr/local/etc/geoipdeny/geoipdeny.store | /usr/sbin/ipset restore" ; @hook flush "/usr/sbin/ipset destroy GEOIPDENY" ; (( Firewallのブラックリストな設定部分に )) mod set set GEOIPDENY ( src dst ) REJECT ;
次は動作確認。
# geoiplookup www.baidu.cn GeoIP Country Edition: CN, China # ipset test GEOIPDENY www.baidu.cn 220.181.111.147 is in set GEOIPDENY. # w3m http://www.baidu.ch これがなぜか接続成功するんだよな....
ということで、まだなにかオカシイ?
# export http_proxy=http://中国のOpenProxy:xxxx # w3m http://tsaitoh.net/ Connection Refused...
おお、ちゃんと拒否られるな….
自宅からだと、間に透過PROXYでも入っているのかな…
NetatalkでTimeMachineを久々に運用
Mountain Lionへのアップグレードも終わり、新しい状態をバックアップと思ったけど、 TimeMachineの設定がはずれてる。 そういえば、以前Netatalkを運用したとき、TimeMachine が容量MAXまで 使い切るため、HDDが簡単に埋まるので運用を止めていたんだった。
改めて、バックアップを取ろうとしたら、 "Something wrong with the volume's CNID DB, using temporary CNID DB instead…" とのエラーメッセージが出て、動かない。このため、改めて Netatalk の設定を確認する。 まずは、以前のファイルとの不整合が考えられるので、Netatalkのディレクトリを 完全にまっさらに消して、あらためて以下の設定を行う。 TimeMachineが最大容量まで使うため、volsizelimit にて、100GB に制限しておく。
(( /etc/netatalk/AppleVolumes.default )) /path.../MB "AppleBackupMB" volsizelimit:100000 ¥ options:usedots,upriv,tm allow:@home
courier-imapが接続できなくなった
自宅サーバ宛に届いたメールの確認のために、 courier-imap + courier-imap-ssl を動かし、 自宅以外でも、imap-ssl経由でメールの確認などができていた。
しかし、なぜか今朝から、imap,imap-ssl の接続が出来ないと、 Thunderbirdが文句を言う。 imapプロセスの再起動などもしてみたけど、効果なし。 パッケージ更新の影響が考えられるので、stable パッケージに してみたりしたけど、効果無し。
色々調べたけど、よく解らない。そのうち、Dovecot なる imap サーバソフトの記事が沢山ひっかかるので、 何も考えず、”aptitude install dovecot-imapd”にて、 courier-imap を捨てる….
nagios-pluginのnegateを使う
ルータにWZR-HP-G300NHを使っていて、出先からのsshのloginやァイルコピーのために、 ルータのVPNサーバの機能を使っている。 しかし、知らぬ間にパスワード総当たり攻撃などでクラックされたら、 筒抜けになるのは怖い。
そこで、VPNが使われたら携帯に警告メールを出したい。 最初、arpalert で監視すればいいと思ったけど、ルータ経由で入れるようになるんだから、 検知できるはずがない。 その代わりに、nagios で検出を考えたけど、どうすればいいのか?
WZR-HP-G300NHでは、"Internet/LAN"→"PPTPサーバ"→"拡張設定"→"サーバIPアドレス" にて、手動設定のアドレスを書き込んである。 そして、VPN未接続時に、このアドレスのpingチェックをすればいい。 ただし、pingが通らないのが通常状態で、pingが通ると"侵入の可能性あり"。
そこで、nagiosの設定は、negate を使う。
(( /etc/nagios-plugin/config/host-down.cfg )) # 'check-host-down' command definition define command{ command_name check-host-down command_line /usr/lib/nagios/plugins/negate /usr/lib/nagios/plugins/check_ping -H '$HOSTADDRESS$' -w 50,100% -c 50,100% -p 1 } (( /etc/nagios3/conf.d/localnet_nagios2.cfg )) define host{ use generic-host host_name router-vpn alias router-vpn address 192.168.XX.1 check_command check-host-down }