- PR -

qmail+vpopmailでメールの送受信ができない

投稿者投稿内容
EMIKO
常連さん
会議室デビュー日: 2004/02/29
投稿数: 40
投稿日時: 2004-03-08 06:15
お世話になります。
この会議室には、随分お世話になり感謝します。

さて、qmail+vpopmailで構築しましたが、送受信ができないでいます。

【環境】
redhat7.3
qmail-1.03
checkpassword-0.90
checkpw-1.01
courier-imap-2.2.2.20040207
daemontools-0.70
relay-ctrl-3.1.1
ezmlm-0.53
ezmlm-idx-0.40
ucspi-tcp-0.88
vpopmail-5.4.0

以上をインストールしました。

qmail起動は以下です
------------------------------------------------------------------------------
#!/bin/sh
#
# 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 &'

#Vsmtp
/usr/local/bin/tcpserver -H -R -l host.domain.com -v -x /home/vpopmail/etc/tcp.smtp.cdb -u 503 -g 502 0 smtp /var/qmail/bin/qmail-smtpd 2>&1 | /var/qmail/bin/splogger smtpd 3 &

#Vpop
/usr/local/bin/tcpserver -H -R -l host.domain.com -v 0 pop3 /var/qmail/bin/qmail-popup host.domain.com /home/vpopmail/bin/vchkpw /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
------------------------------------------------------------------------------

crontabには
------------------------------------------------------------
40 * * * * /home/vpopmail/bin/clearopensmtp 2>&1 > /dev/null
------------------------------------------------------------

POP認証はできます(メールクライアント(OE)やtelnet localhost 110 でOKです)

echo to: user1@domain.com | /var/qmail/bin/qmail-inject
では、バーチャルユーザーuser1に配信されません。
~Maildir/new に入ってきません。
~/vpopmail/domains/domain.com/user1/Maildir/new
にも入ってきません。
ホームディレクトリを持つ、UNIXユーザーのnewにも入ってきません。

echo to: user@別のドメイン.com | /var/qmail/bin/qmail-inject
このようにプロバイダーのメールやその他のメールアドレスには空メールが送信されます。

まずは、内部(LAN側)で送受信できない状態です。

vpopmailを入れる前は、UNIXユーザの~Maildir/newには、メールは届いていました。
(echo to: user1@domain.com | /var/qmail/bin/qmail-inject この方法で)

/var/log/messagesは
Mar 8 05:45:42 localhost pop3d: 1078692342.404838 tcpserver: ok 2982 host.domain.com:192.168.0.101:110 :192.168.0.12::3169
Mar 8 05:45:42 localhost pop3d: 1078692342.549441 tcpserver: end 2982 status 256
Mar 8 05:45:42 localhost pop3d: 1078692342.549575 tcpserver: status: 0/40
Mar 8 05:47:00 localhost smtpd: 1078692420.291020 tcpserver: status: 1/40
Mar 8 05:47:00 localhost smtpd: 1078692420.291616 tcpserver: pid 2987 from ***.***.***.***
Mar 8 05:47:00 localhost smtpd: 1078692420.291944 tcpserver: ok 2987 host.domain.com:192.168.0.101:25 :207.44.238.116::33763
Mar 8 05:47:01 localhost smtpd: 1078692421.489164 tcpserver: end 2987 status 0
Mar 8 05:47:01 localhost smtpd: 1078692421.489282 tcpserver: status: 0/40
Mar 8 06:04:24 localhost sshd(pam_unix)[1624]: session closed for user san
Mar 8 06:04:24 localhost su(pam_unix)[1657]: session closed for user root

このようになっています。***は伏せています。グローバルIPです

/var/log/maillogは
Mar 8 06:02:02 localhost qmail: 1078693322.616791 starting delivery 10: msg 291176 to local user1@domain.com
Mar 8 06:02:02 localhost qmail: 1078693322.616932 status: local 1/10 remote 0/20
Mar 8 06:02:02 localhost qmail: 1078693322.623931 delivery 10: deferral: Unable_to_chdir_to_maildir._(#4.2.1)/
Mar 8 06:02:02 localhost qmail: 1078693322.624072 status: local 0/10 remote 0/2

後、「.qmail」は何処にも置いていません。
vpopmailを使う場合、何処に置いて良いのか分かりませんでしたので・・・
また、一つのドメインでvpopmailを使っています。

それと、前にも投稿があっていたのですが、
~vpopmail/ete/の
open-smtp と tcp.smtp.cdb で、tcp.smtp.cdbの時間が更新されていません。
open-smtpは上記エラーログの時間くらいになっています。

長くなりましたが、おわかりになられる方、間違いに気付かれた方、何でも構いませんのでアドバイスを是非お願いします。

[ メッセージ編集済み 編集者: EMIKO 編集日時 2004-03-08 06:18 ]
たたらん
常連さん
会議室デビュー日: 2004/03/05
投稿数: 20
投稿日時: 2004-03-08 23:15
こんばんわ。
気づいた事と少々、語らせてください。
ぇーと、まず今のqmailの起動方法ではdaemontoolsを
使用していない起動法です。daemontools管理下に置くと
serviceが管理するので。。。
それと、今の設定ではrelay-ctrlも起動していない状態だと思いますょ。
(上記の起動スクリプトにはrelay-crlの記述がなかったので)

この2つとqmailを絡ませるには、
daemontoolsの設定が必要なのですが
具体的にどういう風に設定が必要なのかは、
作る側の環境に違いがあると思うので、こうすれば良いよーとは言えないです。
でもEMIKOさんの構築しようとしている環境は、私の環境と似ているので
私が作った時のメモでよければ参考にして自分の環境に整えて下さい。

環境(趣味で自宅にてです)
OS:FreeBSD4.7
qmail-1.03
courier-imap-2.0.0
daemontools-0.76
relay-ctrl-3.1.1
ucspi-tcp-0.88
vpopmail-5.3.20

qmailとucspi-tcp(tcpserver)とrelay-ctrlは既に
インストール済みとして進めますね。

でもrelay-ctrlはうちの環境だと、
chown root:wheel /usr/local/bin/relay-ctrl-allow
でないとアウトルックでアクセスの際、承認ができないです。

・DAEMONTOOLS

tar xfv daemontools-0.76.tar.gz
cd admin/daemontools-0.76
package/install

mkdir -p /var/qmail/supervise/qmail-send/log
mkdir -p /var/qmail/supervise/qmail-smtpd/log
mkdir -p /var/log/qmail/qmail-send
mkdir -p /var/log/qmail/qmail-smtpd
mkdir -p /var/log/qmail/qmail-pop3
chmod +t /var/qmail/supervise/qmail-send
chmod +t /var/qmail/supervise/qmail-smtpd
chmod +t /var/qmail/supervise/qmail-pop3
chown -R /qmaill /var/log/qmail
↑qmailエルです。

・DAEMONTOOLS用の実行スクリプト

cd /var/qmail/supervise/qmail-send
vi run

#!/bin/sh
exec env - PATH="/var/qmail/bin:$PATH" \
qmail-start ./Maildir/ splogger qmail

cd /var/qmail/supervise/qmail-send/log
vi run

#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t s2500000 /var/log/qmail/qmail-send

cd /var/qmail/supervise/qmail-smtpd
vi run

#!/bin/sh
exec /usr/local/bin/softlimit -m 2000000 \
/usr/local/bin/envdir /etc/relay-ctrl \
/usr/local/bin/tcpserver -H -R -l 0 -v -p -x /var/qmail/relay-ctrl/tcp.smtp.cdb \
-u 82 -g 81 0 smtp /usr/local/bin/relay-ctrl-check \
/var/qmail/bin/qmail-smtpd &

cd /var/qmail/supervise/qmail-smtpd/log
vi run

#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t s2500000 /var/log/qmail/qmail-smtpd

cd /var/qmail/supervise/qmail-pop3
vi run

#!/bin/sh
env - PATH="/var/qmail/bin:/usr/local/bin:/home/vpopmail/bin" \
/usr/local/bin/envdir /etc/relay-ctrl \
/usr/local/bin/relay-ctrl-chdir \
/usr/local/bin/tcpserver -H -R -l 0 0 pop3 /var/qmail/bin/qmail-popup xxx.xxx.com \
/home/vpopmail/bin/vchkpw \
/usr/local/bin/relay-ctrl-allow \
/var/qmail/bin/qmail-pop3d Maildir &

chmod 755 /var/qmail/supervise/qmail-send/run
chmod 755 /var/qmail/supervise/qmail-send/log/run
chmod 755 /var/qmail/supervise/qmail-smtpd/run
chmod 755 /var/qmail/supervise/qmail-smtpd/log/run
chmod 755 /var/qmail/supervise/qmail-pop3/run

ln -s /var/qmail/supervise/qmail-send /service/qmail-send
ln -s /var/qmail/supervice/qmail-smtpd /service/qmail-smtpd

crontab -e
40 * * * * root /home/vpopmail/bin/clearopensmtp 2>&1 > /dev/null

※私はpop3のログを取ってないのでログが必要な場合はpop3用のlogを作ってください。

・VPOPMAIL

/usr/sbin/groupadd -g xx vchkpw
/usr/sbin/useradd -u xx -g vchkpw -d /home/vpopmail vpopmail

tar xfv vpopmail-5.2.1.tar.gz
cd vpopmail-5.2.1

./configure \
--enable-roaming-users=y \
--enable-relay-clear-minutes=40 \
--enable-tcpserver-file=/etc/smtp.rule \
--enable-logging=y \

make
make install-strip

cat /etc/smtp.rule | /usr/local/bin/tcprules /home/vpopmail/etc/smtp.rule.cdb /home/vpopmail/etc/smtp.rule.tmp

・courier-imap (./configureは一般ユーザーで行ってください)
tar jxvf courier-imap-2.0.0.tar.bz2
cd courier-imap-2.0.0
./configure --prefix=/usr/local/courier-imap \
--without-authmysql --without-authldap --without-authcram --without-authuserdb \
--with-vpopmail=yes --with-cram=yes --disable-root-check
make 
make install

cd /usr/local/courier-imap/etc
cp imapd.dist imapd
cp authdaemonrc.dist authdaemonrc
cp imapd-ssl-dist imapd.ssl
cp pop3d.dist pop3d
cp pop3d-ssl.dist pop3d.ssl

courier-imapの起動(手動)

/usr/local/courire-imap/libexec/imapd.rc start

と、ここまでざっと説明もなしに書いてしまい済みません。
EMIKO
常連さん
会議室デビュー日: 2004/02/29
投稿数: 40
投稿日時: 2004-03-09 01:19
たたらん様、ご返答ありがとうございます。

daemontoolsが起動していないのですね・・・
また、vpopmailを使用するので、relay-ctrlは必要ないと思っていました。
relay-ctrlも起動させた方がいいのでしょうか?

今から、たたらんさんが書いて下さった方法でインストールしてみます。
大変参考になります。

一つ気になることがあるのですが、@IT様の構築方法ですと
/etc/init.d/qmail
からの起動になるのですが、たたらんさんの方法ですと上記のqmail起動スクリプトは必要ないのかしら・・?

/etc/init.d/からqmailを削除した方がいいですか?

それではインストールを始めます。
起動スクリプト「qmail」の件、お返事頂けると助かります。
ものすご〜く初歩的な事を聞いているような。。。
EMIKO
常連さん
会議室デビュー日: 2004/02/29
投稿数: 40
投稿日時: 2004-03-09 03:57
ただ今、インストールと設定が終わりました。

メールの送受信をテストした結果を書きますね。

【1】
echo to: user@domain.com | /var/qmail/bin/qmail-inject
UNIXのユーザ(ホームディレクトリを持つユーザ)へ送ると
/home/user/Maildir/new ←にメールが届く(本当は下のvpopmailの方で受けたい)
/home/vpopmail/domains/domain.com/user/Maildir/new ←届かない

【2】
echo to: user2@domain.com | /var/qmail/bin/qmail-inject
バーチャルドメインのメールユーザ(UNIXのホームディレクトリは持たない)
/home/vpopmail/domains/domain.com/user2/Maildir/new ←届かない

[/var/log/maillog]
---------------------------------------------------------------------------
Mar 9 03:12:51 localhost qmail: 1078769571.227448 delivery 43: deferral: Unable_to_chdir_to_maildir._(#4.2.1)/
---------------------------------------------------------------------------
エラーの内容↑

【3】
メーラー(OE)で受信
/home/user/Maildir/newには入っているが、メーラーでは受信できない。
ユーザー名をvpopmailを使い user@domain.com と@以降も付けているためvpopmailのnew内を取ろうとしている?

【4】
上記受信後、メーラーから送信テスト。

以下のようにエラーになる
------------------------------------------------------------------------------
受信者の 1 人がサーバーによって拒否されたため、メッセージを送信できませんでした。
拒否された電子メール アドレス : ****@********.com 件名 'テスト', アカウント : 'mail.domain.com',
サーバー : '192.168.0.101', プロトコル : SMTP,
サーバーの応答 : '553 sorry, that domain isn't in my list of allowed rcpthosts (#5.7.1)',
ポート : 25,
セキュリティ (SSL): なし, サーバー エラー : 553,
エラー番号 : 0x800CCC79
------------------------------------------------------------------------------
※****@****は伏せ字(外部プロバイダー等のメールアドレス)


以上のテストを行いまして、
/home/vpopmail/domains/domain.com/user/Maildir/new 
/home/vpopmail/domains/domain.com/user2/Maildir/new
にメールが届くようにしたいのですが、届かないでいます。

/var/qmail/control/virtualdomains や
.qmail-***** 等の設定の仕方が悪い?のかと思うのでうすが、どのように設定してよいのか今一分かりません。

バーチャルにしたいのですが、ドメインは一つしか持っていません。
それで、一つのドメイン(グローバルIPも1つ)でWWWやFTP等も使えるユーザーとメールだけのユーザー共に/home/vpopmail/domains/domain.com/****/で受けたいと考えています(可能ですよね?)
※***は各ユーザーのユーザー名

何とか立ち上げたくて眠れない日々を過ごしています。。。
詳しい方どうかご教授下さい。お願いします。
たたらん
常連さん
会議室デビュー日: 2004/03/05
投稿数: 20
投稿日時: 2004-03-09 06:51
お早う御座います。
眠れない日々・・・何か思い出してしまいました。

私が書いた設定で抜けている箇所があったので追記しておきますね。
ln -s /var/qmail/supervise/qmail-send /service/qmail-send
ln -s /var/qmail/supervice/qmail-smtpd /service/qmail-smtpd

のところでpopが抜けてました。すみません。
ln -s /var/qmail/supervice/qmail-pop3 /service/qmail-pop3
を足してください。
あと、/etc/init.d/qmail は消してください。
再起動すると、起動時に自動的にdaemontoolsが立ち上がります。

送信のエラーは、relay-ctrlの設定がどこかおかしい様ですね。
今は時間がないので帰ってからじっくりと拝見しますね。
たたらん
常連さん
会議室デビュー日: 2004/03/05
投稿数: 20
投稿日時: 2004-03-09 09:54
どうもです。
また気づいたことなんですが、

/var/qmail/control/virtualdomains
.qmail-***** 等の設定の仕方が悪い?のかと思うのでうすが。

と書いてありましたけど、vpopmailを使用するのなら
ここの設定はしなくても良いと思います(2重使用する事になるので)
/virtualdomains の中を初期状態(からっぽ)にして、
qmailの設定ファイル郡(defaultdomain.locals.me.plusdomain.rcphosts)
の設定を見直してください。
そしてvpopmailの方も1度設定されているドメインを削除して再度作ってみてはと思います。
UNIXのユーザ(ホームディレクトリを持つユーザ)で使用ならば、
.qmail-*****の設定が必要だと私も思いますが、vpopmailでの使用だと
vpopmail管理下のユーザーのMaildirへメールが配送されるのでここの設定も
しなくても良いのではと思います。

それと追記ですが、relay-ctrlの設定のところで
echo "/var/qamil/relay-ctrl/allow" > /etc/relay-ctrl/RELAY_CTRL_DIR

と私は設定しています。
"/var/qamil/relay-ctrl/allow は /var/spool/relay-ctrl/allowと同じです。


kalze
ぬし
会議室デビュー日: 2003/10/23
投稿数: 406
お住まい・勤務地: 東京・東京
投稿日時: 2004-03-09 14:48
EMIKO様

ども、kalzeと申します。

たしか、以前にvpopvmailなしで構築しようとされていましたよね?
入っているソフトをみると、そのときいじっていたままの状態で
vpopmailを導入しているようですね。

杞憂かもしれませんが、
vpopmail導入前に設定などいじっていたものが、
悪さをしている可能性もあります。

今、qmailが動かなくなったら困る!という状態ではないとおもいますので、
一度、qmail関係でインストールしたものを消して、
最初からやってみてはどうでしょうか?

私も以前、サーバーマシンを交換するときに、
qmail関係でMTAを構築しているときに、
受信ができないことなどではまってしまいました。

解消しようと設定いじってましたが、
どこかで深みにはまったらしく、
いろいろな人に聞いてやってみてもダメな状態になりました。

そこで、一度インストールしたものを削除して、
最初からインストールしていくと、
あっさりと問題なく動作するようになりました。

わけわからん状態になったら、
できる状況であるなら、最初からやりなおして、
問題を切り分けしやすくするのも手だとおもいますよ
たたらん
常連さん
会議室デビュー日: 2004/03/05
投稿数: 20
投稿日時: 2004-03-09 16:10
全然、問いに答えてなかったのに気づきました。
なので解る範囲で書いてゆきますね。

cdbファイルもユーザーrelay-ctrlによって上書きできる必要があるため、
/etc/tcp.cdbから書き込み可能な/var/qmail/relay-ctrl/tcp.smtp.cdbに変更します。
上記の意味が分かりませんでした。

/etc/tcp.cdbのディレクトリ所有者と/var/qmail/relay-ctrlディレクトリ所有者が
違うのでそのまま(/etc/tcp.cdb)だとユーザーrelay-ctrlが
上書きが出来ないという事だと思います。
なので用は/var/qmail/relay-ctrlにtcprulesでcdbを作っちゃえばOKかなと。
私は作った後に、chown -R relay-ctrl:wheel /var/qmail/relay-ctrl としました。

・relay-ctrlも起動させた方がいいのでしょうか?

もちろんです。これがないと不正中継対策にならないぉ。
そして大分前にネット上のサイトで見た記事なのですが、
tcpserverでruleファイルを作る時、最後に:allowを入れないとダメみたいです。
私のtcp.smtp.rule の内容は

127.0.0.1:allow,RELAYCLIENT=""
192.168.1.:allow,RELAYCLIENT=""
:allow

です。上記以外のIPについては、最後の行 allowが該当し、
接続は許可しますが、リレーするかどうかはrcphostsの設定に
記述があるかどうかによって決まります。

@IT様の構築方法ですと /etc/init.d/qmail からの起動になるのですが、
たたらんさんの方法ですと上記のqmail起動スクリプトは必要ないのかしら・・?

/etc/init.d/からqmailを削除した方がいいですか?

うん。daemontoolsで設定したのなら削除してもいいと思います。
初歩的な事の積み重ねって凄く大事です。
それにこういう場では遠慮なく自分の不安な部分を出した方がいいと思いますよ。

[/var/log/maillog]
---------------------------------------------------------------------------
Mar 9 03:12:51 localhost qmail: 1078769571.227448 delivery 43: deferral: Unable_to_chdir_to_maildir._(#4.2.1)/
---------------------------------------------------------------------------

このログのUnable_to_chdir_to_maildir の部分は
popのスクリプトにある、/usr/local/bin/relay-ctrl-chdir が
vpopmail以下のmaildirを見つけていないからだと思います。
これは/var/qmail/control/virtualdomains と qmailの設定ファイル、
vpopmailの再設定などを行ってトライしてみてください。
もしそれでもダメな場合は、
/usr/local/bin/relay-ctrl-chdir の部分をスクリプトから外して起動したら
どうなるか見てください。

・メーラーから送信テスト。

以下のようにエラーになる
------------------------------------------------------------------------------
受信者の 1 人がサーバーによって拒否されたため、メッセージを送信できませんでした。
拒否された電子メール アドレス : ****@********.com 件名 'テスト', アカウント : 'mail.domain.com',
サーバー : '192.168.0.101', プロトコル : SMTP,
サーバーの応答 : '553 sorry, that domain isn't in my list of allowed rcpthosts (#5.7.1)',
ポート : 25,
セキュリティ (SSL): なし, サーバー エラー : 553,
エラー番号 : 0x800CCC79
------------------------------------------------------------------------------
※****@****は伏せ字(外部プロバイダー等のメールアドレス)
 
すみません。これ凄く悩んでしまいました。
私の記憶ではtcpserverのruleファイルが関係してる様に思えてたのですが、

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=5251&forum=10

上記のスレッド(拝借しましたぁー)でエラーが同じ風なのを見つけてしまったのです。
ごめんなさい。DNSは勉強不足で、ここに書き込みをされている方々の意見やら
アドバイスを利用している方なので見逃してください。

バーチャルにしたいのですが、ドメインは一つしか持っていません。
それで、一つのドメイン(グローバルIPも1つ)でWWWやFTP等も使えるユーザーとメールだけのユーザー共に/home/vpopmail/domains/domain.com/****/で受けたいと考えています(可能ですよね?)

なんとも云い難いのですが、下のサイトを見ると。。。いけるかなと思えます。

http://qmail.visionmakers.net/vpopmail/feature.html

また、kalze様の意見も賛成です。
私もハマったら幾度となくqmailの入れ直しをしましたし、
理解を深める上でも良いと思います。

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