freebsd postfix python policyd-spf ошибка проверки адресов IP

432
Daywalker

Недавно я столкнулся с проблемой на моем почтовом сервере 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).

0

1 ответ на вопрос

0
Daywalker

Решением моей проблемы было (на данный момент) добавить следующие строки в функцию _cidrmatchв/usr/local/bin/policyd-spf

def _cidrmatch(ip, netwrk) netwrk = unicode(netwrk) ip = unicode(ip) try: address = ipaddress.ip_address(ip) 

Это делается для того, чтобы модуль python ipaddr имел дело только со строкой Юникода (как запрашивается в сообщении об ошибке)

переключение на python3, как было предложено в других постах в сети, у меня не сработало (может быть, некоторые недостающие зависимости?)

Этот пост также очень помог мне https://stackoverflow.com/questions/30389019/valueerror-10-0-0-0-24-does-not-appear-to-be-an-ipv4-or-ipv6-network

Но имейте в виду: это исправление будет GONE после пакета получает обновления, так что это просто задумана как полезное примечание к кому - то работает с той же проблемой, как и я!

Так что, если у кого-то есть реальное решение, дайте нам знать :)