Sorry for the delay, I need to back everything up and make sure everything else was right before the update.
All users have home dirs under /home/domain.com/homes/firstpartofemailaddy
/home is actually a link to /mnt/sdb1/home, as webmin/virtualmin picked up on as you can see from the error.
I updated it to 3.69 GPL and attempted to reset the password on an account and got the same error:
Failed to save mailbox : Home directory /mnt/sdb1/home/domain.com/homes/testaccount already exists
Also after some experimenting I have found that there are no problems resetting the password on accounts that have not yet received email since the home dir does not exist yet.
I’ve never had a problem with symlinks in the past, but I am no expert either :). It’s always been quick way to get things where you need them to be especially when there are large amounts of data involved that is difficult the throw around, or if you want serveral things to reference the same file or dir and they are not easily configured to do so otherwise.
I’m not under the gun so to speak because I can reset passwords through other means by request for a few days if need be if you want more time to look into the issue.
I’d prefer to leave the configuration as it is if Jamie thinks it is ok and he thinks he can come up with a solution, but if symlinks really are a problem and not recommended, is a possible solution to mount the drive as /home instead of under /mnt/sdb1 and symlinking the dir?
If you have a separate partition for the home directories, you should be able to easily mount it at /home. Just run remove the /home link, edit /etc/fstab and change /mnt/sdb1 to /home, and reboot.
Ok, it is that symlink that is confusing Virtualmin into thinking that the home directory has been renamed when it really hasn’t. The fix (till the next release) is to apply the following patch to virtual-server/save_user.cgi :
Index: save_user.cgi
— save_user.cgi (revision 5866)
+++ save_user.cgi (working copy)
@@ -507,6 +507,7 @@
if (-e $home &&
&simplify_path($user->{‘home’}) ne
&simplify_path($home) &&
$user->{'home'} ne $home &&
!$user->{'nocreatehome'}) {
&error(&text('user_emkhome', $home));
}