Postfixのフィルタリング設定 - スパム・迷惑メール対策、受信拒否 [Fedora, RedHat]
作成:2006-06-28、更新:2008-03-09
Postfixのフィルタリング設定 - スパム・迷惑メール対策、受信拒否方法。
対象:Linux Fedora, RedHat
■
フィルタリング設定
-
Postfix関連サイト
http://www.postfix.org/
http://www.kobitosan.net/postfix/
-
Postfixのインストール
Postfixのインストール
-
フィルタリング設定サンプル(header_checks、body_checks)
main.cfに予めheader_checksとbody_checksがない場合があります。
その場合は、自分で追加します。
vi /etc/postfix/main.cf
header_checks = regexp:/etc/postfix/header_checks
body_checks = regexp:/etc/postfix/body_checks
vi /etc/postfix/header_checks
#Received Asia
/^Received:.*\[211\.112\./ DISCARD
/^Received:.*\[218\.39\./ DISCARD
#Received Domain
/^Subject:.*testtest/ REJECT
/^Received:.*.com\.tw/ REJECT
/^Received:(.from.a-net\.ne\.jp)/ REJECT
#others
/^X-Mail-Agent:.*(BSMTP DLL)/ DISCARD
/^X-Mailer:(.AOL).*(for.Windows.US.sub)/ REJECT
#From
/^From:.*@yahoo\.fr/ REJECT
/^From:.*@yahoo\.ca/ REJECT
#To
/^To:.*undisclosed-recipients/ REJECT
#Subject
/^Subject:(.Re:)$/ REJECT
/^Subject:(.Re:Re:)$/ REJECT
/^Subject:(.Re:Re:Re:)$/ REJECT
#netsky
/name=.*\.scr/ REJECT
vi /etc/postfix/body_checks
#spam
/^(|[^>].*)livedear.com/ REJECT
#LogWatch
if !/(reject: header|reject: body)/
/^(|[^>].*)sample.com/ REJECT
/^(|[^>].*)http:\/\/[0-9a-zA-Z!-~]+\.ch/ REJECT
/^(|[^>].*)http:\/\/[0-9a-zA-Z!-~]+\.example\.net/ REJECT
end if
*root宛てにLogWatchのメールを送っている場合、
body_checksでREJECTすると、LogWatchのメールもREJECTされ、
エラーメールで届いてしまうので、if文などで制御する
*マニュアルではendifとなってるがendifだとpostmap時にエラーになる
end ifか何もかかないとエラーが出ず、一応動作する
if以降の行は、行頭にスペースやタブを入れない
スペースやタブは、前行の続きとみなされる
設定後、postmap
/usr/sbin/postmap /etc/postfix/header_checks
/usr/sbin/postmap /etc/postfix/body_checks
設定をリロード
service postfix reload
処理方法について
OK:受信する(Ver2.1以降はDUNNO推奨)
IGNORE:一致した行をヘッダから削除
REJECT:受信拒否して、エラーメールを返す
DISCARD:受信して破棄する
-
ORDB、RBL(DNSBL)による受信拒否
ORDBや、RBL(DNSBL)は、スパムのドメインやIPアドレス収集・管理しているサイトです。
これらのデータベースを利用して、受信拒否することができます。
※RBL(DNSBL)は、スパムではないIPアドレスも受信拒否してしまう可能性があります。
※メールをきちんと確認したい人には、おすすめしません。
まず、main.cf 中に smtpd_client_restrictions を書きます。
初期状態では、smtpd_client_restrictions がない場合があるので適当に追加。
また、maps_rbl_domainsは古い機能なのでPostfix 2.0以降はいらない。
Postfix 2.0以降はsmtpd_client_restrictions中にreject_rbl_clientを使う。
smtpd_recipient_restrictionsもいらない。
設定後、postfix再起動。
・例
vi /etc/postfix/main.cf
smtpd_client_restrictions = permit_mynetworks,
reject_rbl_client relays.ordb.org,(閉鎖された)
reject_rbl_client all.rbl.jp,
reject_rbl_client bl.spamcop.net,
reject_rbl_client list.dsbl.org,
reject_rbl_client sbl-xbl.spamhaus.org,
permit
関連サイト
http://www.kobitosan.net/postfix/trans-2.2/jhtml/postconf.5.html
http://www.rbl.jp/
http://www.ordb.org/ ※ORDBは、閉鎖されました。
-
procmailでフィルタリング
procmailを利用して、フィルタリングやメール転送などができます。
メールヘッダ、本文などの文字列に対して正規表現を使って制御できます。
Postfixだけでは、フィルタリングしきれない場合などに利用。
ただし、一度受け取ってからの処理になるため、エラーメールを返すことはできず、基本的に破棄するだけです。
スパムではないメールも破棄してしまわないように、自分でメールを確認したい人には、良いと思います。
・procmailのパス確認
which procmail
/usr/bin/procmail
-
スパムのリレーメール対策、チェック方法
リレーメールの受信拒否をチェックできるサイトを利用してチェックします。
リレーメールとは、自分のサーバを踏み台にして、スパムを送信する行為です。
telnet relay-test.mail-abuse.org
というコマンドを実行すると、19項目程度テストが行われます。
リレーメールが可能な場合(NGの場合)は、途中でテストが中断されます。
旧アドレス
telnet mail-abuse.org
は、現在使えません。