- PR -

qmail によるGW型ウィルスチェック

1
投稿者投稿内容
だい
会議室デビュー日: 2003/08/08
投稿数: 12
投稿日時: 2003-08-08 12:22
お世話になります。初の投稿させていただきます。

現在,qmail + InterScan によるGW 型ウィルスチェックの構成を考えています。この話題自体過去数回でておったのですが,確信ある結論が出ていないようだったので投稿させて頂きました。

リレー専用qmail - InterScan - 配送専用qmail のような構成(サーバーは1台)であれ
ば,GW 型ウィルスチェックは可能であったのですが,上記構成でSMTP 認証やPOP
Before SMTP を実現しようとなるとかなり難しい話しだと思います。

いろいろ調べたところ,SMTP 認証であれば,qmail-vida というパッケージでじつげんできそうなのですが,以下の点で実際SMTP 認証を行うに当たり以下の問題があります。

・SMTP 認証自体どちらのqmail で行うのか?
リレー専用qmail が一時受付となるMTA なので,SMTP 認証はこちらでおこなうのか?
また,それは技術的に可能か?
・パスワードファイルはどこに持つのか?
qmail-vida では各ユーザーのパスワードファイルはインストールしたqmail ディレク
とり直下に格納されます。
SMTP 認証をリレー専用qmail で行う場合,配送専用qmail 内のパスワードファイルを
どのように参照するか?

なお,SMTP 認証に限らず,POP Before SMTP などの配信時の認証に関して実際構築なさった方はどのように実現されたかお話を伺えれば幸いと思っております。

お願いします。
Dr.Doraemon
ぬし
会議室デビュー日: 2002/03/23
投稿数: 265
投稿日時: 2003-08-08 12:56
お疲れ様です。
私自身も、同じような内容を質問させていただいたものです。

実際、当方では、2台でのサーバで構築しております。
メールサーバにqmailを2つインストールしています。
あと一台は、ウイルススキャンサーバです。

 配信専用のqmailを25番/TCPで稼働させ、それをInterscanサーバに全て投げる形にしています。Interscanサーバでウイルススキャン後、配信されたサーバの10001番に戻すようにしています。
 つまり、qmailを2つ起動し、一つは25番で稼働させ、全てウイルススキャンサーバに送り、ウイルススキャンサーバより戻ってくるものを受け付ける用のqmailを任意のポートで用意していることになります。
 
 この場合、tcp.smtp.cdbが、同一のサーバに存在するためtcpseverを起動時に、そのファイルを指定してあげることでPOP before SMTPが可能になりました。

 POP before SMTPを実現するに際して一番重要なのは、tcp.smtp.cdbのファイルの存在であると思います。SMTPとPOPを別のサーバで実現しようとしたときに問題になるのはtcp.smtp.cdbファイルが存在しないから、認証ができないとというところだと思います。
 これを回避するには、ネットワークを使ってそのファイルをマウントするような形をとるのが一番でしょうね。NFSやを使うと実現可能かもしれませんね。(私はそのような使い方はしたことがありませんけど・・・)

だい
会議室デビュー日: 2003/08/08
投稿数: 12
投稿日時: 2003-08-08 13:33
早速のお返事ありがとうございます。

Dr.Doraemon さんの過去記事を読ませていただき,結局実装できたのかな?と気になっていましたが,実現できていたのですね!

> 配信専用のqmailを25番/TCPで稼働させ、それをInterscanサーバに全て投げる形にして
> います。Interscanサーバでウイルススキャン後、配信されたサーバの10001番に戻すよ
> うにしています。

上記構成は私が考えていた構成と全く同じであるので実現が可能であることを実感しました。

ただ,どちらかというと「POP Before SMTP」ではなく,「SMTP 認証」でqmail によるGW 型ウィルスチェックを構築しようと思っていた点だけが違いました。

「SMTP 認証」であると,IPによって中継するか否かを判断する「POP Before SMTP」とは違い,実ユーザーであるかどうかを中継するか否かの判断に用いるので,どうしても認証をどちらのqmail で行えばよいのか?という問題がでてきました。

Dr.Doraemon さんが実現なされたように「POP Before SMTP」であれば,簡単に認証の問題はクリアできそうな気がします。そこで,図々しいようですが,実際の認証イメージを確認させて下さい。

▼ 構成:

リレー専用qmail(+vpopmail) --- InterScan --- 配信専用qmail(+vpopmail)

▼ 外部中継(POP Before SMTP による)/ウィルスチェック手順:

1.配信専用qmail にPOP し,「tcp.smtp.cdb」にアクセス元IPを記憶
2.メールを送信する為,リレー専用qmail/Port 25 に接続
3.リレー専用qmail はどのようなメールであれInterScan/Port 3000(任意) にリレー
4.InterScan によりウィルスチェック後,配信専用qmail/Port 1025(任意) にリレー
5.メール配信を行う(外部へ...) 場合,配信専用qmail は「tcp.smtp.cdb」を参照し,
アクセス元IPが存在した場合のみ外部へメール送信を行う

上記配信手順で問題ないでしょうか?

> この場合、tcp.smtp.cdbが、同一のサーバに存在するためtcpseverを起動時に、そのフ
> ァイルを指定してあげることでPOP before SMTPが可能になりました。

また,Dr.Doraemon さん曰く,実際tcpserver 起動時に「tcp.smtp.cdb」を指定するとありますが,ここで言うtcpserver とは配信専用qmail を起動するtcpserver と言うことでよろしいでしょうか?

かなり長くなりましたが,お返事の方是非お願いいたします。
Dr.Doraemon
ぬし
会議室デビュー日: 2002/03/23
投稿数: 265
投稿日時: 2003-08-25 20:11
だい様
遅くなりました。

まず、私の説明が余りよくなかったのでもう一度説明させて頂きます。

今当方が使っているGW型のウイルススキャンサーバは、トレンドマイクロ社のInterscanMessageingSecuritySweetになります。

メールサーバが1台とウイルススキャンサーバが1台という構成になります。

メールサーバには、qmailが2つインストールしてあります。(/var/qmailと/var/qmail2)
qmail2を、転送用、qmailを実際のメールボックス運用に使っています。

1./var/qmailをSMTPをPort3000で起動します。
2.qmail2をPort25番で起動させます。
3.外部から来た全てのメールをIMSS(ウイルススキャンサーバ)に転送します。
4.IMSSでウイルススキャン後、/var/qmailつまり、Port3000にメールを戻します。
この際に、注意すべきことは、/var/qmailが、外部への配送もするし、自分のメールボックスの配信も行うため、バウンドの許可をするためにtcp.smtpに、あらかじめIMSSが起動してるサーバのアドレスを書き込んでおきます。
これで、/var/qmailが全てのメールを配信するようになりました。
しかし、このままでは、spamまで配信してしまうことになります。
それで、/var/qmailをPOP before SMTPにし、ここで作られるtcp.smtp.cdbを、/var/qmail2と/var/qmailで共通で見るようにします。
 これで、SMTP配信の際にもspamの踏み台にはならなくなります。

まだ、わかりにくいようでしたら、おっしゃって頂ければ、誠心誠意ご説明させて頂きます。

よろしくお願いいたします。
だい
会議室デビュー日: 2003/08/08
投稿数: 12
投稿日時: 2003-08-25 20:49
Dr.Doraemon 様,非常にご親切に説明して頂き心底感謝しております。

私が質問してから結構な時間が経ちましたが,現在はなんとか一台のサーバーでqmail×2+InterScan Virus Wall によるGW型ウィルススキャンサーバーがテスト運用できています(と思っているだけかも・・)。

しかし,今回改めて説明なされたDr.Doraemon 様とは少々違った構成となっています。
当方ではPORT25 で待機する方のqmail でのみtcpserver で「POP Before SMTP」による中継判断を行っています。Dr.Doraemon 様の例で言うPORT3000 で待つqmail ではtcpserver でInterScan からの接続,つまりローカルからの接続のみ許可しています。これによりSPAM されないようにしました。

Dr.Doraemon 様の説明を読ませていただき,一点だけ分からない部分がありました。

「/var/qmailをPOP before SMTPにし、ここで作られるtcp.smtp.cdbを、/var/qmail2と/var/qmailで共通で見るようにします。 これで、SMTP配信の際にもspamの踏み台にはならなくなります。」

との事ですが,PORT3000 で待機するqmail にに対してtcp.smtpでIMSS からの接続だけを許可しているにもかかわらず,あえて「POP Before SMTP」で作られるtcp.smtp.cdb も見るようにしたのはどのような理由からでしょうか?接続元をIPで制限しているなら「POP Before SMTP」の判断はPORT25 で待機しているqmail だけで良いと思ったのですが。私の勘違いで変な質問をしていたら申しわけありません。

また,最後に一つ。POP を解放しているqmail はどちらのqmail でしょう。tcp.smtp.cdb を作成するqmail を参考に教えていただけないでしょうか?

よろしければお返事お願いします。
Dr.Doraemon
ぬし
会議室デビュー日: 2002/03/23
投稿数: 265
投稿日時: 2003-08-27 13:35
お疲れ様です。

たしかに、ご指摘通り、内部で3000番で起動している/var/qmailは、外と同じtcp.smtp.cdbを見る必要はないですね。いままで、気がつきませんでした・・・。ご指摘ありがとうございます。

POPは、開放しているのは/var/qmailの方です。

ポイントなのは、/var/qmail2のSMTPと/var/qmailのPOPをtcp.smtp.cdbで連携させることだと思います。これが、転送用のSMTPサーバ(ここでいう/var/qmail2)と実際の配信用のSMTPサーバ(/var/qmail)を別にすると少々話がややこしくなりますね。
1

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