Powered by Blogger.



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.


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
# su - zimbra
$ zmconfigdctl stop
Stopping zmconfigdctl...success
Stopping zmconfigd...done.

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


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


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
    Blogger Comment
    Facebook Comment