freebsd postfix python policyd-spf ошибка проверки адресов IP
Недавно я столкнулся с проблемой на моем почтовом сервере freebsd postfix с пакетом py27-postfix-policyd-spf-python-1.3.2_1
Мои почтовые журналы заполнены следующими сообщениями:
policyd-spf[16637]: ERROR: 127.0.0.0/8 in skip_addresses not IP network. Message: '11.22.33.44' does not appear to be an IPv4 or IPv6 address. Did you pass in a bytes (str in Python 2) instead of a unicode object?. Aborting white list processing.
Переключение на python 3, как предлагали другие люди, НЕ работает (ни изменение shebang, ни запуск его напрямую через python3).
1 ответ
Решением моей проблемы было (на данный момент) добавить следующие строки в функцию _cidrmatch
в /usr/local/bin/policyd-spf
def _cidrmatch(ip, netwrk)
netwrk = unicode(netwrk)
ip = unicode(ip)
try:
address = ipaddress.ip_address(ip)
Это сделано для того, чтобы модуль python ipaddr имел дело только со строкой Unicode (как запрашивается в сообщении об ошибке)
переключение на python3, как было предложено в других постах в сети, у меня не сработало (может быть, некоторые недостающие зависимости?)
Этот пост также мне очень помог https://stackoverflow.com/questions/30389019/valueerror-10-0-0-0-24-does-not-appear-to-be-an-ipv4-or-ipv6-network
BUT KEEP IN MIND: this fix will be GONE after the packet gets an update, so this is just intended as a helpful note to someone running into the same problem as I did!
So if anybody has a real solution, let us know:)