CentOS7

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

taRgrey(S25R+tarpitting+greylisting)という手法※を用いてメールサーバー側でスパムメール送信元からの接続を拒否してスパムメールを受信しないようにする。

ここでは、milter-greylistを使用してスパムメール送信元からの接続を拒否する。メールサーバー(Postfix)milter-greylistとの連携はmilter-managerを利用して行なう。

なお、本手法をすり抜けたスパムメールは他の手法で除去する。

&color(red){※taRgreyとは

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

なお、通常のメールサーバーは応答が遅延しても待ち続け、接続が拒否されても再送要求が行われた場合は再度送信を試みるため、本手法による影響は受けない。tarpittinggreylistingを行う対象もS25Rで動的IPアドレスの可能性がある場合のみのため、通常のメールサーバーからのメール受信が遅延することもない。

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

milter-greylistインストール

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

milter-greylist設定

[root@localhost ~]# 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@localhost ~]# systemctl start milter-greylist ← milter-greylist起動
[root@localhost ~]# systemctl enable milter-greylist ← milter-greylist自動起動設定

Postfix設定

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

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

[root@localhost ~]# curl -s https://packagecloud.io/install/repositories/milter-manager/repos/script.rpm.sh | bash ← milter-manager_reposリポジトリ追加
[root@localhost ~]# yum -y install milter-manager ← milter-managerインストール

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

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

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

[root@localhost ~]# 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@localhost ~]# usermod -G milter-manager -a postfix ← milter-managerグループにpostfixユーザーを追加
[root@localhost ~]# systemctl reload postfix ← Postfix設定反映

milter-manager・milter-greylist連携設定

[root@localhost ~]# usermod -G grmilter -a milter-manager ← grmilterグループにmilter-managerユーザーを追加
[root@localhost ~]# usermod -G mail -a milter-manager ← mailグループにmilter-managerユーザーを追加
[root@localhost ~]# systemctl restart milter-manager ← milter-manager再起動
[root@localhost ~]# 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",
]

S25Rmilter-greylist側に設定するのではなく、milter-managerから初期提供されているmilterの組み込み適用条件のS25R(/etc/milter-manager/applicable-conditions/s25r.conf)を利用する=milter-manager側にてS25Rを実施して該当する場合(接続元IPアドレスが動的IPアドレスの可能性がある場合)のみ、milter-greylistに制御を渡す。milter-greylist側ではtarpitting(遅延応答)とgreylisting(再送要求)を行う。


トップ   編集 凍結解除 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-10-28 (月) 08:58:19