Dr.Web for Unix ver. 6 以降でエラーが出にくくなった

久しぶり過ぎて はてな ダイアリーの書き方をほとんど忘れてますが、皆様、お元気でしょうか?

さてタイトルの通りなのですが、Dr.Web for Unix の ver. 6 にそろそろ入れ替えないと… な状況のサーバをウチの若手が対応してくれました。その際に気づいたことがあります。

顕著なのはメールサーバなのですが、ver. 5 まではパターンの更新処理後に以下のようなメールが管理者宛に届くことが多々ありました。

メールシステム管理者様

以下のメッセージはアンチウイルスによって検査できないオブジェクトが
含まれていましたが、配送はされております:

送信者   = anonymous@xxx.example.jp
受信者   = drweb@xxx.example.jp
件 名   = Cron /opt/drweb/update.pl

メッセージは以下のレコード名でアーカイブに保存されました:
drweb/drweb.quarantine.fbblQi

実際にはパターンファイルの更新後の再ロード処理に時間が掛かり、デフォルトの 30秒で再ロードし切れなかった(検査処理を再開できなかった)際のエラー通知であり、メールは再送されたりキューから再配送されたり、で問題ないのですが、決して良い状態ではありませんでした。

で、これが ver. 6 では来なくなりました! で、ログを見てみたところ以下の 2つの工夫(?)がなされたようです。

  1. ある条件下では *today.vdb ファイルだけを再ロードする
  2. 全パターンファイル(*.vdb)を再ロードする場合も検査リクエストを保留しない

他社製品では当たり前の処理かもしれませんが、Dr.Web もようやく上記のような処理が出来るようになったんだなぁ… としみじみとしてしまいました。

明治北海道十勝スマートチーズ 10個セット

メールが来たので見ていたら タメせる!明治「明治北海道十勝スマートチーズ 10個セット」 があったので酒のつまみにもなるし… とサクッとお試し(有料です)を申込み。

チーズって、ワインと一緒に食べると止まらなくなるから危険なんだけどねw

解決:maildrop で転送時に Envelope-Sender を書き換える


時々、やりたくなって id:hiro-ueda:20080611:1213166082 とか id:hiro-ueda:20080615:1213505632 とかで挫折していた件ですが、必要に迫られそうな感じがしたので改めてググってみたら…

なので、メールを転送する時にenvelope sender、いわゆる送信元(Envelope-FromやSenderとも)を変更する事にしました。
if ( ! ( /^X-Spam-Level: \*{3,}/ || /^Subject: =\?koi8-r\?B\?/ ) )
{
cc "| /usr/sbin/sendmail -i -f 送信元メールアドレス ケータイのメールアドレス"
}
直接ケータイのメールアドレスを指定して転送させるのではなく、メールをsendmailに渡してケータイに送信させます。その際にsendmailの-fオプションで送信元のメールアドレス、つまりエラーメールの送信先とするメールアドレスを指定します。

http://www.tamashiro.org/?v=d-130eb6e2b53

なるほど! これで行けるのか… 助かりました m(__)m。

トリスハイボール 2缶セット、当たった〜

モラタメで『トリスハイボール』の”モラえる”に応募していたら、「ハイボール届いたよ!」という嫁からのメールが来ました。「そんなの応募してたかなぁ〜?」と思ったのですが、単に忘れていただけでしたw

2缶セットで、普通のハイボールとジンジャー味のハイボールなのですが、先にジンジャーを飲みました。これ、マジ旨いっす! ウイスキー嫌いの嫁も味見して「これなら飲める」と言うくらいなので、女性向けのヒット商品になるんじゃないでしょうか?

最近は『銀だこ』が会社のそばにできたので、ハイボールを飲んでみよう!という気になっていたのですが、ジンジャーは合わせ技の妙ですね :)。

はまった ... " sh: ruby command not found"

webistrano 1.5 を導入していてはまりました orz。webistrano 自体は動くのですが、いざ deploy しようとすると production.log に

sh: ruby command not found

というエラーが出て一向に進みません。いろいろググった結果、app/models/deployment.rb の中にこんなコードがあるそうな。

system("sh -c \"cd #{RAILS_ROOT} && ruby script/runner -e #{RAILS_ENV} ' deployment = Deployment.find(#{self.id});
 deployment.prompt_config = #{self.prompt_config.inspect.gsub('"', '\"')} ;

この sh -c の中で呼ばれている ruby のパスが見つからない、ということらしい(--;。面倒だったので ruby のフルパスに書き換えてしまいました。

kickstart for CentOS 5.6

うーむ、まだ詰めが必要だがとりあえずメモ。

install
text
cmdline
skipx
url --url http://ftp.iij.ad.jp/pub/linux/centos/5.6/os/x86_64
lang en_US.UTF-8
keyboard jp106
network --device eth0 --bootproto dhcp --hostname foo.example.jp
rootpw --iscrypted xxxxxxxxxxxxxxxxxxxxxxxx
user --name=hiro-ueda --password=xxxxxxxx --groups=wheel
firewall --enabled --port=22:tcp
authconfig --enableshadow --enablemd5
selinux --disabled
timezone Asia/Tokyo

zerombr
bootloader --location=mbr --driveorder=sda
clearpart --initlabel --all --drives=sda
part /boot --fstype ext3 --size=100 --ondisk=sda
part pv.2 --size=0 --grow --ondisk=sda
volgroup VolGroup00 --pesize=32768 pv.2
logvol / --fstype ext3 --name=LogVol00 --vgname=VolGroup00 --size=1024 --grow
logvol swap --fstype swap --name=LogVol01 --vgname=VolGroup00 --size=512 --grow --maxsize=1024

repo --name=addons --baseurl=http://ftp.iij.ad.jp/pub/linux/centos/5.6/addons
repo --name=centosplus --baseurl=http://ftp.iij.ad.jp/pub/linux/centos/5.6/centosplus
repo --name=contrib --baseurl=http://ftp.iij.ad.jp/pub/linux/centos/5.6/contrib
repo --name=extras --baseurl=http://ftp.iij.ad.jp/pub/linux/centos/5.6/extras
repo --name=updates --baseurl=http://ftp.iij.ad.jp/pub/linux/centos/5.6/updates
repo --name=epel --baseurl=http://ftp.jaist.ac.jp/pub/Linux/Fedora/epel/5/x86_64/

reboot --eject

services --disabled acpid,anacron,atd,autofs,bluetooth,firstboot,gpm,haldaemon,ip6tables,iscsi,iscsid,kudzu,mcstrans,mdmonitor,messagebus,netfs,nfslock,pcscd,portmap,restorecond,rpcgssd,rpcidmapd,sendmail,syslog,xfs,yum-updatesd,sdpd,hidd,hcid
services --enabled anacron,cpuspeed,crond,iptables,irqbalance,lvm2-monitor,network,ntpd,postfix,rawdevices,rsyslog,sshd


%packages
epel-release
rsyslog
postfix
ntp

%post
exec < /dev/tty3 > /dev/tty3
chvt 3
(
echo
echo "################################"
echo "# Running Post Configuration   #"
echo "################################"
/usr/bin/yum -y update
) 2>&1 | /usr/bin/tee /root/anaconda-post.log
chvt 1

post-commit フックスクリプト

あまり深く考えずに書いたらこうなった。

#!/bin/sh
export LANG=ja_JP.utf-8

REPOS="$1"
REV="$2"

SVN="/opt/CollabNet_Subversion/bin/svn"
NKF="/usr/local/bin/nkf"
SENDMAIL="/usr/sbin/sendmail"

TMPFILE=/tmp/post-commit.$$
BASEPATH="/var/svn-repos/"
BASEURL="http://foo.example.jp/repos"
PREV=`expr ${2} - 1`
REPO=`echo ${REPOS} | sed -e "s#${BASEPATH}##g"`
URL="${BASEURL}/${REPO}"

TO="hiro-ueda@example.jp"
FROM="hiro-ueda@example.jp"

exec 2>&1
exec 1>${TMPFILE}

CleanUp(){
  rm -f ${TMPFILE}
  exit $1
}

trap 'CleanUp' 1 2 3 5 15

echo "From: ${FROM}"
echo "To: ${TO}"
echo 'Subject: =?ISO-2022-JP?B?GyRCJWolXSU4JUglahsoQg==?='
echo " '${REPO}' =?ISO-2022-JP?B?GyRCJCw5OT83JDUkbCReJDckPxsoQg==?="
echo "Content-Type: text/plain; charset=iso-2022-jp"
echo "MIME-Version: 1.0"
echo
echo "リポジトリ ${REPO} が更新され、rev. ${REV} になりました。" | sed -e "s#${BASEPATH}##g"

echo
echo "チェックインのログ:"
${SVN} log -r ${REV} ${URL} | sed -e "s#${BASEURL}##g"

echo
echo "追加(A)・変更(M)・削除(D)されたファイル・ディレクトリ:"
echo "------------------------------------------------------------------------"
${SVN} diff --summarize  -r ${PREV}:${REV} ${URL} | sed -e "s#${BASEURL}/##g"
echo "------------------------------------------------------------------------"

cat ${TMPFILE} | ${NKF} -Wjm0 | ${SENDMAIL} -t -f${FROM}

rm -f ${TMPFILE}

CleanUp 0

post-commit の引数がリポジトリのパスとリビジョン番号だけとは思わなかったなぁ。コミットしたユーザ名くらいは取れるのかと思ったんだが… svn log とかで頑張れば取れなくないけど、そこまでしなくていいか。