script for migrating from UW-IMAP to Dovecot [PATCHED]
#!/bin/bash # A script for migrating from UW-IMAP to Dovecot # # By Andrew Ziem # Copyright (c) 2007 Springs Rescue Mission. All rights reserved. # # # Moves UW-IMAP mboxes from two locations to ~/mail so that Dovecot # can easily convert mboxes to Maildirs. Mailboxes with whitespace # should be handled properly, and IMAP subscriptions should be preserved. # # # Edit the below variables #HOME_USERS=/home HOME_USERS=/home/users #MAIL_SPOOL=/var/mail MAIL_SPOOL=/var/spool/mail # to this function pass the user name function move_mailboxlist { if [ ! -d "$HOME_USERS/$1" ]; then echo "Error: $HOME_USERS/$1 does not exist" return 0 fi # make ~/mail cd "$HOME_USERS/$1" mkdir mail chown "$1" mail # find each mbox and move it to ~/mail if [ ! -f ".mailboxlist" ]; then echo "Warning: .mailboxlist does not exist for $1" return 0 fi # cat .mailboxlist | while read line; do mv "${line}" ./mail/; done cat .mailboxlist | tr '\n' '\0' | xargs -0 mv -t ./mail/ # preserve subscriptions (to prevent manual resubscriptions) mkdir Maildir chown "$1" Maildir cp -a .mailboxlist Maildir/subscriptions } # move inbox from $MAIL_SPOOL to ~/mail/inbox function move_inbox { if [ ! -f "${MAIL_SPOOL}/$1" ]; then echo "Error: ${MAIL_SPOOL}/$1 does not exist" return 0 fi cp "${MAIL_SPOOL}/$1" "${HOME_USERS}/$1/mail/inbox" chown "$1" "${HOME_USERS}/$1/mail/inbox" } if [ $# -eq 0 ]; then echo "First, did you edit the directory names in the script?" echo "Then, if you want to do a dry run, prefix mv and cp with echo." echo "Then, invoke $0 by passing one or more user names." exit fi for user in $@ do echo "*** Processing user $user" move_mailboxlist $user move_inbox $user done