deliver-notify-zephyr.patch [plain text]
$Id: deliver-notify-zephyr.patch,v 1.5 2005/03/05 00:36:14 dasenbro Exp $
This is a patch to deliver to make zephyr notifications more verbose.
Naturally it requires zephyr. It sends zephyrs to everyone on the acl.
Please note that if you're at a large site (like us) your zephyr servers
will have problems with this patch due to the constant zephyrgrams going
out.
I have lost the name of the author for this patch; my apologies to this
person.
*** deliver.c.orig Wed Jun 11 12:43:44 1997
--- deliver.c Wed Jun 11 15:08:41 1997
***************
*** 597,603 ****
else if (notifyptr &&
(!strncasecmp(buf, "from:", 5) ||
!strncasecmp(buf, "subject:", 8) ||
! !strncasecmp(buf, "to:", 3))) {
if (!*notifyptr) *notifyptr = xstrdup(buf);
else {
*notifyptr =
--- 597,604 ----
else if (notifyptr &&
(!strncasecmp(buf, "from:", 5) ||
!strncasecmp(buf, "subject:", 8) ||
! !strncasecmp(buf, "to:", 3) ||
! !strncasecmp(buf, "cc:", 3))) {
if (!*notifyptr) *notifyptr = xstrdup(buf);
else {
*notifyptr =
***************
*** 682,687 ****
--- 683,689 ----
{
int r;
struct mailbox mailbox;
+ char *mbxacl=(char *)0;
char namebuf[MAX_MAILBOX_PATH];
char notifybuf[MAX_MAILBOX_PATH];
char *submailbox = 0;
***************
*** 740,755 ****
prot_rewind(msg);
r = append_fromstream(&mailbox, msg, size, time(0), flag, nflags,
user);
mailbox_close(&mailbox);
}
if (!r && user) {
! strcpy(notifybuf, "INBOX");
! if (submailbox) {
! strcat(notifybuf, ".");
! strcat(notifybuf, submailbox);
}
! notify(user, notifybuf, notifyheader ? notifyheader : "");
}
if (!r && dupelim && id) markdelivered(id, user ? namebuf : mailboxname);
--- 742,776 ----
prot_rewind(msg);
r = append_fromstream(&mailbox, msg, size, time(0), flag, nflags,
user);
+ mbxacl=strdup(mailbox.acl);
mailbox_close(&mailbox);
}
if (!r && user) {
! struct auth_state *auth_anyone;
! char *anyone="anyone";
! char *pseudouser;
! int amr;
!
! anyone=auth_canonifyid(anyone);
! auth_anyone=auth_newstate(anyone,(char*)0);
!
! amr=acl_myrights(auth_anyone,mbxacl);
! if (amr & ACL_READ) {
! strcpy(notifybuf, user);
! pseudouser=strdup("");
! } else {
! strcpy(notifybuf, "INBOX");
! if (submailbox) {
! strcat(notifybuf, ".");
! strcat(notifybuf, submailbox);
! }
! pseudouser=strdup(user);
}
! notify(pseudouser, notifybuf, notifyheader ? notifyheader : "");
! auth_freestate(auth_anyone);
! free(pseudouser);
! free(mbxacl);
}
if (!r && dupelim && id) markdelivered(id, user ? namebuf : mailboxname);