mail_user = mail_user_alloc(user->input.username, user->user_info,
user->user_set);
mail_user_set_home(mail_user, *home == '\0' ? NULL : home);
- mail_user_set_vars(mail_user, geteuid(), ctx->service->name,
+ mail_user_set_vars(mail_user, geteuid(), getegid(), ctx->service->name,
&user->input.local_ip, &user->input.remote_ip);
mail_set = mail_user_set_get_storage_set(mail_user);
return NULL;
}
-void mail_user_set_vars(struct mail_user *user, uid_t uid, const char *service,
- const struct ip_addr *local_ip,
+void mail_user_set_vars(struct mail_user *user, uid_t uid, gid_t gid,
+ const char *service, const struct ip_addr *local_ip,
const struct ip_addr *remote_ip)
{
user->uid = uid;
+ user->gid = gid;
user->service = p_strdup(user->pool, service);
if (local_ip != NULL && local_ip->family != 0) {
user->local_ip = p_new(user->pool, struct ip_addr, 1);
{ 'r', NULL, "rip" },
{ 'p', NULL, "pid" },
{ 'i', NULL, "uid" },
+ { '\0', NULL, "gid" },
{ '\0', NULL, NULL }
};
struct var_expand_table *tab;
const char *_home;
uid_t uid;
+ gid_t gid;
const char *service;
struct ip_addr *local_ip, *remote_ip;
const struct var_expand_table *var_expand_table;
struct mail_user *mail_user_find(struct mail_user *user, const char *name);
/* Specify mail location %variable expansion data. */
-void mail_user_set_vars(struct mail_user *user, uid_t uid, const char *service,
- const struct ip_addr *local_ip,
+void mail_user_set_vars(struct mail_user *user, uid_t uid, gid_t gid,
+ const char *service, const struct ip_addr *local_ip,
const struct ip_addr *remote_ip);
/* Return %variable expansion table for the user. */
const struct var_expand_table *