Zmconfigd

From Zimbra :: Wiki

Jump to: navigation, search

Contents

zmconfigd

Description

In the HELIX (7.x) version of ZCS, a new daemon "zmconfigd" replaces what was known as "zmmtaconfig" in previous versions. The goal was to implement a long-running Java process to handle configuration changes, rather than executing a new instance of a JVM process often. The primary bug number where this was implemented was the following:

Startup times are too long due to zmprov JVM instantiation [1] - FIXED: 7.0 Beta1

zmconfigd's purpose is to monitor certain global and server configuration attributes, and to restart the appropriate ZCS process if those configuration attributes change, such that the associated ZCS process requires a restart in order to run with the new configuration.

As of HELIX (7.x), the zmmtaconfig process is no longer available on the ZCS system.

Process

The zmconfigd process runs as a long-running JVM process. For example:

zimbra    3487  0.5  7.5 707508 154532 ?       Sl   Nov21 164:55 /opt/zimbra/java/bin/java -XX:ErrorFile=/opt/zimbra/log -client -Xmx256m -Dzimbra.home=/opt/zimbra -Djava.library.path=/opt/zimbra/lib -Djava.ext.dirs=/opt/zimbra/java/jre/lib/ext:/opt/zimbra/lib/jars:/opt/zimbra/lib/ext-common:/opt/zimbra/lib/ext/backup:/opt/zimbra/lib/ext/clamscanner:/opt/zimbra/lib/ext/network:/opt/zimbra/lib/ext/zimbra-license:/opt/zimbra/lib/ext/zimbrahsm:/opt/zimbra/lib/ext/zimbrasync -Djava.io.tmpdir=/opt/zimbra/data/tmp -Dpython.cachedir=/opt/zimbra/data/tmp/jython-cachedir org.python.util.jython /opt/zimbra/libexec/zmconfigd

zmconfigd also has a "watcher" process, that manages zmconfigd and ensures that it is running at all times on all ZCS nodes (LDAP master, LDAP replica, nginx proxy, MTA, mailstore, logger):

zimbra   12175  0.0  0.0   8996   844 pts/0    S    10:41   0:00 /bin/bash /opt/zimbra/bin/zmconfigdctl start

The zmconfigdctl and zmconfigd processes will be started/stopped automatically by zmcontrol.

zmconfigd can be manually restarted using the following steps:

# su - zimbra
$ zmconfigdctl restart
Stopping zmconfigdctl...success
Stopping zmconfigd...done.
Starting zmconfigd...done.
Starting zmconfigdctl...success

or:

# su - zimbra
$ zmconfigdctl stop
Stopping zmconfigdctl...success
Stopping zmconfigd...done.

$ zmconfigdctl start
Starting zmconfigd...done.
$ Starting zmconfigdctl...success

Log

The zmconfigd log file is /opt/zimbra/log/zmconfigd.log and is rotated automatically by the zmconfigd process. Older versions of the log can be available at /opt/zimbra/log/zmconfigd.log.[0-9]

The zmconfigd pid file is /opt/zimbra/log/zmconfigd.pid

Configuration

In HELIX (7.x), zmconfigd uses the zmlocalconfig configurations matching "zmmtaconfig". The default settings are the following:

$ zmlocalconfig -x | grep zmmtaconfig
zmmtaconfig_enable_config_restarts = true
zmmtaconfig_interval = 60
zmmtaconfig_listen_port = 7171
zmmtaconfig_log_level = 3

If the localconfig (LC) key zmmtaconfig_watchdog_services exists, zmconfigd will watch whatever services are defined in that list. Otherwise, it will watch only "antivirus" (that's the default). Watching anything *other* than antivirus is not recommended.

In IronMaiden (8.x), the zmmtaconfig* keys are replaced with zmconfigd* keys.

Configuration Attributes Monitored

zmconfigd uses a configuration file /opt/zimbra/conf/zmmta.cf to determine which attributes to monitor, and which processes to restart if those attributes change.

Please note: Zimbra recommends never changing zmmta.cf - it is not intended to be customized, and changes will be overwritten by future upgrades.

The attributes monitored by zmconfigd include the following:

  • localconfig (LC) values
    • ldap_url
    • zimbra_ldap_userdn
    • zimbra_server_hostname
  • LDAP-based attributes
    • zimbraVirusWarnRecipient
    • zimbraVirusWarnAdmin
    • zimbraVirusDefinitionsUpdateFrequency
    • zimbraVirusBlockEncryptedArchive
    • zimbraSpamKillPercent
    • zimbraSpamTagPercent
    • zimbraSpamSubjectTag
    • zimbraMtaRestriction
    • zimbraMtaBlockedExtension
    • zimbraMtaRecipientDelimiter
    • zimbraMtaMyNetworks
    • zimbraMtaMyOrigin
    • zimbraMtaMyDestination
    • zimbraMtaMyHostname
    • zimbraMtaAuthURL
    • zimbraMilterServerEnabled
    • zimbraMilterServerBindAddress
    • zimbraMilterServerBindPort
    • zimbraMtaSmtpdMilters
    • zimbraMtaNonSmtpdMilters
    • zimbraMailPort
    • zimbraMailSSLPort
    • zimbraImapProxyBindPort
    • zimbraPop3ProxyBindPort
    • zimbraImapSSLProxyBindPort
    • zimbraPop3SSLProxyBindPort
    • getAllReverseProxyURLs
    • getAllReverseProxyBackends
    • getAllMemcachedServers
    • zimbraReverseProxyIPLoginLimit
    • zimbraReverseProxyIPLoginLimitTime
    • zimbraReverseProxyUserLoginLimit
    • zimbraReverseProxyUserLoginLimitTime
    • zimbraMailProxyPort
    • zimbraMailSSLProxyPort
    • zimbraReverseProxyHttpEnabled
    • zimbraReverseProxyMailEnabled

Important Bug Fixes

There were some important bug fixes related to zmconfigd in 7.1.1 Patch 2 through 7.1.3. Prior to these fixes, zmconfigd could stop or cause mailboxd or amavisd to restart unexpectedly, and are important. These fixes include:

  • Upgrade to Jython 2.5.2 [2] - FIXED 7.1.1 Patch 2, 7.1.2
  • zmconfigd stop AS/AV if archiving is installed but not enabled [3] - FIXED 7.1.1 Patch 2, 7.1.2
  • jython tmp dir should be /opt/zimbra/data/tmp [4] - FIXED 7.1.2
  • zmconfigd can restart antivirus when zmcontrol stop is issued [5] - FIXED 7.1.3
  • zmconfigd memory usage [6] - FIXED 7.1.3
Personal tools