Top > milter-regex 3.X GeoIP | Lang: JA EN | 最終更新日 : 2023/5/7 |
milter-regex 3.X は、Daniel Hartmeier 氏の milter-regex に GeoIPの機能を追加した後継バージョンです。
GeoIP 関する全ての処理は、milter-regex のソース・コードで実装しています。
MaxMind社のライブラリやその他の GeoIP ライブラリは利用していません。
GeoIPデータには、地域インターネット・レジストリ ( Regional Internet Registry ) のIPアドレス割り当てリストを利用します。
これらのリストは、milter-regex パッケージに含まれるスタンドアロンのユーティリティ・プログラムでASCII形式からバイナリ形式に変換します。
https://github.com/milter-regex | ・・・バージョン 3.0 以降 |
https://www.benzedrine.ch/milter-regex.html | ・・・バージョン 2.7 まで |
ライセンスは、オリジナルの milter-regex により、BSDライセンスです。
ライセンスのもとで、どなたでも、個人利用/商用利用を問わず、ご自由にご活用いただけます。
GitHub https://github.com/milter-regex/milter-regex/releases/tag/3.1
5つの地域インターネット・レジストリ ( Regional Internet Registry ) のIPアドレス割り当てリストを取得します。
$ ftp ftp> open ftp.afrinic.net Name: anonymous Password: ftp> cd /pub/stats/afrinic ftp> get delegated-afrinic-latest ftp> close ftp> open ftp.apnic.net Name: anonymous Password: ftp> cd /pub/stats/apnic ftp> get delegated-apnic-latest ftp> close ftp> open ftp.arin.net Name: anonymous Password: ftp> cd /pub/stats/arin ftp> get delegated-arin-extended-latest ftp> close ftp> open ftp.lacnic.net Name: anonymous Password: ftp> cd /pub/stats/lacnic ftp> get delegated-lacnic-latest ftp> close ftp> open ftp.ripe.net Name: anonymous Password: ftp> cd /pub/stats/ripencc ftp> get delegated-ripencc-latest ftp> close ftp> quit
milter-regex パッケージに含まれるスタンドアロンのユーティリティ・プログラムでASCII形式からバイナリ形式に変換します。
cat delegated-*-latest | grep '|..|ipv[46]|' | sort -t '|' -k 3,4 | /_path_/milter-regex-ip-prep ipv4.dat ipv6.dat
milter-regex でGeoIPを利用するには、最初に ipv4file, ipv6file, geoipCashMax, geoipCashKeep のキーワードを設定し、
続いてローカル・ネットワークの許可、そして、ブロック条件を設定します。
#################################################################################################### ##### ##### 00-settings.conf ##### #################################################################################################### # ipv4file, ipv6file # # Before use keyword 'country', both these keywords must be specified. # # Get RIR allocation data # # (1) Download IP address allocation lists from the RIR ( Regianl Internet Registry ) # ftp://ftp.afrinic.net/pub/stats/afrinic/delegated-afrinic-latest # ftp://ftp.apnic.net/pub/stats/apnic/delegated-apnic-latest # ftp://ftp.arin.net/pub/stats/arin/delegated-arin-extended-latest # ftp://ftp.lacnic.net/pub/stats/lacnic/delegated-lacnic-latest # ftp://ftp.ripe.net/pub/stats/ripencc/delegated-ripencc-latest # # (2) Convert IP address allocation lists from ASCII format to binary format # cat delegated-*-latest | grep '|..|ipv[46]|' | sort -t '|' -k 3,4 | /usr/local/sbin/milter-regex-ip-prep ipv4.dat ipv6.dat # # Maximum path length is 1023 characters. # ipv4file "/var/lib/milter-regex/ipv4.dat" ipv6file "/var/lib/milter-regex/ipv6.dat" # geoipCashMax # # Default 100K ( Minimum size ) # Unit None: Byte | k/K: KByte | m/M: MByte # geoipCashMax 2M # geoipCashKeep # # Default 7D # Unit None: Second | h/H: Hour | d/D: Day # geoipCashKeep 10D #################################################################################################### ##### ##### 10-passlist.conf ##### #################################################################################################### accept # Loopback and Local network connect // /^127\./ connect // /^10\./ connect // /^169\.254\./ connect // /^172\.(1[6-9]|2[0-9]|3[0-1])\./e connect // /^192\.168\./ connect // /^::1$/ connect // /^fd/ connect // /^fe80:/ # Local network ( Global IP address ) connect // /^192\.0\.2\./ connect // /^2001:db8:/ #################################################################################################### ##### ##### 21-blocklist.conf ( GeoIP sample rules ) ##### #################################################################################################### reject "Refused connection by site policy." # Email is not sent from the country country /(XX|XY|XZ)/e and envfrom /[.@]example\.com>$/ country /JP/n and connect /\.jp$/n // and envfrom /[.@]example\.jp>$/ #################################################################################################### ##### ##### 22-blockhelo.conf ##### #################################################################################################### # Not client host name reject "Refused connection by site policy. ( Malformed HELO )" helo /^foobar\.example\.jp$/i and connect // /^127\.0\.0\.1$/n and connect // /^192\.0\.2\.1$/n and connect // /^::1$/n and connect // /^2001:db8::1$/n helo /^\[*192\.0\.2\.1\]*$/ and connect // /^127\.0\.0\.1$/n and connect // /^192\.0\.2\.1$/n and connect // /^::1$/n and connect // /^2001:db8::1$/n helo /^\[*2001:db8::1\]*$/ and connect // /^127\.0\.0\.1$/n and connect // /^192\.0\.2\.1$/n and connect // /^::1$/n and connect // /^2001:db8::1$/n helo /^localhost$/i and connect // /^127\.0\.0\.1$/n and connect // /^192\.0\.2\.1$/n and connect // /^::1$/n and connect // /^2001:db8::1$/n helo /^\[*127\.0\.0\.1\]*$/ and connect // /^127\.0\.0\.1$/n and connect // /^192\.0\.2\.1$/n and connect // /^::1$/n and connect // /^2001:db8::1$/n helo /^\[*::1\]*$/ and connect // /^127\.0\.0\.1$/n and connect // /^192\.0\.2\.1$/n and connect // /^::1$/n and connect // /^2001:db8::1$/n # Only dot reject "Refused connection by site policy. ( Invalid HELO )" helo /^\.$/ # Nonexistent TLD reject "Refused connection by site policy. ( Nonexistent TLD )" helo /\.domain$/ helo /\.local$/ helo /\.localdomain$/ # Reserved domain reject "Refused connection by site policy. ( Reserved domain )" helo /^(.+\.)?example\.[^.]+$/ei # Maybe spam or scan reject "Refused connection by site policy." helo /^User$/i helo /^ylmf-pc$/i helo /^info-api\.ru$/i helo /^dc3-dc1$/i helo /^masscan$/i helo /^gerg$/i helo /^admin$/i helo /^scanner\.sslsonar\.org$/