※以下は古い記事です。Ubuntu 16.04 以降では libGeoIP がリンクされているため、必要ありません。
Ubuntu 14.04 標準パッケージの milter-greylist は libGeoIP をリンクするようにコンパイルされていないので、GeoIP (IPアドレスベースの国別判定) をポリシーに利用することが出来ない。そこで Ubuntu ソースパッケージを微修正してリビルドすることで GeoIP を使えるようにする。また、ついでにPostfixへの対応を入れておく。
必要なパッケージのインストール
myserver1:~$ sudo apt-get install build-essential quilt debhelper autotools-dev bison flex myserver1:~$ sudo apt-get install libgeoip-dev libspf2-dev libmilter-dev
ソースパッケージのダウンロード
myserver1:~$ apt-get source milter-greylist
パッケージ情報ファイルの編集
GeoIP をリンクするように、パッケージ情報ファイルを編集する。
rules ファイルを編集し、configure オプションの中に –with-libGeoIP \ を追加する。configure 実行時に libGeoIP を探してくれるようになる。
myserver1:~$ cd milter-greylist-4.3.9 myserver1:milter-greylist-4.3.9$ vi debian/rules
override_dh_auto_configure: dh_auto_configure -- \ --with-user=greylist \ --sysconfdir=/etc/milter-greylist \ --with-conffile=/etc/milter-greylist/greylist.conf \ --with-dumpfile=/var/lib/milter-greylist/greylist.db \ --with-libspf2=/usr \ --with-libmilter=/usr \ --with-libGeoIP \ ←ここを追加 --enable-postfix \ ←ここを追加 --enable-dnsrbl \ --disable-rpath \ LDFLAGS=" -Wl,-z,defs -L/usr/lib/libmilter " \ CFLAGS=" -fno-strict-aliasing "
また、controlファイルを編集して、Build-Depends 行に libgeoip-dev を追加する。
myserver1:milter-greylist-4.3.9$ vi debian/control
Build-Depends: quilt, debhelper (>= 8), autotools-dev, libmilter-dev, bison, flex, libspf2-dev, libgeoip-dev
パッケージバージョン番号を変更するために、changelogも編集する。内容は適当。
myserver1:milter-greylist-4.3.9$ vi debian/changelog
milter-greylist (4.3.9-101) unstable; urgency=low * Build with --with-libGeoIP * Build with --enable-postfix -- My Name <myname@example.com> Mon, 30 Jun 2014 10:00:00 +0900
バージョン番号を元のパッケージより大きくしておかないと、apt-get upgrade した時に公式パッケージで置き換えられてしまう。ここでは 4.3.9-1 から 4.3.9-101 にしておいた。
ビルド
編集が終わったら、実際にビルドする。
myserver1:milter-greylist-4.3.9$ dpkg-buildpackage -us -uc
インストール
.deb パッケージが出来上がったら、公式パッケージをアンインストールして入れ換える。
myserver1:milter-greylist-4.3.9$ sudo apt-get purge milter-greylist myserver1:milter-greylist-4.3.9$ sudo dpkg -i ../milter-greylist_4.3.9-101_amd64.deb
設定
milter-greylist を入れ換えたら、/etc/milter-greylist/greylist.conf に geoip の記述が使えるようになる。例えば自宅のサーバでは、CN からメールを受け取る予定が無いのでこれをブラックリストに入れてみる。
myserver1:~$ sudo vi /etc/milter-greylist/greylist.conf
greylist.conf の中身:
geoipdb "/usr/share/GeoIP/GeoIP.dat" ... racl blacklist geoip "CN"