- - PR -
sendmailのルールセットについて
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2007-02-16 11:52
お世話になります。A.Wと申します。 現在、外向けのメールサーバとしてSolaris9にてsendmail8.13.5を使用しています。 spam対策として/etc/mail/access内に、 xxx.xxx.xxx.xxx REJECT example.com REJECT などを記述し、特定のドメインやIPが送信元のメールを弾くように設定しています。 これに加え、sendmail.mcには以下のルールセットを記述し、逆引き不能な送信元や 逆引きができても正引きと食い違う送信元のメールは拒否するようにしています。 LOCAL_RULESETS SLocal_check_relay R$* $: $&{client_resolve} RTEMP $#error $@ 4.7.1 $: "450 Access denied. Cannot resolve PTR record for " $&{client_addr} RFORGED $#error $@ 4.7.1 $: "450 Access denied. IP name possibly forged " $&{client_name} RFAIL $#error $@ 4.7.1 $: "450 Access denied. IP name lookup failed " $&{client_name} ホワイトリストとして/etc/hostsも併用しています。 しかし、この設定では必要なメールも弾いてしまう可能性があるので、 一定の期間、postmaster宛のメールに対してのみ、このルールセットを適用外にし、 手動でspamリストを作成していき、いずれはこのルールセットをはずして accessデータベースのみでの運用を考えています。 /etc/mail/access内に、 To:postmaster@example.co.jp OK を記述してみましたが、どうやらルールセットのほうが先に適用されてしまう ようです。 RCPT TOを先に見に行くよう、check_rcptのルールセットを追加する方法 くらいしか思いつかないのですが、何かよい方法がありましたらご教示 お願いしたいと思い投稿しました。 どうぞよろしくお願いします。 |
|
投稿日時: 2007-02-16 13:27
sendmailでは下記の順番で
アクセス条件を満たしているかチェックしていると 思います。 ※ accessを利用する場合 (1) 接続元MTAのIPアドレス(FQDN) (2) envelope sender (3) envelope recipient この、(1)〜(3)のうち、 一回でもREJECTと判定されて しまうと、そのメールは拒否されます。 ですので、(3)の部分でOKとなるように 単純なルールを追加しても、メールは許可されないのでは ないでしょうか? 回避するために下記の方法が 思いつきますが、 直にルールを書くと、 sendmailの挙動のいろんな部分に 影響が出てくるのであんまりお勧めしません。 ※ まぁ、accessの部分はあまり ルールセット0に影響しないし、 sendmail -btでルールのデバッグが 十分にできるなら挑戦してみるのも 一興かと思いますけど。 (1)でREJECTにならないようにし、 (3)で接続元MTAのIPアドレス情報と、 envelope recipientの情報で条件分岐させるルールを追加。 条件に適合すればOK,適合しなければREJECTさせる。 商用版のSendmail製品、Mailstream Manager(こんな名前でしたっけ?) のようにMilterを利用して別プログラムと連携して処理を させるのが綺麗なやり方かもしれないですね。 お役に立てれば幸いです。 |
|
投稿日時: 2007-02-17 01:31
delay_checks を使用すると、 RCPT TO次第で
(たとえMail FromがREJECTに該当しても) 拒否したり許可したりするような設定が出来たように思います。 もっとも、私自身もあまり使用した事が無いため、 ローカルルールセットとの優先度や、 設定することでどういった弊害が出るかまでは不明です。 > RCPT TOを先に見に行くよう、check_rcptのルールセットを追加する方法 というのが、delay_checksのことならあまり他に方法は無いかもしれないですね。 |
|
投稿日時: 2007-02-17 03:04
F/Aさん、
delay_checksを使った方法を見つけました。 ※ 参考文献 sendmail付属のop.psドキュメントおよび オライリー本第3版運用編206ページ m4で下記を有効にする。 FEATURE(`delay_checks', 'friend') → check_relay, check_mail, check_rcptの 順番が、check_rcpt, check_mail, check_relayに変わる access_dbで下記の記述を行なう。 Spam:postmaster@example.co.jp FRIEND → check_rcptでFRIENDにマッチするよう 設定されていれば、check_mail, check_relayは スキップされる。 マッチしなければ、check_mail, check_relayが 実施される このことですね! delay_checksは知っていたのですが friendの引数は知りませんでした。 ※ sendmail 8.9以降の機能はあまり知らなくて。 勉強になりました。 check_ 系のルールセットの中だけで 完結しそうですし、 これが一番すっきりかな? A.Wさん、上記の方法でどうでしょうか? [ メッセージ編集済み 編集者: dam 編集日時 2007-02-17 03:49 ] |
|
投稿日時: 2007-02-19 12:28
返信が遅れまして申し訳ありません。
お世話になります。A.Wです。 F/A様、dam様、ご返信ありがとうございます。 delay_checksで引数friendをつけたら解決できそうです。 /usr/lib/mail/README (source内だとcf/README) にとても詳しく書いてありますね・・。 # マニュアルよく見ろよ自分・・ お手数おかけしました。たいへん勉強になりました。 このたびはどうもありがとうございました。 [ メッセージ編集済み 編集者: A.W 編集日時 2007-02-20 16:30 ] |
1