-/* $Cambridge: exim/src/src/deliver.c,v 1.1 2004/10/07 10:39:01 ph10 Exp $ */
+/* $Cambridge: exim/src/src/deliver.c,v 1.2.2.1 2004/12/10 14:59:08 tom Exp $ */
/*************************************************
* Exim - an Internet mail transport agent *
deliver_domain = addr->domain;
self_hostname = addr->self_hostname;
+#ifdef EXPERIMENTAL_BRIGHTMAIL
+bmi_deliver = 1; /* deliver by default */
+bmi_alt_location = NULL;
+bmi_base64_verdict = NULL;
+bmi_base64_tracker_verdict = NULL;
+#endif
+
/* If there's only one address we can set everything. */
if (addr->next == NULL)
deliver_localpart_suffix = addr->parent->suffix;
}
}
+
+#ifdef EXPERIMENTAL_BRIGHTMAIL
+ /* Set expansion variables related to Brightmail AntiSpam */
+ bmi_base64_verdict = bmi_get_base64_verdict(deliver_localpart_orig, deliver_domain_orig);
+ bmi_base64_tracker_verdict = bmi_get_base64_tracker_verdict(bmi_base64_verdict);
+ /* get message delivery status (0 - don't deliver | 1 - deliver) */
+ bmi_deliver = bmi_get_delivery_status(bmi_base64_verdict);
+ /* if message is to be delivered, get eventual alternate location */
+ if (bmi_deliver == 1) {
+ bmi_alt_location = bmi_get_alt_location(bmi_base64_verdict);
+ };
+#endif
+
}
/* For multiple addresses, don't set local part, and leave the domain and
setflag(addr, af_ignore_error);
/* Freeze the message if requested, or if this is a bounce message (or other
- message with null sender). However, don't freeze if errors are being ignored.
- The actual code to ignore occurs later, instead of sending a message. Logging
- of freezing occurs later, just before writing the -H file. */
+ message with null sender) and this address does not have its own errors
+ address. However, don't freeze if errors are being ignored. The actual code
+ to ignore occurs later, instead of sending a message. Logging of freezing
+ occurs later, just before writing the -H file. */
if (!testflag(addr, af_ignore_error) &&
- (addr->special_action == SPECIAL_FREEZE || sender_address[0] == 0))
+ (addr->special_action == SPECIAL_FREEZE ||
+ (sender_address[0] == 0 && addr->p.errors_address == NULL)
+ ))
{
frozen_info = (addr->special_action == SPECIAL_FREEZE)? US"" :
(sender_local && !local_error_message)?