qmailの最近のブログ記事

SMTPへのトラフィックを制御してくれるというTOOLだそうです。

うちでは今shellで5分毎にゴリゴリやっているけど、
これが使えればもっとスマートにできそうですね。

solaris上のqmailで動くかは不明…。いぢってる時間がない(; ;)


オープンソースSPAM対策ソフト「SMTPGuard」をVAリナックスが公開
http://itpro.nikkeibp.co.jp/article/NEWS/20051108/224229/

smtpguard
http://flexguard.sourceforge.net/

qmailの場合、存在しないユーザー宛メールを大量に受け取ると、
CPU負荷が高くなり困ります。
qmail-scanner+clamdを使っていると、貧弱なサーバではたまったものではありません。

でもって
qmail-smtpdにvalidrcpttoパッチを当てる
http://www3.sympatico.ca/humungusfungus/code.html

validrcpttoファイルにユーザーを記述しておけば、リストにない宛先は
SMTPで弾いてくれる。リストのメンテナンスは面倒だけど、
宛先不明のスパム対策にはこれしかないみたい。

逆引きできないホストからのメールを遮断すべきかのqmailでの拒否方法です。
tcpserver+rblsmtpd+qmail-smtpdの起動スクリプトはいろいろ参考を探してもらうとして
たとえばこのようにtcpserverを'-H'無しで起動します。パラノイドモードまでするなら'-p'を入れる。
rblsmtpdの最後のオプションに-b -cを追加します。
tcpserver(ucspi-tcp)の参考文書
exec env - PATH="/var/qmail/bin:/usr/local/bin:$PATH" \
tcpserver -v -R -l0 -x /etc/tcp.smtp.cdb \
-u "$QMAILDUID" -g "$NOFILESGID" 0 smtp \
rblsmtpd \
-r relays.ordb.org
-r bl.spamcop.net \
-r list.dsbl.org \
-b -c qmail-smtpd 2>&1
tcprulesの最下行のallowを以下のようにします。
環境変数 $TCPREMOTEHOST が設定された接続に対してallowし、
環境変数 $TCPREMOTEHOST が設定されていない接続に対しては $RBLSMTPD にて、
処理を rblsmtpd に渡します。
=:allow
:allow,RBLSMTPD="Access denied. bad reverse DNS"
qmail-scannerを使っていれば、こんな
=:allow,QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl"
:allow,RBLSMTPD="Access denied. bad reverse DNS"
"Access denied. bad reverse DNS"だとエラー451(要求失敗)を返し
"-Access denied. bad reverse DNS"のように頭に'-'をつけると553(一発拒否)を返します

2.6.xからの変更点
Note for Users Upgrading to SpamAssassin 3.0.0

spamd で -aオプションがなくなったり、-mのデフォルトが5プロセスになったり

/etc/mail/spamassassin/local.cf の
rewrite_subject 1
subject_tag ****SPAM(_SCORE_)****
としていた記述が
rewrite_header Subject ****SPAM(_SCORE_)****
に変更されていたり

NFSを使用していない場合は
lock_method flock
の記述を追加することを強く推奨されています。

qmail-scanner-1.24 clamd利用のconfigure
# ./configure --spooldir /var/spool/qmailscan --qmaildir /var/qmail \
--bindir /var/qmail/bin --qmail-queue-binary /var/qmail/bin/qmail-queue \
 --admin postmaster --notify recips,admin --silent-viruses auto \
--lang ja_JP.EUC --debug 1 --unzip 0 --block-password-protected 0 \
--add-dscr-hdrs 0 --archive 0 --redundant yes --log-details syslog \
--log-crypto 0 --fix-mime 2  --ignore-eol-check 0 --scanners "clamdscan"
qmail-scanner-queue.plを編集
solarisでsyslogをとる
use Sys::Syslog qw(:DEFAULT setlogsock);
# setlogsock('unix');
setlogsock('inet');
ヘッダを追加する
my $descriptive_hdrs=1;
メール文字化け対策でqmail-injectにnkfをかます
# my $qmailinject = '/var/qmail/bin/qmail-inject';
my $qmailinject = '/usr/local/bin/nkf -j |/var/qmail/bin/qmail-inject';
--notify "recips,admin"としているが、送信者には返信しない
#  &email_sender("sender") if (&valid_virus_to_report($quarantine_description));
ReceivedのタイムスタンプをGMTにせず、ローカルタイムのJSTに
#    ($sec,$min,$hour,$mday,$mon,$year) = gmtime(time);
    $elapsed_time = tv_interval ($start_time, [gettimeofday]);
    $findate = POSIX::strftime( "%d %b ",$sec,$min,$hour,$mday,$mon,$year);
#    $findate .= sprintf "%02d %02d:%02d:%02d -0000", $year+1900, $hour, $min, $sec;
    $findate .= sprintf "%02d %02d:%02d:%02d +0900", $year+1900, $hour, $min, $sec;

Clam Antivirus 0.80にアップデート。

clamdの設定ファイルが clamav.conf からclamd.confに変更されていました。



いままでfreshclamでのログに"SECURITY WARNING: NO SUPPORT FOR DIGITAL SIGNATURES"なるエラーがでていたのを放置していたが、
libgmp3を入れてから、ClamAV を再構築したら解消した。

Clam Antivirus も0.72になっていたので、これもアップデートする。

clamdscan+clamdが動かないというという人はclamav.confでExampleをコメントアウトし忘れていないか
確認しましょう。

今日はqmail-scannerを1.22に上げた。

デフォルト使用がsuidperlからperl使用に変更されてる。
これでsolarisでsuidperl作成にも苦労しなくてもよくなった、、、かな。

スパムメールにしてもウィルスメールにしても、存在しない宛先へのメールにuser not foundの返信を返すとそのメール自体がスパムメールやウィルス添付メールになってしまうおそれがあります。

vpopmailのデフォルトではバウンスを返すようになっているので、削除するには .qmail-default を以下のようにします。

| [vpopmailのホーム]/bin/vdelivermail '' delete
qmailanalog-0.70
http://cr.yp.to/qmailanalog.html

参考:ツールを使った効率的なログ分析術
http://www.atmarkit.co.jp/flinux/rensai/qmail10/qmail10a.html

qmailanalogはqmailのログから統計情報を取得するツールです。

conf-ccとconf-ldのccをgccに変更
$ make
# su
# make setup check
multilogを利用した一日前の集計をメールにて通知するqmailanalogスクリプト

daemontoolsqlogtoolsが必要です。

currentから先日分のログのみ抽出し、yyyy-mm-dd.log形式で保存し
先日分の集計をqmailanalogにて処理し、メールにて通知します。

solarisのdateコマンドで一日前の日付を取得するには
TZ=JST+15 date '+%Y-%m-%d'
としています

日が変わった0:00以降に動くようにcrontabに登録する。
#!/bin/sh
MAILTO=[メールの送信先]
MAILFROM=[メール送信元]
PATH=/usr/local/qmailanalog/bin:/var/qmail/bin:/usr/local/bin:/usr/bin:$PATH
tmpdir=/tmp/qmail-cron.$$.$RANDOM
mkdir $tmpdir

DAYAGO=`env TZ=JST+15 date '+%Y-%m-%d'`

LOGDIR=/var/log/qmail

cat /var/log/qmail/current | tai64nlocal \
 | grep $DAYAGO > /var/log/qmail/$DAYAGO.log
  
cat /var/log/qmail/$DAYAGO.log | tai64n | awk '{$2="";$3="";print}' | tai64n2tai \
 | /usr/local/qmailanalog/bin/matchup >logfile 5>/dev/null


for ana in zoverall zddist zdeferrals zfailures zrhosts zsuids zrxdelay \
zsenders zrecipients zsuccesses; do
  echo "" >>result
  echo "-----------Result of $ana------------" >>result
  $ana 2>/dev/null >result
done
rm -f logfile

(echo "To: $MAILTO"
echo "From: $MAILFROM"
echo "Subject: mailstats for $DAYAGO"
echo ""
cat result )| qmail-inject -f $MAILFROM
rm -f result
rm -rf $tmpdir

このアーカイブについて

このページには、過去に書かれたブログ記事のうちqmailカテゴリに属しているものが含まれています。

前のカテゴリはotherです。

次のカテゴリはsolarisです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

ウェブページ

Powered by Movable Type 4.22-ja