- PR -

daemontools でsmtpd pop3d がエラーになります

投稿者投稿内容
qora
会議室デビュー日: 2002/06/26
投稿数: 13
投稿日時: 2002-06-27 16:40
tabbyさんお忙しいところお手数をおかけして申し訳ありません。

>netstat -l
>tcp 0 0 *:pop3 *:* LISTEN
>tcp 0 0 *:smtp *:* LISTEN

>上の結果が示すのは、pop3とsmtpのポートでリスニングしているプロセスが
>あるということです。これが原因で、最初のエラー

>tcpserver: fatal: unable to bind: address already used

>が発生しています。このエラーは指定されたポートでリスナーを起動しようと
>したけど既に使われていますよということです。つまり、qmail-smtpd,qmail-pop3dが
>要求するポートが使用中であるため、今回の状況が発生しています。

>考えられる状況ですが、sendmail,popperが動作中という可能性が高いです。
>chkconfig --listでsendmail,popperがいないか確認してください。

確認してみましたが
sendmail 0:オフ 1:オフ 2:オフ 3:オフ 4:オフ 5:オフ 6:オフ
となっています。sendmailは起動していないと思われますが、また、popperを含めpopに関連すると思われる項目はほかにありません。

>popのほうはxinetd経由で起動される可能性もあります。
>その場合、/etc/xinetd.dの下にあるファイルをひとつずつ覗き、

こちらは前回確認し、すべてのファイルでpop、smtp に関する項目はありませんでした。
今になって恐縮ですが、現在qmailをtcpserverで稼動させていますが、このことは上記のことに関連するでしょうか?qmail-smtpd・qmail-pop3dを実行するときは事前にtcpserverによるqmailは停止させる必要があるのでしょうか?(この連載では、この件については記述がなかったように思いますが・・)


>ここまで実行した状態で再度netstat -lを実行してsmtp,popのポートが出てこなけれ
>ばqmail-smptd,qmail-pop3dを実行可能にしてあげてください。

依然としてsmtp・popのポートはLISTEN表示されます。

>補足
>lsofというコマンドがインストールされていれば以下の方法で、
>対象となるポートを使用しているプロセスを調べることができます。

lsof -i:pop3の結果です
root@hoge root]# lsof -i:pop3
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
tcpserver 10198 root 3u IPv4 561747 TCP *:pop3 (LISTEN)
lsof -i:smtpの結果です
[root@hoge root]# lsof -i:smtp
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
qmail-smt 5982 qmaild 0u IPv4 835742 TCP hoge.hoge.com.10.168.192.in-addr.arpa:smtp->211.**.***.***:32592 (ESTABLISHED)
qmail-smt 5982 qmaild 1u IPv4 835742 TCP hoge.hoge.com.10.168.192.in-addr.arpa:smtp->211.**.***.***:32592 (ESTABLISHED)
tcpserver 10196 root 3u IPv4 561750 TCP *:smtp (LISTEN)
となっています。
これが何を意味するのか理解するスキルがありません。
よろしくお願い致します。
tabby
ベテラン
会議室デビュー日: 2002/06/26
投稿数: 55
お住まい・勤務地: 埼玉県・東京都
投稿日時: 2002-06-27 20:17
lsofの出力結果ですが、

>COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
>tcpserver 10198 root 3u IPv4 561747 TCP *:pop3 (LISTEN)

COMMAND:プロセス名
PID:プロセスID
USER:プロセスのオーナー
以下略、といった具合になっています。

netstatで開いているポートを見つけたけれど、どのプロセスが
そのポートを使っているのかわからないときなどに使えます。
qoraさんの場合、tcpserver経由でqmail-pop3dとqmail-smtpdが
実行されているようです。


>今になって恐縮ですが、現在qmailをtcpserverで稼動させていますが、このことは
>上記のことに関連するでしょうか?qmail-smtpd・qmail-pop3dを実行するときは
>事前にtcpserverによるqmailは停止させる必要があるのでしょうか?(この連載では、
>この件については記述がなかったように思いますが・・)

とのことですが、rcスクリプトからの置き換えであるので、停止させる必要があります。
おそらく、第1回の内容を元に設定を行われていると思いますので、

/etr/rc.d/init.d/qmail stop
で現在実行中のqmailを停止させたあと、
rm /etc/rc.d/rc2.d/S99qmail
rm /etc/rc.d/rc3.d/S99qmail
rm /etc/rc.d/rc5.d/S99qmail
各ディレクトリに作られたリンクを削除してください。
99の部分はqoraさんの環境に合わせてください。

その上で、
svc -u /service/smtpd
svc -u /service/pop3d
を実行すれば、無事に動くと思います。

では、健闘を祈ります。
やいば
常連さん
会議室デビュー日: 2002/06/21
投稿数: 30
お住まい・勤務地: 神奈川県/東京都
投稿日時: 2002-06-27 21:41
お二方、こんばんは。
また、返信が大幅に遅れて申し訳ありません。

tabbyさんが詳細な解説をしてくださっているので、まだ技術的に未熟な自分が
出る幕はどうやらないようです(^-^)。しかし、netstat -lでの結果に対して、
popやsmtpがどのソケットを利用しているかを特定するかは以下のコマンドを
使います。netstat -lの実行結果で、

コード:

Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *:pop *:* LISTEN



と出たら、

# fuser -v -n "Proto" "service"

と入力します。
上記のnetstat -lの実行結果からだと、

# fuser -v -n tcp pop

となります。実行結果は以下のとおりです(自分の環境です)。

コード:

USER PID ACCESS COMMAND
pop/tcp root 13116 f.... tcpserver



この実行結果の、COMMANDのカラムに表示されているプログラムが、サービスを
起動している張本人です。tcpserverではなく、何か別なプロセスで起動されて
いるかもしれませんので、チェックしてみてはどうでしょう。
(しかし前述のlsofでもチェックできていますので、この発言自体ちょっと
的を外していますね‥すみません)

以上よろしくお願いします。

_________________
+ やいば +
+ jk@lunar.to +

[ メッセージ編集済み 編集者: やいば 編集日時 2002-06-27 21:47 ]
qora
会議室デビュー日: 2002/06/26
投稿数: 13
投稿日時: 2002-06-27 22:10
tabbyさん有難うございました。おかげさまでご指示いただいたとおり、操作し、起動させることが出来ました。svstatでの確認も出来ました。
/service/qmail・/service/qmail/log・/service/smtpd/log・/service/pop3d/logが動いていましたので、先にこれらを停止し、その後/etc/rc.d/init.d/qmail stopでqmailを停止、リンクを念のため mv /etc/rc.d/rc2.d/S99qmail /etc/rc.d/rc2.d/S99qmail.origとして変更し、その後再起動させました。

それにつけても、この連載は初心者にとって細かいところまで解説してあって、非常に助かりましたが、この段階までくると、すでにqmailは稼動されていると思われます。
この回の解説にはqmailの停止についての言及がなかったように思います。あるいはこんなことは常識の内なのでしょうか?

linux・qmailともタコの私に、懇切丁寧にご指導いただき、感謝です。
また次の難関に挑戦する希望が持てました。
有難うございました。

引用:

tabbyさんの書き込み (2002-06-27 20:17) より:

/etr/rc.d/init.d/qmail stop
で現在実行中のqmailを停止させたあと、
rm /etc/rc.d/rc2.d/S99qmail
rm /etc/rc.d/rc3.d/S99qmail
rm /etc/rc.d/rc5.d/S99qmail
各ディレクトリに作られたリンクを削除してください。
99の部分はqoraさんの環境に合わせてください。

その上で、
svc -u /service/smtpd
svc -u /service/pop3d
を実行すれば、無事に動くと思います。

では、健闘を祈ります。

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