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つの工夫(?)がなされたようです。
- ある条件下では *today.vdb ファイルだけを再ロードする
- 全パターンファイル(*.vdb)を再ロードする場合も検査リクエストを保留しない
他社製品では当たり前の処理かもしれませんが、Dr.Web もようやく上記のような処理が出来るようになったんだなぁ… としみじみとしてしまいました。
明治北海道十勝スマートチーズ 10個セット
メールが来たので見ていたら タメせる!明治「明治北海道十勝スマートチーズ 10個セット」 があったので酒のつまみにもなるし… とサクッとお試し(有料です)を申込み。
チーズって、ワインと一緒に食べると止まらなくなるから危険なんだけどねw
解決:maildrop で転送時に Envelope-Sender を書き換える
時々、やりたくなって id:hiro-ueda:20080611:1213166082 とか id:hiro-ueda:20080615:1213505632 とかで挫折していた件ですが、必要に迫られそうな感じがしたので改めてググってみたら…
なので、メールを転送する時にenvelope sender、いわゆる送信元(Envelope-FromやSenderとも)を変更する事にしました。
http://www.tamashiro.org/?v=d-130eb6e2b53
if ( ! ( /^X-Spam-Level: \*{3,}/ || /^Subject: =\?koi8-r\?B\?/ ) )
{
cc "| /usr/sbin/sendmail -i -f 送信元メールアドレス ケータイのメールアドレス"
}
直接ケータイのメールアドレスを指定して転送させるのではなく、メールをsendmailに渡してケータイに送信させます。その際にsendmailの-fオプションで送信元のメールアドレス、つまりエラーメールの送信先とするメールアドレスを指定します。
なるほど! これで行けるのか… 助かりました m(__)m。
はまった ... " 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 とかで頑張れば取れなくないけど、そこまでしなくていいか。