RspamdにS25Rを組み込み

RspamdにS25Rを組み込んでみた。

環境

  • FreeBSD 14.1
  • Postfix 3.9.0
  • Rspamd 3.8.4

背景

今どきのスパムは、クライアントのアドレスが逆引きできないものが9割以上なので、Postfixで次のように設定すればほぼカバーできる。

smtpd_client_restrictions =
    permit_mynetworks
    reject_unknown_client_hostname
    reject_unknown_reverse_client_hostname

これをすり抜け、かつRspamdのスパム判定もすり抜けてくるものを、R25Sでつぶせないかと思って、試してみた。そこまですり抜けるものは決して多くないので、今のところまだ効果のほどは不明。

設定

ブラックリスト作成

/usr/local/etc/rspamd/map.d/client_r25s_blacklist.mapを作成し、次の内容を書き込む。

# pr86.internetdsl.tpnet.pl
# fq217.neoplus.adsl.tpnet.pl
# pa148.braniewo.sdi.tpnet.pl
/\.(internetdsl|adsl|sdi)\.tpnet\.pl$/
#
# user-0cetcbr.cable.mindspring.com
# user-vc8fldi.biz.mindspring.com
/^user.+\.mindspring\.com$/
#
# c9531ecc.virtua.com.br (hexadecimal used)
# c9066a60.static.spo.virtua.com.br (hexadecimal used)
/^[0-9a-f]{8}\.(.+\.)?virtua\.com\.br$/
#
# catv-5984bdee.catv.broadband.hu (hexadecimal used)
/\.catv\.broadband\.hu$/
#
# Edc3e.e.pppool.de
# BAA1408.baa.pppool.de
/[0-9a-f]{4}\.[a-z]+\.pppool\.de$/
#
# pD9EB80CB.dip0.t-ipconnect.de (hexadecimal used)
/\.dip[0-9]+\.t-ipconnect\.de$/
#
# pD9E799A1.dip.t-dialin.net (hexadecimal used)
/\.dip\.t-dialin\.net$/
#
# ool-43511bdc.dyn.optonline.net (hexadecimal used)
/\.dyn\.optonline\.net$/
#
# rt-dkz-1699.adsl.wanadoo.nl
# c3eea5738.cable.wanadoo.nl (hexadecimal used)
/\.(adsl|cable)\.wanadoo\.nl$/
#
# ACBBD419.ipt.aol.com (hexadecimal used)
/\.ipt\.aol\.com$/
#
# *** GENERIC PROTECTION ***
#
# [rule 0]
/^unknown$/
#
# [rule 1]
# ex.: evrtwa1-ar3-4-65-157-048.evrtwa1.dsl-verizon.net
# ex.: a12a190.neo.rr.com
/^[^.]*[0-9][^0-9.]+[0-9].*\./
#
# [rule 2]
# ex.: pcp04083532pcs.levtwn01.pa.comcast.net
/^[^.]*[0-9]{5}/
#
# [rule 3]
# ex.: 398pkj.cm.chello.no
# ex.: host.101.169.23.62.rev.coltfrance.com
/^([^.]+\.)?[0-9][^.]*\.[^.]+\..+\.[a-z]/
#
# [rule 4]
# ex.: wbar9.chi1-4-11-085-222.dsl-verizon.net
/^[^.]*[0-9]\.[^.]*[0-9]-[0-9]/
#
# [rule 5]
# ex.: d5.GtokyoFL27.vectant.ne.jp
/^[^.]*[0-9]\.[^.]*[0-9]\.[^.]+\..+\./
#
# [rule 6]
# ex.: dhcp0339.vpm.resnet.group.upenn.edu
# ex.: dialupM107.ptld.uswest.net
# ex.: PPPbf708.tokyo-ip.dti.ne.jp
# ex.: dsl411.rbh-brktel.pppoe.execulink.com
# ex.: adsl-1415.camtel.net
# ex.: xdsl-5790.lubin.dialog.net.pl
/^(dhcp|dialup|ppp|[achrsvx]?dsl)[^.]*[0-9]/

所有者をrspamdにしておく。

# sudo chown rspamd:rspamd /usr/local/etc/rspamd/map.d/client_r25s_blacklist.map

ホワイトリスト作成

このリストは、適宜メンテが必要

/usr/local/etc/rspamd/map.d/client_r25s_whitelist.mapを作成し、次の内容を書き込む。

# mail-gx0-f21.google.com, etc.
/\.google\.com$/
#
# mc1-s3.bay6.hotmail.com, etc.
/\.hotmail\.com$/
#
# h04-a1.data-hotel.net, etc.
/\.data-hotel\.net$/
#
# web10902.mail.bbt.yahoo.co.jp
/\.yahoo\.co\.jp$/
#
# web35509.mail.mud.yahoo.com
/\.yahoo\.com$/
#
# n2.59-106-41-68.mixi.jp, etc.
/\.mixi\.jp$/
#
# mta12.m2.home.ne.jp, etc.
/\.m2\.home\.ne\.jp$/
#
# mmrts006p01c.softbank.ne.jp, etc.
/\.softbank\.ne\.jp$/
#
# imt1omta04-s0.ezweb.ne.jp, etc.
/\.ezweb\.ne\.jp$/
#
# bay-w1-inf5.verisign.net, benicia-w2-inf30.verisign.net
/\.verisign\.net$/
#
# tpbkbmp0ms001f02.bk.mufg.jp
/\.bk\.mufg\.jp$/
#
# o5.ptr1233.mail.saisoncard.co.jp
/\.mail\.saisoncard\.co\.jp$/
#
# nkml1smsd510.nikkei.co.jp
/\.nikkei\.co\.jp$/
#
# cmml011-m1.nikkeibp.co.jp
/\.nikkeibp\.co\.jp$/
#
# ms11p00im-qufo17291901.me.com
/\.me\.com$/
#
# mat58-209.smtp.rakuten.co.jp
/\.smtp\.rakuten.co\.jp$/
#
# mail232-1.jp.betrend.com
/\.betrend\.com$/
#
# mail-japanwestazon11020131.outbound.protection.outlook.com
/\.outbound\.protection\.outlook.com$/
#
# 5b-j04-b2-158.data-hotel.net
/\.data-hotel\.net$/
#
# 66-220-144-150.mail-mail.facebook.com
/\.mail-mail\.facebook\.com$/
#
# a60-157.smtp-out.us-west-2.amazonses.com
/\.amazonses\.com$/
#
# bmmpm3501.jpx1.mta.emberpoint.com
/\.mta\.emberpoint\.com$/
#
# mta-70-23-220.evernote.com.sparkpostmail.com
/\.sparkpostmail\.com$/
#
# mta101.mail01.monex.co.jp
/\.monex\.co\.jp$/
#
# o6.ptr6039.ml.kuronekoyamato.co.jp
/\.kuronekoyamato\.co\.jp$/
#
# smtp1-2.dfw.wordpress.com
/\.wordpress\.com$/
#
# wfbtqkqd.outbound-mail.sendgrid.net
/\.outbound-mail\.sendgrid\.net$/

所有者をrspamdにしておく。

# sudo chown rspamd:rspamd /usr/local/etc/rspamd/map.d/client_r25s_whitelist.map

multimap.conf

/usr/local/etc/rspamd/local.d/multimap.confに次の行を追加する。

CLIENT_S25R_BLACKLIST {
	type = "hostname"
	symbol = "CLIENT_S25R_BLACKLIST";
	one_shot = true;
	map = "${LOCAL_CONFDIR}/maps.d/client_s25r_blacklist.map";
	regexp = true;
	score = 1.0;
}

CLIENT_S25R_WHITELIST {
	type = "hostname"
	symbol = "CLIENT_S25R_WHITELIST";
	one_shot = true;
	map = "${LOCAL_CONFDIR}/maps.d/client_s25r_whitelist.map";
	regexp = true;
	score = -1.0;
}

settings.conf

/usr/local/etc/rspamd/local.d/settings.confがなければ作成し、既存であれば追加で次の内容を書き込む。

authenticated {
    priority = high;
    authenticated = yes;
    apply {
        symbols_disabled = ['CLIENT_S25R_BLACKLIST'];
    }
}

認証ユーザにはS25Rを適用しないための設定。

動作確認

該当するメールのヘッダに、次のようにチェックが追加されていることを確認する。

CLIENT_S25R_BLACKLIST (10) [cmml012-m1.nikkeibp.co.jp]
CLIENT_S25R_WHITELIST (-10) [cmml012-m1.nikkeibp.co.jp]

上の例では、S25Rチェックにかかったものをホワイトリストで救済している。適宜ホワイトリストのメンテが必要。

考察

一週間ほど運用してみての感想は、「ホワイトリストのメンテコストに対して効果が薄い」。つまり、やたら手間がかかる割には、たいして効果がない

なにしろ、ホワイトリストへの追加は毎日のようにあるのに、S25Rのおかげで拒否できたスパムは1件だけ。どう見ても、労力と効果が見合っていない。

原因は、おそらくこのブラックリストを作成し始めた当時とは、正規運用されるメールサーバの命名規則が変化してきているためと思われる。この頃のメールサーバ名には数字を組み合わせたものも多く、以前に比べてエンドユーザ用ホスト名と命名規則の差が少なくなっている

こうなると、正規運用されているメールサーバがS25Rチェックに引っかかる率が上がる。すなわち、ホワイトリストのメンテの手間が増えるというわけ。

決まったところからしかメール受信がないような閉じた環境であればよいけれども、受信先が多岐にわたる場合には、ホワイトリスト追加がいたちごっこのようになって、果てしない可能性あり。時代に合わなくなってきたのかな、ということで、運用からは外すことにした。

参考

タイトルとURLをコピーしました