mail-process.c revision dc4127f13f2d5cf44577471123ae70b7772b2e8c
7cb128dc4cae2a03a742f63ba7afee23c78e3af0Phil Carmody/* Copyright (C) 2002 Timo Sirainen */
3157f61431f19e01173e2e0d270c28af86dc97aaTimo Sirainenstatic unsigned int mail_process_count = 0;
3157f61431f19e01173e2e0d270c28af86dc97aaTimo Sirainenstatic int validate_uid_gid(uid_t uid, gid_t gid)
3157f61431f19e01173e2e0d270c28af86dc97aaTimo Sirainen i_error("mail process isn't allowed for root");
3157f61431f19e01173e2e0d270c28af86dc97aaTimo Sirainen i_error("mail process isn't allowed to be in group 0");
202a34580f6204672d9b0d6a0756f35a3c4cdef6Timo Sirainen (set->last_valid_uid != 0 && uid > (uid_t)set->last_valid_uid)) {
202a34580f6204672d9b0d6a0756f35a3c4cdef6Timo Sirainen i_error("mail process isn't allowed to use UID %s",
3157f61431f19e01173e2e0d270c28af86dc97aaTimo Sirainen (set->last_valid_gid != 0 && gid > (gid_t)set->last_valid_gid)) {
3157f61431f19e01173e2e0d270c28af86dc97aaTimo Sirainen "GID %s (UID is %s)", dec2str(gid), dec2str(uid));
cbb79ea1b1a49255c6edc46409a544666b22788fTimo Sirainen const char *const *chroot_dirs;
cbb79ea1b1a49255c6edc46409a544666b22788fTimo Sirainen chroot_dirs = t_strsplit(set->valid_chroot_dirs, ":");
cbb79ea1b1a49255c6edc46409a544666b22788fTimo Sirainen strncmp(dir, *chroot_dirs, strlen(*chroot_dirs)) == 0)
3157f61431f19e01173e2e0d270c28af86dc97aaTimo Sirainenstatic const char *expand_mail_env(const char *env, const char *user,
cbb79ea1b1a49255c6edc46409a544666b22788fTimo Sirainen const char *p;
cbb79ea1b1a49255c6edc46409a544666b22788fTimo Sirainen /* it's either type:data or just data */
3157f61431f19e01173e2e0d270c28af86dc97aaTimo Sirainen while (env != p) {
env++;
int i, err;
return FALSE;
return FALSE;
return FALSE;
if (pid < 0) {
return FALSE;
if (pid != 0) {
return TRUE;
closelog();
(void)close(i);
return FALSE;