LINUX.ORG.RU
решено ФорумAdmin

Exim 4.72 + spamd - все сообщения попадают под spam = true

 


0

1

Привет!

Есть странная проблема - exim4 все сообщения в почте считает спамом. А именно, в exim есть такое:

 warn
   spam = Debian-exim:True
   message = X-Spam-score: $spam_score\n\
             X-Spam-score_int: $spam_score_int\n\
             X-Spam-bar: $spam_bar\n\
             X-Spam-Status: ${if>{$spam_score_int}{35}{YES}{NO}}\n\
             X-Spam-Flag: ${if>{$spam_score_int}{35}{YES}{NO}}\n\
             X-Spam-report: $spam_report

И это срабатывает всегда, независимо от того, что вернул spamd. Проверял путем кормления spamd «с рук», он возвращает


SPAMD/1.1 0 EX_OK
Spam: False ; -2.9 / 3.5
Но тем не менее, заголовки в exim добавляются все равно, вот фрагмент сообщения в спуле:

...
Subject: test
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-Spam-score: -2.9
X-Spam-score_int: -28
X-Spam-bar: --
X-Spam-Status: NO
X-Spam-Flag: NO
X-Spam-report: Spam detection software, running on the system бла-бла-бла
Версия exim 4.72

Пожалуйста помогите )

Ответ на: комментарий от fbiagent

Это понятно, вопрос не про это а про то, почему spam = Debian-exim:True срабатывает. Хочется держать настройки спамоловячки в одном месте (в хорошем смысле этого слова), а именно в самой спамоловячке, а не менять конфиги exim. Почему он не обрабатывает ответ spamd? Смотрел исходники - вроде все ок:

 /* dig in the spamd output and put the report in a multiline header, if requested */
  if( sscanf(CS spamd_buffer,«SPAMD/%7s 0 EX_OK\r\nContent-length: %*u\r\n\r\n%lf/%lf\r\n%n»,
             spamd_version,&spamd_score,&spamd_threshold,&spamd_report_offset) != 3 ) {

    /* try to fall back to pre-2.50 spamd output */
    if( sscanf(CS spamd_buffer,«SPAMD/%7s 0 EX_OK\r\nSpam: %*s ; %lf / %lf\r\n\r\n%n»,
               spamd_version,&spamd_score,&spamd_threshold,&spamd_report_offset) != 3 ) {
      log_write(0, LOG_MAIN|LOG_PANIC,
         «spam acl condition: cannot parse spamd output»);
      return DEFER;
    };
  };

BbIKTOP ()
Ответ на: комментарий от fbiagent

Эээээ... Почему? И почему spamd?

The spam condition returns DEFER if there is any error while running the message through SpamAssassin or if the expansion of spamd_address failed. If you want to treat DEFER as FAIL (to pass on to the next ACL statement block), append /defer_ok to the right-hand side of the spam condition, like this:

deny message = This message was classified as SPAM
     spam    = joe/defer_ok
This causes messages to be accepted even if there is a problem with spamd.

BbIKTOP ()
Ответ на: комментарий от fbiagent

все прекрасно, огромное спасибо! только у меня пользователь другой, не spamd, ну да это детали.

BbIKTOP ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.