制限の設定
様々な条件で制限を行うには下記4つのパラメータを使用します(以下デフォルトの状態)
1、smtpd_client_restrictions = 接続時クライアントIP又はホスト名による制限
※なお実際はRCPT TO:コマンドが発行された時、拒否される(ログを残す為に)
2、smtpd_helo_restrictions = HELOホストによる制限
3、smtpd_sender_restrictions = MAIL FROMアドレスによる制限
↓RCPT TO送信元による制限
4、smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination
●1、smtpd_client_restrictions(接続時クライアントIP又はホスト名による制限)
permit_mynetworks mynetworksは全て許可(以外の条件ノーチェック)
reject_unknown_client DNSで逆引きできないホスト。又は一致しないホストを拒否する
※使用注意※ 普通に逆引きできないホストは結構存在する
拒否応答コード450
reject_rbl_client spamcop.net, RBLのデータベースに登録されているIPからの接続を拒否
reject_rbl_client dynablock.wirehub.net, ※使用注意
reject_rbl_client opm.blitzed.org, RBLに登録されている情報が正しい保障はない
reject_rbl_client sbl.spamhaus.org,
なおDBサーバが落ちている(ダウンしている)場合、リストが更新されなく下記のような554のエラーログが残る
554 Service unavailable
check_client_access dbm:/etc/postfix/bad_clients等ファイルリストを指定(リストにはキーと値を指定
リストの記入方法はルックアップテーブルを参照
リストを更新したときは、インデックスファイルの再生成をお忘れなく(postmap ファイル名)
※postfix reloadは不要です。実際に拒否されるのはRCPT TO:の時です(下記そのエラー)
詳しくは smtpd_delay_reject を参照
554 5.7.1 : Client host rejected: Access denied
例 smtpd_client_restrictions = permit_mynetworks,
check_client_access dbm:/etc/postfix/bad_clients,
permit
○mynetworksは全て許可(以下ノーチェック)、リストに記載されているのは拒否、その他は許可
●2、smtpd_helo_restrictions(HELOホストによる制限)
※もちろんHELOのホスト名は偽装が容易なので、これによる制限だけでは不十分の可能性がある
HELOで通知されるホスト名は、本来相手側のホスト名なので自分のホスト名等を名乗ったり
localhostを名乗るホストを拒否する等に使用する
check_helo_access dbm:/etc/postfix/bad_helo ここに書く
reject_invalid_hostname HELOコマンドで提供されるホスト名が有効なホスト名でない時拒否
拒否応答コード501
reject_non_fqdn_hostname HELOコマンドで提供されるホスト名がRFCで必須とされる完全修飾名の
形式でない時、要求を拒否。拒否応答コード504
reject_unknown_hostname HELOコマンドで提供されるホスト名がAレコードもMXレコードも無い時
要求を拒否。拒否応答コード450(unknown_hostname_reject_codeで指定も)
●3、smtpd_sender_restrictions(MAIL FROMアドレスによる制限)
※もちろんFROMも容易に偽装が可能なので、実際に使うことはほとんど無い
check_sender_access dbm:/etc/postfix/bad_from ここに書く
reject_non_fqdn_sender MAIL FROMコマンドで提供されるホスト名がRFCで必須とされる
完全修飾名の形式でない時、要求を拒否。拒否応答コード504
reject_unknown_sender_domain MAIL FROMコマンドで提供されるアドレスのドメインがAレコードも
MXレコードも無い場合拒否。拒否応答コード450(unknown_address_reject_codeで指定も)
●4、smtpd_recipient_restrictions(RCPT TOアドレスによる制限)
check_recipient_access dbm:/etc/postfix/bad_to ここに書く
permit_auth_destination 最終配信先(リレーも同じ)と一致する場合に要求を許可
配信先はmydestination、inet_interfaces、virtual_alias_maps、virtual_mailbox_maps、
リレーはrelay_domains一致が見つからない場合、REJECTではなくDUNNOを返します。
よって次の制限のチェックを続けます
reject_unauth_destination
★これを基本的に外してはいけない(デフォルトで有効)外すとオープンリレーになる
最終配信先(上記permit_auth_destinationと同じ)と一致しない場合、要求を拒否
permit_mx_backup MXレコードのエントリーにあるドメイン宛のメッセージを許可
reject_non_fqdn_recipient RCPT TOで提供されるアドレスが、RFCで必須とされる完全修飾名の
形式でない時、要求を拒否。拒否応答コード504
reject_unknown_recipient_domain RCPT TOで提供されるアドレスが、AレコードもMXレコードも無い場合
要求を拒否。拒否応答コード450(unknown_address_reject_codeで指定も)
フローコントロール、レートコントロール
smtpd_client_connection_rate_limit 一定時間内に同一クライアントから接続できる回数を制限
デフォルト0(制限なし)、時間の指定はanvil_rate_time_unit(デフォルト60秒)にて指定
制限にかかると以下のようなログが残ります
Mar 14 22:27:20 host1 postfix/anvil[981]: [ID 197553 mail.info] statistics: max connection rate 3/60s for (smtp:192.168.1.10) at Mar 14 22:24:00
smtpd_client_connection_count_limit 1つのSMTPクライアントの最大同接続数 デフォルト:50
smtpd_client_message_rate_limit 単位時間内送信許可数 デフォルト:0(制限なし)
smtpd_client_recipient_rate_limit 単位時間内宛先数 デフォルト:0(制限なし)
anvil_rate_time_unit クライアントの接続速度やその他の速度の計算に用いられる
単位時間 デフォルト:60s
smtpd_client_event_limit_exceptions
接続カウントや接続速度、SMTP要求速度の制限から除外される
クライアントの指定 デフォルト:$mynetwork
■プロセス、配送制御等
default_process_limit = 100 smtpd最大子プロセス数の指定 ※この設定はmaster.cfを参照
default_destination_concurrency_limit 同じ配送先に同時に送ることができるメッセージの数 デフォルト: 20
local_destination_concurrency_limit 同じローカル受信者に対して同時に配送するメッセージの数 デフォルト: 2
smtpd_recipient_limit = 1000 1メッセージ当たりの受信者数の制限。CCやBCCを使った場合のこと
message_size_limit = 10240000 1通あたりの受け付けるメッセージサイズ(デフォルト10MB)。0なら無制限
その他
smtpd_helo_required = yes
SMTP RFCが既定するとおりHELO/EHLOを使って対話を始めなければいけません
クライアントがこの手順を省略するとメッセージを拒否します
disable_vrfy_command = yes VRFYコマンドの禁止
soft_bounce = yes これをyesにするとハード拒否(5xx)がソフト拒否(4xx)に変わります
実際には拒否されない為、ログで確認後正規運用が行えます
warn_if_reject パラメータ 特定のパラメータだけを上記と同じ条件にする方法
例 warn_if_reject reject_invalid_hostname
smtpd_delay_reject = no
規則の中でREJECTで拒否された場合、デフォルトでは実際にはRCPT TOコマンドを
送信するまではメッセージを拒否しません
これはSMTPクライアントによっては、トランザクションの間は拒否されたかチェックを行わず
配信を続けようとするものがあり、この場合通常よりも接続が長く続きログにも大量の警告が
残る。また、より完全なログを残す為でもある。
この設定を変更し、拒否の応答を早く行いたい場合は(接続段階時)、このパラメータにnoを設定
smtpd_error_sleep_time = 1s 遅延時間1秒
smtpd_soft_error_limit = 10 10個目のエラーまでは許容
smtpd_hard_error_limit = 20 20個目のエラーが発生したとき接続を切断する
つまり上記の場合、10個目のエラーを検出するとそれ以降のエラーごとに1秒ごと遅延させる
エラー数が20に達すると、クライアントとの接続が切断される。
なお再度要求があった場合も以後繰り返し
■エラーコードについて
4xxエラー クライアントはメッセージをキューに入れ、後で再配送を試みます
5xxエラー 永続的なエラーを示し、メッセージの送信を停止するようクライアントに指示します
■■■テスト
telnet 192.168.1.100 25 25番ポートへアクセス
helo 自分のFQDNなど
mail from:<自分のメールアドレス> コロンとカッコは必要です
rcpt to:<相手のメールアドレス>
前へ トップへ