Ok, that was interesting. I didn't understand that the router-rules where run in their entirety for each delivery-attempt. I just thought they were there in the beginning to set things up for the message.
Then one might suggest that the ratelimit-condition perhaps should be implemented for the routers as well.. Then we could do ratelimit = 100 / 1h / <options> / $domain 2017-10-19 15:47 GMT+02:00 Dean Brooks <[email protected]>: > On Thu, Oct 19, 2017 at 11:26:48AM +0200, Charlie Elgholm wrote: > > > slow_queue: > > > driver = accept > > > condition = ${if queue_running} > > > condition = ${run{/bin/sleep 30}{yes}{no}} > > > no_verify # Don't execute during ACL verification > > > unseen # Pass message to next router even though we've accepted > > > > > > Bit of a hack but combined with strict queue-runner limits seems like > it could work to effective throttle. Haven't tested, maybe some pitfalls? > > > > Uh... Sorry.. Haven't had my morning coffee (and it's 11.21 AM here in > > Sweden now!), but, I don't understand what this would accomplish... I > > like the emails being generated from my database system to be queued > > for delivery by Exim, I don't want my database-system to wait for each > > message before it's put in the queue. Depening on what function where > > talking about there's usually 100 to 50k unique messages generated for > > the users. I rather have my database perform other jobs then spooling > > to Exim for a hour or two. ;)... Or... Have I missunderstood this > > completely? Do the routers get executed AGAIN when Exim handles the > > queue?? I thought they were just executed on receiving a message.. > > Routers get reprocessed in their entirety every time a message is > considered for delivery, so yes. This makes sense because MX records can > change over lifetime of a message in queue, configuration changes affecting > routing might change while in queue, etc. > > During a queue run it will either (a) run every message through their > routers before delivering *any* of them, or (b) individually as it moves > through the queue. Depends if your queue runner has been given the "-q" or > "-qq" command line options. > > The "no_verify" makes sure the router is skipped during initial reception > in the ACL phase. You can force all emails to be queued for certain > domains with the global "queue_smtp_domains = *" > > On your smtp transport you may need to set combination of > "connection_max_messages", "remote_max_parallel" and "max_rcpt" so that > Exim doesn't cheat and try and send a large number of messages down a > single or parallel connections. > > Haven't tested or tried any of this, just thinking outloud and comparing > to some of our other configs. > > Thanks, > > Dean Brooks > [email protected] > > > -- > ## List details at https://lists.exim.org/mailman/listinfo/exim-users > ## Exim details at http://www.exim.org/ > ## Please use the Wiki with this list - http://wiki.exim.org/ > -- Regards Charlie Elgholm Brightly AB -- ## List details at https://lists.exim.org/mailman/listinfo/exim-users ## Exim details at http://www.exim.org/ ## Please use the Wiki with this list - http://wiki.exim.org/
