環境
- OS: NetBSD 3.1
- sendmail: 8.14.1
- milter-greylist: 4.0a6
http://hcpnet.free.fr/milter-greylist/から milter-greylist-4.0a6.tgz をダウンロードします。
% tar zxvf milter-greylist-4.0a6.tgz
% cd milter-greylist-4.0a6
% ./configure --with-libGeoIP=/usr/local
% make
% su
# make install
/etc/mail/greylist.confは以前の設定に加えて GeoIPの設定を加えます
# DBの指定(必須です)
geoipdb "/usr/local/share/GeoIP/GeoIP.dat"
# 日本(JP)のIPアドレスからのものをwhitelistにする例
acl whitelist geoip "JP"
% su
# /etc/rc.d/miltergreylist restart
# /etc/rc.d/sendmail restart
geoipでwhiltelistになったとき4.0a6では適切なログが表示されませんでしたので、以下のように修正しました。
--- acl.c.orig 2007-05-21 09:22:55.000000000 +0900
+++ acl.c 2007-07-11 17:24:54.000000000 +0900
@@ -1649,6 +1649,9 @@
struct acl_param ap;
char *cur_rcpt;
struct acl_clause *ac;
+#ifdef USE_GEOIP
+ const char *ccode = "UNKNOWN";
+#endif
sa = SA(&priv->priv_addr);
salen = priv->priv_addrlen;
@@ -1656,6 +1659,11 @@
from = priv->priv_from;
queueid = priv->priv_queueid;
cur_rcpt = priv->priv_cur_rcpt;
+#ifdef USE_GEOIP
+ if (priv->priv_ccode != NULL) {
+ ccode = priv->priv_ccode;
+ }
+#endif
ACL_RDLOCK;
@@ -1843,6 +1851,13 @@
(noretval & EXF_MACRO) ? notstr : vstr);
ADD_REASON(whystr, tmpstr);
}
+#ifdef USE_GEOIP
+ if (retval & EXF_GEOIP) {
+ snprintf(tmpstr, sizeof(tmpstr),
+ "geoip ccode %s is whitelisted", ccode);
+ ADD_REASON(whystr, tmpstr);
+ }
+#endif
if (retval & EXF_DEFAULT) {
ADD_REASON(whystr, "this is the default action");
}