On Nov 29, 2012, at 9:22 AM, Todd Lyons <[email protected]> wrote:
> In my system, I don't yet know the homedir/maildir because it's part
> of the SQL lookup in the router.  I can however construct it because I
> know how it's built, but I'd prefer the results from the lookup to be
> used.  I dunno if that's easy at this point.  Beginning testing...


I actually went ahead and enabled embedded Perl and am building on some of your 
ideas.  In our environment we already get all the users info from the database 
in a prior lookup, so we have the homedir path, and we pass that in to the Perl 
sub and we're also going to do our idle check there (as we've done in a 
previous router that is no obsolete).

So our router will look something like:

pg_mdircheck:
  driver = redirect
  allow_fail
  allow_defer
  domains = +db_domains
  fail_verify = true
  data = ${perl{{mdir_check}\
                {${extract{homedir}{Q_LUSER}}}\
                {${extract{quota}{Q_LUSER}}}\
                {IDLE_TIME}\
               }fail}
  more = false
  local_part_suffix = +*
  local_part_suffix_optional


The logic in the script will first test for the presence and freshness of a 
last_login file, if that fails, we:

    return ':fail: Inactive Mailbox';


We'll next have some logic in checking the quota, without processing the 
maildirsize file each and every time.  So on very busy systems it won't have to 
force this for each and every RCPT.  My thinking is to cache it or have 
something to back it off.  So if nothing has changed, no need in checking it 
again.  My thought maybe is to create a ".overquota" file in the homedir and 
compare that mod date vs the mod date of the maildirsize file..  If the 
maildirsize file has changed then it's not due to delivering mail on Exim's 
part since it should be rejecting.. so go ahead and run the quota calc again.

Also there is a reason for us passing in the quota on the check here, rather 
than relying on the one in maildirsize.  One of the actions may be for someone 
to actually increase a users quota, so the value in maildirsize is no longer 
valid. (this will be updated the next time Exim delivers a mail).  Logic will 
be tricky but i think it should work out well.

-- 
Robert Blayzor
INOC, LLC
[email protected]
http://www.inoc.net/~rblayzor/




-- 
## 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/

Reply via email to