Google GMAILのSMTPのIPアドレス範囲
以前、Google workspaceで のGmailに存在しないアドレスはローカルのSMTPサーバーで処理するように、メールのルーティングルールを書いたわけですが。
ルールをかいたので、ローカルのSMTPサーバーへは、Gmailからメールが転送されてくるわけです。
しかし、ローカルの「ポート25」を全部開放すると大変なことになるわけです。もちろんPostfixのフィルタやスパムフィルタで処理もしているのですが、やっぱり スパムはとんでもない量が飛んでくるために、Postfixが詰まってしまうし、スパムフィルタでCPU使用率も跳ね上がるわけです。
そこで、IPアドレス範囲を絞ってGmailのSMTPリレー以外をドロップするようにFWに記述し、port 25 のアクセスをSPFベースで絞ったほうがマシであろうと思われるわけです。
Google IP address ranges for outbound mail servers - Google Workspace Admin Help
SFP を見てみる。
gmail の SPFのTXTレコードは次のようになっている。
$ dig txt gmail.com +short | grep spf "v=spf1 redirect=_spf.google.com"
gmail の spf 一覧は _spf.google.com
に書かれているとわかる。
SFPレコードからinclude を取り出す。
では、_spf.google.com
を調べてみる。
dig txt _spf.google.com +short | $(which grep) -Po '(?<=include:)[^\s]+'
SFPレコードを見てみると
$ dig txt _spf.google.com +short "v=spf1 include:_netblocks.google.com include:_netblocks2.google.com include:_netblocks3.google.com ~all"
これをgrep でマッチすることで、
dig txt _spf.google.com +short | $(which grep) -Po '(?<=include:)[^\s]+' _netblocks.google.com _netblocks2.google.com _netblocks3.google.com
ここで、include なので、3つのドメイン名のTXTレコードを合わせたものが、GmailのSPFだとわかる。
spf レコードから IPアドレスを取り出す。
それでは、 _netblocks.google.com
をさらに見てみる。
dig txt _netblocks.google.com +short | $(which grep) -Po '(?<=ip4:)[0-9\./]+'
これを実際に実行してみると、次のようになる。
dig txt _netblocks.google.com +short | $(which grep) -Po '(?<=ip4:)[0-9\./]+' 35.190.247.0/24 64.233.160.0/19 66.102.0.0/20 66.249.80.0/20 72.14.192.0/18 74.125.0.0/16 108.177.8.0/21 173.194.0.0/16 209.85.128.0/17 216.58.192.0/19 216.239.32.0/19
これで、IPアドレスが得られることがわかる。
gmail のSPFのTXTレコードについて。
ここまでで、GmailのSPFレコードは、次のような階層を用いて管理されているとわかる。
redirect → include → ipv4:[address/mask address/mask address/mask]
まとめてIPアドレスを取り出す。
for i in $( dig txt _spf.google.com +short | \grep -Po '(?<=include:)[^\s]+' ); do dig $i +short txt | \grep -Po '(?<=ip4:)[0-9\./]+' done
これを実行することでSPFレコードに記載されたIPアドレスが得られることがわかる。
for i in $( dig txt _spf.google.com +short | \grep -Po '(?<=include:)[^\s]+' ); do dig $i +short txt | \grep -Po '(?<=ip4:)[0-9\./]+'; done | sort -n | uniq 35.190.247.0/24 35.191.0.0/16 64.233.160.0/19 66.102.0.0/20 66.249.80.0/20 72.14.192.0/18 74.125.0.0/16 108.177.8.0/21 108.177.96.0/19 130.211.0.0/22 172.217.0.0/19 172.217.128.0/19 172.217.160.0/20 172.217.192.0/19 172.217.32.0/20 172.253.112.0/20 172.253.56.0/21 173.194.0.0/16 209.85.128.0/17 216.239.32.0/19 216.58.192.0/19
SPFレコードからIPアドレス範囲を得ることで、送信元のIPアドレスを見ることができる、そしてそのIPアドレスをから 送られてきたメールのみに絞ることができるが、FWのフィルタリングにも使えそうであるとわかる。
今回使った grep
上記の例で使ったGREPのコマンドは、GNU grep で拡張正規表現を用いて、マッチした場所を取り出すオプションと、先読みを使っている。そのために随分とシンプルになって嬉しい。
参考資料
Google IP address ranges for outbound mail servers - Google Workspace Admin Help