--- /usr/lib/python-exec/python2.7/policyd-spf.orig 2014-02-25 11:43:15.000000000 +0100 +++ /usr/lib/python-exec/python2.7/policyd-spf 2014-02-25 11:42:45.213324487 +0100 @@ -43,6 +43,11 @@ syslog.openlog(os.path.basename(sys.argv[0]), syslog.LOG_PID, syslog.LOG_MAIL) policydspfsupp._setExceptHook() +from struct import unpack as struct_unpack +from socket import inet_ntoa, inet_aton +def addr2bin(addr): + return struct_unpack('!l', inet_aton(addr))[0] + ############################################# def _cidrmatch(connectip, ipaddrs, n): """Match connect IP against a list of other IP addresses. From pyspf.""" @@ -56,7 +61,7 @@ bin = spf.bin2long6 else: MASK = 0xFFFFFFFF - bin = spf.addr2bin + bin = addr2bin c = ~(MASK >> n) & MASK & bin(connectip) for ip in [bin(ip) for ip in ipaddrs]: if c == ~(MASK >> n) & MASK & ip: return True