- PR -

qmail での POP Before SMTP が効かない

投稿者投稿内容
QQ-
会議室デビュー日: 2001/12/29
投稿数: 18
投稿日時: 2002-10-09 15:26
お世話になります。POP認証でIPファイルは作成できますし、ageで時間切れファイルも
ちゃんと削除されます。要するに、POP側の処理は正常に行われています。ところが、
SMTP側が、認証する前や、別のIPからの接続でも、何でも送信が可能なってしまいます。
cdbの設定も間違いなさそうですし、仮に間違っていたら送信できないと思いますので、
なぜ通ってしまうのかが不明です。成功していないので、スパムの温床にならないよう、
FQDNの部分は伏せさせていただきましたが、以下が起動部分です。

/usr/local/bin/tcpserver -v -x /var/qmail/relay-ctrl/tcp.smtp.cdb -u qmaild -g nofiles 0 smtp \
/var/qmail/bin/qmail-smtpd 2>&1 | /var/qmail/bin/splogger smtpd 3 &

/usr/local/bin/tcpserver -v 0 pop3 /var/qmail/bin/qmail-popup ***.***.*** /bin/checkapoppw \
/usr/sbin/relay-ctrl-allow /var/qmail/bin/qmail-pop3d Maildir 2>&1 | /var/qmail/bin/splogger pop3d 3 &

# ls -l /var/qmail/relay-ctrl/tcp.smtp.cdb
-rw-r--r-- 1 root root 2086 Oct 9 14:24 /var/qmail/relay-ctrl/tcp.smtp.cdb
このようにcdbファイルの場所はあっています。

別のサーバでは成功しているので、配置や仕組み自体は分かっているのですが、
こればかりは何故?という感じです。どこか確認するところがあるのか、
気がついたことがあればアドバイスいただければ幸いです。

谷中
tabby
ベテラン
会議室デビュー日: 2002/06/26
投稿数: 55
お住まい・勤務地: 埼玉県・東京都
投稿日時: 2002-10-09 22:07
一つの可能性として

rcpthostがないと、全てのメールを通してしまいます。

/var/qmail/control/rcpthost
を確認してみてください。
QQ-
会議室デビュー日: 2001/12/29
投稿数: 18
投稿日時: 2002-10-09 23:22
アドバイスありがとうございます。rcpthost"s"ですね? 設定もされていて存在しています。
ちなみに、virtualdomainsを使っているので、localsは空です。FQDNは uname -a で
出るサーバ名でいいんですよね?

プロセスをkillすればポート25も閉じるし、これ以外で実行されてしまっている
MTAはなさそうですし、/hosts/allow や deny も空ですし、
/usr/local/bin/tcpserver -v -x /var/qmail/relay-ctrl/tcp.smtp.cdb ・・・
で実行されているとしか考えられません。

ひとつ心配なのは、relay-ctrl 3.* を最初にインストールして・・・でも同様に駄目
だったので、daemontoolsが必要ない、設置経験がある バージョン2.* をインストール
しました。配置はデフォルトで。これが何か影響すると考えられるでしょうか?
tabby
ベテラン
会議室デビュー日: 2002/06/26
投稿数: 55
お住まい・勤務地: 埼玉県・東京都
投稿日時: 2002-10-10 22:35
あ、たしかにrcpthost"s"ですね。
確認せずに書いてしまいました。すみません。

ここがただしく設定されているとすると、
あとは、
>/usr/local/bin/tcpserver -v -x /var/qmail/relay-ctrl/tcp.smtp.cdb
の内容が原因ぐらいしか思いつきません。

smtprulesの指定先にある基本ルールの定義は大丈夫でしょうか?

#relay-ctrl 3.*しか扱ったことがないので、2.*のシェルを見ると
#不思議な感じです(^^;
#2.*ってcdbファイルを作成しているのかな?
QQ-
会議室デビュー日: 2001/12/29
投稿数: 18
投稿日時: 2002-10-10 22:48
ありがとうございます!

:allow,RELAYCLIENT=""

ルールはこれです。参考サイトの指示通りに書いただけになりますが…
これを例えば、

eny,RELAYCLIENT=""

なんて感じにしてやってみると、送信はできなくなり、元に戻したら送信できました。
ただ、時間が経過してrelay-ctrlでIPが削除されても、どこからでも送信できて
しまうので… 最初はv3でしたが、同様の結果でした。他に何か気がつかない原因が
あるのかなぁ…

linuxで一旦インストールしたものをアンインストールする方法を把握していないのですが、
もう一度最初からやり直してみます。
hap
会議室デビュー日: 2002/09/26
投稿数: 5
投稿日時: 2002-10-10 23:31
以前、同じような状況になって、エラーログみても分からない状態だったものです。

で、綺麗に解決できたというわけではないですが
前にこの会議室でも一度出てきていますが
http://www.qmail.org/qmail-smtpd-relay-reject
ここにあるパッチをqmailに当てると、なぜかうまく行きました。
パッチ当てるときにエラーみたいなの吐きますけど、動いてます。
不正中継を厳しくするためのパッチなんですけどねぇ・・・
(保証は出来ませんけど今のところ問題なく動いてます。)
一度、試してみてはどうですか?
QQ-
会議室デビュー日: 2001/12/29
投稿数: 18
投稿日時: 2002-10-10 23:34
ありがとうございます!!
もう数日四苦八苦しているので、試してみようと思います。
成功するといのですが…
QQ-
会議室デビュー日: 2001/12/29
投稿数: 18
投稿日時: 2002-10-11 11:24
残念ながら駄目でした。どこからの中継も許可してしまい、送信できてしまいました。
cdbファイルを覗いてみても正常に作られているし、手動でtcproulesを使ってcdbを
作ってためしても、ちゃんと -x でそのファイルが指定されて tcpserver で起動
しているにも関わらず、駄目でした。ルールも、成功しているサーバの通りにしてみたり、
いろいろ替えて実験してみましたが駄目でした。rcpthostsも空ではないので、qmail側の
設定の問題もないと思いますし…

仕方ないので、xinetdを使ってsmtpを空けて、only_from = の設定で、リレー許可する
ホストを手動指定することしかないかな、と思っています。これは成功しています。

POP3認証でrelay-ctrlでIPを記録/削除してcdbを作る一連の処理は成功しているので、
このcdbを、/etc/xinetd.d/smtp の設定に入れてリレーを制御することは
できないでしょうか? 要するに、xinetd経由で tcp.smtp.cdb を利用する方法です。
どうでしょうか?

service smtp
{
disable = no
socket_type = stream
protocol = tcp
wait = no
user = qmaild
server = /var/qmail/bin/tcp-env
server_args = -r /var/qmail/bin/qmail-smtpd
log_on_failure = HOST RECORD
log_type = FILE /var/log/maillog
only_from = 127.0.0. ***.***.***.***
}

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