努力したWiki

推敲の足りないメモ書き多数

ユーザ用ツール

サイト用ツール


documents:mail:mail-014

SPFレコードに登録されているスパムホストへの対処例(Postfix)

2016/04/04
SPFレコードを登録しているホストを制限する例。あくまで例なのでこれを参考にするなら自己責任で。

SPFレコードを登録されたスパムホストへの対処

Postfix+postfix-policyd-spf-pythonの環境でのログ

toramaki.net ですか。

Apr  4 03:04:34 amame postfix/smtpd[13591]: connect from unknown[45.120.197.160]
Apr  4 03:04:35 amame policyd-spf[13596]: None; identity=helo; client-ip=45.120.197.160; helo=dhgiw7wob8.dushfc; envelope-from=jfsofy+err9899s722@toramaki.net; receiver=iam@hgotoh.jp
Apr  4 03:04:35 amame policyd-spf[13596]: Pass; identity=mailfrom; client-ip=45.120.197.160; helo=dhgiw7wob8.dushfc; envelope-from=jfsofy+err9899s722@toramaki.net; receiver=iam@hgotoh.jp
Apr  4 03:04:35 amame postfix/smtpd[13591]: 8F07EB62D02: client=unknown[45.120.197.160]
Apr  4 03:04:35 amame postfix/cleanup[13597]: 8F07EB62D02: message-id=<20160404030425@wfzaixz.okdmkus>
Apr  4 03:04:35 amame postfix/smtpd[13591]: disconnect from unknown[45.120.197.160] ehlo=1 mail=1 rcpt=1 data=1 quit=1 commands=5
Apr  4 03:04:35 amame postfix/qmgr[13467]: 8F07EB62D02: from=<jfsofy+err9899s722@toramaki.net>, size=3147, nrcpt=1 (queue active)
Apr  4 03:04:35 amame postfix/local[13598]: 8F07EB62D02: to=<crowller@hgotoh.jp>, orig_to=<iam@hgotoh.jp>, relay=local, delay=1.2, delays=1.1/0.01/0/0.02, dsn=2.0.0, status=sent (delivered to maildir)
Apr  4 03:04:35 amame postfix/qmgr[13467]: 8F07EB62D02: removed
Apr  4 03:07:55 amame postfix/anvil[13593]: statistics: max connection rate 1/60s for (smtp:45.120.197.160) at Apr  4 03:04:34
Apr  4 03:07:55 amame postfix/anvil[13593]: statistics: max connection count 1 for (smtp:45.120.197.160) at Apr  4 03:04:34
Apr  4 03:07:55 amame postfix/anvil[13593]: statistics: max cache size 1 at Apr  4 03:04:34
Apr  4 03:08:29 amame postfix/pickup[13468]: 9366DB62D14: uid=0 from=<root>
^C
root@amame:/usr/local/etc/postfix # 

DNSのTXTレコードにあるSPF定義を見てみる

toramaki.net のTXTレコードを見てみると、……includeだから spf-stx.burn-oxygen.com に共用されてるTXTレコードがあるのね。

root@amame:/usr/local/etc/postfix # drill TXT toramaki.net
;; ->>HEADER<<- opcode: QUERY, rcode: NOERROR, id: 53967
;; flags: qr rd ra ; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;; toramaki.net.        IN      TXT

;; ANSWER SECTION:
toramaki.net.   3138    IN      TXT     "v=spf1 include:spf-stx.burn-oxygen.com ~all"

;; AUTHORITY SECTION:

;; ADDITIONAL SECTION:

;; Query time: 0 msec
;; SERVER: 133.242.0.3
;; WHEN: Mon Apr  4 03:10:21 2016
;; MSG SIZE  rcvd: 86
root@amame:/usr/local/etc/postfix #

接続してきた相手のIPアドレスが 45.120.197.160 なので、“ip4:45.120.196.0/22”の定義に合致するのね。

root@amame:/usr/local/etc/postfix # drill TXT spf-stx.burn-oxygen.com
;; ->>HEADER<<- opcode: QUERY, rcode: NOERROR, id: 59089
;; flags: qr rd ra ; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;; spf-stx.burn-oxygen.com.     IN      TXT

;; ANSWER SECTION:
spf-stx.burn-oxygen.com.        147     IN      TXT     "v=spf1 ip4:45.120.196.0/22 ip4:45.124.217.0/24 ip4:103.58.71.0/24 ip4:103.227.8.0/22 ip4:103.232.203.0/24 ip4:103.243.243.0/24 ip4:103.248.70.0/24 ip4:103.251.157.0/24 ~all"

;; AUTHORITY SECTION:

;; ADDITIONAL SECTION:

;; Query time: 0 msec
;; SERVER: 133.242.0.3
;; WHEN: Mon Apr  4 03:15:56 2016
;; MSG SIZE  rcvd: 226
root@amame:/usr/local/etc/postfix #

リジェクト対象一覧を作成する

怪しいので全部リジェクト対象にする。

ネットマスクが24のものは単純に変換できる。

ネットワークアドレス 変換
45.124.217.0/24 45.124.217 REJECT
103.58.71.0/24 103.58.71 REJECT
103.232.203.0/24 103.232.203 REJECT
103.243.243.0/24 103.243.243 REJECT
103.248.70.0/24 103.248.70 REJECT
103.251.157.0/24 103.251.157 REJECT

ネットマスクが22のものは複数の変換結果に分割して対応。

ネットワークアドレス 変換
45.120.196.0/22 45.120.196 REJECT
45.120.197 REJECT
45.120.198 REJECT
45.120.199 REJECT
103.227.8.0/22 103.227.8 REJECT
103.227.9 REJECT
103.227.10 REJECT
103.227.11 REJECT

/usr/local/etc/postfix/rejecthosts の名前でファイルを作成。

rejecthosts
45.124.217   REJECT
103.58.71    REJECT
103.232.203  REJECT
103.243.243  REJECT
103.248.70   REJECT
103.251.157  REJECT
45.120.196   REJECT
45.120.197   REJECT
45.120.198   REJECT
45.120.199   REJECT
103.227.8    REJECT
103.227.9    REJECT
103.227.10   REJECT
103.227.11   REJECT

postmapコマンドでハッシュ化する。※ここでは hashを使わずcdbでデータベース化しているよ!

root@amame:/usr/local/etc/postfix # postmap cdb:rejecthosts
root@amame:/usr/local/etc/postfix #

/usr/local/etc/postfix/main.cf のsmtpd_client_restrictionsパラメタにcheck_client_accessオプションでrejecthostsを指定する。

smtpd_client_restrictions =
     permit_mynetworks
     check_client_access cdb:/usr/local/etc/postfix/rejecthosts
     permit

service postfix reload を実行してPostfixにrejecthosts.cdbの使用を指示して終了。

リジェクトされるとこんなログになる

103.232.203.73 は 103.232.203.0/24 に合致するのでリジェクト対象。

Apr  4 04:38:42 amame postfix/smtpd[14042]: warning: hostname r001-stc001.xq0t0qyc does not resolve to address 103.232.203.73: hostname nor servname provided, or not known
Apr  4 04:38:42 amame postfix/smtpd[14042]: connect from unknown[103.232.203.73]
Apr  4 04:38:43 amame postfix/smtpd[14042]: NOQUEUE: reject: RCPT from unknown[103.232.203.73]: 554 5.7.1 <unknown[103.232.203.73]>: Client host rejected: Access denied; from=<ginnfts+err73884s1043@se2.vurbyietloam.xyz> to=<oreda@hgotoh.jp> proto=ESMTP helo=<ha5etjt>
Apr  4 04:38:43 amame postfix/smtpd[14042]: disconnect from unknown[103.232.203.73] ehlo=1 mail=1 rcpt=0/1 data=0/1 rset=1 quit=1 commands=4/6
documents/mail/mail-014.txt · 最終更新: 2023/04/14 02:32 by 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki