Hello,
I have a Cyrus 2.1.16 install running on a FreeBSD 5.1 machine and I would like to use the rename script described in the managing IMPAP book chap 9 (example 9-2). I have tried to run this scrip as root, cyrus and logged in to cyradm and end up with a cryptic error message:

%./rename lm.out zzzzz zzzzzy
set: Variable name must begin with a letter.


# more lm.out
user.zzzzz.more (\HasNoChildren)
user.zzzzz.stuff (\HasNoChildren)
user.zzzzz.Trash (\HasNoChildren)


here is the script:
(the "set adminpw" is set correctly to my password)

# more rename

#!/usr/local/bin/cyradm -file
#
#    Usage: rename filename olduser newuser
#
set inputfile [lindex $argv 0]
set oldmb [lindex $argv 1]
set newmb [lindex $argv 2]
#set mailstore "/var/spool/imap/user"
set mailstore "/data/mail/var/spool/imap/user"

eval cyradm connect cyr_conn localhost 143
puts stdout "Connected to IMAP server. Authenticating..."

if [catch {eval cyr_conn authenticate -pwcommand {{
    set hostname "localhost"
    set adminid "cyrus"
    set adminpw "xxxxx"
    list $adminid $adminpw
}} } result ] {
    puts stderr "$result (cleartext)"
    return -code error $result
} else {
    puts "Authentication successful."
}
##
## Open the file containing mailbox names, and create the
## top-level mailbox.
##
if [catch {open $inputfile r} fileId] {
    puts stderr "Error: cannot open $inputfile"
} else {

    ## Create the toplevel mailbox

    if [catch {cyr_conn createmailbox user.$newmb} result] {
        puts stderr $result
    } else {
        puts "Created mailbox user.$newmb"
    }

    while {[gets $fileId line] >= 0} {

        ## Build the new mailbox name from the old one
        set newf [join [lreplace [split $line .] 1 1 $newmb] . ]

        ## Create the mailbox
        if [catch {cyr_conn createmailbox $newf} result] {
            puts stderr $result
        } else {
            puts "Created sub-mailbox $newf"
        }
    }

#    file delete -force /var/spool/cyrus/user/$newmb
    file delete -force /data/mail/var/spool/cyrus/user/$newmb
    file copy $mailstore/$oldmb $mailstore/$newmb
    {exec /usr/bin/chown -R cyrus:mail $mailstore/$newmb}

    ## Delete the old account
    if [catch {cyr_conn setaclmailbox user.$oldmb cyrusadm d} \
        result] {
        puts stderr $result
    } else {
        puts "setaclmailbox user.$oldmb cyrusadm d"
    }

    if [catch {cyr_conn deletemailbox user.$oldmb} result] {
        puts stderr $result
    } else {
        puts "Deleted mailbox user.$oldmb"
    }
}

puts "Please run \'reconstruct user.$newmb\' as cyrus."


I definately am handicapped in scripting. I am at a loss and any help would be appreciated.


Peter Clark

----
Cyrus Home Page: http://asg.web.cmu.edu/cyrus
Cyrus Wiki/FAQ: http://cyruswiki.andrew.cmu.edu
List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html

Reply via email to