メールサーバーでスパムメール送信元接続拒否(Postfix+milter-manager+milter-greylist)

最終更新日: 2017.09.08

<<トップページ <<新着情報 <<逆引き集 <<リンク集 <<サイト内検索 <<メルマガ <<Scientific Linuxで自宅サーバー構築 <<Fedoraで自宅サーバー構築

■概要

taRgrey(S25R+tarpitting+greylisting)という手法※を用いてメールサーバー側でスパムメール送信元からの接続を拒否してスパムメールを受信しないようにする。
ここでは、milter-greylistを使用してスパムメール送信元からの接続を拒否する。メールサーバー(Postfix)とmilter-greylistとの連携はmilter-managerを利用して行なう。
なお、本手法をすり抜けたスパムメールは他の手法で除去する。

※taRgreyとは
スパムメール送信元の特徴(・動的IPアドレスであることが多い、・大量のサーバーへメールを送るため応答が遅い、または拒否するサーバーへの送信はあきらめる)を逆手にとり、接続元IPアドレスが動的IPアドレスの可能性がある場合(S25R)、わざと応答を一定時間遅延させ、接続を切断せずに待ち続けた場合のみメールを受信する(tarpitting)。接続を切断して再度接続してきた場合でも一旦接続を拒否し、再送要求を行い、再送してきた場合のみ受信する(greylisting)。
なお、通常のメールサーバーは応答が遅延しても待ち続け、接続が拒否されても再送要求が行われた場合は再度送信を試みるため、本手法による影響は受けない。tarpittingとgreylistingを行う対象もS25Rで動的IPアドレスの可能性がある場合のみのため、通常のメールサーバーからのメール受信が遅延することもない。


メールサーバーを導入済であること


■milter-greylistインストール

[root@centos ~]# yum -y install milter-greylist ← milter-greylistインストール

■milter-greylist設定

[root@centos ~]# vi /etc/mail/greylist.conf ← milter-greylist設定ファイル編集
socket "/run/milter-greylist/milter-greylist.sock" 660 ← グループにソケットへの書き込み権限付加

# Your own network, which should not suffer greylisting
#list "my network" addr { 127.0.0.1/8 10.0.0.0/8 192.0.2.0/24 } ← 行頭に#を追加してコメントアウト
−−追加(ここから)−−
# 内部ネットワークアドレス
list "my network" addr { \
        127.0.0.1/8      \
        10.0.0.0/8       \
        172.16.0.0/12    \
        192.168.0.0/24   \
}
−−追加(ここまで)−−

#racl greylist list "grey users" delay 30m autowhite 3d ← 行頭に#を追加してコメントアウト
#racl whitelist default ← 行頭に#を追加してコメントアウト
racl whitelist tarpit 125s ← 追加(応答を125秒遅延させて接続が継続している場合は受信)
racl greylist default ← 追加(125秒の遅延応答を待たずに切断後再接続してきた場合は一旦、受信拒否して再送要求)

■milter-greylist起動

[root@centos ~]# systemctl start milter-greylist ← milter-greylist起動

[root@centos ~]# systemctl enable milter-greylist ← milter-greylist自動起動設定

■Postfix設定

[root@centos ~]# vi /etc/postfix/main.cf ← Postfix設定ファイル編集
milter_command_timeout = 150 ← 追加(milterアプリケーションの応答を150秒待つ)

[root@centos ~]# systemctl reload postfix ← Postfix設定反映

■milter-managerインストール※既に導入済の場合は不要

[root@centos ~]# curl -s https://packagecloud.io/install/repositories/milter-manager/repos/script.rpm.sh | bash ← milter-manager_reposリポジトリ追加

[root@centos ~]# yum -y install milter-manager ← milter-managerインストール

■milter-manager起動※既に導入済の場合は不要

[root@centos ~]# systemctl start milter-manager ← milter-manager起動

[root@centos ~]# systemctl enable milter-manager ← milter-manager自動起動設定

■Postfix・milter-manager連携設定※既に導入済の場合は不要

[root@centos ~]# vi /etc/postfix/main.cf ← Postfix設定ファイル編集
下記を追加
milter_protocol = 6
milter_default_action = tempfail
milter_mail_macros = {auth_author} {auth_type} {auth_authen}
smtpd_milters = unix:/var/run/milter-manager/milter-manager.sock

[root@centos ~]# usermod -G milter-manager -a postfix ← milter-managerグループにpostfixユーザーを追加

[root@centos ~]# systemctl reload postfix ← Postfix設定反映

■milter-manager・milter-greylist連携設定

[root@centos ~]# usermod -G grmilter -a milter-manager ← grmilterグループにmilter-managerユーザーを追加

[root@centos ~]# usermod -G mail -a milter-manager ← mailグループにmilter-managerユーザーを追加

[root@centos ~]# systemctl restart milter-manager ← milter-manager再起動

[root@centos ~]# milter-manager --show-config|less ← milter-manager設定確認
・
・
・
define_milter("milter-greylist") do |milter| ← milter-manager・milter-greylist連携設定
  # /usr/lib64/milter-manager/binding/lib/milter/manager/detector.rb:44
  milter.connection_spec = "unix:/run/milter-greylist/milter-greylist.sock"
  # /usr/lib64/milter-manager/binding/lib/milter/manager/detector.rb:38
  milter.description = "Grey listing filter for sendmail"
  # /usr/lib64/milter-manager/binding/lib/milter/manager/detector.rb:37
  milter.enabled = true
  # default
  milter.fallback_status = "accept"
  # default
  milter.evaluation_mode = false
  milter.applicable_conditions = [
    # default
    "Sendmail Compatible",
    # default
    "Stress Notify",
    # default
    "Trust",
    # default
    "Remote Network",
    # default
    "S25R", ← milter-greylist適用条件にS25Rが設定されている※
    # default
    "Unauthenticated",
  ]
※S25Rはmilter-greylist側に設定するのではなく、 milter-managerから初期提供されているmilterの組み込み適用条件のS25R(/etc/milter-manager/applicable-conditions/s25r.conf)を利用する=milter-manager側にてS25Rを実施して該当する場合(接続元IPアドレスが動的IPアドレスの可能性がある場合)のみ、milter-greylistに制御を渡す。milter-greylist側ではtarpitting(遅延応答)とgreylisting(再送要求)を行う。






▲このページのトップへ戻る

LPIロゴ Copyright© 2005-2017 fallenangels, All rights reserved.
ご自由にリンクしてください(連絡は不要です)
本ページへのご意見・ご要望、誤字・脱字・リンク切れ等のご連絡はこちらからお願いします