[Pushing this back onto the list thread, because someone who actually
uses Amavis with Exim is likely to have more insight into the issue than me]
On 22/03/11 17:07, Dave Shariff Yadallee - System Administrator a.k.a.
The Root of the Problem wrote:
> On Tue, Mar 22, 2011 at 01:51:08PM +0000, Dominic Benson wrote:
>> OK, well from the mainlog, it looks to me like every so often you get a
>> timeout connecting to amavis (on localhost), and then follow
>> R=amavis T=amavis defer (-53): retry time not reached for any host
>> for a number of messages. That essentially means that no deliveries take
>> place for some minutes until the condition clears.
>>
>> The maillog is still transferrring, I'm only getting a few KB/s from your
>> FTP server. That might highlight why the errors arise, but in any case, you
>> should specify a retry time for localhost
>> (http://www.exim.org/exim-html-3.20/doc/html/spec_33.html) to stop the big
>> gaps in delivery. I think that will make a fairly substantial difference.
>> You should at least be able to increase the proportion of time your machine
>> spends actually relaying mail. (Or do your AV/Spam checks purely in Exim,
>> exim is pretty capable at such things and it really cuts down on the total
>> number of SMTP transactions and gross effort. This would be more effective,
>> but if you have specialist requirements may not be possible).
>>
> Ah! Yes!
>
> I did update the retry to
>
> begin retry
>
> # This single retry rule applies to all domains and all errors. It specifies
> # retries every 15 minutes for 1 hours, then increasing retry intervals,
> # starting at 1 hour and increasing each time by a factor of 1.5, up to 10
> # hours, then retries every 1 hours until 7 days have passed since the first
> # failed delivery.
>
> # WARNING: If you do not have any retry rules at all (this section of the
> # configuration is non-existent or empty), Exim will not do any retries of
> # messages that fail to get delivered at the first attempt. The effect will
> # be to treat temporary errors as permanent. Therefore, DO NOT remove this
> # retry rule unless you really don't want any retries.
>
> # Address or Domain Error Retries
> # ----------------- ----- -------
>
> ##* * F,1h,15m; G,10h,1h,1.5; F,7d,1h
> * * F,1h,5m; G,10h,1h,1.5; F,2d,1h
>
> I might want something 'draconian' but will reread the
> retry documentation.
>
> Next
>
> #############################################################################
>
> # Accept mail to postmaster in any local domain, regardless of the source,
> # and without verifying the sender.
>
> accept local_parts = postmaster
> domains = +local_domains
>
> # Deny unless the sender address can be verified.
>
> ##require verify = sender
> accept domains = +local_domains
> endpass
>
> ## Sender Verify on 'Recipient'
>
> drop message = REJECTED - Sender Verify Failed - error code \"$sender_verify_
> failure\"\n\n\
> The return address you are using for this email message<$sender_address>\
> does not seem to be a working account.
> log_message = REJECTED - Sender Verify Failed - error code \"$sender_ver
> ify_failure\"
> !hosts = +no_verify
> !verify = sender/callout=2m,defer_ok
> condition = ${if eq{recipient}{$sender_verify_failure}}
>
> ## Sender verify failed and no REverse DNS
>
> drop message = REJECTED - Sender Verify Failed and no RDNS
> log_message = REJECTED - Sender Verify Failed and no RDNS
> !verify = reverse_host_lookup
> !verify = sender/callout=2m,defer_ok
> !condition = ${if eq{$sender_verify_failure}{}}
>
> ## Recipient Verification
>
> deny message = REJECTED - Recipient Verify Failed - User Not Found
> domains = +all_mail_handled_locally
> !verify = recipient/callout=2m,defer_ok,use_sender
>
> ## Too many failed recipients
>
> warn domains = +local_domains
> !verify = recipient
> set acl_c0 = ${eval: $acl_c0+1}
> delay = ${eval: ($acl_c0 - 1) * 60}s
>
> NOte the ##require verify = sender
>
> I had to turn that off because legit virtual e-mail was
> getting nicked. How do I get this so that
> both virtual and non-virtual are properly recognised ?
It boils down to how Exim would route the message. If the sender verify
was going through Amavis and getting a temp error, then as that doesn't
have defer_ok, it might have been rejected for that. I'm not sure, to be
honest.
Can you avoid the problem by accepting authenticated first? Hopefully
someone else will have a clearer idea of the solution.