- PR -

recordioでのsmtpのログの取り方

1
投稿者投稿内容
chikako
会議室デビュー日: 2004/06/01
投稿数: 11
投稿日時: 2004-06-01 14:29
よろしくお願い致します。

RedHat9でqmail-1.03を使用しています。

|
ppp0
RedHat9
eth0
|
Win2k

試行錯誤して漸く、
下記のようにしてdaemontoolをインストール・起動出来ました。
# mkdir -p /package
# chmod 1755 /package
# cd /package
# wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
# tar -zxvf daemontools-0.76.tar.gz
# cd admin/daemontools-0.76
# ./package/install
# tar zxvf daemontools-0.76.tar.gz

Redhat9 で、作るときには、このパッチが必要。
ftp://moni.csi.hu/pub/glibc-2.3.1/daemontools-0.76.errno.patch
から/package下にダウンロード

# cd /package
# patch -p0 < daemontools-0.76.errno.patch.txt
patching file daemontools-0.76/src/error.h

# cd daemontools-0.76
# su
# package/install

/serviceが無い場合には作成する
# mkdir /var/service
# chmod 755 /var/service

# wget http://www.emaillab.org/djb/daemontools/svscan
として起動スクリプトを/tmp下にダウンロード

# cd /etc/rc.d/init.d
# cp /tmp/svscan .
# chmod +x svscan
# chkconfig --add svscan

# mkdir -p /var/qmail/supervise/qmail-send
# chmod +t /var/qmail/supervise/qmail-send
# mkdir /var/qmail/supervise/qmail-send/log
# chown qmaill.nofiles /var/qmail/supervise/qmail-send/log
# ln -s /var/qmail/supervise/qmail-send /service/qmail

# mkdir /var/qmail/supervise/qmail-smtpd
# chmod +t /var/qmail/supervise/qmail-smtpd
# mkdir /var/qmail/supervise/qmail-smtpd/log
# chown qmaill.nofiles /var/qmail/supervise/qmail-smtpd/log

# mkdir /var/qmail/supervise/qmail-pop3d
# chmod +t /var/qmail/supervise/qmail-pop3d
# cd /var/qmail/supervise/qmail-pop3d


# ls /var/qmail/supervise/qmail-send
log/ supervise/
#ls /var/qmail/supervise/qmail-smtpd
log/ supervise/
# cd /var/qmail/supervise/qmail-send
# emacs -nw ./run
として

# cat ./run
#!/bin/sh -x
PATH=/var/qmail/bin:/usr/local/bin:/bin:/usr/bin
[ -f /var/qmail/rc ] || exit 0
# Start daemons.
echo "Starting qmail."
csh -cf '/var/qmail/rc &'

と作成する

# chmod 744 ./run
# cd ./log
# emacs -nw ./run
として

# cat ./run
#!/bin/sh -x
exec \\\\\\\\
setuidgid qmaill \\\\\\\\
multilog t ./main '-*' '+* status: *' =status

# chmod 744 ./run

# cd /var/qmail/supervise/qmail-pop3d/run
#!/bin/sh
PATH=/var/qmail/bin:/usr/local/bin:/bin:/usr/bin
echo 'qmail-pop3d starting.'
exec /usr/local/bin/tcpserver -x /etc/tcpserver/pop3d_rules.cdb 0 \\\\\\\\
pop-3 /var/qmail/bin/qmail-popup rh9.mine.nu /bin/checkpassword \\\\\\\\
/var/qmail/bin/qmail-pop3d Maildir 2>&1

# cd /var/qmail/supervise/qmail-send/run
#!/bin/sh
#
# qmail: /var/qmail
PATH=/var/qmail/bin:/usr/local/bin:/bin:/usr/bin
# Start daemons.
echo "Starting qmail."
exec qmail-start ./Maildir/

# cd /var/qmail/supervise/qmail-smtpd/run
#!/bin/sh
PATH=/var/qmail/bin:/usr/local/bin:/bin:/usr/bin
echo 'qmail-smtpd starting.'
QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl"
export QMAILQUEUE
QMAILDUID=`/usr/bin/id -u qmaild`
QMAILDGID=`/usr/bin/id -g qmaild`
exec /usr/local/bin/tcpserver -x /etc/tcpserver/smtpd_rules.cdb -v -u $QMAILDUID -g $QMAILDGID \\\\\\\\
0 smtp /var/qmail/bin/qmail-smtpd 2>&1

# chmod 744 ./run
# cd ./log
# emacs -nw ./run
# cat ./run
#!/bin/sh -x
exec \\\\\\\\
setuidgid smtplog \\\\\\\\
multilog t ./main '-*' '+* * status: *' =status
# chmod 744 ./run


としてdaemontoolを起動出来ました。

# svstat /var/service/* /var/service/*/log
/var/service/qmail-pop3d: up (pid 3007) 109 seconds
/var/service/qmail-send: up (pid 3011) 108 seconds
/var/service/qmail-smtpd: up (pid 3010) 109 seconds
/var/service/qmail-pop3d/log: up (pid 3008) 109 seconds
/var/service/qmail-send/log: up (pid 3009) 109 seconds
/var/service/qmail-smtpd/log: up (pid 3006) 109 seconds

http://www.emaillab.org/djb/daemontools/daemontools-howto.html
にあるように

# cat /root/log.sh
#!/bin/sh
exec \\\\\\\\
setuidgid smtplog \\\\\\\\
multilog t \\\\\\\\
-'* * > *' \\\\\\\\
-'* * < *' \\\\\\\\
s200000 \\\\\\\\
./main \\\\\\\\
-'*' \\\\\\\\
+'* * < HELO *' \\\\\\\\
+'* * < EHLO *' \\\\\\\\
+'* * < MAIL *' \\\\\\\\
+'* * < RCPT *' \\\\\\\\
+'* * < DATA*' \\\\\\\\
+'* * < QUIT*' \\\\\\\\
+'* * < RSET*' \\\\\\\\
+'* * < NOOP*' \\\\\\\\
+'* * > 1*' \\\\\\\\
+'* * > 2*' \\\\\\\\
+'* * > 3*' \\\\\\\\
+'* * > 4*' \\\\\\\\
+'* * > 5*' \\\\\\\\
s200000 \\\\\\\\
./tcp \\\\\\\\
-'*' \\\\\\\\
+'* * status: *' \\\\\\\\
=status

を作成してみましたがこれをどこに置けばいいんですかね?
尚、
/home/user/ucspi-tcp-0.88/recordio.c
/home/user/ucspi-tcp-0.88/recordio.o
/home/user/ucspi-tcp-0.88/recordio
にrecordioがあります。

「recordio を挟んで…」とありますが具体的にどうすればいいんでしょうか?

# cd /var/qmail/supervise/qmail-smtpd/run
#!/bin/sh
PATH=/var/qmail/bin:/usr/local/bin:/bin:/usr/bin
echo 'qmail-smtpd starting.'
QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl"
export QMAILQUEUE
QMAILDUID=`/usr/bin/id -u qmaild`
QMAILDGID=`/usr/bin/id -g qmaild`
exec /usr/local/bin/tcpserver -x /etc/tcpserver/smtpd_rules.cdb -v -u $QMAILDUID -g $QMAILDGID \\\\\\\\
0 smtp /home/user/ucspi-tcp-0.88/recordio /var/qmail/bin/qmail-smtpd 2>&1

として
# svc -dx /var/qmail/supservise/* /var/qmail/supervise/*/log

としても特に変化はありません。
(# tail -f /var/qmail/supervise/qmail-smtpd/log/main/current | tai64nlocal
を見ても特にログ内容が変化した所はないようです)

もしかして
# cat /var/qmail/supervise/qmail-smtpd/log/run
#!/bin/sh
exec env - PATH=/var/qmail/bin:/usr/local/bin:/bin:/usr/bin:/command \\\\\\\\
multilog t ./main '-*' '+* status: *' =status

に記述するんですかね。もしそうなら
「/home/user/ucspi-tcp-0.88/recordio」をどう記述したらいいんでしょうか?
anights
ぬし
会議室デビュー日: 2003/05/22
投稿数: 277
お住まい・勤務地: 東京
投稿日時: 2004-06-02 11:18
質問内容には関係ありませんが
/var/qmail/supervise/qmail-send/run
を違う形で2度作成していますがどちらなんでしょうか?
svscanを使用しているので後者だとは思いますが。てか思いたい。。。

それとcdコマンドとcatコマンドがごちゃまぜですね。
後は余計な情報が多すぎです。
”# cat /root/log.sh ”以降ぐらいでいいのでは?

・recordioについて
ucspi-tcpが正しくインストール出来たのであれば
(/usr/local/bin/tcpserverは使えるように見えますが)
/usr/local/bin/recordioを使いましょう。なんでhome下のを使うのか分かりません。
qmaildユーザでは/home/user/ucspi-tcp-0.88/recordioを
実行出来ないかもしれません。
ということでrecordioを呼び出す時のFullパスを変更して試して見て下さい。
挿入位置については当たりです。

以下、参考まで。
# cat /var/qmail/supervise/qmail-smtpd/run
#!/bin/sh
echo 'qmail-smtpd starting.'
QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl"
export QMAILQUEUE
QMAILDUID=`/usr/bin/id -u qmaild`
QMAILDGID=`/usr/bin/id -g qmaild`
exec /usr/local/bin/tcpserver -x /etc/tcpserver/smtpd_rules.cdb -v -u $QMAILDUID -g $QMAILDGID \
0 smtp /usr/local/bin/recordio /var/qmail/bin/qmail-smtpd 2>&1

・log.shについて
そのlog.shは/var/service/qmail-smtpd/log/runの内容です。
ただし、smtplogユーザはいないでしょうからqmaillユーザへ変更ですかね。

それと/var/service/qmail-smtpd/logには
mainとtcpのディレクトリが存在しなければならないのは分かってますか?


もし、一年越しであればがんばって下さい。
chikako
会議室デビュー日: 2004/06/01
投稿数: 11
投稿日時: 2004-06-10 23:17
遅くなりましてすいません。

有難うございます。
ご紹介いただいた方法で

# ls -l
合計 28
drwx------ 2 qmaill root 4096 4月 17 21:36 main/
-rwxr--r-- 1 root root 363 6月 7 22:28 run*
-rw-r--r-- 1 root root 127 3月 25 07:08 run.tmp
-rw-r--r-- 1 root root 364 6月 6 14:40 run~
-rw------- 1 qmaill root 1001 6月 8 12:48 status
drwx------ 2 root root 4096 6月 8 12:48 supervise/
drwx------ 2 qmaill root 4096 6月 8 12:48 tcp/

# ls -l tcp
合計 0
-rw-r--r-- 1 qmaill nofiles 0 6月 8 12:48 current
-rw------- 1 qmaill nofiles 0 6月 8 12:48 lock
-rw-r--r-- 1 qmaill nofiles 0 6月 8 12:48 state

となり、logが起動出来、
/var/qmail/supervise/qmail-smtpd/log/tcp/current
にログが取れました。

大変有難うございました。
1

スキルアップ/キャリアアップ(JOB@IT)