function password_save() {
  	$rcmail = rcmail::get_instance();
  	$alternative_email = get_input_value('_alternative_email',RCUBE_INPUT_POST);

		if(preg_match('/.+@[^.]+\..+/Umi',$alternative_email)) {
			$rcmail->db->query("REPLACE INTO forgot_password(alternative_email, user_id) values(?,?)",$alternative_email,$rcmail->user->ID);
			$message = $this->gettext('alternative_email_updated','forgot_password');
			$rcmail->output->command('display_message', $message, 'confirmation');
		}
		else {
			$message = $this->gettext('alternative_email_invalid','forgot_password');
			$rcmail->output->command('display_message', $message, 'error');
		}

		$password_plugin = new password($this->api);
		if($_REQUEST['_curpasswd'] || $_REQUEST['_newpasswd'] || $_REQUEST['_confpasswd']) {
	  	$password_plugin->password_save();
		}
		else {
			//render password form
			$password_plugin->add_texts('localization/');
	    $this->register_handler('plugin.body', array($password_plugin, 'password_form'));
			rcmail_overwrite_action('plugin.password');
			$rcmail->output->send('plugin');
		}
  }