フィルタをかけて、メールの受け取り拒否と不正中継の防止

まずはじめに、/etc/postfix/header_checks というファイルを作成します。

メールヘッダの文字列で受け取り拒否

# vi /etc/postfix/header_checks ← 設定ファイル作成

 i キー(入力モード)

※ 赤字の部分は例ですので各自の環境に合わせて変更してください。

X-Mailer:
大量配信を目的とした特殊なメーラーや、バージョン等に特徴のあるメーラーを受け取り拒否するように設定。

/^X-Mailer:.*DM Mailer/i REJECT
/^X-Mailer:.**ASAYAN/i REJECT


Subject:
ウィルスメールや勧誘、広告メールのタイトルとして記載されている文字列を記載します。

/^Subject:.*Re:Sample/ REJECT
/^Subject:.*Re:Document/ REJECT


From: と Return-Path:
それぞれ受け取り拒否したいメールアドレスを記載します。
メールアドレスの一部としてホスト名や、ドメイン名や、ドメインネームを指定すると、その文字列を含む物全て拒否します。

<#.*@.*>はそれぞれメールアドレスが含まれていない場合に適応されます。

/^From:.*<#.*@.*>/ REJECT
/^From:.*@hotomail.com/ REJECT
/^From:.*email.it/ REJECT

/^Return-Path:.*<#.*@.*>/ REJECT
/^Return-Path:.*@msn.com/ REJECT


name
添付ファイルの拡張子を記述します。
特定の拡張子の添付があるメールの受け取りを拒否できます。

/name=.*\.scr/ REJECT
/name=.*\.pif/ REJECT
/name=.*\.exe/ REJECT


Data
グリニッジ標準時を利用して海外からのメールを拒否(日本は+0900)

/^Date:.*-0500/ REJECT
/^Date:.*-0600/ REJECT
/^Date:.*-0700/ REJECT
/^Date:.*-0800/ REJECT
/^Date:.*-0900/ REJECT
/^Date:.*+0800/ REJECT


Received
メールヘッダのReceived行を非表示化する場合下記を追加

/^Received:/ IGNORE

記載したら Esc キー(コマンドモード):wqで保存

次に /etc/postfix/body_checks と言うファイルを作成します。


メール本文の文字列で受け取り拒否


# vi /etc/postfix/body_checks ← 設定ファイル作成

 i キー(入力モード)

本文文字列
メール本文に含まれる、マルチビジネスのお決まり文句や、URL、メールアドレス、電話番号、住所等の一部を記載すると効果大です。

/^(|[^>].*)diamond.exec.ws/ REJECT
/^(|[^>].*)090-1111-11/ REJECT
/^(|[^>].*)615-0042/ REJECT
/^(|[^>].*)mail.od.ua/ REJECT

記載したら Esc キー(コマンドモード):wqで保存

次に/etc/postfix/recipient_checks.regというファイルを作ります。


ユーザー名@ドメイン名、又はユーザー名@ホスト.ドメイン名といった、FQDNに従ったメールアドレス以外の受け取りを拒否します。

# vi /etc/postfix/recipient_checks.reg ← 設定ファイル作成

 i キー(入力モード)

/[@!%].*[@!%]/ 550 Please use user@domain address forms only. ← 追記

記載したら Esc キー(コマンドモード):wqで保存

次に/etc/postfix/main.cfを編集します。


# vi /etc/postfix/main.cf ← 設定ファイル編集

 i キー(入力モード)

header_checks = regexp:/etc/postfix/header_checks ← #を外して有効に

body_checks = regexp:/etc/postfix/body_checks ← 追記

最下部に以下を追記していきます。
 ,
カンマの付け忘れに注意してください。

smtpd_helo_required = yes

disable_vrfy_command = yes
外部ブラックリスト(RBL)に登録されているメールの受け取り拒否
smtpd_client_restrictions =
		permit_mynetworks, ← ※1
		reject_rbl_client sbl-xbl.spamhaus.org, ← ※2
		reject_rbl_client all.rbl.jp, ← ※3
		permit ← ※4

※5 外部ブラックリスト(RBL)にて受信拒否した場合の応答を変更(下記詳細を見て必要な場合のみ)
maps_rbl_reject_code = 550
default_rbl_reply = $rbl_code <$recipient>: Recipient address rejected: User unknown in local recipient tables

smtpd_recipient_restrictions =
                permit_mynetworks, ← ※1
		regexp:/etc/postfix/recipient_checks.reg, ← ※6
		reject_non_fqdn_recipient, ← ※7
		reject_unauth_destination ← ※8

smtpd_sender_restrictions =
		reject_unknown_sender_domain, ← ※9
		reject_non_fqdn_sender ← ※10

記載したら Esc キー(コマンドモード):wqで保存

# /etc/rc.d/init.d/postfix restart ← 設定終了後にPostfix再起動

※ header_checks、body_checks、recipient_checks.reg 等のファイルのみ編集してもPostfix を再起動する必要があります。

上記設定の詳細

※1

permit_mynetworks
自ネットワークに対して無条件で接続許可

※2
reject_rbl_client sbl-xbl.spamhaus.org
外部ブラックリスト(RBL)サービスを行っているスパムハウスのSBLとXBLでスパムとオープンプロキシを排除

※3
reject_rbl_client all.rbl.jp
日本独自のRBLサービスを行っているRBL.JPでウィルスメールとスパムを排除

※4
permit
上記の条件にマッチしなければ許可

※5
maps_rbl_reject_code = 550
default_rbl_reply = $rbl_code <$recipient>: Recipient address rejected: User unknown in local recipient tables

smtpd_client_restrictionsの部分の記述だけではRBLにてメール排除していることがスパマーに知られてしまいます。
RBLでスパムを排除した際のエラーコードとエラーメッセージを設定しておく事で、あて先ユーザーが存在しない為に
発生したエラーに見せかけます。
ただしこの設定では、メールログにも同じ記述が記載されるので、ユーザー不在かスパム排除か区別できなくなります。

区別する為に目印をエラーメッセージの末尾の「table」を「tabeles」等に変更しておけば、それをキーワードにRBLにて
排除されたログを見つけることが可能です。


上記設定をしてRBLにて排除されたログを確認するには

# grep -i tables /var/log/maillog ← メールログから「tables」を含むログを抽出
Mar 22 17:02:57 Linux postfix/smtpd[26076]: 70644BA2B3: reject: RCPT from unknown[124.42.3.211]: 550 <xxxx@1-max.net>: Recipient address rejected: User unknown in local recipient tables; from=<info@mail.yuytt.com> to=<xxxx@1-max.net> proto=SMTP helo=<mail.yuytt.com>

※6
regexp:/etc/postfix/recipient_checks.reg
FQDNに従ったメールアドレス以外の受信拒否

※7
reject_non_fqdn_recipient
受信者がFQDNに従ったメールアドレス以外拒否

※8
reject_unauth_destination
$mydestination, $inet_interfaces, $virtual_maps, $relay_domains のパラメータ値に
リストされたアドレス宛かチェックし、それ以外は拒否

※9
reject_unknown_sender_domain
未解決ドメインの受け取り拒否

※10
reject_non_fqdn_sender
送信者がFQDNに従ったメールアドレス以外拒否

不正中継テストを行う



上記のフィルタの設定が終われば、実際に不正中継されないか下記のどちらかでテストします。

NETWORK ABUSE CLEARINGHOUSE - Mail relay testing にて不正中継されないかチェックする。

Address to test: に取得したドメイン名か、確認くんでIPを調べてIPアドレスを入力。

次に Test for relay をクリックします。

17 種類のチェックが行われ、問題が無ければ、最下部に All tests performed, no relays accepted. と表示されます。
もし不正中継される様であればその時点でテストはストップします。

外部ブラックリスト(RBL)に登録されているかチェック

もし、ある特定の企業や友人からのメールが受信できない場合はブラックリストに登録されていないかチェックしてください。
また、特定の人のみメール送信できない場合も自分のホストが登録されていないかチェックしてください。

Black list DB checkにて、外部ブラックリスト(BRL)にSMTP(メール送信のサーバー)のホスト名かIPアドレスが
登録されているか調べる事が可能です。

ドメイン又はIPアドレスを入力して「クリエ送信」をクリックすれば結果が表示されます。

登録されていませんと表示されれば問題ないです。

もし登録されている場合は、サーバー設定を見直し(セキュリティー強化)を行って、削除の依頼を行ってください。




Copyright c Vine Linuxで自宅サーバー. 2004 All Rights Reserved.