17 |
unsigned int capabilities; /* Capabilities of mail server. */ |
unsigned int capabilities; /* Capabilities of mail server. */ |
18 |
char logfile[PATH_MAX]; /* Log file. */ |
char logfile[PATH_MAX]; /* Log file. */ |
19 |
char *home = NULL; /* User's home directory. */ |
char *home = NULL; /* User's home directory. */ |
20 |
|
uid_t ruid, euid; /* Real and effective UID. */ |
21 |
|
|
22 |
|
|
23 |
/* |
/* |
29 |
char *confile = NULL; /* Configuration file. */ |
char *confile = NULL; /* Configuration file. */ |
30 |
account_t *ca; /* Current account. */ |
account_t *ca; /* Current account. */ |
31 |
mbox_t *cm; /* Current mailbox. */ |
mbox_t *cm; /* Current mailbox. */ |
32 |
|
|
33 |
|
ruid = getuid(); |
34 |
|
euid = geteuid(); |
35 |
|
|
36 |
|
seteuid(ruid); /* Drop root privileges. */ |
37 |
|
|
38 |
|
corefile_disable(); |
39 |
|
|
40 |
options = (OPTION_DETAILS_NORMAL | OPTION_NAMESPACE); |
options = (OPTION_DETAILS_NORMAL | OPTION_NAMESPACE); |
41 |
*logfile = 0; |
*logfile = 0; |
42 |
home = getenv("HOME"); |
home = getenv("HOME"); |
43 |
|
|
44 |
#ifndef ENCRYPTED_PASSWORDS |
#ifndef ENCRYPTED_PASSWORDS |
45 |
while ((c = getopt(argc, argv, "c:hl:qv")) != -1) { |
while ((c = getopt(argc, argv, "c:hl:qv")) != -1) { |
46 |
#else |
#else |
77 |
} |
} |
78 |
} |
} |
79 |
|
|
80 |
|
tty_store(); |
81 |
catch_signals(); |
catch_signals(); |
82 |
|
|
83 |
create_homedir(); |
create_homedir(); |
91 |
if ((options & OPTION_PASSWORD_EDITOR)) |
if ((options & OPTION_PASSWORD_EDITOR)) |
92 |
password_editor(); |
password_editor(); |
93 |
#endif |
#endif |
94 |
|
|
95 |
|
setuid(ruid); /* Capability to regain root privileges |
96 |
|
will not be needed any more. */ |
97 |
|
|
98 |
|
|
99 |
for (ca = accounts; ca; ca = ca->next) { |
for (ca = accounts; ca; ca = ca->next) { |
100 |
|
|
136 |
close_connection(); |
close_connection(); |
137 |
} |
} |
138 |
|
|
139 |
overwrite_passwords(); |
secmem_clear(); |
|
|
|
140 |
close_logfile(); |
close_logfile(); |
141 |
|
corefile_restore(); |
142 |
|
|
143 |
exit(0); |
exit(0); |
144 |
} |
} |
149 |
*/ |
*/ |
150 |
void usage(void) |
void usage(void) |
151 |
{ |
{ |
|
#ifndef ENCRYPTED_PASSWORDS |
|
|
fprintf(stderr, |
|
|
"usage: imapfilter [-hpqv] [-c configfile] [-l logfile]\n"); |
|
|
#else |
|
152 |
fprintf(stderr, |
fprintf(stderr, |
153 |
"usage: imapfilter [-hqv] [-c configfile] [-l logfile]\n"); |
"usage: imapfilter [-h" |
154 |
#endif |
#ifdef ENCRYPTED_PASSWORDS |
155 |
|
"p" |
156 |
|
#endif |
157 |
|
"qv] [-c configfile] [-l logfile]\n"); |
158 |
} |
} |