From 31afdefb32aea6a32ec9ada1be0d33c4ea268279 Mon Sep 17 00:00:00 2001 From: ondrass Date: Mon, 23 Oct 2000 12:18:15 +0000 Subject: [PATCH] I have apllied patch to handle virtual domains login automatically. You can logon with @/% as login separator. (ex. test@foobar.cz) and it will set domain according to your login. git-svn-id: https://svn.code.sf.net/p/squirrelmail/code/trunk/squirrelmail@817 7612ce4b-ef26-0410-bec9-ea0150e637f0 --- functions/smtp.php | 57 +++++++++++++++++----------------------------- 1 file changed, 21 insertions(+), 36 deletions(-) diff --git a/functions/smtp.php b/functions/smtp.php index 88bfa9ee..334edd95 100644 --- a/functions/smtp.php +++ b/functions/smtp.php @@ -7,6 +7,18 @@ $smtp_php = true; + // This should most probably go to some initialization... + if (ereg("^([^@%/]+)[@%/](.+)$", $username, $usernamedata)) { + $popuser = $usernamedata[1]; + $domain = $usernamedata[2]; + unset($usernamedata); + } else { + $popuser = $username; + } + // We need domain for smtp + if (!$domain) + $domain = getenv("HOSTNAME"); + // Returns true only if this message is multipart function isMultipart () { global $attachments; @@ -106,7 +118,7 @@ /* Print all the needed RFC822 headers */ function write822Header ($fp, $t, $c, $b, $subject, $more_headers) { global $REMOTE_ADDR, $SERVER_NAME, $REMOTE_PORT; - global $data_dir, $username, $domain, $version, $useSendmail; + global $data_dir, $username, $popuser, $domain, $version, $useSendmail; global $default_charset, $HTTP_VIA, $HTTP_X_FORWARDED_FOR; global $REMOTE_HOST; @@ -121,9 +133,9 @@ $reply_to = getPref($data_dir, $username, "reply_to"); $from = getPref($data_dir, $username, "full_name"); $from_addr = getPref($data_dir, $username, "email_address"); - + if ($from_addr == "") - $from_addr = "$username@$domain"; + $from_addr = $popuser."@".$domain; $to_list = getLineOfAddrs($to); $cc_list = getLineOfAddrs($cc); @@ -250,12 +262,12 @@ // Send mail using the sendmail command function sendSendmail($t, $c, $b, $subject, $body, $more_headers) { - global $sendmail_path, $username, $domain; + global $sendmail_path, $popuser, $username, $domain; // Build envelope sender address. Make sure it doesn't contain // spaces or other "weird" chars that would allow a user to // exploit the shell/pipe it is used in. - $envelopefrom = "$username@$domain"; + $envelopefrom = "$popuser@$domain"; $envelopefrom = ereg_replace("[[:blank:]]","", $envelopefrom); $envelopefrom = ereg_replace("[[:space:]]","", $envelopefrom); $envelopefrom = ereg_replace("[[:cntrl:]]","", $envelopefrom); @@ -283,7 +295,7 @@ } function sendSMTP($t, $c, $b, $subject, $body, $more_headers) { - global $username, $domain, $version, $smtpServerAddress, $smtpPort, + global $username, $popuser, $domain, $version, $smtpServerAddress, $smtpPort, $data_dir, $color; $to = parseAddrs($t); @@ -291,35 +303,8 @@ $bcc = parseAddrs($b); $from_addr = getPref($data_dir, $username, "email_address"); - - /* - * A patch from Bill Thousand - * - * "I don't know if anyone else needs this or not, but it totally makes squirrelmail usable for us. - * This quick patch checks the username and from address for the domain information. We use - * a virtual domain patch for our imap server that allows multiple domains by using username@domain.com - * as the login username." - */ - if ($from_addr == "") { - if (strstr($username, "@")) { - $from_addr = $username; - $address_pieces = explode("@",$username); - $domain = $address_pieces[1]; - } else { - $from_addr = "$username@$domain"; - } - } else { - // If the From Address is specified, use the domain in the from - // address if it's there. - if (strstr($from_addr, "@")) { - $address_pieces = explode("@", $from_addr); - $domain = $address_pieces[1]; - } - } - /* - * End patch from Bill Thousand - */ - + if (!$from_addr) + $from_addr = "$popuser@$domain"; $smtpConnection = fsockopen($smtpServerAddress, $smtpPort, $errorNumber, $errorString); if (!$smtpConnection) { @@ -517,7 +502,7 @@ sqimap_mailbox_close($imap_stream); } - if ($useSendmail==true) { + if ($useSendmail) { $length = sendSendmail($t, $c, $b, $subject, $body, $more_headers); } else { $length = sendSMTP($t, $c, $b, $subject, $body, $more_headers); -- 2.25.1