2009年11月12日木曜日

qmail + vpopmail + sophos anti virus + spamassassin + ezmlm + ezmlm-idx+ qmail-scanner + tcpserver + checkpasswd

今はもっといい方法があるかも

qmail + vpopmail + sophos anti virus + spamassassin + ezmlm + ezmlm-idx
+ qmail-scanner + tcpserver + checkpasswd

ご覧のとおり長い作業が必要です。

install qmail-1.03

tar zxvf qmail-1.03.tar.gz
cd qmail-1.03

大規模配信用patchの適用
patch < ../big-concurrency.patch

error.hの書き換え

>extern int errno;
#include %lt;errno.h>

○qmailユーザーの作成
groupadd nofiles
useradd -g nofiles -d /var/qmail/alias -s /bin/true alias
useradd -g nofiles -d /var/qmail -s /bin/true qmaild
useradd -g nofiles -d /var/qmail -s /bin/true qmaill
useradd -g nofiles -d /var/qmail -s /bin/true qmailp
groupadd qmail
useradd -g qmail -d /var/qmail -s /bin/true qmailq
useradd -g qmail -d /var/qmail -s /bin/true qmailr
useradd -g qmail -d /var/qmail -s /bin/true qmails

○ローカルタイム関連のパッチを当てる
cd qmail-1.03
patch -p1 < ../qmail-date-localtime.patch

○make setup check

○config-fastで設定
[root@server qmail-1.03]# ./config-fast server.sample.com
Your fully qualified host name is server.sample.com.
Putting server.sample.com into control/me...
Putting sample.com into control/defaultdomain...
Putting sample.com into control/plusdomain...
Putting server.sample.com into control/locals...
Putting server.sample.com into control/rcpthosts...
Now qmail will refuse to accept SMTP messages except to server.sample.com.
Make sure to change rcpthosts if you add hosts to locals or virtualdomains!

○大規模配信用設定
vi /var/qmail/control/concurrencylocal
vi /var/qmail/control/concurrencyremote


○管理者用アドレスの設定
#cd /var/qmail/alias
# echo "hoge@sample.com" > .qmail-postmaster
# echo "hoge@sample.com" > .qmail-mailer-daemon
# echo "hoge@sample.com" > .qmail-root
# chmod 644 .qmail-postmaster .qmail-mailer-daemon .qmail-root

○sendmailの置き換え
#cd /usr/sbin
# mv sendmail sendmail.orig
# ln -s /var/qmail/bin/sendmail sendmail
# ls -l sendmail
lrwxrwxrwx 1 root root 23 Sep 7 15:17 sendmail -> /var/qmail/bin/sendmail

○qmailの起動
cp qmail-1.03/home /var/qmail/rc
sh /var/qmail/rc &

「./Mailbox」は「./Maildir/」に。「./Maildir/」の末尾の「/」はdirであることを示す
ために必要。
止めるときには、qmail-sendプロセスをkill

○checkpasswordの導入
# tar zxvf checkpassword-0.90.tar.gz
error.hの書き換え
>extern int errno;
#include

# cd checkpassword-0.90
# make setup check



○tcpserverの導入
# tar zxvf ucspi-tcp-0.88.tar.gz
# cd ucspi-tcp-0.88
error.hの書き換え
>extern int errno;
#include
# make setup check

○pop3,smtpようのアクセスデータベースの作成

-----------/etc/tcp.pop3-----------------start
:allow
-----------/etc/tcp.pop3-----------------end
/usr/local/bin/tcprules /etc/tcp.pop3.cdb /etc/tcp.pop3.tmp < /etc/tcp.pop3

-----------/etc/tcp.smtp-----------------start
192.168.1.:allow,RELAYCLIENT=""
127.:allow,RELAYCLIENT=""
XXX.YYY.ZZZ.64-71:allow,RELAYCLIENT=""
:allow
-----------/etc/tcp.smtp-----------------end
/usr/local/bin/tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp

○tcpserverのもとでのpop3,smtp各サービスの起動
二つともchmod a+x
-----------------/var/qmail/start_pop3---------------------start
#!/bin/sh

/usr/local/bin/tcpserver -v -x /etc/tcp.pop3.cdb \
-R -H 0 pop3 /var/qmail/bin/qmail-popup \
server.sample.com \
/bin/checkpassword /var/qmail/bin/qmail-pop3d \
Maildir 2>&1 \
|/var/qmail/bin/splogger pop3d 3 &
-----------------/var/qmail/start_pop3---------------------end


-----------------/var/qmail/start_smtp---------------------start
#!/bin/sh

#qmail main program "kill qmail-send.pid"
QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue"
export QMAILQUEUE
/bin/csh -cf /var/qmail/rc &


/usr/local/bin/tcpserver -v -x /etc/tcp.smtp.cdb \
-R -H -u 505 -g 504 0 smtp \
/var/qmail/bin/qmail-smtpd 2>&1 \
|/var/qmail/bin/splogger smtp 3 &
-----------------/var/qmail/start_smtp---------------------end

○Qmail-Scannerの導入
前提条件
・qmail
・perl
・Time::HiRes
・DB_File
・reformime (maildropに含まれる)
・unzip
・Sys::Syslog
・TNEF

・maildropの導入
#tar jxvf maildrop-1.8.1.tar.bz2
#cd maildrop-1.8.1
#./configure
#make
#make install

・qmailへのパッチ
#cd qmail-1.03
#patch -p1 < ../qmailqueue-patch
#make setup check

○これはつかわない
・sophos anti virusのインストール
#tar xvf linux.intel.libc6.glibc.2.2.tar
#cd sav-install/
#./install.sh -ni

・spammassassinのインストール
うちには既に入っていたので、一応update
#yum update spammassassin
groupadd spamd
useradd -g spamd spamd
/etc/sysconfig/spamassassinの書き換え
SPAMDOPTIONS="-d -c -m5 -H /home/spamd -u spamd"


・qmail-scanner本体のインストール
# groupadd qscand
# useradd -g qscand -s /bin/false qscand
# tar zxvf qmail-scanner-1.25.tgz
# cd qmail-scanner-1.25
#./configure --install --add-dscr-hdrs yes --admin postmaster
# /var/qmail/bin/qmail-scanner-queue.pl -g

・qmail-scannerのラッパーの導入
# cd qmail-scanner-1.25/contrib
# make install
# cd /var/qmail/bin
# chmod 0755 qmail-scanner-queue.pl

・qmail-scanner-queue.pl スクリプトの
先頭を
#!/usr/bin/perl
にして「-T」を取る。

・テスト
# cd /usr/local/src/qmail-scanner-1.25/contrib
# ./test_installation.sh -doit

○vpopmailのインストール
# groupadd -g 89 vchkpw
# useradd -u 89 -g vchkpw -d /home/vpopmail -m -s /bin/bash vpopmail
# tar zxvf vpopmail-5.4.10.tar.gz
# ./configure --enable-clear-passwd=n \
--enable-tcpserver-file=/home/vpopmail/etc/tcp.smtp \
--enable-relay-clear-minutes=40 \
--enable-roaming-users=y \
--enable-qmail-ext=y \
--enable-domainquotas

vpopmail 5.4.10
Current settings
---------------------------------------

vpopmail directory = /home/vpopmail
uid = 89
gid = 89
roaming users = ON --enable-roaming-users
tcpserver file = /home/vpopmail/etc/tcp.smtp
open_smtp file = /home/vpopmail/etc/open-smtp
rebuild tcpserver file = ON --enable-rebuild-tcpserver-file (default)
password learning = OFF --disable-learn-passwords (default)
md5 passwords = ON --enable-md5-passwords (default)
file locking = ON --enable-file-locking (default)
vdelivermail fsync = OFF --disable-file-sync (default)
make seekable = ON --enable-make-seekable (default)
clear passwd = OFF --disable-clear-passwd
user dir hashing = ON --enable-users-big-dir (default)
address extensions = ON --enable-qmail-ext
ip alias = OFF --disable-ip-alias-domains (default)
domain quotas = ON --enable-domainquotas
auth module = cdb --enable-auth-module=cdb (default)
auth inc = -Icdb
auth lib =
system passwords = OFF --disable-passwd (default)
pop syslog = show only failed attempts
--enable-logging=e (default)
auth logging = ON --enable-auth-logging (default)


#make
#make install-strip

・起動スクリプトの変更
----------------/var/qmail/start_pop3--------------start
#!/bin/sh

/usr/local/bin/tcpserver -v -x /etc/tcp.pop3.cdb \
-R -H 0 pop3 /var/qmail/bin/qmail-popup \
server.sample.com \
/home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d \
Maildir 2>&1 \
|/var/qmail/bin/splogger pop3d 3 &
----------------/var/qmail/start_pop3--------------end


----------------/var/qmail/start_smtp--------------start
#!/bin/sh

#qmail main program "kill qmail-send.pid"
QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue"
export QMAILQUEUE
/bin/csh -cf /var/qmail/rc &


/usr/local/bin/tcpserver -v -x /home/vpopmail/etc/tcp.smtp.cdb \
-R -H -u 505 -g 504 0 smtp \
/var/qmail/bin/qmail-smtpd 2>&1 \
|/var/qmail/bin/splogger smtp 3 &
----------------/var/qmail/start_smtp--------------end



・pop before smtpのデータ削除用プログラムのcron登録
40 * * * * /home/vpopmail/bin/clearopensmtp 2>&1 > /dev/null


・vpopmailの管理
domainの追加(rootで)
#/home/vpopmail/bin/vadddomain sample.com
userの追加(root,vpopmailいずれかで)
$ /home/vpopmail/bin/vadduser hoga@sample.com password_string



○spamの学習
sa-learn --spam /home/vpopmail/domains/sample.com/spamregist/Maildir/new/
sa-learn --ham /home/vpopmail/domains/sample.com/spamdelete/Maildir/new/


○SPAM、HAMのそれぞれの登録用アドレスを作成し
セット
[root@green ~]# cat spam.sh
#!/bin/sh
/usr/bin/sa-learn -u spamd --spam /home/vpopmail/domains/sample.com/spamregist/Maildir/new/
/usr/bin/sa-learn -u spamd --ham /home/vpopmail/domains/sample.com/spamdelete/Maildir/new/
/bin/rm -f /home/vpopmail/domains/sample.com/spamregist/Maildir/new/*
/bin/rm -f /home/vpopmail/domains/sample.com/spamdelete/Maildir/new/*



○ezmlm-idx
tar zxvf ezmlm-0.53.tar.gz
tar zxvf ezmlm-idx-0.40.tar.gz
cd ../ezmlm-idx-0.40
mv -f ./* ../ezmlm-0.53/
cd ../ezmlm-0.53
patch < idx.patch
vi error.h > #inlcude
make
make man
make setup



pgpool 縮退運転からの復旧 --pg_dumpallを使ったバージョン--

○事前準備
・portなどから、運転しているものと停止しているものを確認(メモ必須)
・psql dbname -> show pool_status;を行い状態確認

下記の例は
/etc/rc.d/init.d/postgresql
が停止していたため復旧作業をおこなったDB(port 5432)
/etc/rc.d/init.d/postgresql2
が生きていたDB(port 5431)

#su - postgres
$pg_dumpall -p 5431 -o -c >dumpall5431.out
$exit
#pgpool stop;
#/etc/rc.d/init.d/postgresql2 stop;
#/etc/rc.d/init.d/postgresql start
#su - postgres
$psql -p 5432 -e template1 < dumpall5431.out
$exit
#/etc/rc.d/init.d/postgresql2 start

注)
・pg_dumpall
-o oidまで取得(DBを完全に一致させる)
-c 最初にDBのdropをつける(つまり上書き設定)
・psql
-e echo コマンド
template1 dummyのDB(上書きされる)

全ての作業はなるたけすみやかに行われるべし