[sork] Re: passwd 2.2.1-RC1 + vpopmail + mysql
Chris Nojima
chris at toastedpixel.com
Fri Apr 9 11:30:27 PDT 2004
> > right, your problem stems from the use of "--disable-many-domains" at
> > the configuration point of your vpopmail (which creates a table for each
> > virtual domain instead of storing all users in a single table). i think
> > you mentioned using a qmail-toaster distribution. curious that it came
> > this way, as iirc, that's not a default option at configuration time.
>
> I installed the toaster with all defaults, except I disallowed roaming
> relay.
roaming relay isn't the same thing here. that setting records IPs
addresses temporarily so that your users can use your qmail-smtpd to
send out email (say from home, on the road, at work, etc.). it has very
little to do with the problem you're having now.
>
> > passwd currently doesn't seem to support that particular part of
> > vpopmail.
>
> I'm noticing. I wish I could start over, but I've got too many user accounts
> as it is.
>
i don't know how comfortable you are editing your passwd install, but
try this out (since it can't break something that isn't broken already)
=p. the lines below assume you saved the patch to "patch.txt" and that
it is copied to the same directory as "vpopmail.php".
cd /path/to/your/horde/passwd/lib/Driver
cp vpopmail.php vpopmail.orig
patch -p0 vpopmail.php patch.txt
/*** patch starts below ***********************************************/
--- vpopmail.orig Fri Apr 9 14:15:35 2004
+++ vpopmail.new Fri Apr 9 14:17:30 2004
@@ -124,10 +124,12 @@
list($name,$domain)=explode("@",$user);
- // Build the SQL query.
- $query = 'SELECT ' . $this->_params['passwd'] . ' FROM ' .
$this->_params['table'];
- $query .= ' WHERE ' . $this->_params['name'] . ' = ' .
$this->_db->quote($name);
- $query .= ' AND ' . $this->_params['domain'] . ' = ' .
$this->_db->quote($domain);
+ $this->_params['table'] = strtr($this->_params['domain'], '.',
'_');
+
+ $query = 'SELECT ' . $this->_params['passwd'] . ' FROM ' .
+ $this->_params['table'];
+ $query .= ' WHERE ' . $this->_params['name'] . ' = ' .
+ $this->_db->quote($name);
// Execute the query.
$result = $this->_db->query($query);
@@ -168,13 +170,17 @@
$newPassword = $this->encryptPassword($newPassword);
// Build the SQL query.
+ $this->_params['table'] = strtr($this->_params['domain'], '.',
'_');
+
$query = 'UPDATE ' . $this->_params['table'];
- $query .= ' SET ' . $this->_params['passwd'] . ' = ' .
$this->_db->quote($newPassword);
- if($this->_params['use_clear_passwd']) {
- $query.= ' , ' . $this->_params['clear_passwd'] . ' = ' .
$this->_db->quote($clearPassword);
- }
- $query .= ' WHERE ' . $this->_params['name'] . ' = ' .
$this->_db->quote($name);
- $query .= ' AND ' . $this->_params['domain'] . ' = ' .
$this->_db->quote($domain);
+ $query .= ' SET ' . $this->_params['passwd'] . ' = ' .
+ $this->_db->quote($newPassword);
+ if($this->_params['use_clear_passwd']) {
+ $query.= ' , ' . $this->_params['clear_passwd'] . ' = ' .
+ $this->_db->quote($clearPassword);
+ }
+ $query .= ' WHERE ' . $this->_params['name'] . ' = ' .
+ $this->_db->quote($name);
// Execute the query.
$result = $this->_db->query($query);
/*** patch ends *******************************************************/
i *think* this will work for you, but i can't test it because i don't
have the same setup as you.
let me know if it worked/didn't, and if you can get a mysql log of the
query (success or failure) that'd be great!
-chris nojima
More information about the sork
mailing list