#!/bin/csh -f ################################################## ## あなたの環境に合わせましょう。 ## WORK は作業ディレクトリーです。 set WORK=/home/あなた/TCP ; ################################################ ###################################### ## /var/qmail/control/virtualdomains から ## 定義されている正しいアドレスを取り出し ## vgoodmail.data を初期化してあらたに書き込む。 ## vbadmail.data はすべて小文字データである。 ## 基本を小文字アドレスで考えているので、大文字の ## badrcpttoの設定は badrcptto.manual にて設定すべき。 ###################################### cd $WORK ; set DOMAIN=`cut -f 1 -d : /var/qmail/control/virtualdomains` ; set VMATCH=`cut -f 2 -d : /var/qmail/control/virtualdomains` ; ## touch $WORK/tmp.data ; touch $WORK/tmp.data2 ; set i = "1" ; while ($i <= $#DOMAIN) cd /var/qmail/virtual/$VMATCH[$i]; ls .qmail-* | sed 's/\.qmail-//g' > $WORK/tmp.data ; foreach person (`cat $WORK/tmp.data`) echo $person@$DOMAIN[$i] >> $WORK/tmp.data2 ; end @ i++ end ############################ cd $WORK ; mv $WORK/tmp.data2 $WORK/vgoodmail.data ; rm $WORK/tmp.data ; ############################ ### SA ディレクトリーを作る。 ######################### if (! -d $WORK/SA) then mkdir $WORK/SA endif ## touch $WORK/SA/emptyfile rm $WORK/SA/* ## ## vgoodmail.data 内のアドレスをファイル名として ## SA 内に作る。 foreach sfadd (`cat $WORK/vgoodmail.data`) touch $WORK/SA/$sfadd end ################################################## ## /var/log/tcpserver.log から address を取り出す ################################################### cut -f 1 -d : /var/qmail/control/virtualdomains > $WORK/domains.data ; foreach domain (`cat $WORK/domains.data`) # nawk に注意 ## $5 ---> $6に変えた。理由はログの吐き出しが変わった? # /usr/bin/grep Accept /var/log/tcpserver.log | nawk '{print $5}' | grep $domain >> $WORK/tmp.data ; /usr/bin/grep Accept /var/log/tcpserver.log | nawk '{print $6}' | grep $domain >> $WORK/tmp.data ; end sort $WORK/tmp.data | uniq > $WORK/tmp.data2 ; rm $WORK/tmp.data ; cat $WORK/tmp.data2 | cut -f 2 -d : > $WORK/vmail.data.all2 ; ## 抽出したアドレスを、心配だから小文字化する cat $WORK/vmail.data.all2 | tr '[A-Z]' '[a-z]' > $WORK/vmail.data.all ; rm $WORK/tmp.data2 ; rm $WORK/vmail.data.all2 ; ##################################################### ## vmail.data.all から badrcptto を取り出す ##################################################### foreach person (`cat $WORK/vmail.data.all`) if (! -e $WORK/SA/$person) then echo $person >> $WORK/vbadmail.data ; endif end sort $WORK/vbadmail.data | uniq > $WORK/tmp.data ; mv $WORK/tmp.data $WORK/vbadmail.data ; ###エラー処理 foreach vdomains (`cat /var/qmail/control/rcpthosts`) grep "@$vdomains" $WORK/vbadmail.data >> $WORK/tmp.data; end mv $WORK/tmp.data $WORK/vbadmail.data ; ########################## #rm vgoodmail.data ; rm domains.data ; rm vmail.data.all ; ########################## exit ;