@@ -257,6 +257,34 @@ function user_update($event_name, $data) {
257257 unset($ tmp_basepath_parts [count ($ tmp_basepath_parts )-1 ]);
258258 $ base_path = implode ('/ ' , $ tmp_basepath_parts );
259259
260+ //* Set the email-uid and gid if not given -> in case of changed settings again setting here
261+ if (($ data ['new ' ]['uid ' ] == -1 ) || ($ data ['new ' ]['gid ' ] == -1 )) {
262+ $ app ->log ('Setting uid and gid automatically ' ,LOGLEVEL_DEBUG );
263+ if ($ mail_config ["mailbox_virtual_uidgid_maps " ] == 'y ' ) {
264+ $ app ->log ('Map uid to linux-user ' ,LOGLEVEL_DEBUG );
265+ $ email_parts = explode ('@ ' ,$ data ['new ' ]['email ' ]);
266+ $ webdomain = $ app ->db ->queryOneRecord ("SELECT domain_id, server_id, system_user, parent_domain_id FROM web_domain WHERE domain = ' " .$ app ->db ->quote ($ email_parts [1 ])."' " );
267+ if ($ webdomain ) {
268+ while ($ webdomain ['parent_domain_id ' ] != 0 ) {
269+ $ webdomain = $ app ->db ->queryOneRecord ("SELECT domain_id, server_id, system_user, parent_domain_id FROM web_domain WHERE domain_id = ' " .$ webdomain ['parent_domain_id ' ]."' " );
270+ }
271+ $ app ->log ($ data ['new ' ]['server_id ' ].' == ' .$ webdomain ['server_id ' ],LOGLEVEL_DEBUG );
272+
273+ // only if web and mailserver are identical
274+ if ($ data ['new ' ]['server_id ' ] == $ webdomain ['server_id ' ]) {
275+ $ data ['new ' ]['uid ' ] = $ app ->system ->getuid ($ webdomain ['system_user ' ]);
276+ }
277+ }
278+ }
279+ }
280+ // if nothing set before -> use standard mailuser uid and gid vmail
281+ if ($ data ['new ' ]['uid ' ] == -1 ) $ data ['new ' ]['uid ' ] = $ mail_config ["mailuser_uid " ];
282+ if ($ data ['new ' ]['gid ' ] == -1 ) $ data ['new ' ]['gid ' ] = $ mail_config ["mailuser_gid " ];
283+ $ app ->log ('Mailuser uid: ' .$ data ['new ' ]['uid ' ].', gid: ' .$ data ['new ' ]['gid ' ],LOGLEVEL_DEBUG );
284+
285+ // update DB if values changed
286+ $ app ->db ->query ("UPDATE mail_user SET uid = " .$ data ['new ' ]['uid ' ].", gid = " .$ data ['new ' ]['gid ' ]." WHERE mailuser_id = " .$ data ['new ' ]['mailuser_id ' ]);
287+
260288 $ user = $ app ->system ->getuser ($ data ['new ' ]['uid ' ]);
261289 $ group = $ app ->system ->getgroup ($ data ['new ' ]['gid ' ]);
262290
0 commit comments