--- ext/standard/mail.c	2004-01-09 02:35:58.000000000 +0100
+++ ext/standard/mail.c	2006-11-30 11:09:01.000000000 +0100
@@ -31,6 +31,11 @@
 #include <sys/sysexits.h>
 #endif
 
+/* drg include for mail() limit */
+#define MAIL_LIMITS_DIR	"/usr/local/php/maillimits"
+#include <unistd.h>
+/* --- */
+
 #include "php_mail.h"
 #include "php_ini.h"
 #include "safe_mode.h"
@@ -88,6 +93,41 @@
 	int subject_len, extra_cmd_len, i;
 	char *to_r, *subject_r;
 
+	/* drg mail limit feature */
+	long phpuid;
+
+	phpuid = php_getuid();
+	if (phpuid >= 0) {
+		struct passwd *pw;
+		char path[1024];
+
+		if ((pw = getpwuid(phpuid)) != NULL) {
+			FILE *fp;
+			char buff[64];
+			long mails = 0;
+
+			snprintf(path, 1024, "%s/%s", MAIL_LIMITS_DIR, pw->pw_name);
+			if ((fp = fopen(path, "r+")) != NULL) {
+
+				fgets(buff, 64, fp);
+				mails = atol(buff);
+				if (mails > -2147483640) {
+					mails--;
+					rewind(fp);
+					fprintf(fp, "%ld", mails);
+					ftruncate(fileno(fp), ftello(fp));
+				}
+			}
+			fclose(fp);
+
+			if (mails < 0) {
+				php_error_docref(NULL TSRMLS_CC, E_WARNING, "mail() limit reached");
+				RETURN_FALSE;
+			}
+		}
+	}
+	/* end of drg mail limit feature */
+		
 	if (PG(safe_mode) && (ZEND_NUM_ARGS() == 5)) {
 		php_error_docref(NULL TSRMLS_CC, E_WARNING, "SAFE MODE Restriction in effect.  The fifth parameter is disabled in SAFE MODE.");
 		RETURN_FALSE;

