Lines 170-175
Link Here
|
170 |
bool flag_full_email = false; /* pass full email address to spamc */ |
170 |
bool flag_full_email = false; /* pass full email address to spamc */ |
171 |
bool flag_expand = false; /* alias/virtusertable expansion */ |
171 |
bool flag_expand = false; /* alias/virtusertable expansion */ |
172 |
bool warnedmacro = false; /* have we logged that we couldn't fetch a macro? */ |
172 |
bool warnedmacro = false; /* have we logged that we couldn't fetch a macro? */ |
|
|
173 |
bool flag_auth = false; /* pass mail from AUTHed users without scanning? */ |
173 |
|
174 |
|
174 |
#if defined(__FreeBSD__) /* popen bug - see PR bin/50770 */ |
175 |
#if defined(__FreeBSD__) /* popen bug - see PR bin/50770 */ |
175 |
static pthread_mutex_t popen_mutex = PTHREAD_MUTEX_INITIALIZER; |
176 |
static pthread_mutex_t popen_mutex = PTHREAD_MUTEX_INITIALIZER; |
Lines 181-187
Link Here
|
181 |
main(int argc, char* argv[]) |
182 |
main(int argc, char* argv[]) |
182 |
{ |
183 |
{ |
183 |
int c, err = 0; |
184 |
int c, err = 0; |
184 |
const char *args = "fd:mMp:P:r:u:D:i:b:B:e:x"; |
185 |
const char *args = "Afd:mMp:P:r:u:D:i:b:B:e:x"; |
185 |
char *sock = NULL; |
186 |
char *sock = NULL; |
186 |
bool dofork = false; |
187 |
bool dofork = false; |
187 |
char *pidfilename = NULL; |
188 |
char *pidfilename = NULL; |
Lines 236-241
Link Here
|
236 |
flag_sniffuser = true; |
237 |
flag_sniffuser = true; |
237 |
defaultuser = strdup(optarg); |
238 |
defaultuser = strdup(optarg); |
238 |
break; |
239 |
break; |
|
|
240 |
case 'A': |
241 |
flag_auth = true; |
242 |
break; |
239 |
case 'b': |
243 |
case 'b': |
240 |
case 'B': |
244 |
case 'B': |
241 |
if (flag_bucket) |
245 |
if (flag_bucket) |
Lines 279-289
Link Here
|
279 |
if (!sock || err) { |
283 |
if (!sock || err) { |
280 |
cout << PACKAGE_NAME << " - Version " << PACKAGE_VERSION << endl; |
284 |
cout << PACKAGE_NAME << " - Version " << PACKAGE_VERSION << endl; |
281 |
cout << "SpamAssassin Sendmail Milter Plugin" << endl; |
285 |
cout << "SpamAssassin Sendmail Milter Plugin" << endl; |
282 |
cout << "Usage: spamass-milter -p socket [-b|-B bucket] [-d xx[,yy...]] [-D host]" << endl; |
286 |
cout << "Usage: spamass-milter -p socket [-A] [-b|-B bucket] [-d xx[,yy...]] [-D host]" << endl; |
283 |
cout << " [-e defaultdomain] [-f] [-i networks] [-m] [-M]" << endl; |
287 |
cout << " [-e defaultdomain] [-f] [-i networks] [-m] [-M]" << endl; |
284 |
cout << " [-P pidfile] [-r nn] [-u defaultuser] [-x]" << endl; |
288 |
cout << " [-P pidfile] [-r nn] [-u defaultuser] [-x]" << endl; |
285 |
cout << " [-- spamc args ]" << endl; |
289 |
cout << " [-- spamc args ]" << endl; |
286 |
cout << " -p socket: path to create socket" << endl; |
290 |
cout << " -p socket: path to create socket" << endl; |
|
|
291 |
cout << " -A: pass mail from clients using SMTP AUTH without scanning." << endl; |
287 |
cout << " -b bucket: redirect spam to this mail address. The orignal" << endl; |
292 |
cout << " -b bucket: redirect spam to this mail address. The orignal" << endl; |
288 |
cout << " recipient(s) will not receive anything." << endl; |
293 |
cout << " recipient(s) will not receive anything." << endl; |
289 |
cout << " -B bucket: add this mail address as a BCC recipient of spam." << endl; |
294 |
cout << " -B bucket: add this mail address as a BCC recipient of spam." << endl; |
Lines 783-788
Link Here
|
783 |
} |
788 |
} |
784 |
/* debug(D_ALWAYS, "ZZZ got private context %p", sctx); */ |
789 |
/* debug(D_ALWAYS, "ZZZ got private context %p", sctx); */ |
785 |
|
790 |
|
|
|
791 |
// abort processing if mail is submitted via SMTP AUTH |
792 |
// and the appropriate flag is set |
793 |
if (flag_auth) |
794 |
{ |
795 |
if (smfi_getsymval(ctx, "{auth_authen}")) |
796 |
{ |
797 |
debug(D_ALWAYS, "Client used SMTP AUTH, passing mail without assassination"); |
798 |
return SMFIS_ACCEPT; |
799 |
} |
800 |
} |
801 |
|
786 |
debug(D_FUNC, "mlfi_envfrom: enter"); |
802 |
debug(D_FUNC, "mlfi_envfrom: enter"); |
787 |
try { |
803 |
try { |
788 |
// launch new SpamAssassin |
804 |
// launch new SpamAssassin |