I downloaded that Perl Module and the script worked perfectly! I even added lines to create the trash, drafts, and sent-mail folders and set the Acl so cyrus (administrator) had full control.
Thank you for your assistance! Joe -----Original Message----- From: Patrick Boutilier [mailto:[EMAIL PROTECTED] Sent: Friday, March 07, 2003 12:07 PM To: [EMAIL PROTECTED] Subject: Re: Creating Mailboxes via Script Joe, You are right. I remember having problems as well when I tried to upgrade NetxAP a few years back. This module is the one that should work. http://search.cpan.org/CPAN/authors/id/K/KJ/KJOHNSON/NetxAP-0.01.tar.gz There are better IMAP perl modules out there (Mail::IMAPClient for example) but I have never updated my script to use them. :-( Joe Dennick wrote: > Yes, I changed all of the values to reflect my system, and I tested it > with a few Print statements. The MySQL piece works flawlessly. I can > successfully telnet to port 143 on localhost and I have used that to > set up users in the past. That's what has me baffled. Everything > should work, but it doesn't. I believe the Perl modules have changed > in the last 12 months or so. > > Than you for your assistance on this! > > Joe > > -----Original Message----- > From: Patrick Boutilier [mailto:[EMAIL PROTECTED] > Sent: Friday, March 07, 2003 9:13 AM > To: [EMAIL PROTECTED] > Subject: Re: Creating Mailboxes via Script > > > Joe, > > Did you change these values to what they sould be for your site? If so > can you telnet to port 143 of the mail server and login that way? > > ( . login cyrususer cyruspass) > > > my $cyrususer = "user"; > my $cyruspass = "pass"; > my $mysqluser = "user"; > my $mysqlpass = "pass"; > my $mysqlhost = "host"; > my $mysqldatabase = "database"; > my $mysqluserfield = "field"; > my $mysqlusertable = "table"; > my $IMAPSERVER = "localhost"; > > > Joe Dennick wrote: > >>OK, I've been playing with this script and variations of it for a >>while now, and I still can't get it to successfully login to the IMAP > > server. It always produces the following error: Can't call method > "login" on an undefined value at ./bulk line 32. > >>I had to go to cpan.org to download the Net::IMAP module and get it >>installed, but it still didn't make this error go away. I'm no Perl >>guru, but it looks to me like the connect on line 31 didn't >>successfully complete causing line 32 to really get mad on the login >>request. >> >>Any assistance would be greately appreciated! >> >>Thank you! >> >>Joe Dennick >>[EMAIL PROTECTED] >> >> >> >>Patrick Boutilier <[EMAIL PROTECTED]> wrote the Mar 5, 2003 7:19 >>AM: >> >> >> >>>Joe Dennick wrote: >>> >>> >>>>We've got Cyrus-Imap 2.1.12 running very well for our company Red >>>>Hat > > >>>>8.0. We are authenticating against a MySQL database that we use as >>>>a > > >>>>master Security Container for all of our application authentication >>>>and entitlements. We've already populated the database with all of >>>>the user information required including usernames, passwords, shadow >>>>passwords, email addresses, etc. Now we need to create Cyrus-Imap >>>>mailboxes for each user (close to 3,000 mailboxes). I've seen >>>>several articles that talk about scripting CYRADM to read a text file > > >>>>containing usernames, but I can't get any of the scripting examples >>>>to work. It appears as though Cyrus-Imap, or specifically CYRADM has > > >>>>changed since the examples were created. Is there a way to script >>>>or > > >>>>batch create users? All I really need to do is create the mailbox >>>>and set the ACL so cyrus (admin >>>>account) has admin control over the mailbox. I can manually create > > the > >>>>mailboxes with the following commands: >>>> >>>> cyradm --user cyrus localhost >>>> IMAP Password: ******* >>>> localhost.localdomain> createmailbox user.12345 >>>> localhost.localdomain> setacl user.12345 cyrus all >>>> localhost.localdomain> quit >>>> >>>>Thank you in advance for your assistance. >>>> >>>>Joe Dennick >>>>[EMAIL PROTECTED] >>>> >>> >>> >>>We use a variant of the following script to add new users but in your >>>case you should be able to use this as all your MySQL accounts need a >>>Cyrus user created. >>> >>> >>> >>>#!/usr/bin/perl -w >>># >>> >>>use File::Basename; >>>use Net::IMAP; >>>use DBI; >>> >>>my $cyrususer = "user"; >>>my $cyruspass = "pass"; >>>my $mysqluser = "user"; >>>my $mysqlpass = "pass"; >>>my $mysqlhost = "host"; >>>my $mysqldatabase = "database"; >>>my $mysqluserfield = "field"; >>>my $mysqlusertable = "table"; >>>my $IMAPSERVER = "localhost"; >>> >>>$dbh = >>>DBI->connect("DBI:mysql:$mysqldatabase:$mysqlhost","$mysqluser","$mys >>>DBI->q >>>lpass") || die "SEM: MySQL database connected failed: >>>$DBI::errstr\n"; >>> >>>my $select = "SELECT $mysqluserfield FROM $mysqlusertable"; >>> my $sth = $dbh->prepare($select) >>> || die "Can't prepare select statement: $DBI::errstr"; >>> my $rc = $sth->execute >>> || die "Can't execute statement: $DBI::errstr"; >>> if ($sth->rows == 0) { >>> exit 1; >>> } >>> >>> # Login to IMAP server >>> $imap = new Net::IMAP($IMAPSERVER, Synchronous => 1) || die "no > > go $! !"; > >>> $response = $imap->login($cyrususer, $cyruspass); >>> print "Login: ", $response->status, "-", $response->status_text, > > >>>"\n"; >>> >>> while ($userid = $sth->fetchrow) { >>> print "user.$userid\n"; >>> >>> # Create the new mailbox >>> $response = $imap->create(user.$userid); >>> print "Create: ", $response->status, "-", > > $response->status_text, "\n"; > >>> } >>> >>> # Disconnect from IMAP server >>> $response = $imap->logout(); >>> print "Logout: ", $response->status, "-", > > $response->status_text, > >>>"\n"; >>> >>>$dbh->disconnect(); >> >> > >