I have no say or pull around here, but I am +1 on the idea, but unsure on the implementation from below.
-Jeremy On Sunday 30 May 2004 08:49 am, Paul G wrote: > folks, > > first post/patch, please be gentle <g>. > > hosting companies using mod_php have a *very* hard time preventing and > tracking abuse of mail(). when sendmail is invoked from a suexeced cgi > script, we get the username. with mod_php mail(), we get a big fat nothing, > a ton of spam in the spool and a bunch of abuse reports from ticked off > victims. we then go on a grepping witchhunt, which is hardly a workable > option on a busy production box. > > the patch i am including below apends an X-AntiAbusePHP: > /path/to/script/which/is/spewing header to all messages sent through > mail(). while we will be actively parsing that header in our sendmail > replacement script, leaving the username only and throttling/limiting based > on per-user sending threshholds, those who do not go that far to be good > netizens will at least be able to identify the source of spewage post > mortem. > > we already have iptables ACLs in place to prevent unauthorized connections > to remotehost:25, but most people can not implement that, so the socket > calls may be my next mutilation target. with that said, it would be much > more intrusive (hence likely unsuitable for addition into the core) and i > thought it would be more prudent to test the waters with a trivial patch, > since i am likely to have done something wrong/contrary to the php way of > doing things. > > i would think this {sh,c}ould be ifdefined, but being unfamiliar with the > status quo policy on that and considering that the patch has a fair chance > of being unwelcome, i did not pursue it. > > cheers, > paul > > diff -ru php-4.3.6/ext/standard/mail.c php-4.3.6.abuse1/ext/standard/mail.c > --- php-4.3.6/ext/standard/mail.c 2004-01-08 20:35:58.000000000 -0500 > +++ php-4.3.6.abuse1/ext/standard/mail.c 2004-05-30 > 08:27:55.000000000 -0400 > @@ -87,6 +87,8 @@ > int to_len, message_len, headers_len; > int subject_len, extra_cmd_len, i; > char *to_r, *subject_r; > + char *exec_file=NULL; > + int abuseh_len=0, got_headers=0; > > 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."); > @@ -103,6 +105,18 @@ > return; > } > > + got_headers = headers ? 1 : 0; > + exec_file= zend_get_executed_filename(TSRMLS_C); > + /* add 2 [strlen("\r\n")] _if_ we are appending to preexisting > headers */ > + abuseh_len = (got_headers*2) + strlen(ABUSE_HEADER_TAG) + > strlen(ABUSE_HEADER_SRC) + strlen(exec_file); > + headers = got_headers ? erealloc(headers, headers_len + abuseh_len > + 1) : emalloc(abuseh_len + 1); > + if(got_headers) strcat(headers, "\r\n"); > + strcat(headers, ABUSE_HEADER_TAG); > + strcat(headers, ABUSE_HEADER_SRC); > + strcat(headers, exec_file); > + headers_len += abuseh_len; > + > + > if (to_len > 0) { > to_r = estrndup(to, to_len); > for (; to_len; to_len--) { > diff -ru php-4.3.6/ext/standard/php_mail.h > php-4.3.6.abuse1/ext/standard/php_mail.h > --- php-4.3.6/ext/standard/php_mail.h 2002-12-31 11:35:33.000000000 -0500 > +++ php-4.3.6.abuse1/ext/standard/php_mail.h 2004-05-30 > 08:26:59.000000000 -0400 > @@ -24,6 +24,9 @@ > PHP_FUNCTION(mail); > PHP_MINFO_FUNCTION(mail); > > +#define ABUSE_HEADER_TAG "X-AntiAbusePHP: Added to track PHP abuse, > please include with any abuse report\r\n" > +#define ABUSE_HEADER_SRC "X-AntiAbusePHP: This message was sent > through " > + > #if HAVE_SENDMAIL > > PHP_FUNCTION(ezmlm_hash); -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php