|
smtp で流れてくるメールを制御できるように実装されたツールです。
ISP のニーズに合わせて考えられたソリューションです。ISP では
内部 (お客様) のユーザから大量にメールが送信されてきます。サーバが
大きく活動していることは幸いですが、SPAM を送ったり、ウイルスが
送られたりするユーザもいます。DSL や光ファイバの快速回線でお客様
とつながっている場合はメールサーバの大変な負荷となり、運用者の
面から大問題となります。そこに smtpguard が誕生…
| |||
問題となるパターン |
ユーニク IP アドレス | メールの量 | |
| 小 | 大 | 大 | 小 | 小 | 中 |
|
「小」、「中」、「大」の言葉を上記で使っていますが、環境によって
意味が違います。有用に設定できるようにため、
を調査する必要があります。下記は smtpguard の目的を図で表します。
上記等の情報を参照し、下記のアクションを起こせるようにしています | |||
ok |
ホワイトリストとして扱う | ||
wait |
処理遅延 | ||
reject |
受信拒否 | ||
| 警告メールを送信する | |||
log |
ログにメッセージを出力する | ||
delete |
データベースのレコードを削除 | ||
|
設定ファイルの記述例
MAILFROM="postmaster@example.com"
SENDMAIL="/usr/sbin/sendmail"
EXPIRE=900
# IPアドレスが 172.16.3.* であれば、1ポイント加算される。
A: IP==172.16.3. : add(1)
# MAIL FROM が example.com で終っていなければ、1ポイント加算される。
A: F!~=example.com : add(1)
# RCPT TO 1回につき、1ポイント加算される。
A: : add(1)
# RCPT TO が example.com で終っていなければ、1ポイント加算される。
A: T!~=example.com : add(1)
# RCPT TO 数が100を越えていれば、一時的に100ポイント加算する。
R: TC>100 : addlocal(100)
# ポイントが100を越えていれば、
# o smtpd に "wait 5" を返す
# o ログ出力
R: P>100 : wait(5),
log( "inserting a small sleep in a SMTP session from " , IP )
# ポイントが1000を越えていれば、
# o "admin@example.com" への警告メール送信
# o データ保持期間を900秒延長
# o ログ出力
# o smtpd からクライアントに "MESSAGE" を返す
R: P>1000 : mail("admin@example.com"),
extendexpire(900),
reject("411 mail server temporally rejected message"),
log("rejecting a SMTP session from ", IP)
smtpguard はフレキシブルで、システムのニーズに合わせてお守りできます。
| |||