Captive mailbox in Cyrus IMAP?

Phil Chambers P.A.Chambers at exeter.ac.uk
Wed Nov 22 05:24:03 EST 2006


On Tue, 21 Nov 2006 14:41:40 -0500 Nik Conwell <nik at bu.edu> wrote:

> 
> On Nov 21, 2006, at 12:04 PM, Rich Graves wrote:
> 
> > Nik Conwell wrote:
> >> Archiving accounts after people graduate and leave the  
> >> university.  We send people a bunch of e-mails letting them know  
> >> they're being archived but often they're ignored.  We still do  
> >> this, but then before archiving we put them into a captive state  
> >> for a couple of weeks.  Having only 1 e-mail in your inbox makes  
> >> it painfully obvious that things are indeed going away.  At that  
> >> point people can request an extension, register for
> >

I did some work for a different purpose which should work for you:

I use Exim as my MTA and deliver using LMTP. You need to add to your MTA 
configuration for this solution.

Touch a file (name is the account name) in a "suspend" directory and have the 
MTA queue messages if the file exists. This prevents delivery while things are 
changing.

Rename the account from user.account to user.account-pending, keeping the same 
partition so that the rename is quick. Create a new account for user.account 
and put your single message in there. Do a reconstruct to make the message 
visible.

Touch a file in a "pending" directory. Make your MTA check for the file before
delivery and if it is present, make it deliver to "account-pending" instead.

Remove the file from the "suspend" directory to allow deliveries to resume.

If you decide to resurect the account just remove user.account and rename 
user.account.pending back to normal.

(I have included my Exim routers below. Note the ability to deliver to the new 
account using a header.)

Hope this helps.

Phil.
---------------------------------------
Phil Chambers (postmaster at exeter.ac.uk)
University of Exeter

Exim routers:
defer:
  driver = redirect
  no_verify
  caseful_local_part
  require_files = /usr/local/suspend/$local_part
  allow_defer
  data = :defer: User account is currently being moved

# Divert to pending accounts
# Details are in the divert file
# Allow a X-Exeter-Pending: header to skip the divert
divert:
  driver = redirect
  no_verify
  caseful_local_part
  condition = ${if eq{$header_x-pending-divert:}{notice} {no}{yes}}
  require_files = /usr/local/pending/$local_part
  data = ${local_part}-pending@$domain
  redirect_router = next_router
  no_rewrite




More information about the Info-cyrus mailing list