Re: [exim] 421 Lost incoming connection errors

Top Page
Delete this message
Reply to this message
Author: Ted Cooper
Date:  
To: exim-users
Subject: Re: [exim] 421 Lost incoming connection errors
a.smith@??? wrote:
> ## Handoff to the SPAM scanner, which will then resubmit.
> spamcheck_pipe:
>    driver = pipe
>    command = "/usr/local/sbin/exim -oMr spam-scanned -bS"

>
> Im quite happy to provide whatever info may be useful to someone more
> knowledgeable on exim than myself, I might need some help to know what
> that info would be as Im pretty stumped on how to trouble shoot this.
> Perhaps I have an outdated method of integrating spamassassin with
> exim? This is a config I inherited and its been unchanged for many
> years, although its a config that has worked without this error for
> many years too. Is there a better way to configure spamassassin than
> this now? I did google this but I couldnt work out which of the
> various methods, if any, was the current recommended method.


Perhaps a UTF-8 vs ASCII comms problem between the two? I'm not
knowledgeable at all when it comes to using SA with pipes. But perhaps I
can supply a detour to avoid the issue.

Are you particularly attached to using the spamc client via pipe?
There's been a better way of doing it for a few years now via internal
Exim interfaces that allows you to use SpamAssassin before even
accepting the email.

http://docs.exim.org/current/spec_html/ch41.html#SECTscanspamass

It looks like you're using a global config for your SA so you can easily
swap over to this - it removes the BSTMP transaction completely and
allows you to reject messages that are too spammy during the connection.

In the DATA ACL, this is what I currently run - SPAMLEVEL is a macro
that boils down to an int value.

# Add headers to all messages < 200k
  warn    message       = X-Spam-Score: $spam_score ($spam_bar)
          condition     = ${if <{$message_size}{200k}{1}{0}}
          spam          = spamc:true


# Add spam report to headers if score over 5
  warn    message       = X-Spam-Report: $spam_report
          condition     = ${if <{$message_size}{200k}{1}{0}}
          spam          = spamc:true
          condition     = ${if >{$spam_score_int}{50}{1}{0}}


# Change the subject if it's spam according to SpamAssassin
  warn    message       = X-New-Subject: **SPAM** $spam_score $h_subject:
          condition     = ${if <{$message_size}{200k}{1}{0}}
          spam          = spamc


# Deny anything over the macro threshold but don't leak the score
  deny    message       = Spam score too high
          log_message   = Spam score too high ($spam_score)
          condition     = ${if <{$message_size}{200k}{1}{0}}
          spam          = spamc:true/defer_ok
          condition     = ${if >{$spam_score_int}{SPAMLEVEL}{1}{0}}



In combination with an exim system filter to change the subject on any
messages that get tagged like this

# Exim filter

if "${if def:header_X-New-Subject: {there}}" is there
then
headers remove subject
headers add "Subject: $h_X-New-Subject:"
headers remove X-New-Subject
endif



That's about as useful as I can be sorry. I have never used SA outside
the SMTP conversation.