2005/03/19(土)qmail-scannerインストール時に遭遇した問題
2005/03/18 25:00
なんか色々あり過ぎて、整理し切れていない。引っかかったところを中心に覚えている限りでメモしておく。作業ログ流れで、通常インストール手順とかぶるところもあり、いい加減なところもあり。
qmail-scannerインストールに関する多くのドキュメントでは、suidperlのパーミッションを変更するように書いているが、debianの場合suidperlはperlへのシンボリックリンクに過ぎない。よってパーミッション設定は不要。弄ると多分perlが動かなくなる。
(×:動かなくなった悪例)
# chmod 4711 /usr/bin/suidperlPerl CGIが全滅した。
# chmod 755 /usr/bin/suidperlで書き戻し。
<qmail-scanner.plの設置等はすでに終わっているとして>
qmail-scannerのsrcフォルダから、
# contrib/test_installation.sh -doit4通のテストメールのうち1通目(通常メール)だけは送られてくるが、2通目でエラーを出して止まってしまう。エラーは以下の通り。
Sending eicar test virus - should be caught by perlscanner module... qmail-inject: fatal: qq temporary problem (#4.3.0) Bad error. qmail-inject diedチェックすべきログは、/var/spool/qmailscan/qmail-queue.logと/var/log/mail.err。
原因としてはclamavが動いていないか、メールデータにアクセス失敗している可能性が高い。
/var/spool/qmailscan/qmail-queue.logを覗くと、
/var/spool/qmailscan/tmp/debian111060900649323497: Access denied. ERRORがたくさん出ている。アクセス権問題であるので、
/etc/clamav/clamd.conf
User clamavを
User qscandに変更。
clamavを再起動しようとすると、
# /etc/init.d/clamav-daemon restartpsで確認しても存在していない。立ち上がっていないようである。
/var/log/clamav/clamav.logを見ると、
Sat Mar 12 18:05:27 2005 -> ERROR: Socket file /var/run/clamav/clamd.ctl could n ot be bound: Permission denied今度はclamavの一時ファイルにアクセスできなくなってしまったようだ。これはパーミッションを弄ってやれば良い。
# chgrp qscand /var/run/clamav # chmod 775 /var/run/clamavclamavの実行ディレクトリグループのみをqscandに変えてパーミッションを775にしてやる。若干荒技になるが、でも777よりはましだろう。
再び再起動
# /etc/init.d/clamav-daemon restart立ち上がった。
# contrib/test_installation.sh -doit4通送信中、2と3(ウイルス入り)が配信されなくなった(1はノーマル、4はスパム。recipsオプションが無かったので配信されなくなった)。しかしこの状態では外部からの通常メールが配信されないことが発覚。以下次項に続く。
(注:この問題はswap再設定によって再現性が無くなった可能性があります)
qmail-scannerインストールの過程で、テスト時に躓いた問題。結論はメモリ問題だが、エラーメッセージが特殊なのでメモ。
<qmail-scanner.plの設置等はすでに終わっているとして>
外部からウイルスなどが含まれない通常のメールを送っても配信されない。QMAILQUEUEの設定を切り替えて、qmail-scanner.plを介さずqmail-queueに渡すように設定する。
QMAILQUEUE="/var/qmail/bin/qmail-queue" export QMAILQUEUEと、きちんと動く(QMAILQUEUEを使っている以外は基本のqmailの挙動と同じ、もちろんウイルスはそのまま)ので、QMAILQUEUEがいけないわけではないらしい。うーん、qmail-scanner-queue.plのどっかで躓いている。
/var/log/mail.errを見ると、
Mar 14 01:38:51 debian X-Qmail-Scanner-1.25: [debian11107319314933436] cannot open /var/spool/qmailscan/quarantine-attachments.db - No such file or directoryもちろん、ファイルは存在している。最初はパーミッション問題かと思ったが、実はメモリ確保が不足している問題。つまずいたところでたまたま出たエラーがNo such~ということのようだ。下記サイトなどを眺めていてやっと分かった。
http://slashdot.jp/journal.pl?op=display&uid=779&id=150799
http://sourceforge.net/mailarchive/message.php?msg_id=6806272
http://qmail-scanner.sourceforge.net/FAQ.php
メモリ確保にはqmailの起動スクリプトのulimit値を上げてやる。
/etc/init.d/qmail
53c53 < ulimit -v 8192 --- > ulimit -v 10240いくつが最適値なのかはちょっと分からない。
#swapが原因だったのか再現性が無くなったようなので、現在ulimitを8192に戻して運用中。
2005/03/19(土)CPANを使ってみる
2005/03/19 5:00
[1]CPANの基本設定
CPANをインストール
# perl -MCPAN -e shellインストール手順は盲目的に http://www.kuri3.net/modules/bwiki/?SecureMailに従うことにする。
初回起動なので設定を聞かれので、全部yes,Enter連発で通すが以下2箇所だけ変更。
Parameters for the 'make install' command? Typical frequently used setting: UNINST=1 to always uninstall potentially conflicting files Your choice: [] UNINST=1
(1) <a HREF="ftp://ftp.dti.ad.jp/pub/lang/CPAN/">ftp://ftp.dti.ad.jp/pub/lang/CPAN/</a> (2) <a HREF="ftp://ftp.jaist.ac.jp/pub/lang/perl/CPAN/">ftp://ftp.jaist.ac.jp/pub/lang/perl/CPAN/</a> (3) <a HREF="ftp://ftp.kddilabs.jp/CPAN/">ftp://ftp.kddilabs.jp/CPAN/</a> (4) <a HREF="ftp://ftp.ring.gr.jp/pub/lang/perl/CPAN/">ftp://ftp.ring.gr.jp/pub/lang/perl/CPAN/</a> (5) <a HREF="ftp://ftp.u-aizu.ac.jp/pub/CPAN">ftp://ftp.u-aizu.ac.jp/pub/CPAN</a> (6) <a HREF="http://ftp.cpan.jp/" TARGET=_top>http://ftp.cpan.jp/</a> Select as many URLs as you like (by number), put them on one line, separated by blanks, e.g. '1 4 5' [] 2 4 5 6む、ftpにアクセスできない。そういえば、このマシンだとPassive FTPに設定しないとFTPは動いてくれないのだった。
[2]passive FTPに設定する
CPAN上で動く、LWPやNet::FTPでpassive FTPを動かすようにするには環境変数FTP_PASSIVEの設定が必要。
環境変数FTP_PASSIVE=1をセット。とりあえず、/home/urara/.bash_profileに書くことにする。
19a20,21 > export FTP_PASSIVE=1 >CPANの起動時に設定したいなら、
# perl -MCPAN -e '$ENV{FTP_PASSIVE} = 1; shell'その他、passive FTP関係の設定を詰めておく。
wgetをpassive FTPで使うために、/etc/wgetrcのpassive_ftpオプション変更
42c42 < #passive_ftp = off --- > passive_ftp = onlynxをpassive FTPで使うために、/etc/lynx.cfgのFTP_PASSIVEオプション変更
3154c3154 < #FTP_PASSIVE:FALSE --- > FTP_PASSIVE:TRUEftpコマンドは-pオプションをつけるか、pftpコマンドで起動すればpassive FTPになるようだ。
今のところ必要ではないが、CPAN上でconfをいじってやる。
cpan> o conf ftp /usr/bin/pftp[3]qmail-scannerに必要なモジュールをインストール
さて、 http://www.kuri3.net/modules/bwiki/?SecureMailに従って必要なモジュールを全部つっこむことにする。で、あれこれインストール。
ところが、
BerkeleyDB,IP::Country::Fast,Pod::Usage
がうまく入らない…… うーん、
BerkeleyDBインストール時のエラー
# : ./not_there/__db_lock.share: そのようなファイルやディレクトリはありません t/env..........FAILED test 10と思ったら、後日やり直したところIP::Country::Fast,Pod::Usageに関してはきちんと入った。
ちゃんと入らない原因は、
(1)perl本体もCPANで入れなければいけない
(2)少なくともモジュール類はCPANで全部入れ直さなきゃいけない
(3)単に一部パッケージの依存関係が解決していない
どれだろうか。
CPANだと、/usr/local/以下に入ってしまうのでその関係だろうか(debianだとデフォルトは/usr/bin/perlなどになる)。時間もないのでここで断念。Perlは考えどこだなあ。あっちこっちのディレクトリに分散しちゃってるよ……
[参考サイト]
http://www.fuji.sakura.ne.jp/~yada/talk2000/perl.shtml
http://homepage3.nifty.com/hippo2000/perltips/CPAN.htm
http://tech.bayashi.net/svr/doc/wget.html
http://x68000.q-e-d.net/~68user/net/ext-module.html