Re: [exim] RES: RES: Retry hints for multiple outbound IP ad…

Páxina inicial
Borrar esta mensaxe
Responder a esta mensaxe
Autor: Todd Lyons
Data:  
Para: Andre Franco
CC: exim-users, James Pettyjohn
Asunto: Re: [exim] RES: RES: Retry hints for multiple outbound IP addresses
> -----Mensagem original-----
> De: exim-users-bounces+abobre=gmail.com@??? [mailto:exim-users-bounces+abobre=gmail.com@exim.org] Em nome de James Pettyjohn
> Enviada em: terça-feira, 27 de agosto de 2013 18:53
> Para: exim-users@???
> Assunto: Re: [exim] RES: Retry hints for multiple outbound IP addresses
>
> Thanks Andre. I already have the multiple IPs working though.
>
> The point of the setup is to segment the senders, as one would in a dedicated IP.
> Much like what is offered through your major bulk mail senders. But as gone over everybody seems to get penalized in the following manner:
>
> - ip address 10.1.1.1. sends to many messages too to AOL who then
>    temporarily blocks his IP address.

>
> - Exim decides not to retry AOL because it blocking 10.1.1.1
>
> - 10.1.1.2 tries to send to AOL, exim doesn't try because it's
>    hints indicate it's not time yet but it's based on the
>    OUTBOUND IP of 10.1.1.1


I don't have time to work on this, but I think anybody with a little c
fu could probably make an adjustment to fix this in src/retry.c:

1. The code to generate the key that it stores in the database looks like this:

BOOL
retry_check_address(uschar *domain, host_item *host, uschar *portstring,
BOOL include_ip_address, uschar **retry_host_key, uschar **retry_message_key)
{
<snip>
/* Generate the host key for the unusable tree and the retry database. Ensure
host names are lower cased (that's what %S does). */
host_key = include_ip_address?
string_sprintf("T:%S:%s%s", host->name, host->address, portstring) :
string_sprintf("T:%S%s", host->name, portstring);

...You would need to modify this to include the intended outbound IP
address that is being used. Of course, you don't know this until the
message has already been routed and is in the transport, which may
mean it's not possible. I haven't looked at this enough to know that.

2. The only spot that calls this function is in src/transports/smtp.c,
so you only need to change the call in one spot to include the
intended outbound IP (if it's not already in one of those variables
being passed, or in some module wide variable or global variable).

3. For a formal implementation, if I could get the above to work per
outbound IP, I would probably create a global variable to turn on or
off this retry hint behavior, with the default of off.

At least, that's what I would try to do.

...Todd
--
The total budget at all receivers for solving senders' problems is $0.
If you want them to accept your mail and manage it the way you want,
send it the way the spec says to. --John Levine