16 |
#endif |
#endif |
17 |
|
|
18 |
|
|
|
extern int sockpri; |
|
19 |
extern account_t *accounts; |
extern account_t *accounts; |
20 |
extern filter_t *filters; |
extern filter_t *filters; |
|
extern namesp_t nsppri; |
|
21 |
extern buffer_t ibuf, obuf; |
extern buffer_t ibuf, obuf; |
22 |
|
|
23 |
unsigned int options; /* Program options. */ |
unsigned int options; /* Program options. */ |
24 |
unsigned int flags = 0; /* Program flags. */ |
unsigned int flags = 0; /* Program flags. */ |
25 |
unsigned int interval = 0; /* Poll at the specified interval. */ |
unsigned int interval = 0; /* Poll at the specified interval. */ |
26 |
unsigned int capspri, capsaux; /* Capabilities of primary and auxiliary mail |
conn_t connpri, connaux; /* Primary and auxiliary IMAP connection. */ |
|
* server. */ |
|
27 |
|
|
28 |
char logfile[PATH_MAX]; /* Log file. */ |
char logfile[PATH_MAX]; /* Log file. */ |
29 |
char *home = NULL; /* User's home directory. */ |
char *home = NULL; /* User's home directory. */ |
146 |
if (setjmp(acctloop)) |
if (setjmp(acctloop)) |
147 |
continue; |
continue; |
148 |
|
|
149 |
if (init_connection(&sockpri, ca->server, ca->port, |
if (init_connection(&connpri, ca->server, ca->port, |
150 |
ca->ssl)) |
ca->ssl)) |
151 |
continue; |
continue; |
152 |
|
|
153 |
r = greeting_response(&sockpri); |
r = greeting_response(&connpri); |
154 |
|
|
155 |
#ifdef DEBUG |
#ifdef DEBUG |
156 |
test(&sockpri); |
test(&connpri); |
157 |
#endif |
#endif |
158 |
|
|
159 |
if (check_capabilities(&sockpri)) |
if (check_capabilities(&connpri)) |
160 |
continue; |
continue; |
161 |
|
|
162 |
#ifdef SSL_TLS |
#ifdef SSL_TLS |
163 |
if (ca->ssl == SSL_DISABLED && |
if (ca->ssl == SSL_DISABLED && |
164 |
capspri & CAPABILITY_STARTTLS) |
connpri.caps & CAPABILITY_STARTTLS) |
165 |
if (imf_starttls(&sockpri) == RESPONSE_OK) |
if (imf_starttls(&connpri) == RESPONSE_OK) |
166 |
check_capabilities(&sockpri); |
check_capabilities(&connpri); |
167 |
#endif |
#endif |
168 |
|
|
169 |
log_info(LOG_ACCOUNT, ca->key); |
log_info(LOG_ACCOUNT, ca->key); |
176 |
ca->passwdattr = PASSWORD_PLAIN; |
ca->passwdattr = PASSWORD_PLAIN; |
177 |
} |
} |
178 |
#ifdef CRAM_MD5 |
#ifdef CRAM_MD5 |
179 |
if (capspri & CAPABILITY_AUTH_CRAM_MD5) |
if (connpri.caps & CAPABILITY_AUTH_CRAM_MD5) |
180 |
r = imf_cram_md5(&sockpri, |
r = imf_cram_md5(&connpri, |
181 |
ca->username, ca->password); |
ca->username, ca->password); |
182 |
else |
else |
183 |
#endif |
#endif |
184 |
r = login(&sockpri, ca->username, |
r = login(&connpri, ca->username, |
185 |
ca->password); |
ca->password); |
186 |
|
|
187 |
if (r == RESPONSE_NO) { |
if (r == RESPONSE_NO) { |
190 |
continue; |
continue; |
191 |
} |
} |
192 |
} |
} |
193 |
check_namespace(&sockpri, &nsppri); |
check_namespace(&connpri); |
194 |
|
|
195 |
for (cm = ca->mboxes; cm != NULL; cm = cm->next) |
for (cm = ca->mboxes; cm != NULL; cm = cm->next) |
196 |
if (*cm->filters == NULL) |
if (*cm->filters == NULL) |
197 |
mailbox_status(&sockpri, cm->name, |
mailbox_status(&connpri, cm->name); |
198 |
&nsppri); |
else if (!select_mailbox(&connpri, cm->name)) { |
|
else if (!select_mailbox(&sockpri, cm->name, |
|
|
&nsppri)) { |
|
199 |
apply_filters(cm->name, cm->filters); |
apply_filters(cm->name, cm->filters); |
200 |
close_mailbox(&sockpri); |
close_mailbox(&connpri); |
201 |
} |
} |
202 |
logout(&sockpri); |
logout(&connpri); |
203 |
|
|
204 |
close_connection(&sockpri); |
close_connection(&connpri); |
205 |
} |
} |
206 |
|
|
207 |
/* Fork if in daemon mode. */ |
/* Fork if in daemon mode. */ |