diff --git a/plugins/CoreAdminHome/Controller.php b/plugins/CoreAdminHome/Controller.php
index 8481410e0c4b16963dcf28f1133883a588a062f6..3b965909461dcfdadb5648f121968fdf6049df8d 100644
--- a/plugins/CoreAdminHome/Controller.php
+++ b/plugins/CoreAdminHome/Controller.php
@@ -132,6 +132,12 @@ class Controller extends ControllerAdmin
             $mail['type'] = Common::getRequestVar('mailType', '');
             $mail['username'] = Common::unsanitizeInputValue(Common::getRequestVar('mailUsername', ''));
             $mail['password'] = Common::unsanitizeInputValue(Common::getRequestVar('mailPassword', ''));
+
+            if (!array_key_exists('mailPassword', $_POST)) {
+                // use old password if it wasn't set in request
+                $mail['password'] = Config::getInstance()->mail['password'];
+            }
+
             $mail['encryption'] = Common::getRequestVar('mailEncryption', '');
 
             Config::getInstance()->mail = $mail;
diff --git a/plugins/CoreAdminHome/angularjs/smtp/mail-smtp.controller.js b/plugins/CoreAdminHome/angularjs/smtp/mail-smtp.controller.js
index 1ef0ce0510ed36496b558f23d2ad79730122c86b..98b8f9743db3a6beb466b2e97170370a3bb12b35 100644
--- a/plugins/CoreAdminHome/angularjs/smtp/mail-smtp.controller.js
+++ b/plugins/CoreAdminHome/angularjs/smtp/mail-smtp.controller.js
@@ -17,21 +17,28 @@
 
         var self = this;
         this.isLoading = false;
+        this.passwordChanged = false;
 
         this.save = function () {
 
             this.isLoading = true;
 
-            piwikApi.withTokenInUrl();
-            piwikApi.post({module: 'CoreAdminHome', action: 'setMailSettings'}, {
+            var mailSettings = {
                 mailUseSmtp: this.enabled ? '1' : '0',
                 mailPort: this.mailPort,
                 mailHost: this.mailHost,
                 mailType: this.mailType,
                 mailUsername: this.mailUsername,
-                mailPassword: this.mailPassword,
-                mailEncryption: this.mailEncryption,
-            }).then(function (success) {
+                mailEncryption: this.mailEncryption
+            };
+
+            if (this.passwordChanged) {
+                mailSettings.mailPassword = this.mailPassword;
+            }
+
+            piwikApi.withTokenInUrl();
+            piwikApi.post({module: 'CoreAdminHome', action: 'setMailSettings'}, mailSettings)
+                .then(function (success) {
 
                 self.isLoading = false;
 
diff --git a/plugins/CoreAdminHome/templates/generalSettings.twig b/plugins/CoreAdminHome/templates/generalSettings.twig
index 69a17cb17e97bd8c47e73ad9294963bc4dedef69..8a780873452d3b7ec3427d847fabcc74c58e4112 100644
--- a/plugins/CoreAdminHome/templates/generalSettings.twig
+++ b/plugins/CoreAdminHome/templates/generalSettings.twig
@@ -130,8 +130,9 @@
 
                 <div piwik-field uicontrol="password" name="mailPassword"
                      ng-model="mailSettings.mailPassword"
+                     ng-change="mailSettings.passwordChanged = true"
                      title="{{ 'General_SmtpPassword'|translate|e('html_attr') }}"
-                     value="{{ mail.password }}" inline-help="{{ help|e('html_attr') }}">
+                     value="{{ mail.password ? '******' }}" inline-help="{{ help|e('html_attr') }}">
                 </div>
 
                 <div piwik-field uicontrol="select" name="mailEncryption"