Доброго всем!Есть сервер Centos 5.4, на нем настроены postfix 2.6.2 c sasl авторизацией и антиспамом spamassassin 3.2.5.
Необходимо настроить spamassassin так, что бы авторизованные пользователи либо совсем не проверялись на спам, либо им выставлялось отрицательное колицество баллов.
Погуглив нашел решение, заключается он в том, что клиентам не прошедшим авторизацию добавляется заголовок X-SMTP-Auth: no
в main.cf:smtpd_data_restrictions =
permit_sasl_authenticated,
check_client_access regexp:/etc/postfix/add_auth_header.regexp
В /etc/postfix/add_auth_header.regexp:/^/ PREPEND X-SMTP-Auth : noПроверил - работает (всем неавторизованным добавляется заголовок X-SMTP-Auth : no, у авторизованных в заголовки ничего не добавляется)
Тепеь при написании правила для spamassassin'a возникает проблема это правило применяется ко всем, а должно только к авторизованным.
В local.cf:header __NO_SMTP_AUTH X-SMTP-Auth =~ /^no$/
meta SMTP_AUTH !__NO_SMTP_AUTH
describe SMTP_AUTH Message sent using SMTP Authentication
tflags SMTP_AUTH nice
score SMTP_AUTH -50В статье написано, что делалось на spamassassin 3.1.4, может у них поменялся синтаксис?
Помогите исправить правило, либо подскажите другой способ решения.Спасибо!
Попробуйте поставить пробел после восклицательного знака в определении метаправила.
Сохраните одно такое письмо в файл (или просто скопируйте куда-нибудь из мбокса) и прогоните команду (м.б. придётся добавить ключ --mbox или --mbx)
spamassassin -D rules < имя_файла
(при необходимости перенаправив вывод в файл)
и посмотрите, выстреливают ли эти правила.
Кстати, если внутренней почты много, можно поиграться с плугином Shortcircuit - он позволяет прекратить сканирование после того, как выстрелило заданное правило. Это может сильно разгрузить SA.
>Сохраните одно такое письмо в файл (или просто скопируйте куда-нибудь из мбокса)
>и прогоните команду (м.б. придётся добавить ключ --mbox или --mbx)
>spamassassin -D rules < имя_файлаВот теперь я совсем в тупике, при проходе письма через команду "spamassassin -D rules < имя_файла" с заголовком "X-SMTP-Auth: no" вижу:
X-Spam-Status: No, score=-8.6 required=5.0 tests=AWL,BAYES_50 autolearn=no
version=3.2.5
При отсутсвии:X-Spam-Status: No, score=-18.2 required=5.0 tests=AWL,BAYES_50,SMTP_AUTH
autolearn=no version=3.2.5Т.е. вручную все работает, а при приходе почты не работает.
>Т.е. вручную все работает, а при приходе почты не работает.Тогда сразу дурацкие вопросы: а после внесения изменений в конфиг spamd (или amavisd, или кто там ещё) перезапускался? Юзер, с именем которого оно бегает, может прочесть отредактированные файлы?
Попробуйте с этим же ключём погонять свой рабочий SA и посмотреть в логе - что он будет выдавать по реальным письмам?
>>Т.е. вручную все работает, а при приходе почты не работает.
>
>Тогда сразу дурацкие вопросы: а после внесения изменений в конфиг spamd (или
>amavisd, или кто там ещё) перезапускался? Юзер, с именем которого оно
>бегает, может прочесть отредактированные файлы?
>Попробуйте с этим же ключём погонять свой рабочий SA и посмотреть в
>логе - что он будет выдавать по реальным письмам?Конечно все перезапускается после изменений.
Используется связка Postfix -> spamass-milter -> spamassassin.
И если я правильно понял doc по Postfix, то он на мильтер кидает до обработки своими инструментами.И еще вопрос - как посмотреть, что пришло на вход к spamassassin'у?
>И если я правильно понял doc по Postfix, то он на мильтер
>кидает до обработки своими инструментами.Возможно, что дело именно в этом.
>И еще вопрос - как посмотреть, что пришло на вход к spamassassin'у?
Строго говоря - не знаю. Может быть, включение одного из этих каналов: http://wiki.apache.org/spamassassin/DebugChannels приведёт к выводу сырого текста, который поступил на вход SA. Письмо, обработанное SA (с добавленными полями X-SPAM) будет в конце debug output'а.
Спасибо за помощь!
Сделал проверку по заголовку X-Envelope-from, все работает нормально!
Проверено, все работает отлично :)
>Проверено, все работает отлично :)Рад был помочь!
В local.cf модифицировал :header __NO_SMTP_AUTH X-SMTP-Auth =~ /^no$/
на
header __NO_SMTP_AUTH X-SMTP-Auth =~ /^no$/m
и у меня все заработало...