- PR -

Qmail + Vpopmail が正しく動作しない

投稿者投稿内容
angel
ぬし
会議室デビュー日: 2005/03/17
投稿数: 711
投稿日時: 2005-10-01 01:25
こんばんは、今更なのですが…。

 ・STMPサーバとして利用するクライアントは、インターネット上の不特定IPアドレス

という状況、ということで O.K. でしょうか?
そうでない ( 特定のIPアドレスからのみ ) ならば、敢えて POP before SMTP を使わずとも、SMTP担当の tcpserver の使用する cdb ファイルに、然るべき IPアドレスを登録しておけば済む問題ですので…。

一応、念のため。
虎エモン
常連さん
会議室デビュー日: 2005/01/01
投稿数: 33
投稿日時: 2005-10-01 05:08
angelさま

非常〜に有用な情報どうもありがとうございます。
angelさまの起動スクリプトの説明と、relay-ctrlの機能を一読すると
なるほど。と思わずうなずいてしまいました。

現在の起動スクリプトのプロセスでは、POPbeforeSMTPの機能に
うまく絡み合っていないないかもです・・。

一読しまして、需要な事がひとつ・・。
relay-ctrlをインストールする際に、daemontoolsが不可欠という
条件があったのですが、実は何故かdaemontoolsでこのマシンは
引っかかっており、daemonがうまく動作してくれません。

具体的に言うと、daemontoolsをインストールした後に
マシンを再起動すると正常に起動しなくなる、というものです。
正常に起動しなくなるというのは、/etc/inittab内のSV:123456:respawn:/command/svscanbootコマンドで引っかかっているのか
サーバーを起動させると、このエラーの為にシステムが全体的に重くなり
他のプロセスbindやデスクトップシステムが立ち上がらなくなります。

この場合、/command/svscanbootには

---------------------------------------------
#!/bin/sh
# WARNING: This file was auto-generated. Do not edit!

PATH=/command:/usr/local/bin:/usr/local/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin

exec </dev/null
exec >/dev/null
exec 2>/dev/null

/command/svc -dx /service/* /service/*/log

env - PATH=$PATH svscan /service 2>&1 | \
env - PATH=$PATH readproctitle service errors:
------------------------------------------------

のようにdaemonプロセスによって自動記述されておりますが、
この状態で、/service ディレクトリを削除または/-service等に名前変更し
システムを再起動かけると(/etc/inittabの記述はそのまま)、
もちろん次回再起動時にdaemontoolsは正常起動しませんが、システムは正常に立ち上がってきます。

/command/svscanbootを元に、/serviceを読みに行ってるだけのはずなんですが、
おかしなところでつまずいてしまっておりました。

bash-3.00# ls -l /
.
.
drwxr-xr-x 2 root 1992 512 10月 1日 03:36 service
drwxr-xr-x 2 root root 512 9月 4日 18:26 command
.
.
実行権はこんな感じでも駄目でした。

今回どうしても今週中にメールサーバーを組み上げないといけなかった為、
このdaemontoolsの問題に嵌ってしまう時間もなかった為、
通常どおりに起動スクリプトを書いて起動させる方法でqmailをインストールする事になってしまったのです。

横道にそれてしまいましたが、relay-ctrlをインストールすれば
現在問題視されているPOPbeforeSMTPの問題も解消されそうですし
是非インストールしてみたいのですが、それには
まず、はやりdaemontoolsと向き合う必要があるようです。

daemontoolsで、qmailまわりのプロセス、Log、relay-ctrl等を管理できれば
それが理想ですので・・・。



>・STMPサーバとして利用するクライアントは、インターネット上の不特定IPアドレス

>という状況、ということで O.K. でしょうか?
>そうでない ( 特定のIPアドレスからのみ ) ならば、敢えて POP before SMTP を使わずとも、SMTP担当の tcpserver の使用する cdb ファイルに、然るべき IPアドレスを登録しておけば済む問題ですので…。


こちらのメールサーバーの利用者の中で、モバイルに通信による利用も予定にありますので、現状ですと、POP before SMTP が望まれる状況です。
angel
ぬし
会議室デビュー日: 2005/03/17
投稿数: 711
投稿日時: 2005-10-01 07:59
おはようございます。
引用:
一読しまして、需要な事がひとつ・・。
relay-ctrlをインストールする際に、daemontoolsが不可欠という
条件があったのですが、実は何故かdaemontoolsでこのマシンは
引っかかっており、daemonがうまく動作してくれません。


確かに、一寸見た感じだと、「relay-ctrl Ver.3からは daemontoolsが必須」と色々出ているようですが…、
これは、daemontoolsに含まれる便利ツールの一つである envdir が必要、ということでは無いのでしょうか?

daemontools の核となる
 ・supervise … サービス起動・停止や自動復帰を司るプログラム
 ・svscan … supervise の自動起動を司るプログラム
が必要になるとは、どうしても考え辛いのですが…
上手く動作しないなら、svscanboot 使わなくても良いのではないかなぁ…、と思います。

一応、本家も見てみましょうか…
引用:
relay-ctrlのNEWSより
Changes in version 3.0

- Removed all CDB management code in favour of doing the check in a new
program, relay-ctrl-check, which is a front-end to qmail-smtpd.

- Added a client-server pair for transmitting relay authorization
information over UDP.

- All configuration information is now read from environment variables.

- Running relay-ctrl-age is no longer *required*, but still recommended.

- The RPM no longer tries to add itself to any qmail control files.

Development of this version has been sponsored by FutureQuest, Inc.
ossi@FutureQuest.net http://www.FutureQuest.net/
SIZE="1" WIDTH="100%">

うーん…。やっぱり envdir が入っていれば済むような気がします。

さて、svscanboot のトラブルシューティングをするなら、
 ・svscanboot は、inittab の最後の行に入っているか
  ( sysinit や rc や mingetty の前だと、トラブル時に足を引っ張られる )
 ・svscanboot 内の “exec>/dev/null” を “exec>>何かログ”に替えてログを採って見てはどうか
  ( 更に exec 2>/dev/null は exec 2>&1 ですね )
 ・加えて、| env 〜 readproctitle … を止めてはどうか
  ( readproctitle がパイプ経由でログを吸収してしまいますから )
 ・更に、svc が原因かどうか切り分けるために、svc -dx 〜 の行を消して動作を比較してはどうか
  ( 初回の svscanboot では svc で残存 supervise を止める必要が無いため )

位でしょうか…
kalze
ぬし
会議室デビュー日: 2003/10/23
投稿数: 406
お住まい・勤務地: 東京・東京
投稿日時: 2005-10-01 17:49
私にはすでに解らなくなっているので閲覧に廻っています。
一応、解る部分については、補足させていただこうと。

引用:

angelさんの書き込み (2005-10-01 07:59) より:
おはようございます。
引用:
一読しまして、需要な事がひとつ・・。
relay-ctrlをインストールする際に、daemontoolsが不可欠という
条件があったのですが、実は何故かdaemontoolsでこのマシンは
引っかかっており、daemonがうまく動作してくれません。


確かに、一寸見た感じだと、「relay-ctrl Ver.3からは daemontoolsが必須」と色々出ているようですが…、
これは、daemontoolsに含まれる便利ツールの一つである envdir が必要、ということでは無いのでしょうか?

daemontools の核となる
 ・supervise … サービス起動・停止や自動復帰を司るプログラム
 ・svscan … supervise の自動起動を司るプログラム
が必要になるとは、どうしても考え辛いのですが…
上手く動作しないなら、svscanboot 使わなくても良いのではないかなぁ…、と思います。



こちらについては、angel様ご指摘のように、envdirが必要であり、
supervise や svscan の使用については、別に必須ではございません。
実際に、supervise や svscanの使用はせずに構築したことがありますので。


現在テストマシンの空きがないので、試せない…
ちなみに虎エモンさまの環境を教えていただけますか?
daemontoolsのスレにも載っていなかったようなので。
ありえるかどうかはわかりませんが、SELinux関係とかはないよな・・・とふとよぎったもので。
(SELinux触ったことまだなんもんで)

#angel様、話ぶったぎってしまって申し訳ないです
虎エモン
常連さん
会議室デビュー日: 2005/01/01
投稿数: 33
投稿日時: 2005-10-01 20:49
Angelさま、Kalzeさま

ご返信ありがとうございました。 只今帰宅しました。

まず、はじめに・・・今確認したところ
/etc/inittabのsv内容が、一番下に来ていなかったので、
最下部に記述しなおし、/-service を/serviceに変更して
システムを再起動してみたところ。
「問題なくシステムが上がってしまいました・・・

もしかしたら、この問題の為に今までシステムが不安定になって
起動が正常に行われなかったのでしょうか・・;
それはともかく、Angelさま、ありがとうございました^
これでうまくいくようでしたら、もう一度、
/service /supervise近辺を作り直してみて、qmailの起動が正常に行えるか
やってみたいと思います。
これから食事をとった後にすぐ始めてみます^

Kalzeさま、一応当方今2つの機器に同時にインストールを行っていました。

こちらの環境は、TurboLinuxベースのLinux(openblocks系)とSolaris10に
インストールを試みています。
正常運営はSolaris10サーバー、バックアップ機として、TurboLinuxにて対応できるように
まったく同じ設定で同時にインストール作業を行ってきましたが、
それが原因か、両方で同じエラーが出て先に進めなくなってしまっていたのです。



relay-ctrlはdaemontoolsが不可欠ではない、envdirがポイントという事ですね・・。

簡単ですが、訳してみました。。

relay-ctrlのNEWSより
Changes in version 3.0

- Removed all CDB management code in favour of doing the check in a new
program, relay-ctrl-check, which is a front-end to qmail-smtpd.

relay-ctrl導入により、smail-smtpdの作業を代行するので、既存のCDBを参照するための
スクリプト等は全て不使用にする。

- Added a client-server pair for transmitting relay authorization
information over UDP.
UDPを介して、ユーザー、サーバー間のrelay制御の為の認証を行う(あってるのかな・・)

- All configuration information is now read from environment variables.
設定情報は"enviroment cariables"を参照のこと(?)

- Running relay-ctrl-age is no longer *required*, but still recommended.
relay-ctrl-ageはの使用は推奨はしますが、これからは絶対必要条件ではありません。

- The RPM no longer tries to add itself to any qmail control files.
RPMによるqmailへのパッケージインストールは出来ません。

てなところでしょうか・・・(少し不安ですが。)



[ メッセージ編集済み 編集者: 虎エモン 編集日時 2005-10-02 00:03 ]
虎エモン
常連さん
会議室デビュー日: 2005/01/01
投稿数: 33
投稿日時: 2005-10-02 00:42
やはりどこかおかしいようです・・・。

/service
/command
/package
/var/qmail/supervise

を削除し、/etc/inittab の記述を削除し

http://www.atmarkit.co.jp/flinux/rensai/qmail09/qmail09a.html

を参照しながら、daemontoolsのインストを1からやり直して
みたのですが、インストール後に、kill -HUP 1をしようが、
サーバーを再起動させようが、
ps -ef|grep svscan 等で確認をとるとプロセスはまったくたち上がっていません。

angel
ぬし
会議室デビュー日: 2005/03/17
投稿数: 711
投稿日時: 2005-10-02 08:38
おはようございます。
引用:
kalzeさんの書き込み (2005-10-01 17:49) より:
こちらについては、angel様ご指摘のように、envdirが必要であり、
supervise や svscan の使用については、別に必須ではございません。
実際に、supervise や svscanの使用はせずに構築したことがありますので。


kalzeさん、ありがとうございます。
やはりそうでしたか…。経験ある方からの情報が得られるのは心強いです。
※qmailやdaemontoolsはともかく、私は relay-ctrlの経験は無く、推測しかできないので…
引用:
#angel様、話ぶったぎってしまって申し訳ないです


なので、そんな事は仰らずに。色々コメントが出るのは私としては大歓迎です。
※いや、話の流れを押さえているのは、スレッドを立てた虎エモンさんなので、私が申し上げる事ではないですけど。

引用:
虎エモンさんの書き込み (2005-10-01 20:49) より:
/etc/inittabのsv内容が、一番下に来ていなかったので、
最下部に記述しなおし、/-service を/serviceに変更して
システムを再起動してみたところ。
「問題なくシステムが上がってしまいました・・・


/etc/inittab 内のエントリの順番が絡んでいましたか…。
この順番は、そのままプログラム起動の順番にも絡むので、大物は最後の方が良い、という感覚を持っています。
( X の起動なんかも最後の方にありますし )
引用:
虎エモンさんの書き込み (2005-10-02 00:42) より:
やはりどこかおかしいようです・・・。
…(中略)…
ps -ef|grep svscan 等で確認をとるとプロセスはまったくたち上がっていません。


svscan は必須ではないと、kalzeさんから情報も上がっていますし、最悪使わなくとも良い、ということで気楽にいくことをお勧めします。( システムの要件にもよるでしょうけど )

前に記した svscanboot のトラブルシューティング法は、まだ使えると思いますよ。
↓も参考になるやもしれません。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=24365&forum=10
虎エモン
常連さん
会議室デビュー日: 2005/01/01
投稿数: 33
投稿日時: 2005-10-02 23:02
Angelさま、Kalzaさま 色々ありがとうございます。


まずは報告を。

daemontoolsなのですが、仰るとおり、動かなかったら
envdirのだけを使用して解決しようとおもってましたが、

/etc/inittab の表記を

SV:123456:respawn:/command/svscanboot >/dev/msglog 2<>/dev/msglog </dev/null

のように変更したら、
bash-3.00# ps -ef|grep svscan
root 582 1 0 18:25:14 ? 0:00 /bin/sh /command/svscanboot
root 587 586 0 18:25:15 ? 0:00 svscan /service

とうまく上がってしまいました。
TurboLinuxとSolarisを平行して作業してましたが、
Solarisの方はどうも、svscanを起動させるのに、

>/dev/msglog 2<>/dev/msglog </dev/null

の追記が必要だったようです。


これを行った後に、TurboLinuxの方でも全てを削除して再インストールしてみると
上記のコマンドなしで、

SV:123456:respawn:/command/svscanboot

でうまく立ち上がってしまいました。(なんともお騒がせな・・;;)


トラブルに陥った原因に
@Solaris → TurboLinux の順で作業をしていたのでSolarisに引っかかった時点で復旧作業に嵌ってしまい、TurboLinuxの方の確認がとれていなかった。

ADaemonToolsのインストールは、SolarisとLinuxでは/etc/inittabの記述に変更が必要という事を知らなかった。

というのがありましたが、もしLinux側から作業を行っていれば、解決がもう少し早かったのかもしれません^^;



さて、本題ですが、
現在サーバーには、晴れてdaemontools ,relay-ctrl ,qmail ,vpopmail ,その他(qmail関係)がインストールされましたが、

現在qmail等は、daemontoolsを使用しないで、init.d経由でrc.dに記述して立ち上がっております。
(/etc/init.d/qmail → rc.d)

そこで、relay-ctrlをインストール後、/etc/init.d/qmail内の起動項目 を以下のように修正して

#FOR SMTP
/usr/local/bin/envdir /etc/relay-ctrl /etc/relay-ctrl-chdir
tcpserver -H -R -l $HOSTNAME -v \
$QMAILDUID -g $QMAILDGID 0 smtp \
/usr/local/bin/relay-ctrl-check \
/var/qmail/bin/qmail-smtpd 2>&1 | /var/qmail/bin/splogger smtpd 3 &

#For POP3
/usr/local/bin/envdir /etc/relay-ctrl relay-ctrl-chdir /etc/relay-ctrl
tcpserver -H -R -l $HOSTNAME -v 0 pop3 \
/var/qmail/bin/qmail-popup $HOSTNAME \
/home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d ./Maildir/ 2>&1 | /var/q mail/bin/splogger pop3d 3 &


起動しなおしたところ、現在正常に動作しているようです。^



一応しばらくはテスト期間として稼動させてみようかと思います。
(何も問題がおきない事を願いつつ。。。)


私は、明日から1週間ほど出張にでる予定があり、
以前のホスティングの会社との契約が9月末日で切れてしまっていた為、
どうしても本日までにサーバーを設置しないと、
月曜よりクライアントがメールをまったく使えない状態になってしまうところでした。

なんとか思うようにサーバーが稼動してくれました、
本当に皆様方のお陰です。私もはやくアドバイスが出来る立場になれるよう
努力しなければいけません。。^^;

詳しく、親切なアドバイス本当にタメになりました。
ありがとうございました!






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