Auteur: Marc Perkel Date: À: exim-users Sujet: Re: [exim] Exim Development
Ted Cooper wrote: > Marc Perkel wrote:
>
>> Another feature - something I've asked for before - is the ability to
>> treat a 5xx error as a 4xx error. I know people have complained it is
>> dangerous but you can put all kinds of warnings in the docs about it.
>> Here's why.
>>
>
> I can remember :P
>
>
>> I'm doing front end spam filtering. People point their MX to me and I
>> clean it and forward the good email on to them. Normally this is simple.
>> But sometimes what happens is that when the recipient's server is no
>> longer the lowest MX it forgets it is hosting the domain and starts
>> rejecting 550 all the email I'm forwarding with a "relay denied" message
>> and it creates a bounce. I need to intercept that so that I can do
>> something else on 550 errors other than bouncing.
>>
>
> Adding to code to break the fundamentals email, no matter how innocent
> the reason, isn't going to make it into the main source code. There's
> nothing stopping you from horribly breaking your servers although there
> are probably much better solutions.
>
> To cope with destination servers having a cow and rejecting emails for
> no good reason, and prevent end users from having servers that bounce
> anything at all, I change the envelope sender either with "errors_to" in
> a router or use SRS. As soon as an email is bounced, all email destined
> for that server gets tagged with "control = freeze" and they get an SMS
> to their contact number telling them their setup is broken. Generally,
> only 1-2 emails end up in the bounced mailbox which I can then send back
> to them when they fix their server.
>
> That was the most elegant way I could think to do it and it doesn't
> break email, and it also means that when some twat installs an anti-spam
> system on their m$ exchange box that goes insane from never seeing spam
> and starts bouncing random messages, I don't get the blame.
>
> As another alternative, you could probably use a recipient callout every
> once in a while to check it too.
>
>
>
I do use recipient callout and that is my work around. However there are
legitimate reasons not to always honor 5xy codes when you KNOW the
reason it is being rejected is a mistake. I might want to redirect
rejected messages to a file so I can look at it - or resend it later if
the customer request it. Maybe an ignore_5xy_error command in a router
so that instead of failing it can pass on to the next router.
Also - is there any way to actually capture the 5xy string in a variable
that can be tested?