- - PR -
存在しないユーザへのメールを受信しない為には?
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-10-24 14:55
サーバA、Bの環境
OS:fedoracore3 mta:sendmail8.13 現在メールサーバが2台あります。 インターネット側からイントラネット側へのメールは、サーバAがまとめて受信し、 smart_host機能を使ってサーバBメールを転送しています。 サーバAにユーザはおらず、全てサーバBにユーザが登録されています。 ここで、存在しないユーザへのspamメールが多く送られて、困っております。 通常であれば、存在しないユーザへのメールは受信拒否したいところなのですが、 サーバAはsmart_hostで転送を行っているだけなので、受信したメールは 全て無条件にサーバBに送ってしまいます。 そこで、サーバBに存在しないユーザは、サーバAで受信を拒否したいのですが、 どなたか実現方法をご存知でしたらご教授下さい。 よろしく御願い致します。 | ||||||||||||
|
投稿日時: 2005-10-24 15:26
どもです。がると申します。
まず質問なのですが。 「受信を拒否」というのは、どのような挙動を想定していますでしょうか? 1.user unknownで送り元に丁重に突っ返す 2.送り元には告知しないが、例えばpostmasterなどのアドレスに転送する 3.音もなく破却してしまう 1番はよくあるパターンですが、SMTPのやり取りレベルで細工されると、 間接的にspamを送りつけてしまう可能性があります。 2番も多分割合におおいパターンですが、管理者の手間が、場合に よっては半端じゃなくなります。 3番も耳にしますが、万が一「本当にちょっと間違えただけ」といった ケースの場合に、特に会社だとトラブルの元になりやすいです。 いずれも長短ありますので、運用実態にそったチョイスが重要 かと思われます。 次に。「サーバAで破却する」必要が本当にあるでしょうか? もちろん「ネットワークトラフィック的に優位」であることは 確かなのですが。 サーバAが「存在するユーザかどうか」を判断するためには、 常にサーバBとのデータ同期が必須になります。 言い方を変えると、データの二重管理ですね。 技術的に可能(なので探せば製品があるかも…)な範疇で考えても、 サーバBとの通信が発生するので、やはりトラフィック的には さほどメリットがないような(0ではないと思いますが)。 メールサーバを二台に切り分けている理由にもよるのですが。 もしセキュリティ的な発想だとすると、より危険なサーバAに ユーザデータが(どのような形跡にせよ)存在するのは少々危険で あるように思われるのですがどんなもんでしょうか? ぜんぜん回答になってなくて申し訳ないのですが。 | ||||||||||||
|
投稿日時: 2005-10-24 15:51
がるさん、レスありがとうございます。
>「受信を拒否」というのは、どのような挙動を想定していますでしょうか? >1.user unknownで送り元に丁重に突っ返す >2.送り元には告知しないが、例えばpostmasterなどのアドレスに転送する >3.音もなく破却してしまう この1.のuser unknownで送り返してしまうというのが望ましいのです。 なぜかと申しますと、 1.サーバAで受け取ったメールをサーバBに転送する ↓ 2.サーバBで宛先無しとして、サーバAに返す ↓ 3.サーバAも送信元に送信しようとするのですが、spamメールの送信元が 架空のアドレスだった場合、そこで宛先無しとして再度サーバBへ 返送される ↓ 4.サーバBで宛先無しとして、再度サーバAに・・・ この3.と4.の繰り返しが果てしなく続き、ヘッダだけが膨大に膨れたメールが 最終的にpostmaster宛に届き、ログ管理が行えない状況に陥ります。 また、おっしゃる通り、セキュリティ上、極力サーバAへはユーザ情報を 持たせないようにしています。 どうにかしてサーバBに存在しないユーザ宛のメールを、 サーバAで転送せずに、userunknownで送り元に丁重に突っ返したいのです。 実現方法をご存知でしたら、どうぞお教え下さい。 | ||||||||||||
|
投稿日時: 2005-10-24 15:52
がるさん、レスありがとうございます。
>「受信を拒否」というのは、どのような挙動を想定していますでしょうか? >1.user unknownで送り元に丁重に突っ返す >2.送り元には告知しないが、例えばpostmasterなどのアドレスに転送する >3.音もなく破却してしまう この1.のuser unknownで送り返してしまうというのが望ましいのです。 なぜかと申しますと、 1.サーバAで受け取ったメールをサーバBに転送する ↓ 2.サーバBで宛先無しとして、サーバAに返す ↓ 3.サーバAも送信元に送信しようとするのですが、spamメールの送信元が 架空のアドレスだった場合、そこで宛先無しとして再度サーバBへ 返送される ↓ 4.サーバBで宛先無しとして、再度サーバAに・・・ この3.と4.の繰り返しが果てしなく続き、ヘッダだけが膨大に膨れたメールが 最終的にpostmaster宛に届き、ログ管理が行えない状況に陥ります。 また、おっしゃる通り、セキュリティ上、極力サーバAへはユーザ情報を 持たせないようにしています。 どうにかしてサーバBに存在しないユーザ宛のメールを、 サーバAで転送せずに、userunknownで送り元に丁重に突っ返したいのです。 実現方法をご存知でしたら、どうぞお教え下さい。 | ||||||||||||
|
投稿日時: 2005-10-24 17:10
どもです。がるです。
少々引用が前後しますが。
という場合、
の実現はセキュリティ的な問題を孕んでしまうので、少々 しんどいように思われます。 ひとつには「VRFY コマンドによる確認」という手段がありまして。 サーバAが受信したときに ・サーバBに対してVRFYコマンドを発行、ユーザ確認 ・unknownであれば突っ返す というのが技術的には可能かとは思われるのですが。 ちょっとソフトウェア、もしくは設定としてそのような挙動を するものを知らないので。 # どなたか、そーゆー挙動をするものをご存知でしたら是非。 もうひとつ、代案なのですが。 拝見している限りですと、
というのを回避したいというのが要求であるように思われます。 だとすると、もうちょっと楽に出来るかもしれません。 ちょっと細かく流れを。 1.サーバAで受け取ったメールをサーバBに転送する From 嘘アドレス@嘘ドメイン To 嘘アドレス@サーバBドメイン 2.サーバBで宛先無しとして、サーバAに返す From MAILER-DAEMON?@サーバBドメイン To 嘘アドレス@嘘ドメイン 3.サーバAも送信元に送信しようとするのですが、spamメールの送信元が 架空のアドレスだった場合、そこで宛先無しとして再度サーバBへ 返送される From 嘘アドレス@嘘ドメイン To MAILER-DAEMON?@サーバBドメイン …という流れになるです。 だとすると、取り合えず「MAILER-DAEMONユーザのメールが受け取れる」 ようにしておくとよいのではないでしょうか? まぁ受信メールはかなり速やかに膨れ上がるであろうとは思うのですが。 MAILER-DAEMONアカウントについては ・当面は毎日手でチェックあるいは削除(削除onlyならcronでもよいのかも) という手段で、ある程度運用回避できるように思われます。 あとは抜本的には「smap対策」なんでしょうねぇ。大変だとは 思うのですが。 あいも変わらず、ちょっと斜め下な回答で恐縮ですが。 | ||||||||||||
|
投稿日時: 2005-10-24 18:41
がるさん、レスありがとうございます。
vrfyを調べてみましたが、sendmail.mcにほぼデフォルトで 下記設定が入っており、利用できなそうです。 define(`confPRIVACY_FLAGS', ``authwarnings,noexpn,novrfy'') おっしゃるとおり、From 嘘アドレス@嘘ドメイン To MAILER-DAEMON? @サーバBドメイン で受け取り、他ユーザに転送する事にしました。 また、代替案として、もうひとつ、お聞きしたいのですが、 メールサーバAがメールを中継する際に、発信元のドメイン名が 実在するか、もしくはメールアドレスが実在するかをチェックする事は できますでしょうか。 | ||||||||||||
|
投稿日時: 2005-10-24 22:08
どもです。がるです。
はい。 書いておいてなんですが。 現在、VRFYは大抵のサーバで弾かれます(苦笑 結局「spam用メール収集コマンド」と化しつつ あるので。現在。
ドメイン名のチェックは…出来るはずです。 ちとsendmailでのやり方をちゃんと把握していないのですが。 技術的には ・MXレコードの確認 ・逆引きの確認 あたりを行うことで可能なはずです。 メールアドレスの実在チェックは難しいっていうより 基本的に無理だと思うです。 上のVRFYの話しにつながってしまうので。 なにかもうちょっとよいアイデアが出せると よいのですが。 思いついたらまた書き込んでみますね ^^ | ||||||||||||
|
投稿日時: 2005-10-25 00:08
zumeです。
ご質問のsendmailに直接の回答ではなく申し訳ありません。 もしpostfixでも構わないという事あれば以下のパラメータを設定すれば ご希望されている事が可能です。 (サーバBに存在しないアカウントは、前段の中継サーバであるAで全て ”550 <aaa@example.com>: User unknown in relay recipient table” のように返すことが可能です) ・relay_domains パラメータ ・relay_recipient_maps パラメータ ただ、どうしてもsendmailでという事であれば、以下のページで逆引きしては どうでしょうか? 一応sendmail(CF)からpostfixへの移行を説明したページですが、sendmailの 変数名は拾えるはずです。 http://www.kobitosan.net/postfix/origdocs/cf-compat.html#top |