LINUX自宅サーバ

お盆のスパムメール嵐

FedoraCore5+Postfixで構築しているメールサーバですが、現時点で親の取っているドメインなどを含めて5個以上ドメインが動いています。
親の使っているドメイン宛てのスパムメールが最も多いが、それでも1日に100件程度でここ1年以上推移していました。

そして、お盆の週12日からこのスパムメールが急増!
1日に2万件以上来るようになった。
もちろん、特殊なフィルタリングをサーバ側で行っていてスパムに関しては全てドロップできているので実害はない(親からのクレームもなし)のだが、かなり気持ち悪い。

普通、スパマーは1回のスパム送信は多くても数回のリトライしか行わない(リトライはリソースを食うので、何秒毎、何分毎などのリトライを送ろうとしている何万件というメールに対してやっていられるわけがない)。

それが、見てみると、1度に80回以上のリトライを繰り返している。
普通は善良なメールサーバであれば1時間に1回程度のリトライをしてくるわけだが、数時間、数分以内に100件くらいのリトライをしてくるというのは尋常ではない。
当然、宛先はドメインこそ合っているものの、アドレスは実在しないものばかり。

ひとまずどうすることもできないので様子を見ていたところ、週後半にかけて数千件、数百件、と落ち着いてきた。
日本のお盆を狙った海外勢!?

SquirrelMailで添付ファイルが「見つかりません」になる

SquirrelMailでWEBメールを使用している場合、添付ファイルを添付して送信するということは、サーバのディスクに添付ファイルをテンポラリファイルとして確保しておき、送信する。

一般的なOutlookExpressやThunderbirdなどはクライアントソフトなので自分のローカルPC内で添付ファイルを確保するわけで、そこらへんが根本的に異なる。

で、SquirrelMailで添付しようとして「見つかりません」のエラー。

エラーメッセージが不親切ってのはあるが、要するにサーバ側に一時ファイルが(テンポラリファイル)が書き込めないにも係らず、それを探そうとして「見つかりません」なわけだ。

もうここまで説明すれば原因は簡単。

サーバのディスクが一杯なのだ。

超簡単に書いているが、実は原因究明に3日かかりましたから!( ̄▽ ̄;)!!


パーティションを3つに分けているが、テンポラリファイルを格納するパーティションが100%になっていた!

で、なぜ100%なの!?と調べると、サーバのバックアップファイル(DBやファイルの指定したもの全て)が1日分で10GB以上、それが8世代。

いっぱいになるわけだ。。
しかし、なんでそんなにバックアップファイルが大きいのか?総容量に対してデータ自体はせいぜい20GB程度、しかもバックアップファイルは圧縮してあって、全ファイルをバックアップしているわけではないのに?

まだあまり調べてないが、とりあえずバックアップファイルは1世代分持っていれば十分、と判断してバックアップシェルを修正、ファイルを削除。

多分、おおよその見当はついている。MySQLのDB(恐らくWEBのアクセスログ)が相当やヴぁいことになっているにちげーねー。そのうち不要分を削除しよう・・・

メール送信フォームのセキュリティホール?

親の持っているHPの一つは誰かに頼んで作ってもらったらしいんですが、そのHPにはメール送信フォームがあって、どうもそれには重大なセキュリティホールがあるらしいということが分かった。

その送信フォームが年明け早々からスパムメールの踏み台になってしまい、大量メールを送信してしまっているっぽいのがメールのログとサーバの毎日送られてくるログから分かったのである。

フォームメール(PHPでコーディング)がメール送信を受け付けてしまい、PHPから実行されるので、実行ユーザはたちの悪いことにapacheとなり、apacheがメールを送信してしまうので、いくらメールサーバの不正中継対策をやっていてもどうしようもない。

More >

Postfix+SMTP-AUTHでメールをプロバイダに中継

サーバを置いている実家ではインターリンクというプロバイダを使っています。
Bフレッツ接続(Zoot)よくばりメール固定IP1個で月2,000円という安さのためです。

あと、サポートもなかなかいいです。メールでも返答が数分後に返ってきたりします。

また、固定IPでDNS逆引きオプション(MOOTサービス)を最近付けましたが、固定IPに対してDNS逆引きを行ってくれるプロバイダは少ないと思います。
DNS逆引きが設定されることで、固定IPに対してドメイン名が返ってくるので、正式な運用を行っているメールサーバ(≠スパムメール業者)として認識されたりする可能性が高くなり、メールサーバでは有利です。

さて、今回はこのインターリンク社のメールサーバにメールを中継させて相手に送る、という設定をやってみた。

なぜそんなことをするか?

More >

AOLのアドレス宛てにメールが届かない

サーバ関連の話です。

実家の親用にメールサーバを立ち上げて以来、いろいろメールサーバ関連では苦労してきています。他に類を見ない手間のかかりようです。

いろんな問題を克服はしてきましたが、ずっとよく分からなかった問題が。
実はもうかなり長い間、AOL宛てのメールがAOL側メールサーバで拒否されてしまう、というもの。

親の仕事の都合上、AOLの人宛てにメールを送れないのはまずい、と言われ続けながら、逃げてきましたが、やっと対策に乗り出してみました。

More >

ノートPC帰還

実家で約1年2ヶ月の間、FedoraCore3でサーバとして働いてくれていたMebiusが実家から郵送されてきました。
今となってはもう5年くらい前のノートPCでスペックもかなり悪いのに、よく1年以上もインターネット上の攻撃に耐えながら頑張ってくれたもんだ。(最後らへんはかなりよく落ちていたが。。)

今は新サーバにバトンタッチしているけど、スパムメールを1日500通以上をはじき、その他不正なSSH接続、FTP接続もあわせると1日に1000件以上の「拒否」を繰り返しているわけで、そういった「本来なら必要ない処理」(インターネットが安全だったらの話・・・)だけでも結構サーバ負荷を食うのです。
本来のサーバ処理に費やすリソースがそんなろくでもないことに使われているかと思うと、本当にインターネットっていうのは嫌な世界です。

実際、メールのログをtail -fで見ていると、Rejectのメッセージが次から次へと流れていきます。
たまに、本来受け取るべき正当なメールをはじいてしまうケースもなくはないので、シェルを組んで正当なメールサーバからのアクセスを抽出するようにしています。(そういうサーバは一定間隔でアクセスを繰り返すので抽出可能。不正なサーバは大抵数回までしかアクセスしてこない)
そのIPアドレスをホワイトリスト(許可リスト)に追加してやって、などをやったりしないと親がメールを使ってるので「送ったと言われたメールが届かないぞ!」なんて文句を言われたりします(^^;

話はそれましたが、役目を終えて帰還したMebiusは実験台(FC6?)として使うか、XPを戻してあげてもっと優しく使ってくれる人の元へ旅立たせるか、考えよう。。

x86_64版LinuxでFlashやJavaを見れるようにする(firefox)

実家サーバは実家に置いてあるので直接触ることはない。(なのでモニターも買ってない)。
が、sshによる接続でコマンド操作はできるし、vncを使えばGUIも使える。

GUIを使えるということは、Firefox2.0などのブラウザも利用可能。
今回前のエントリで、実家の環境のPC(WindowsXP機2台、うち1台無線LAN)からNW構成を改善したにも係わらず、Bフレッツの速度が5Mbpsしか出ていないということで、それなら、Netgearを経由していないLinuxサーバから速度計測をしてみたらどうか、とひらめいてやってみることにした。

大抵、回線の速度計測といえばブラウザからFlashやJavaを使った手法で測定サイトから実施する。

しかし、2006年10月31日現在、AMD64, EM64T などのx86_64システムで動くflashプラグインはない。このためx86_64システムのデフォルトのFireFoxではFlashを使ったwebページを閲覧できない。 x86_64システム上でもFlashを見られるようにするためには、i386(32ビット) モードのブラウザを使ってプラグインを動かす。

More >

Bフレッツが遅い(RT-200KI)

最近、ブログ更新ができてない。。

実はちょっとサーバの置いてある実家のNW周りの改善をやっていて、終わったらまとめて書こうと思っていたんだけど、次から次へといろいろ起きていて、とりあえず今起きている問題を書いてしまおうかと。(こういうのって書くとすぐ解決したりするしね)

まず、やっていること(やったこと)。
実家のNWはもともとこんな感じ。

[インターネット]
  |
[ONU]
  |
[RT-200KI]
  |
[GateLock X300] -[サーバ]
  |
[NetGear WGR614]
  |
親のPC×2台(1台は無線LAN)

※補足
 ONU:Bフレッツ回線終端装置
 RT-200KI:NTTからレンタルされたひかり電話対応ブロードバンドルータ
 GateLock X300:フレッツセーフティ対応のセキュリティルータ
 NetGear WGR614:無線LAN用ルータ

GateLockはX200のときは「セキュリティに問題あり」ということで廃止になったもの(セキュリティルータなのにセキュリティに問題ありって・・・)で、X300では大丈夫なはずだけど、そもそもスループットがMAX30Mbpsしか出ないらしく、しかもセキュリティ機能をONにするとMAXでも15Mbpsになってしまうとのこと。

■問題点
 ・インターネットが遅い
 ・GateLockがよく死ぬ(最近は2~3日に一度は落ちて親に電源入れ直ししてもらっていた)
 ・RT-200KIが実質意味をなしてない(ひかり電話専用になっている)
 ・GateLockはあまりいい噂を聞かない

サーバへのアタックが多いことや、絶対的な通信量が増加しているのもGateLockがいちいちセキュリティチェックを行うので負荷が膨大になっているのもよくダウンする原因でしょう。
そして、セキュリティルータを入れているのに母親のPCはウィルスに20個くらい感染していた!(セキュリティルータがあるのでウィルスソフトは入れていなかったらしい)
感染してしまってはウィルスソフトを導入する以外駆除できないので、導入してもらった。(PC2台とも)
これにより、GateLockは「不要」ということになり、撤去することになった。

もちろん、実家にわざわざ行って作業するのは大変なので、電話で実家の親父と話しながら手順を指示。
うまくいけば30分くらい電話で指示すればいける、という見込みはもろくも崩れ去り、結局トータル1時間半くらいの電話代を費やしてしまった。。

なんとか、サーバへのポート開放含め、作業終了した。

さて、Bフレッツの速度は・・・・?

あれ???????

何度試してもらっても5Mbpsがやっと。(上り、下りとも)
安定して5Mbps台です。

なんで?
親曰く、むしろGateLockの時のほうが17Mbpsとか出てたときもあるとのこと。

おかしい。

もちろん、PC側のMTU値やRWIN値もいろいろ試した。

それでもダメ。5Mbpsのまま。

Bフレッツのハイパーファミリータイプなので80Mbpsくらい出てもおかしくない。
(実際、自分の家も同じハイパーファミリーなのだが、85Mbpsは出てる)
無線LANじゃないほうのPCから試しても同じ。

NetGearがボトルネック?
自分のエントリでも書いてるし。
それともどこかで設定間違ってる?

こんな感じで、ハマり中。
誰か、私をたすけてぇぇぇぇ

Xoopsの移行

Xoopsで作ったサイトを2つほど運営(つっても半分閉鎖状態ですが)しているのですが、結局今回のサーバ移行で一番手間取ったのはこのXoopsの移行かなぁ。

まず、Xoops自体ここ半年以上触ってなかったので、「何だっけ?」というところから始まり、phpMyAdminでエクスポートして新サーバでインポートするものの、まず画面真っ白、そしてそれを解決しても文字化けやらで全然ダメ。

そもそも、XoopsはPHP5に正式に対応してない(昨年対応していなかったのは知っていたが、まさかいまだに対応していないとは思わなんだよ)し、MySQLもちゃんと動くバージョンは一体どれ?という状態。

新サーバではPHPは5.1.4、MySQLは5.0.22
なのではっきり言って絶望的?

旧サーバはEUCで、新サーバの文字コードはUTF-8にしてるのもいろいろややこしい原因だが、今回はどうしてもUTF-8にしたかったので無理がありながらもいろいろ強行突破中。。

もうXoopsで作ったサイトは見捨てようかとも思ったが、なんとか動くところまで持っていけた。

まず、XoopsをPHP5で動かすには:
php.iniのregister_long_arraysをonにする

次に文字化けに関しては:
MySQLのクライアント文字セットを明示的にMySQLサーバに通知する必要があります。現時点(2006/10)のXOOPSではこの機能がサポートされておらずXOOPSのソースコードを変更する必要があります。

DocumentRoot/xoops/class/database/mysqldatabase.php
のfunction connectのところに若干追記します。

function connect($selectdb = true)
{
if (XOOPS_DB_PCONNECT == 1) {
$this->conn = @mysql_pconnect(XOOPS_DB_HOST, XOOPS_DB_USER, XOOPS_DB_PASS);
} else {
$this->conn = @mysql_connect(XOOPS_DB_HOST, XOOPS_DB_USER, XOOPS_DB_PASS);
}

if (!$this->conn) {
$this->logger->addQuery(”, $this->error(), $this->errno());
return false;
}

if($selectdb != false){
if (!mysql_select_db(XOOPS_DB_NAME)) {
$this->logger->addQuery(”, $this->error(), $this->errno());
return false;
}
}
// MySql>=4.1 //////////////////////////////////////////////////////////////
mysql_query(“SET NAMES ujis”, $this->conn);
////////////////////////////////////////////////////////////////////////////
return true;
}

追記するのは、上記の最後の部分(以下参照)

// MySql>=4.1 //////////////////////////////////////////////////////////////
mysql_query(“SET NAMES ujis”, $this->conn);
////////////////////////////////////////////////////////////////////////////

今まで新旧両方のサーバを並行稼動させてましたが、これでようやく旧サーバは役目終了、ということになるかな。

DELLのPowerEdge SC430稼動開始

確か1ヶ月ほど前にこんなエントリを書きました。
DELL PowerEdge SC430 期待の新サーバが来た

もんのすごい、地道な設定作業がやっと終わり、先週土曜からサーバとして稼動開始しました。
1ヶ月弱もかかったよ(/・_・\)

More >