prereq's -------- must have root@mail1's key in newman:.ssh/authorized_keys converting an account --------------------- make sure user has no mail waiting to be delivered on cliff stop postfix on cliff make sure user has no mail waiting to be delivered on newman # no need to stop postfix on newman...we won't be getting any new mail anyway stop cyrus on newman convert seen and sub files to flat copy seen and sub files and user spool directory to mail1 run cyrus2courier move new maildir into proper place copy sieve scripts into pysieved in new maildir fix sieve symlink (defaultbc should be renamed to maildir/.dovecot.sievec i think) update database to point user to mail1 start cyrus on newman start postfix on cliff mass conversion --------------- stop postfix on cliff any way to flush what's waiting for domain.org without accepting new smtp? stop cyrus on newman get username # from stdin, text file, etc. check for tmp/$username if exists, might already be converting this user (do we care that much?) run middle block above in 'converting an account' save output to tmp/$username touch tmp/$username # to grab exact time it exited if anything in user conversion exits non-0 mv tmp/$username error/$username else mv tmp/$username ok/$username repeat for remaining users start cyrus on newman start postfix on cliff dealing with problems --------------------- when running cyrus2courier, exit status can be used to detect trouble. i think when mass converting it would be good to keep the output of all runs in two directories based on exit status. ok/ # runs that exited 0 error/ # runs that exited non-0 tmp/ # runs in progress the files in these directories would be named after the username we were/are converting. the script(s) should know to check for tmp/$username (and bail if it exists?) and rm -f ok/$username and error/$username when starting a run to make sure there's no stale info.