Attached is a patch that allows you to customize the quota-warning from
and subject by adding two aditional control files:
quotafrom
quotasub
--
Jose Celestino <[EMAIL PROTECTED]> SysAdmin::SAPO.pt http://www.sapo.pt
-----------------------------------------------------
"Lately, the only thing keeping me from becoming a serial killer is my distaste
for manual labor." -- Dilbert
diff -N -c -r qmail-1.03/Makefile qmail-1.03.japc/Makefile
*** qmail-1.03/Makefile 2002-10-19 17:27:20.000000000 +0100
--- qmail-1.03.japc/Makefile 2002-10-19 17:37:45.000000000 +0100
***************
*** 1712,1718 ****
./load qmail-quotawarn newfield.o now.o date822fmt.o case.a \
fd.a wait.a open.a myctime.o case.a getln.a sig.a open.a seek.a \
lock.a datetime.a env.a stralloc.a alloc.a strerr.a substdio.a \
! error.a str.a fs.a
qmail-quotawarn.o: \
compile qmail-quotawarn.c readwrite.h sig.h byte.h case.h datetime.h \
--- 1712,1718 ----
./load qmail-quotawarn newfield.o now.o date822fmt.o case.a \
fd.a wait.a open.a myctime.o case.a getln.a sig.a open.a seek.a \
lock.a datetime.a env.a stralloc.a alloc.a strerr.a substdio.a \
! error.a str.a fs.a auto_qmail.o control.o scan_ulong.o
qmail-quotawarn.o: \
compile qmail-quotawarn.c readwrite.h sig.h byte.h case.h datetime.h \
diff -N -c -r qmail-1.03/qmail-quotawarn.c qmail-1.03.japc/qmail-quotawarn.c
*** qmail-1.03/qmail-quotawarn.c 2002-10-19 17:27:20.000000000 +0100
--- qmail-1.03.japc/qmail-quotawarn.c 2002-10-19 17:36:04.000000000 +0100
***************
*** 24,29 ****
--- 24,31 ----
#include "myctime.h"
#include "qmail-ldap.h"
#include "date822fmt.h"
+ #include "control.h"
+ #include "auto_qmail.h"
/* global vars */
stralloc warning={0};
***************
*** 140,145 ****
--- 142,150 ----
struct datetime dt;
struct stat st;
substdio ssout;
+ stralloc quotafrom = {0};
+ stralloc quotasub = {0};
+ stralloc controls = {0};
sig_alarmcatch(sigalrm);
if (chdir(fn) == -1) {
***************
*** 149,155 ****
}
check_maildir();
!
/* set To: From: Delivered-to: Return-Path: UFLINE Date: Message-ID: */
if (! (t = env_get("RECIPIENT") ) )
strerr_die1x(111,"ARRG: RECIPIENT not present (LDAP-ERR #5.1.2)");
--- 154,177 ----
}
check_maildir();
!
! if (!stralloc_copys(&controls,auto_qmail)) temp_nomem();
! if (!stralloc_cats(&controls,"/control/quotafrom")) temp_nomem();
! if (!stralloc_0(&controls)) temp_nomem();
!
! if (control_readline("afrom,controls.s) != 1) {
! if (!stralloc_copys("afrom,"Qmail-QUOTAGUARD <MAILER-DAEMON@"))
temp_nomem();
! if (!stralloc_cat("afrom,&host)) temp_nomem();
! if (!stralloc_cats("afrom,">\n")) temp_nomem();
! }
!
! if (!stralloc_copys(&controls,auto_qmail)) temp_nomem();
! if (!stralloc_cats(&controls,"/control/quotasub")) temp_nomem();
! if (!stralloc_0(&controls)) temp_nomem();
!
! if (control_readline("asub,controls.s) != 1)
! if (!stralloc_copys("asub,"QUOTA-WARNING!")) temp_nomem();
!
/* set To: From: Delivered-to: Return-Path: UFLINE Date: Message-ID: */
if (! (t = env_get("RECIPIENT") ) )
strerr_die1x(111,"ARRG: RECIPIENT not present (LDAP-ERR #5.1.2)");
***************
*** 157,165 ****
if (!stralloc_cats(&to,t)) temp_nomem();
if (!stralloc_cats(&to,"\n")) temp_nomem();
! if (!stralloc_copys(&from,"From: Qmail-QUOTAGUARD <MAILER-DAEMON@")) temp_nomem();
! if (!stralloc_cat(&from,&host)) temp_nomem();
! if (!stralloc_cats(&from,">\n")) temp_nomem();
if (! (t = env_get("DTLINE") ) )
strerr_die1x(111,"ARRG: DTLINE not present (LDAP-ERR #5.1.4)");
--- 179,187 ----
if (!stralloc_cats(&to,t)) temp_nomem();
if (!stralloc_cats(&to,"\n")) temp_nomem();
! if (!stralloc_copys(&from,"From: ")) temp_nomem();
! if (!stralloc_cat(&from,"afrom)) temp_nomem();
! if (!stralloc_cats(&from,"\n")) temp_nomem();
if (! (t = env_get("DTLINE") ) )
strerr_die1x(111,"ARRG: DTLINE not present (LDAP-ERR #5.1.4)");
***************
*** 211,217 ****
/* To: From: and Subject: */
if (substdio_put(&ssout,to.s,to.len)) goto fail;
if (substdio_put(&ssout,from.s,from.len)) goto fail;
! if (substdio_puts(&ssout,"Subject: QUOTA-WARNING!\n")) goto fail;
/* don't forget the single \n */
if (substdio_puts(&ssout,"\n")) goto fail;
/* the Warning */
--- 233,241 ----
/* To: From: and Subject: */
if (substdio_put(&ssout,to.s,to.len)) goto fail;
if (substdio_put(&ssout,from.s,from.len)) goto fail;
! if (substdio_puts(&ssout,"Subject: ")) goto fail;
! if (substdio_put(&ssout,quotasub.s,quotasub.len)) goto fail;
! if (substdio_puts(&ssout,"\n")) goto fail;
/* don't forget the single \n */
if (substdio_puts(&ssout,"\n")) goto fail;
/* the Warning */
***************
*** 281,286 ****
--- 305,330 ----
char *t;
datetime_sec starttime;
struct datetime dt;
+ stralloc quotafrom = {0};
+ stralloc quotasub = {0};
+ stralloc controls = {0};
+
+ if (!stralloc_copys(&controls,auto_qmail)) temp_nomem();
+ if (!stralloc_cats(&controls,"/control/quotafrom")) temp_nomem();
+ if (!stralloc_0(&controls)) temp_nomem();
+
+ if (control_readline("afrom,controls.s) != 1) {
+ if (!stralloc_copys("afrom,"Qmail-QUOTAGUARD <MAILER-DAEMON@"))
+temp_nomem();
+ if (!stralloc_cat("afrom,&host)) temp_nomem();
+ if (!stralloc_cats("afrom,">\n")) temp_nomem();
+ }
+
+ if (!stralloc_copys(&controls,auto_qmail)) temp_nomem();
+ if (!stralloc_cats(&controls,"/control/quotasub")) temp_nomem();
+ if (!stralloc_0(&controls)) temp_nomem();
+
+ if (control_readline("asub,controls.s) != 1)
+ if (!stralloc_copys("asub,"QUOTA-WARNING!")) temp_nomem();
/* set To: From: Delivered-to: Return-Path: UFLINE Date: Message-ID: */
if (! (t = env_get("RECIPIENT") ) )
***************
*** 289,297 ****
if (!stralloc_cats(&to,t)) temp_nomem();
if (!stralloc_cats(&to,"\n")) temp_nomem();
! if (!stralloc_copys(&from,"From: Qmail-QUOTAGUARD <MAILER-DAEMON@")) temp_nomem();
! if (!stralloc_cat(&from,&host)) temp_nomem();
! if (!stralloc_cats(&from,">\n")) temp_nomem();
if (! (t = env_get("DTLINE") ) )
strerr_die1x(111,"ARRG: DTLINE not present (LDAP-ERR #5.1.4)");
--- 333,341 ----
if (!stralloc_cats(&to,t)) temp_nomem();
if (!stralloc_cats(&to,"\n")) temp_nomem();
! if (!stralloc_copys(&from,"From: ")) temp_nomem();
! if (!stralloc_cat(&from,"afrom)) temp_nomem();
! if (!stralloc_cats(&from,"\n")) temp_nomem();
if (! (t = env_get("DTLINE") ) )
strerr_die1x(111,"ARRG: DTLINE not present (LDAP-ERR #5.1.4)");
***************
*** 300,306 ****
if (!stralloc_copys(&rpline,"Return-Path: <>\n")) temp_nomem();
if (!stralloc_copys(&ufline,"From ")) temp_nomem();
! if (!stralloc_cats(&ufline,"MAILER-DAEMON")) temp_nomem();
if (!stralloc_cats(&ufline," ")) temp_nomem();
starttime = now();
datetime_tai(&dt,starttime);
--- 344,350 ----
if (!stralloc_copys(&rpline,"Return-Path: <>\n")) temp_nomem();
if (!stralloc_copys(&ufline,"From ")) temp_nomem();
! if (!stralloc_copy(&ufline,"afrom)) temp_nomem();
if (!stralloc_cats(&ufline," ")) temp_nomem();
starttime = now();
datetime_tai(&dt,starttime);
***************
*** 340,346 ****
/* To: From: and Subject: */
if (substdio_put(&ssout,to.s,to.len)) goto writeerrs;
if (substdio_put(&ssout,from.s,from.len)) goto writeerrs;
! if (substdio_puts(&ssout,"Subject: QUOTA-WARNING!\n")) goto writeerrs;
/* don't forget the single \n */
if (substdio_puts(&ssout,"\n")) goto writeerrs;
/* the Warning */
--- 384,392 ----
/* To: From: and Subject: */
if (substdio_put(&ssout,to.s,to.len)) goto writeerrs;
if (substdio_put(&ssout,from.s,from.len)) goto writeerrs;
! if (substdio_puts(&ssout,"Subject: ")) goto writeerrs;
! if (substdio_put(&ssout,quotasub.s,quotasub.len)) goto writeerrs;
! if (substdio_puts(&ssout,"\n")) goto writeerrs;
/* don't forget the single \n */
if (substdio_puts(&ssout,"\n")) goto writeerrs;
/* the Warning */
diff -N -c -r qmail-1.03/qmail-showctl.c qmail-1.03.japc/qmail-showctl.c
*** qmail-1.03/qmail-showctl.c 2002-10-19 17:27:20.000000000 +0100
--- qmail-1.03.japc/qmail-showctl.c 2002-10-19 17:30:03.000000000 +0100
***************
*** 294,299 ****
--- 294,302 ----
do_lst("ldapclusterhosts","No alternate MailHosts for clustering listed.",
"Alternate MailHosts for clustering: ", "");
do_lst("quotawarning","No quotawarning.","","");
+ do_str("quotafrom",0,"'Qmail-QUOTAGUARD <MAILER-DAEMON@HOST'","From when sending
+quota warnings is ");
+ do_str("quotasub",0,"'QUOTA-WARNING!'","Subject when sending quota warnings is ");
+
do_lst("custombouncetext","No custombouncetext.","","");
do_int("maxrcptcount","0",""," RCPT TOs are accepted before sending 553 (0 =
off)");
do_int("tarpitcount","0",""," RCPT TOs are accepted before tarpitting (0 = off)");
***************
*** 353,358 ****
--- 356,363 ----
if (str_equal(d->d_name,"ldapgid")) continue;
if (str_equal(d->d_name,"custombouncetext")) continue;
if (str_equal(d->d_name,"quotawarning")) continue;
+ if (str_equal(d->d_name,"quotafrom")) continue;
+ if (str_equal(d->d_name,"quotasub")) continue;
if (str_equal(d->d_name,"tarpitcount")) continue;
if (str_equal(d->d_name,"tarpitdelay")) continue;
if (str_equal(d->d_name,"badrcptto")) continue;