Bug #14166: patch for mail() to use sendmail_from on Unix

From: Date: Wed, 21 Nov 2001 19:49:47 +0000
Subject: Bug #14166: patch for mail() to use sendmail_from on Unix
Groups: php.dev 
Request: Send a blank email to php-dev+get-71300@lists.php.net to get a copy of this message
From: sury.ondrej@globe.cz Operating system: Linux PHP version: 4.0.6 PHP Bug Type: Feature/Change Request Bug description: patch for mail() to use sendmail_from on Unix This patch allows setup Return-path: per virtual host and thus identify real sender of mail message. It is really usefull to identify source of spam and such. O. --- php4-4.0.100.orig/ext/standard/mail.c Mon Jul 30 08:18:06 2001 +++ php4-4.0.100/ext/standard/mail.c Wed Nov 21 20:44:53 2001 @@ -142,8 +142,10 @@ #endif FILE *sendmail; int ret; + static int sendmail_cmd_len = 0; char *sendmail_path = INI_STR("sendmail_path"); - char *sendmail_cmd = NULL; + char *sendmail_from = INI_STR("sendmail_from"); + char *sendmail_cmd = NULL; if (!sendmail_path) { #ifdef PHP_WIN32 @@ -157,11 +159,18 @@ return 0; #endif } - if (extra_cmd != NULL) { - sendmail_cmd = emalloc (strlen (sendmail_path) + strlen (extra_cmd) + 2); + if ((extra_cmd != NULL) || (sendmail_from != NULL)) { + sendmail_cmd = emalloc (((extra_cmd != NULL)?strlen(extra_cmd)+1:0) + + ((sendmail_from != NULL)?strlen(sendmail_from)+3:0) + strlen(sendmail_path) + 1); strcpy (sendmail_cmd, sendmail_path); - strcat (sendmail_cmd, " "); - strcat (sendmail_cmd, extra_cmd); + if (extra_cmd != NULL) { + strcat (sendmail_cmd, " "); + strcat (sendmail_cmd, extra_cmd); + } + if (sendmail_from != NULL) { + strcat (sendmail_cmd, " -f"); + strcat (sendmail_cmd, sendmail_from); + } } else { sendmail_cmd = sendmail_path; } @@ -171,7 +180,7 @@ #else sendmail = popen(sendmail_cmd, "w"); #endif - if (extra_cmd != NULL) + if ((extra_cmd != NULL) || (sendmail_from != NULL)) efree (sendmail_cmd); if (sendmail) { -- Edit bug report at: http://bugs.php.net/?id=14166&edit=1

« previous php.dev (#71300) next »