- PR -

qmailの起動スクリプトがうまく動作しない

投稿者投稿内容
amatoto
常連さん
会議室デビュー日: 2004/08/02
投稿数: 30
投稿日時: 2004-08-02 03:30
はじめまして。
こちらの連載の記事を読みながらqmailのサーバーを設定しています。
「第1回 qmailによるSMTPサーバの構築」までは問題なく動作が
チェックできましたが、「第2回 POP/IMAPサーバの構築と不正中継対策」で
2ページの/bin/checkpasswordインストール後のスクリプト修正後、
qmail起動の動作がおかしくなりました。
具体的には、/etc/init.d/qmail start を実行すると、
starting qmail.
[1] 11644
tcpserver: status: 0/40

ここまでがコンソールで出力された後、プロンプトに処理が戻りません。
システム起動時に自動起動設定にすると、starting qmailのまま止まってしまいます。

/var/log/messageには、該当する時刻には以下のログが残っていました。

Aug 2 03:24:26 ns smtpd: 1091384666.227428 tcpserver: status: 0/40

qmailをstopさせたあと、pop3, smtpそれぞれのポートをtelnetでアクセスしましたが
問題ありませんでした。
この場合、どの設定を疑うべきでしょうか?

インストールした環境は、RedHat Enterprise Linux WS3.0です。
綾瀬
ぬし
会議室デビュー日: 2002/07/31
投稿数: 393
お住まい・勤務地: どっちも3階
投稿日時: 2004-08-02 09:36
こんにちは。

現状ではちょっと情報が少ないので回答しにくいですね。
よろしければ書き換え後の起動スクリプトを提示してみてください。
たぶん記述ミスがありそうな気がするのですが。。
amatoto
常連さん
会議室デビュー日: 2004/08/02
投稿数: 30
投稿日時: 2004-08-02 16:28
綾瀬さん、早速のご連絡ありがとうございます。
以下にスクリプトを引用しました。
qmaildのUIDとnofileのGIDは確認済みです。
(第1回の起動スクリプトの時点で正常に動きました。)
よろしくお願いします。



------------------以下、スクリプトになります----------------------

# qmail: /var/qmail
PATH=/var/qmail/bin:/usr/local/bin:/bin:/usr/bin

[ -f /var/qmail/rc ] || exit 0

case "$1" in
start)
# Start daemons.
echo "Starting qmail."
csh -cf '/var/qmail/rc &'
tcpserver -v -u [503] -g [504] -x /etc/tcp.smtp.cdb \
0 smtp /var/qmail/bin/qmail-smtpd 2>&1 | /var/qmail/bin/splogger smtpd 3 &
tcpserver -v 0 pop3 /var/qmail/bin/qmail-popup xx.xxxx.com /bin/checkpassword \
/var/qmail/bin/qmail-pop3d Maildir 2>&1 \
| /var/qmail/bin/splogger pop3d 3 &
echo
touch /var/lock/qmail
;;
stop)
# Stop daemons.
echo "Shutting down qmail."
PID=`/bin/ps -aefw | grep qmail | awk '{print $2}'`
if [ ! -z "$PID" ] ; then
/bin/kill ${PID} 1> /dev/null 2>&1
fi
echo
rm -f /var/lock/qmail
;;
*)
echo "Usage: S99qmail {start|stop}"
exit 1
esac

exit 0
NeXT
大ベテラン
会議室デビュー日: 2004/04/06
投稿数: 215
お住まい・勤務地: 江戸
投稿日時: 2004-08-02 17:39

option の括弧[] は不要ではないですか。
tcpserver -v -u [503] -g [504]

tcpserver -v -u 503 -g 504

と記述したらどうでしょうか。
http://www.emaillab.org/djb/tcpserver/index.html
あたりも参考になるかもしれません。
amatoto
常連さん
会議室デビュー日: 2004/08/02
投稿数: 30
投稿日時: 2004-08-02 22:55
NeXTさん、ご指摘ありがとうございます。
早速確認してみました。

> option の括弧[] は不要ではないですか。
> cpserver -v -u [503] -g [504]
> を
> tcpserver -v -u 503 -g 504
>
> と記述したらどうでしょうか。

カッコを外してみましたが、結果は変化なし。。。でした。

ご指摘のURLも確認してみます。
amatoto
常連さん
会議室デビュー日: 2004/08/02
投稿数: 30
投稿日時: 2004-08-03 01:58
経過報告です。

# /etc/init.d/qmail start
Starting qmail.
[1] 1288
tcpserver: status: 0/40

この状態でプロンプトに処理が戻らない状況は変化ありません。
ただ、telnet接続にて、pop3, smtpそれぞれのポートにlocalhost上で
アクセスをしてみたところ、smtpについては起動しているようです。

# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost (127.0.0.1).
Escape character is '^]'.
220 mail.xxxx.com ESMTP


# telnet localhost 110
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused

ちなみに、RedHat Enterprise WS3.0(Pentium4 2.4Ghz)だけでなく、
PowerPC(G3 300Mhz)上で動作しているVineLinux2.6にもインストールしていますが、
現状でプロンプトに処理が戻らない状況も、smtpだけは起動している
状況も全く変わりません。
同じ場所で間違えていますかね。。。?

ちなみに、サーバの「ホスト名+ドメイン名」で記述したマシン名は、
ネット上からnslookupなどで公開を確認しています。
綾瀬
ぬし
会議室デビュー日: 2002/07/31
投稿数: 393
お住まい・勤務地: どっちも3階
投稿日時: 2004-08-03 13:35
こんにちは。

スクリプトが見た感じ良さそうだったので気づくのに遅れましたが、ひょっとして
pop側の起動スクリプトで、\マークの後ろにスペースが入ってないですか?

参照元の記事を見ると、1行目の「〜省略〜 /bin/checkpassword \」の後ろに
スペースが入っているように見えるので、コピー&ペースト等しているのであれば
たぶん入ってる可能性があります。
このスペースを取って再度確認してみてください。

amatoto
常連さん
会議室デビュー日: 2004/08/02
投稿数: 30
投稿日時: 2004-08-03 13:52
> 参照元の記事を見ると、1行目の「〜省略〜 /bin/checkpassword 」の後ろに
> スペースが入っているように見えるので、コピー&ペースト等しているのであれば
> たぶん入ってる可能性があります。
> このスペースを取って再度確認してみてください。

入っていました!!
スペースを削除したら、見事!何事もなかったかのように
動作しました。困り果てていたので、感謝感激です。
ありがとうございます。

後学のため、初心者質問ですが、
シェルスクリプトで、「\」の後ろに文字がある場合、
どこかにエラーがログされるものなのでしょうか?
スペースに関しては今後は未然に防げると思いますが、
チェックするポイントがありましたら、
ご教授下さいませ。。。

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