From 747265f6943d796845af9eefa1748f73f92f15f9 Mon Sep 17 00:00:00 2001
From: Jesse Norell <jesse@kci.net>
Date: Wed, 11 Nov 2020 14:01:52 -0700
Subject: [PATCH] admin_mail placeholder in mail user welcome email

---
 server/conf/mail/welcome_email_de.txt        |  4 ++--
 server/conf/mail/welcome_email_en.txt        |  4 ++--
 server/conf/mail/welcome_email_es.txt        |  2 +-
 server/conf/mail/welcome_email_fr.txt        |  2 +-
 server/conf/mail/welcome_email_hr.txt        |  4 ++--
 server/conf/mail/welcome_email_nl.txt        |  2 +-
 server/plugins-available/mail_plugin.inc.php | 21 ++++++++++++++++++--
 7 files changed, 28 insertions(+), 11 deletions(-)

diff --git a/server/conf/mail/welcome_email_de.txt b/server/conf/mail/welcome_email_de.txt
index 2327209ace..d28e9ac243 100644
--- a/server/conf/mail/welcome_email_de.txt
+++ b/server/conf/mail/welcome_email_de.txt
@@ -1,4 +1,4 @@
-From: ISPConfig <postmaster@localhost.localdomain>
+From: {admin_name} <{admin_mail}>
 Subject: Ihr Mailaccount ist aktiv.
 
-Ihr Mailaccount ist jetzt aktiv. Viel Vergnügen.
\ No newline at end of file
+Ihr Mailaccount ist jetzt aktiv. Viel Vergnügen.
diff --git a/server/conf/mail/welcome_email_en.txt b/server/conf/mail/welcome_email_en.txt
index 9689485606..485227c0f3 100644
--- a/server/conf/mail/welcome_email_en.txt
+++ b/server/conf/mail/welcome_email_en.txt
@@ -1,4 +1,4 @@
-From: ISPConfig <postmaster@localhost.localdomain>
+From: {admin_name} <{admin_mail}>
 Subject: Welcome to your new email account.
 
-Welcome to your new email account. Your webmaster.
\ No newline at end of file
+Welcome to your new email account. Your webmaster.
diff --git a/server/conf/mail/welcome_email_es.txt b/server/conf/mail/welcome_email_es.txt
index ede0ea5120..9ead0568f3 100644
--- a/server/conf/mail/welcome_email_es.txt
+++ b/server/conf/mail/welcome_email_es.txt
@@ -1,4 +1,4 @@
-From: ISPConfig <postmaster@localhost.localdomain>
+From: {admin_name} <{admin_mail}>
 Subject: Bienvenido a su nueva cuenta de correo
 
 Bienvenido a su nueva cuenta de correo. Su administrador.
diff --git a/server/conf/mail/welcome_email_fr.txt b/server/conf/mail/welcome_email_fr.txt
index beb2b30080..d175006869 100644
--- a/server/conf/mail/welcome_email_fr.txt
+++ b/server/conf/mail/welcome_email_fr.txt
@@ -1,4 +1,4 @@
-From: ISPConfig <postmaster@localhost.localdomain>
+From: {admin_name} <{admin_mail}>
 Subject: Bienvenue dans votre nouvelle boîte aux lettres
 
 Votre nouveau compte email est désormais activé. Votre webmaster.
diff --git a/server/conf/mail/welcome_email_hr.txt b/server/conf/mail/welcome_email_hr.txt
index 3c45f5ac0b..f288c480f0 100644
--- a/server/conf/mail/welcome_email_hr.txt
+++ b/server/conf/mail/welcome_email_hr.txt
@@ -1,4 +1,4 @@
-From: ISPConfig <postmaster@localhost.localdomain>
+From: {admin_name} <{admin_mail}>
 Subject: Dobrodošli u vaš novi email račun.
 
-Dobrodošli u vaš novi email račun. Vaš webmajstor.
\ No newline at end of file
+Dobrodošli u vaš novi email račun. Vaš webmajstor.
diff --git a/server/conf/mail/welcome_email_nl.txt b/server/conf/mail/welcome_email_nl.txt
index cd4baf4815..2fce985968 100644
--- a/server/conf/mail/welcome_email_nl.txt
+++ b/server/conf/mail/welcome_email_nl.txt
@@ -1,4 +1,4 @@
-From: ISPConfig <postmaster@localhost.localdomain>
+From: {admin_name} <{admin_mail}>
 Subject: Welkom in uw nieuwe account.
 
 Welkom in uw nieuwe email account. Uw webmaster.
diff --git a/server/plugins-available/mail_plugin.inc.php b/server/plugins-available/mail_plugin.inc.php
index 4d5ac826d3..fb00166021 100644
--- a/server/plugins-available/mail_plugin.inc.php
+++ b/server/plugins-available/mail_plugin.inc.php
@@ -82,6 +82,7 @@ class mail_plugin {
 		//* get the config
 		$app->uses('getconf,system');
 		$mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail');
+		$global_mail_config = $app->getconf->get_global_config('mail');
 
 		// convert to lower case - it could cause problems if some directory above has upper case name
 		//  $data['new']['maildir'] = strtolower($data['new']['maildir']);
@@ -218,20 +219,30 @@ class mail_plugin {
 			$lines = file($conf['rootpath'].'/conf/mail/welcome_email_en.txt');
 		}
 
+		$placeholders = array(
+			'{domain}' => "$domain",
+			'{email}' => $data["new"]["email"],
+			'{admin_mail}' => ($global_mail_config['admin_mail'] != '' ? $global_mail_config['admin_mail'] : 'root'),
+			'{admin_name}' => ($global_mail_config['admin_name'] != '' ? $global_mail_config['admin_name'] : ''),
+		);
+
 		//* Get from address
 		$parts = explode(':', trim($lines[0]));
 		unset($parts[0]);
 		$welcome_mail_from  = implode(':', $parts);
 		unset($lines[0]);
+		$welcome_mail_from = strtr($welcome_mail_from, $placeholders);
 
 		//* Get subject
 		$parts = explode(':', trim($lines[1]));
 		unset($parts[0]);
 		$welcome_mail_subject  = implode(':', $parts);
 		unset($lines[1]);
+		$welcome_mail_subject = strtr($welcome_mail_subject, $placeholders);
 
 		//* Get message
 		$welcome_mail_message = trim(implode($lines));
+		$welcome_mail_message = strtr($welcome_mail_message, $placeholders);
 		unset($tmp);
 
 		$mailHeaders      = "MIME-Version: 1.0" . "\n";
@@ -247,8 +258,14 @@ class mail_plugin {
 		$mailTarget       = $data["new"]["email"];
 		$mailSubject      = "=?utf-8?B?".base64_encode($welcome_mail_subject)."?=";
 
-		//* Send the welcome email only on the "master" mail server to avoid duplicate emails
-		if($conf['mirror_server_id'] == 0) mail($mailTarget, $mailSubject, $welcome_mail_message, $mailHeaders);
+		$additionalParameters = '';
+		if (preg_match('/\b([A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,63})\b/i', $welcome_mail_from, $matches)) {
+			$additionalParameters = '-f '.$matches[1];
+		}
+
+		// Send the welcome email only on a "master" mail server to avoid duplicate emails
+		// (bypass the normal ispcmail class when creating mail accounts)
+		if($conf['mirror_server_id'] == 0) mail($mailTarget, $mailSubject, $welcome_mail_message, $mailHeaders, $additionalParameters);
 
 	}
 
-- 
GitLab