Re: [vchkpw] vpopmail vpasswd file difference(s) between 4.9.10 and 5.3.8 (convert from cdb to mysql)

2002-10-09 Thread Matt Simerson

Just in case anyone else runs into this, I wrote a little Perl script 
that parses out /var/qmail/users/assign to fetch a list of domains that 
are active on the mail server. Then, for each domain it goes out and 
fetches the vpasswd file and feeds its contents into a SQL database. It 
works quite nicely.

Matt


#!/usr/bin/perl
use strict;
use DBI;

my $host = 'localhost';
my $user = 'vpopmail';
my $password = 'secret';
my $db   = 'vpopmail';
my $domainfile=/var/qmail/users/assign;

my @connect = (dbi:mysql:database=$db:host=$host, $user, $password);
my $dbh = DBI-connect(@connect);
warn @connect unless $dbh;

my @domainlist = get_domainlist( $domainfile );

foreach my $file ( @domainlist ) {
 #print $file-{'dom'} \t $file-{'dir'} \n;
   add_users( $file-{'dir'}, $file-{'dom'} );
};

$dbh-disconnect;
print All done.\n\n;


##
## Subdomains
##

sub get_domainlist {
 my @domainlist;
 print Reading in the file $_[0]...;
 open ( DOMAINLIST, $_[0] )  || die couldn't open $_[0]: $!\n;
 my @lines = DOMAINLIST;
 close (DOMAINLIST) || die couldn't close $_[0]: $!\n;
 print done.\n\n;
 print Extracting the list of domains...;
 my $row = 0;
 foreach my $line ( @lines ) {
 my @fields = split(:, $line);
 my %domain = (
 dir  = $fields[4]/vpasswd,
 dom  = $fields[1]
 );
 $domainlist[$row] = \%domain;
 $row++;
 };
 print done.\n\n.;
 return @domainlist;
}

sub add_users {
 if ( -e $_[0] ) {
open ( USERLIST, $_[0] ) || warn couldn't open $_[0]: $!\n;
my @users = USERLIST;
close (USERLIST);
foreach my $user (@users) {
 chomp $user;
my @f = split(:, $user);
print $user\n;

my $query = INSERT INTO vpopmail SET pw_name=\$f[0]\, 
pw_domain=\$_[1]\, pw_passwd=\$f[1]\, pw_uid=\$f[2]\, 
pw_gid=\$f[3]\, pw_gecos=\$f[4]\, pw_dir=\$f[5]\, 
pw_shell=\$f[6]\;
my $sth = $dbh-prepare($query);
$sth-execute;

my $x = $DBI::errstr;
if ($x) { print Error running $query\n; };
$sth-finish;
};
   };
}



On Tuesday, September 24, 2002, at 04:03  PM, Matt Simerson wrote:

 I'm rebuilding a dinosaur mail server that I built a couple years ago. 
 It's running vpopmail 4.9.10 using cdb authentication. I'm upgrading 
 to 5.3.8 with MySQL authentication.

 I've build out the new 5.3.8 system and cluster of machines. It's all 
 up, running and happy. I've NFS mounted all the home directories from 
 the old cluster onto the new system so that I have ready access to the 
 vpasswd and vpasswd.cdb files. They are mounted onto the local 
 filesystem so that the paths in /var/qmail/users/assign are correct.

 I run vconvert -c -m test.domain.com and it exits quietly indicating 
 success:

 mail8# ~vpopmail/bin/vconvert -c -m -v -d test.simerson.net
 version: 5.3.8
 converting test.simerson.net done

 However, when I check the MySQL server, there's no entries in the 
 vpopmail table that correspond to that domain. :-(

 I've tested this one step further. I've manually added a valid user 
 ([EMAIL PROTECTED]) into the new mail system by manually adding 
 it into the MySQL table. It works fine, authenticates, etc. That 
 basically makes it work with my new mail system and the old one at the 
 same time. Cool.  Anyway, if I run vconvert again, it'll actually 
 delete that entry from the vpopmail table.  Is that supposed to  happen?

 Everything on the new system works just fine except the vconvert 
 function. Can anyone verify that vconvert actually does work?  Can you 
 sanitize a copy of a newer vpasswd file and send it my way so I can 
 compare it to my ancient system to see if the format is still the  same?

 Matt





Re: [vchkpw] vpopmail vpasswd file difference(s) between 4.9.10 and 5.3.8

2002-09-25 Thread H. D. Lee

Hi Matt,

On 2002.09.24_16:03:52_+, Matt Simerson wrote:
 Everything on the new system works just fine except the vconvert
 function. Can anyone verify that vconvert actually does work? 

Yes, it actually works. Below are the steps I have taken to come up with
that statement: 
1. Compile and install 5.3.8 with cdb.  
2. Test create a domain (devel.dutnux.com) and some users.  
3. Recompile with mysql support, install, using 5.3.8.  
4. Invoke ./vconvert -c -m -v -d devel.dutnux.com 
version: 5.3.8 
could not connect to mysql update server Unknown database 'vpopmail' 
with database 
converting devel.dutnux.com done 
5. I checked mysql, it created vpopmail database and table for me.
The vpopmail table contain exactly the user I created.

 Can you sanitize a copy of a newer vpasswd file and send it my way so
 I can compare it to my ancient system to see if the format is still
 the same?

This is the first line of the vpasswd file I have. It was created using
5.3.8 with password learning support:

postmaster:$1$R.O7J$cRKPnHXAkWuZ6epI94R.k/:1:0:Postmaster:
/home/vpopmail/domains/devel.dutnux.com/postmaster:10M:dutnux 

Sorry for the wrapped line.

 Matt
 

HTH

-- 
H. D. Lee




Re: [vchkpw] vpopmail vpasswd file difference(s) between 4.9.10 and 5.3.8

2002-09-25 Thread Matt Simerson

That was it, thanks HD.

Upon comparing his vpasswd file and mine, there's an extra field in the 
vpasswd file for the clear text password. If I merely add another colon 
to the end of each line in the vpasswd file, vconvert works just fine.

I'd suggest updating the vconvert program so that it does not require 
the clear text password field to be present in order to function 
properly. That will make legacy installs much easier to upgrade.

Lastly, I'm not entirely certain *why* running vconvert against my 
older vpasswd file deleted all mysql entries in the vpopmail table but 
it's not a safe behavior. Maybe it just removes all entries that match 
the domain before importing and then does the import. It would be a 
really good idea to verify that there's some new data capable of being 
inserted before deleting the old entries.

Matt

On Wednesday, September 25, 2002, at 11:18  AM, H. D. Lee wrote:

 Hi Matt,

 On 2002.09.24_16:03:52_+, Matt Simerson wrote:
 Everything on the new system works just fine except the vconvert
 function. Can anyone verify that vconvert actually does work?

 Yes, it actually works. Below are the steps I have taken to come up 
 with
 that statement:
 1. Compile and install 5.3.8 with cdb.
 2. Test create a domain (devel.dutnux.com) and some users.
 3. Recompile with mysql support, install, using 5.3.8.
 4. Invoke ./vconvert -c -m -v -d devel.dutnux.com
 version: 5.3.8
 could not connect to mysql update server Unknown database 'vpopmail'
 with database
 converting devel.dutnux.com done
 5. I checked mysql, it created vpopmail database and table for me.
 The vpopmail table contain exactly the user I created.

 Can you sanitize a copy of a newer vpasswd file and send it my way so
 I can compare it to my ancient system to see if the format is still
 the same?

 This is the first line of the vpasswd file I have. It was created using
 5.3.8 with password learning support:

 postmaster:$1$R.O7J$cRKPnHXAkWuZ6epI94R.k/:1:0:Postmaster:
 /home/vpopmail/domains/devel.dutnux.com/postmaster:10M:dutnux

 Sorry for the wrapped line.

 Matt


 HTH

 -- 
 H. D. Lee





[vchkpw] vpopmail vpasswd file difference(s) between 4.9.10 and 5.3.8

2002-09-24 Thread Matt Simerson

I'm rebuilding a dinosaur mail server that I built a couple years ago. 
It's running vpopmail 4.9.10 using cdb authentication. I'm upgrading to 
5.3.8 with MySQL authentication.

I've build out the new 5.3.8 system and cluster of machines. It's all 
up, running and happy. I've NFS mounted all the home directories from 
the old cluster onto the new system so that I have ready access to the 
vpasswd and vpasswd.cdb files. They are mounted onto the local 
filesystem so that the paths in /var/qmail/users/assign are correct.

I run vconvert -c -m test.domain.com and it exits quietly indicating 
success:

mail8# ~vpopmail/bin/vconvert -c -m -v -d test.simerson.net
version: 5.3.8
converting test.simerson.net done

However, when I check the MySQL server, there's no entries in the 
vpopmail table that correspond to that domain. :-(

I've tested this one step further. I've manually added a valid user 
([EMAIL PROTECTED]) into the new mail system by manually adding it 
into the MySQL table. It works fine, authenticates, etc. That basically 
makes it work with my new mail system and the old one at the same time. 
Cool.  Anyway, if I run vconvert again, it'll actually delete that 
entry from the vpopmail table.  Is that supposed to happen?

Everything on the new system works just fine except the vconvert 
function. Can anyone verify that vconvert actually does work?  Can you 
sanitize a copy of a newer vpasswd file and send it my way so I can 
compare it to my ancient system to see if the format is still the same?

Matt